忙了几天,终于把logstash和log4j2一起弄上了线,踩过很多坑,也还有很多需要完善的地方,但是路还是慢慢走吧,一点一点来。鲁迅先生说过:”巴拉巴拉巴拉......“,然而他老人家并没有说过什么。
logstash 简介(官网):
- Centralize data processing of all types
- Normalize varying schema and formats
- Quickly extend to custom log formats
- Easily add plugins for custom data sources
总之一句话:logstash是收集日志利器,无论是系统日志还是应用程序日志,无论是从文件收集还是直接接收tcp(或者udp)数据流,基本上所有常见的日志都能被收集,如:file、http、log4j、redis、syslog、tcp(udp)等等;
另外logstash还可以以多种形式的输出,如:elasticsearch(一种数据检索利器,可以戳这里了解)、email、file、http、redis、tcp(udp)、xmpp等等。
开动
下载logstash(https://download.elastic.co/logstash/logstash/logstash-1.5.6.tar.gz ),我使用的是1.5.6版本的,因为log4j2的插件只支持1.5.6及以下。windows用户请前往官网下载zip版本。logstash是一款成型软件,基本上开箱即用,做一些少量配置即可。
tar zvxf logstash-1.5.6.tar.gz
cd logstash-1.5.6
mkdir conf
vim logstash.conf
加入如下基础配置
input {
stdin{}
}
# filter is optional
#filter {
#}
output {
stdout{
codec => rubydebug
}
}
启动logstash:
bin/logstash -f conf/logstash.conf
启动logstash后,等待用户标准输入,如图,输入testing:
可以看到logstash把标准输入转换成类似于json键值对的形式输出,message就是你输入的内容,@timestamp 是事件处理时间,可以看到这个是一个UTC时间,比北京时间晚8个小时,这是一个以后要踩的坑。
解释以下logstash配置参数:
logstash由3部分组成,input输出,filter过滤器,output输出,其中filter是可选的。每一部分都有很多插件可以用,可以同时在某一部分中使用多个插件,可以使用如下命令查看logstash中安装的插件:
bin/plugin list
logstash命令帮助其实也挺有用,比如可以查看logstash是否正确启动和正确地读取配置文件:
bin/logstash --help # 查看logstash帮助
bin/logstash --verbose -f conf/test.conf # 查看logstash启动详情
执行bin/plugin list 可以看到logstash1.5.6本身就带了很多插件,你可能会看到log4j,你会以为它也可以支持log4j2,然而并不是,这也是我踩过的一个坑,发现配置好了并没有什么卵用,还好有万能的github(ps:发现一只看好的osc git并不具备这个功能,有点失望)。在github上搜索logstash log4j2,你会发现竟然神奇般的找到这个插件,大神的主页 https://github.com/jurmous/logstash-log4j2
注意:支持的log4j2的版本:2.1以上
安装:
bin/plugin install logstash-input-log4j2
又来了一个坑,注意了需要启动logstash后才能安装,否则会提示不支持https之类的,你可以亲自踩踩这个坑,然后把它填平。
使用之前的配置文件启动logstash :
bin/logstash -f conf/test.conf
然后打开一个新的终端,进入logstash目录,执行log4j2插件的安装命令,需要等待一段时间,请耐心等待。
logstash for log4j2基础配置:
input {
log4j2 {
port => 7000
mode => "server"
}
}
output {
stdout { codec => rubydebug }
}
如上,读取log4j2的输出,然后输出到标准输出。以上logstash for log4j2的基础配置就搭建完毕了,更多内容,请等待更新,如有需要,也可以邮件:jarvan4dev@163.com 联系我 。