繁体   English   中英

GROK LOG 过滤器/grep 具体值

[英]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 :

  1. 时间戳
  2. STMTS/s 的值
  3. TX/s 的值

在正则表达式中,它看起来像这样:

(^\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

请注意 Kibana 中一个有用的工具是 Grok 调试器,它可以在 Dev Tools 下找到: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM