log4j2与logstash之间的那点事(一)

忙了几天,终于把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标准输入输出

可以看到logstash把标准输入转换成类似于json键值对的形式输出,message就是你输入的内容,@timestamp 是事件处理时间,可以看到这个是一个UTC时间,比北京时间晚8个小时,这是一个以后要踩的坑。

解释以下logstash配置参数:
logstash由3部分组成,input输出,filter过滤器,output输出,其中filter是可选的。每一部分都有很多插件可以用,可以同时在某一部分中使用多个插件,可以使用如下命令查看logstash中安装的插件:

bin/plugin list
logstash插件集合

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 联系我 。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 106,496评论 12 127
  • 概述 监控预警平台, eagle + eye (鹰眼)的合体词, 寓意可以快速发现问题, 并及时作出响应,Eagl...
    Kungfu猫熊阅读 5,122评论 0 51
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 38,159评论 5 340
  • 原文地址为 https://github.com/logstash/logstash-logback-encode...
    飞来来阅读 10,548评论 1 8
  • 一.自适应宽度的水平居中 方法一css : html : 效果图 : 从 css 代码可以看出,在同时未设定父元素...
    McDu阅读 17评论 0 0