一、logstash介绍
Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。
二、安装
1、首先要安装jdk
2、多种安装方式
1)可以使用apt或者yum在线安装logstash;
yum -y install logstash
apt-get install logstash
2)也可以下载安装包离线安装,以在Ubuntu环境下安装为例
dpkg -i logstash.deb
三、运行测试
logstash工作流程图如下:
logstash主要有两大组件,input和output,还有一个可选组件filter。
input组件的作用是从数据源采集数据;
filter组件的作用是修订/格式化处理选择的数据;
output组件的作用是输出数据到其他软件。
3.1,测试安装是否正常运行
切换到logstash目录,执行如下命令测试:
root@ubuntu:/etc/logstash# /usr/share/logstash/bin/logstash -e ‘input{stdin{}}output{stdout{}}’
执行完上述命令后,系统会等待输入,当输入hello world的时候,系统会给出如下反应:
[INFO ] 2018-07-24 00:18:14.045 [Converge PipelineAction::Create<main>] pipeline – Pipeline started successfully {:pipeline_id=>”main”, :thread=>”#<Thread:0x880541 run>”}
The stdin plugin is now waiting for input:
[INFO ] 2018-07-24 00:18:14.228 [Ruby-0-Thread-1: /usr/share/logstash/lib/bootstrap/environment.rb:6] agent – Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
“@timestamp” => 2018-07-24T07:18:14.165Z,
“message” => “hello world”,
“host” => “ubuntu”,
“@version” => “1”
}
如果出现上述情况,那表明logstash正常运行。使用ctrl+D命令可以终止上述任务。
-e表示通过命令行实现ogstash配置
3.2,解析log日志
解析从filebeat传输过来的log日志,这里我们采用的是官网提供的log样本。
1)首先下载log样本
下载地址:https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz
2)安装配置filebeat
安装完filebeat后,修改filebeat.yml文件,并指定数据源为我们下载的log样本。配置文件如下:
filebeat.prospectors:
– type: log
paths:
– /path/to/file/logstash-tutorial-dataset
output.logstash:
hosts: [“192.168.18.130:9200”]
配置完毕后加载运行filebeat。
Filebeat -e -c filebeat.yml -d “publish”
3)配置logstash文件
配置并运行filebeat后,filebeat就会等待logstash的上线运行,此时我们需要新建logstash配置文件用来匹配filebeat并输出。完整的配置文件如下:
root@ubuntu:/etc/logstash# more first-pipeline.conf
input{
beats{
port => “9200”
}
}
filter{
}
output{
stdout{codec => rubydebug}
}
通过下面命令判断配置文件是否是正确的。
usr/share/logstash/bin/logstash -f first-pipeline.conf –config.test_and_exit
如果是正确的,则会获得如下输出:
Configuration OK
[INFO ] 2018-07-24 00:49:15.885 [LogStash::Runner] runner – Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
然后就可以运行logstash了,命令如下:
usr/share/logstash/bin/logstash -f first-pipeline.conf –config.reload.automatic
后面表示会动态加载first-pipeline.conf文件而不用每次重启logstash
4)使用grok插件匹配log日志
在filter组件位置配置grok语句可以将未结构化的记录结构化,形成可读性更强的日志记录。
例如,下面是从log样本里面摘取的一条记录:
83.149.9.216 – – [04/Jan/2015:05:13:42 +0000] “GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1” 200 203023 “http://semicomplete.com/presentations/logstash-monitorama-2013/” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36”
这条记录是apache的access日志,下面我们使用grok语句格式化该记录。完整的first-pipeline.conf文件如下:
root@ubuntu:/etc/logstash# more first-pipeline.conf
input{
beats{
port => “5044”
}
}
filter{
grok{
match => {“message” => “%{COMBINEDAPACHELOG}”}
}
geoip{
source => “clientip”
}
}
output{
elasticsearch {
hosts => [“192.168.18.130:9200”]
}
这里,我们不仅格式化了apache日志记录,还配置geoip插件获取远端IP地址,最终将结果输出到elasticsearch中。
5)查看结果
因为在第一次的配置过程中,filebeat已经将日志文件发送到终端中,所以我们需要在filebeat客户端使用如下命令,清除历史传送日志,然后再次开启filebeat传送命令,保证logstash能够接收到filebeat端的日志并传送给elasticsearch。
删除传送记录:rm -rf /var/lib/filebeat/registry (如果找不到该文件则使用find命令查找该文件)
启动filebeat:filebeat -e -c filebeat.yml -d “publish”
因为我们之前已经配置好了elasticsearch和kibana之间的联调,所以我们可以直接到kibana上查看格式化之后的结果:
注:需要先在kibana的管理页面建立索引,然后再在发现页面查看我们传送过来的日志信息。
6)备注
当发现格式化之后的日志记录跟之前无差别,怀疑可能是grok语句错误的时候,可以使用grok debugger来判断语句格式是否正确。 grok debugger在kibana的dev tools中。
对于传送完毕的日志记录,我们可以在可视化页面配置我们需要的图形信息。
四、总结
logstash基础配置就如上所示,logstash在ELK体系中是比较重要的一个环节,用户可以自定义开发插件以便实现所需的功能。后续会有文章介绍如何自定义开发logstash插件,敬请期待。
来源:freebuf.com 2018-07-26 10:06:20 by: gncao
请登录后发表评论
注册