[英]GROK LOG Filter / grep specific values
我是 GROK 的菜鸟,我需要 grep 日志文件中的特定内容
以下是日志示例:
2021-03-16 12:23:30,717 [ STATUS ] {replicate_changes } Replication status: SRC_SCN 1235720653409 - SRC_TMSTMP 2021-03-16 12:23:27 - STMTS/s 189.18 - TX/s 101.05
从那行我需要 grep :
在正则表达式中,它看起来像这样:
(^\d.+) \[ .+ \].+ SRC_TMSTMP (\d.+) - STMTS\/s (\d.+) - TX\/s (\d.+)
谁能帮我解开这个谜团? 提前谢谢!
请注意询问时间戳的原始问题,并且示例正则表达式似乎正在捕获(可能)收据时间戳和“SRC_TMSTMP”。 下面的简单 grok 模式将捕获两者并适当地分配:
%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA} SRC_TMSTMP %{TIMESTAMP_ISO8601:source_timestamp} %{GREEDYDATA} STMTS/s %{BASE10NUM:stmts_per_sec:float} %{GREEDYDATA} TX/s %{BASE10NUM:tx_per_sec:float}
这可以根据额外的样本数据进一步优化。
一般 grok 语法和用法在这里解释: https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.html
可以在此处找到预定义的 grok 模式: https://github.com/elastic/elasticsearch/blob/7.11/libs/grok/src/main/resources/patterns/grok-patterns
简而言之,grok 模式匹配遵循以下格式:
%{DEFINED_GROK_PATTERN:field_name:optional_cast_type}
请注意,如果未指定field_name
,它将不会将捕获的值分配给字段 - 基本上与使用不带括号的正则表达式模式或非捕获组相同。
此模式的使用取决于您打算在哪里使用它 - Elasticsearch 或 Logstash(基于问题标签)。 如果 Elasticsearch,请参阅第一个链接 - 如果使用 Logstash,请参阅以下内容: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.ZFC35FDC70D228C75A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.