【问题标题】:grok/kv filter audit logs logstashgrok/kv 过滤审计日志 logstash
【发布时间】:2021-02-22 22:00:52
【问题描述】:

我正在学习如何使用 grok 插件。我有一个这样的消息字符串

"type=CRYPTO_SESSION msg=audit(111111.111:111111): pid=22730 uid=0 auid=123 ses=123 subj=system_u:system_r:sshd_t:a1-a1:a1.a1234 msg='op=xx=xx cipher=xx ksize=111 mac=xx pfs=xxx spid=111 suid=000 rport=000 laddr=11.11.111.111 lport=123 exe=\"/usr/sbin/sshd\" hostname=? addr=11.111.111.11 terminal=? res=success'"

我想提取字段 laddr、addr 和 lport。我创建了一个具有以下结构的模式目录

patterns
|
-- laddr
|
-- addr

我的过滤器是这样写的

filter {
    grok {
        patterns_dir => ["./patterns"]
        match => { "messaage" => "%{LADDR:laddr} %{ADDR:addr}"}
    }
}

我希望至少提取 laddraddr。我使用https://grokdebug.herokuapp.com/ 获得匹配。有了这些模式

(?<laddr>\b(laddr=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b) 
(?<addr>\b(addr=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b)

但配置无法编译。我刚刚离开这些文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html。我也尝试过使用 kv 过滤器,当我尝试使用类似的东西时遇到的问题

filter{
    kv {
        value_split => "="
    }
} 

我最终得到msg 字段出现两次。我真的很想弄清楚如何从这个字符串中获取属性。任何帮助将不胜感激。

【问题讨论】:

  • 为什么不使用kv 过滤器?
  • 使用这种模式%{LADDR:laddr} %{ADDR:addr},它只有在你的日志看起来像这样时才有效:laddr=11.11.111.111 addr=999.999.999.999'。使用 grok,您使用的模式必须匹配整个日志行。虽然对于这样的日志,kv 过滤器要好得多。
  • @baudsp 我也尝试使用 kv 过滤器。
  • 使用 kv 过滤器的 include_keys 选项与您感兴趣的键,也许?
  • 如果你想使用 grok,使用这个模式:%{LADDR:laddr}%{GREEDYDATA}%{ADDR:addr}

标签: logstash logstash-grok


【解决方案1】:

我认为它的字段拆分:

filter {
  kv {
    field_split => "&?"
  }
}

您是否尝试过,是否收到任何错误消息?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多