Kibana 提供的 Grok 表达式与自定义 iis 管道的字段值不匹配

Kibana Provided Grok expressions do not match field value for custom iis pipline

我们正在使用自定义 IIS wc3 日志,因此更改了 grok 模式以使其适合文件:

\filebeatXXXX\module\iis\access\ingest\pipeline.yml :

- grok:
field: message
patterns:
- '%{TIMESTAMP_ISO8601:iis.access.time} (?:-|%{IPORHOST:destination.address}) (?:-|%{WORD:http.request.method}) (?:-|%{NOTSPACE:url.path}) (?:-|%{NUMBER:destination.port:long}) (?:-|%{NOTSPACE:user.name}) (?:-|%{IPORHOST:source.address}) (?:-|HTTP/%{NUMBER:http.version}) (?:-|%{NUMBER:http.response.status_code:long}) (?:-|%{NUMBER:iis.access.sub_status:long}) (?:-|%{NUMBER:iis.access.win32_status:long}) (?:-|%{NUMBER:http.response.body.bytes:long}) (?:-|%{NUMBER:http.request.body.bytes:long}) (?:-|%{NUMBER:temp.duration:long})?'
ignore_missing: true

该模式在使用 Grok 调试器的弹性开发工具中工作。这是我从 iis 日志中获取的示例数据。

2021-07-14 06:51:45 19.16.2.8 POST /api/DocumentMainReport/GetReport 443 demouser 19.18.2.1 HTTP/2 200 0 0 1093 1398 96

但是弹性发现日志中仍然出现错误“Provided Grok expressions do not match field value...”。

我错过了什么?

更新 ingest\pipeline.yml 后,您需要使用 :

将其发送到服务器进行更新
./filebeat setup --pipelines -modules="{{ your module name }}"

参见:https://discuss.elastic.co/t/fileabeat-grok-fail-provided-grok-expressions-do-not-match-field-value/144609/3