Logstash根据日志信息动态创建索引

552 阅读1分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

本文使用Filebeat收集日志信息输送到Logstash。ELK+Filebeat环境搭建 可以看这一篇文章

ELK+Filebeat环境搭建

1. 配置logstash.config

input { 
 beats { 
    port => 5044
  } 
}


filter {
        grok{
            match => { "message" => "%{APPNAME:appname} %{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{JAVALOGMESSAGE:msg}" }
        }

        date {
            match => ["timestamp","yyyy-MM-dd HH:mm:ss,SSS","ISO8601"]
            target => "@timestamp"
        }
}

output {
       elasticsearch {
            hosts => ["192.168.0.103:9200"]
            user => "elastic"
	    password => "123456"
            index => "%{appname}"
            template_overwrite => true
        }
}

grok里面的 %{APPNAME:appname} 这里是自定义的正则表达式规则

修改Logstash容器里面的patterns

进入Logstash容器应用

docker exec -it logstash /bin/bash
cd /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns

image.png

vi grok-patterns

image.png

我这里获取的是日志信息开头出现第一个空格前面的字符串

我这里日志格式信息如下,获取的是开头open-web作为索引

open-web 2021-08-08 14:29:11.088 [] [http-nio-5001-exec-9] INFO  TID: N/A com.example.learning.controller.GoodsController - GoodsController#getGoodsById request:111