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
,这样会更消耗计算资源,但是更严谨