美文网首页程序员
log4j2与logstash之间的那点事(一)

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

作者: jarvan4dev | 来源:发表于2016-01-18 22:25 被阅读10743次

    忙了几天,终于把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 联系我 。

    相关文章

      网友评论

        本文标题:log4j2与logstash之间的那点事(一)

        本文链接:https://www.haomeiwen.com/subject/nlmkkttx.html