logstash收集java程序日志,并保存到es中

说明:收集多个java程序的日志,并输出到es中。

 

编辑logstash的conf文件

vim log.conf

配置文件内容如下:

input {

        file {
                start_position => end ### 读文件的位子
                path => "/root/projects/fp-api/log/fp-api.log"
                type => "type1" ### 用去输出到es时判断存入哪个索引
                codec => multiline {
                        negate => true ### 是否匹配到
                        pattern => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})  INFO %{NUMBER:thread} --- %{SYSLOG5424SD:task} %{JAVACLASS}\s*: %{SYSLOG5424SD:module}\s*%{GREEDYDATA:msg}" ### 匹配的正则
                        what => "previous" ###将没匹配到的合并到上一条,可选previous或next, previous是合并到匹配的上一行末尾
                        max_lines => 1000 ### 最大允许的行
                        max_bytes => "10MiB" ### 允许的大小
                        auto_flush_interval => 30 ### 如果在规定时候内没有新的日志事件就不等待后面的日志事件
               }
        }


        file {
​                start_position => end
​                path => "/root/projects/fp-acq/log/fp-acq.log"
​                type => "type2"
​                codec => multiline {
​                        pattern => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})  INFO %{NUMBER:thread} --- %{SYSLOG5424SD:task} %{JAVACLASS}\s*: %{SYSLOG5424SD:module}\s*%{GREEDYDATA:msg}"
​                        negate => true
​                        what => "previous"
​                }
​        }

}


filter{
        grok{
                match => {
                        "message" => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})  INFO %{NUMBER:thread} --- %{SYSLOG5424SD:task} %{JAVACLASS:javaclass}\s*: %{SYSLOG5424SD:module}\s*%{GREEDYDATA:msg}"
                 }
        } ### 通过grok匹配内容并将
     
        date{
                match => ["datetime","yyyy-MM-dd HH:mm:ss.SSS","yyyy-MM-dd HH:mm:ss.SSSZ"]
                target => "@timestamp"
        } ### 处理时间
}

output {

    if [type] == "type1" {
        elasticsearch {
​        hosts => "192.168.1.158"
​        index => "fp_log_type1"
          }
   }

    if [type] == "type2" {
​        elasticsearch {
​        hosts => "192.168.1.158"
​        index => "fp_log_typr2"
          }

    }
}

启动es的前提下启动logstash 

./bin/logstash -f log.conf &

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Logstash是一个开源的数据收集引擎,可以收集、处理和转发各种类型的数据。它是Elastic Stack的一部分,可以与Elasticsearch、Kibana和Beats等工具一起使用,用于实现完整的日志分析和可视化方案。 对于Java应用程序,可以使用Logstash的log4j input插件来收集应用程序日志数据。首先需要在应用程序的pom.xml文件添加log4j和logstash-logback-encoder依赖: ```xml <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.30</version> </dependency> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency> ``` 然后在log4j.properties文件配置log4j的输出格式和输出目的地: ```properties log4j.rootLogger=INFO, stdout, logstash log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n log4j.appender.logstash=net.logstash.log4j.JSONEventLayout log4j.appender.logstash.host=localhost log4j.appender.logstash.port=5044 ``` 这里配置了两个输出目的地,一个是控制台(stdout),一个是logstashlogstash的输出格式使用了JSONEventLayout,它将日志转换为JSON格式,方便Logstash进行解析和处理。 最后在logstash的配置文件添加log4j input插件和elasticsearch output插件: ```yaml input { log4j { mode => "server" host => "0.0.0.0" port => 4560 } } output { elasticsearch { hosts => ["localhost:9200"] index => "logstash-%{+YYYY.MM.dd}" } } ``` 这里配置了log4j input插件监听4560端口,将收集到的日志数据发送到elasticsearch output插件,存储到Elasticsearch。 启动Logstash后,Java应用程序日志数据就会被自动收集和处理了。可以使用Kibana进行日志的搜索和可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值