gpt4 book ai didi

elasticsearch - ELK 堆栈 : Parse only IP/MAC from Syslog with Logstash

转载 作者:行者123 更新时间:2023-12-03 00:49:43 25 4
gpt4 key购买 nike

我正在寻找一种使用 Logstash 从系统日志条目中解析 IP 地址和 MAC 的方法。目前我尝试使用 GROK 来获取它,但问题是,我可能必须匹配整行,而不仅仅是消息本身的一部分。

例如,我必须遵循以下行:

Apr 9 12:41:01 cn1Label=Host ID dvchost=exch01 TrendMicroDsTenant=Primary TrendMicroDsTenantId=0 dstMAC=55:C0:A8:55:FF:41 srcMAC=CA:36:42:B1:78:3D TrendMicroDsFrameType=IP src=10.0.251.84 dst=56.19.41.128 out=166 cs3= cs3Label=Fragmentation Bits proto=ICMP srcPort=0 dstPort=0 cnt=1 act=IDS:Reset cn3=0 cn3Label=DPI Packet Position cs5=0 cs5Label=DPI Stream Position cs6=0 cs6Label=DPI Flags



我也想获取“src”和“dst”IP 以及“srcMAC”和“dstMAC”。我会在 Logstash 中这样尝试:
grok{
match => { "message" => "src=%{IPV4:src_ip}" }
match => { "message" => "dst=%{IPV4:dst_ip}" }
match => { "message" => "srcMAC=%{MAC:src_mac}" }
match => { "message" => "dstMAC=%{MAC:dst_mac}" }
}

但它不起作用,因为它与整行不匹配。我试过 .*以及其他匹配技术,但没有成功。

有没有办法只解析所示的 IP 而无需解析整行?

我会尝试解析消息的其他部分,例如协议(protocol)。我不匹配整行的原因是,某些消息是不同的,因此还需要另一种方法来提取其值。

谢谢!

最佳答案

您可以使用 kv filter处理像日志中那样的键值对。要仅保留相关对,请使用 include_keys选项。

在您的情况下,它看起来像这样:

kv{
include_keys => [ "src", "dst", "srcMAC", "dstMAC" ]
}

这将导致:
{
"dst": "56.19.41.128",
"host": "frsred-0077",
"srcMAC": "CA:36:42:B1:78:3D",
"dstMAC": "55:C0:A8:55:FF:41"
}

kv 过滤器的一个好处是您不依赖于保持不变的对的顺序,这与 grok 过滤器不同。

关于elasticsearch - ELK 堆栈 : Parse only IP/MAC from Syslog with Logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com