【问题标题】:grok pattern for extracting a portion of URI用于提取部分 URI 的 grok 模式
【发布时间】:2016-11-07 16:07:17
【问题描述】:

我的任务是管理我们的 ELK 堆栈并为 elastalert 编写规则,但需要我已经拥有的一个字段的特定部分作为其自己的字段,以便在该字段上使用 elastalert 的 query_key 功能。我们在这里使用这些规则:

https://github.com/hpcugent/logstash-patterns/blob/master/files/grok-patterns

  • 我需要的字段是我们已经捕获的 URIPATHPARAM 的一部分:

/path_field_1/UID/path_field_2/path_params

其中 UID 是 0-9、a-z、A-Z 的 32 个字符的唯一标识符。我可以在 Kibana 中访问整个 URI,但我最终需要将 UID 作为其自己的字段,以便我可以在其上使用 elastalert 的 query_key。包含此 UID 的行总是以“/path_to_field_1/”开头。

作为一个完全的新手,我不确定有什么(好的?)方法可以实现这一点 - 而且文档(我已经倾注了一个星期)非常神秘。

【问题讨论】:

标签: elasticsearch logstash elastic-stack grok


【解决方案1】:

你在正确的轨道上查看 grok,如果前面的位总是相同,你可以使用 grok 来获取 UID

grok {
  match => {
    "uri_field" => "/path_to_field_1/%{DATA:UID}/%{GREEDYDATA}"
  }
}

【讨论】:

  • 他们的例子有点少,幸运的是这里有!
  • 太棒了——这实际上是我最初认为的解决方案,但很难从文档中看出它是如何工作的。谢谢! uri_field 对应于我已经捕获的 URI 字段,这将产生一个单独的 UID 字段,命名为 UID,对吗?
  • 应该,%{GREEDYDATA} 没有被存储,因为它是一个未命名的捕获,默认情况下,grok 会丢弃
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多