用logstash将日志保存到elasticsearch中

使用logstash,可以将程序运行日志,索引到elasticsearch中,然后使用kibana,可以方便查看日志。不再需要手工登陆到远程服务器上查看日志文件。而且kibana提供搜索功能,可以根据关键词,还有时间范围等,查看某时间范围内的日志。
用logstash将日志保存到elasticsearch中_第1张图片

logstash,不仅仅可以将文件数据,导入到elasticsearch中,还可以在elasticsearch与elasticsearch之间同步数据。logstash会一直“监听”input的变化,将数据实时导入(索引)到目标elasticsearch中。

对于docker集群,如果想将部署到docker中的应用日志,保存于elasticsearch中,目前还没有具体尝试。看到有这种思路:将docker容器中应用日志,输出到宿主机上,这一步骤,docker完成。完成利用logstash,可以将宿主机上的日志文件,保存到elasticsearch中。

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 => "(?\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 => "(?\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" => "(?\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"
          }
 
    }
}

pattern 用于 需要匹配的日志每一行的格式

在java服务中,日志将会产生在一个特定目录下,使用logstash,可以将这些日志,实时索引到es中,然后在kibana中查看、搜索,方便日志的查询。

用logstash将日志保存到elasticsearch中_第2张图片

参考文章:
1.https://blog.csdn.net/ka3p06/article/details/84784747

你可能感兴趣的:(elasticsearch)