Logstash 处理 Mongod Log6

2022-01-19 11:27:47 浏览数 (1)

output

代码语言:javascript复制
output {
  elasticsearch { 
  	hosts => ["localhost:9200"] 
        index=>"mongodb-slow-log-%{ YYYY.MM.dd}"
	}
  stdout { codec => rubydebug }
}

Item

Comment

output {

框定出口的定义范围

elasticsearch {

定义了一个出口,使用 elasticsearch 插件来进行输出,将结果输出到ES中

hosts => ["localhost:9200"]

指定es的目标地址为 localhost:9200

index=>"mongodb-slow-log-%{ YYYY.MM.dd}"

指定存到哪个index,如不指定,默认为logstash-%{ YYYY.MM.dd}

stdout { codec => rubydebug }

定义了一个出口,使用 stdout 插件将信息输出到标准输,也就是终端,并且使用 rubydebug 插件处理过后进行展示,也就是行成jason格式 (生产不会这样配置,一般用来进行交互调试)


正则

%{TIMESTAMP_ISO8601:timestamp}s %{MONGO3_SEVERITY:severity}s %{MONGO3_COMPONENT:component}%{SPACE}(?:[%{DATA:context}])?s %{GREEDYDATA:body}

Item

Comment

%{TIMESTAMP_ISO8601:timestamp}

将匹配 TIMESTAMP_ISO8601 模式的结果放到 timestamp 中

s

匹配一个或多个空字符

(?:[%{DATA:context}])?

内容可能有,也可能无,如果有,以 [ 开头,且以 ] 结尾,中间的任何内容放到 context 中

Tip: 可以参考 mongodb patterns 中的匹配设置 ,MONGO3_LOG %{TIMESTAMP_ISO8601:timestamp} %{MONGO3_SEVERITY:severity} %{MONGO3_COMPONENT:component}%{SPACE}(?:[%{DATA:context}])? %{GREEDYDATA:message} ,我将最后的部分存入了body,不然会存到原来的 message 字段中, 使message变成一个列表,内容变成 message中的第二个元素,然后将空格替换成了 s ,这样会更消耗计算资源,但是更严谨

0 人点赞