如何在Kubernetes环境Logstash配置中设置Date:component:level:message格式过滤器
过滤器失效根因
- 匹配规则的空格数量和实际日志不一致:你的日志中时间戳后、日志级别后均只有1个空格,现有规则中对应位置写了2个空格,导致无法匹配
- 匹配规则多了不存在的字符:实际日志的日志级别和消息内容之间没有
-符号,现有规则中强制匹配该符号,直接导致匹配失败
修正后的grok配置
grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{DATA:component} %{LOGLEVEL:logLevel} %{GREEDYDATA:logMessage}" } }
可选优化配置
匹配成功后可以添加date过滤器,将日志自带的时间替换为Logstash默认的@timestamp字段,避免用日志采集时间作为检索时间产生偏差:
date { match => [ "timestamp", "yyyy-MM-dd HH:mm:ss" ] target => "@timestamp" remove_field => [ "timestamp" ] }
验证方法
你可以直接用Kibana内置的Grok调试工具,粘贴你的日志样例和匹配规则做实时校验,确认匹配结果符合预期后再更新到Logstash配置文件并重启生效。
内容的提问来源于stack exchange,提问作者AMU
相关产品推荐
相关产品推荐

