使用kibana的时候,需要进行调试,尽管公司提供了比较合适的调试平台,但是还是自己搭建可以学习更多的知识。
以下是自ES官网翻译过来,中间添加了自己遇到的一些坑。如有错误,敬请指正。
1.下载
首先按照操作系统下载Logstash,本人选用的ubuntu64位系统。下载完成后解压/安装。
2.安装
logstash的文件目录如下
--logstash-5.0.2
----bin(存放logstash相关执行文件)
----config(存放与java/log4j/启动/文件/链接相关文件)
----lib(logstash是使用ruby开发的,这里存放相关rb文件,运行程序使用)
还有其他的一些文件,就没做深入研究。
坑:5.0.2版本目前必须支持jdk1.8以上版本,如果版本不够,后面运行会报错。请确保jdk版本足够;
3.测试运行
首先测试下是否好用。进入文件主目录,运行如下:
bin/logstash -e 'input { stdin { } } output { stdout {} }'
此语句是将你在终端输入的原封不动的打印出来。如果运行正常,输入‘hello world’,终端会输出'hello world'。说明安装成功;
4.安装、配置Filebeat。
一般日志的搜集,是通过对某个日志文件夹的监听进行的。filebeat可以监控日志目录的变更情况,并将结果发送给logstash。
当然,你也可以直接在input中配置直接file节点,不过本文还是按照官网来的。
首先下载FileBeat,解压/安装到某个路径。
打开FileBeat主目录下砸filebeat.yml,这个是filebeat的监听设置文件,先进行基本的设置:
filebeat.prospectors:
- input_type: log
paths:
# 填写你要解析的日志文件的绝对路径!
- /home/lz/logstash/logstash-5.0.2/logTest/test.log
output.logstash:
hosts: ["localhost:5043"]
完成上述配置后,对上述配置进行发布:
sudo ./filebeat -e -c filebeat.yml -d "publish"
这时filebeat会尝试连接5043端口,但是在logstash启动连接之前,filebeat会提示连接端口失败,忽略即可。
5.初步配置logstash的conf
建议大家在logstash的主目录下面建立个conf的文件,存放.conf文件。
conf文件是logstash的主要解析文件,一般分为三部分 input、filter、output。具体会在另外一篇wiki中说明。
新建first-pipelin.conf,填入以下配置:
input {
#从filebeat5043端口获取日志数据
beats {
port => "5043"
}
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
#标准控制台输出
stdout { codec => rubydebug }
}
然后进行测试,测试语句无误:
bin/logstash -f first-pipeline.conf --config.test_and_exit
如果语句无问题,会显示如下:
root@lz-Latitude-E5440:~/logstash/logstash-5.0.2# ./bin/logstash -f ./conf/first-pipeline.conf --config.test_and_exit
Sending Logstash's logs to /home/lz/logstash/logstash-5.0.2/logs which is now configured via log4j2.properties
Configuration OK
[2016-12-04T18:23:44,940][INFO ][logstash.runner ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
坑:此处如果报错,一般都是conf语法错误引起。
123132
如果正常,继续执行如下输出指令:
bin/logstash -f first-pipeline.conf --config.reload.automatic
这里正常执行,会打印很多消息,就不粘贴出来了。
坑:如果想要修改测试日志内容,需要首先删除掉filebeat目录下data/registry,然后重新对filebeat.yml发布。
7.使用ES输出;
下载安装ES,启动bin/elasticsearch。
坑:主要不要使用sudo启动!
浏览器中打开http://localhost:9200/,可以显示即正常;
坑:localhost是127.0.1.1
修改first-pipeline.conf的output:
elasticsearch {
hosts => [ "localhost:9200" ]
}
启动es,然后打开:
http://localhost:9200/logstash-2016.12.04/_search?pretty&q=geoip.city_name=Moscow
注:其中的日志为当日日期。即显示city_name为莫斯科的相关日志。
此处可以与kibana进行联机显示。
8.多输入多输出。
待续~~
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html#configuring-filebeat