繁体   English   中英

Logstash和grok:根据输入确定的变量名称

[英]Logstash and grok : Variables name determined from input

我想从我的F5 LTM发送多个不同的系统日志,但是我将能够发送任何种类的信息而无需始终更改Logstash配置。 例如,今天我有两个iRules,可以发送两种类型的日志:

<134>Dec 16 11:55:01 XX-BIGIP02 tmm1[9224]: Rule /Common/Layer4_Logger <CLIENT_CLOSED>: Layer4 SFTP --Client 136.2.0.000:28075 --Vip 10.12.0.00:22 --Node 10.12.0.00:22 --ConnectedIn 106 --ClosedAfter 824
<132>Dec 16 12:02:03 XX-BIGIP02 tmm[9224]: Rule /Common/SSLv3_Logger <HTTP_REQUEST>: SSLv3 connexion detected from 202.00.000.254:64541 to 10.12.0.00:443 --URL as1.***.com/ed**s/ED**S.dll?ClientType=Es***036.39983&ClientInfoC=XaV%2FWcV***&Handler=Default2 --SSL SSLv3:RC4-SHA:128 --UserAgent "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.1891)"

关于第二行,这是我在做什么:

grok {
        match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
        add_field => [ "received_at", "%{@timestamp}" ]
    }
    grok {
        match => {"syslog_message" => "Rule %{DATA:F5_iRuleName} <%{DATA:F5_onEvent}>:.*?from %{IPORHOST:src_ip}(?:[: ]%{INT:src_port})? to (?:/Common/%{DATA:F5_Pool} )?%{IPORHOST:dest_ip}(?:[: ]%{INT:dest_port})?"}
    }

我想做的是在每个syslog_message中捕获

--VariableName Value

并在我的Elasticsearch中索引variableName和值。 这可能吗?

一个简单的正则表达式可以捕获我的东西,就像:(仅举一个例子)

(--[A-Za-z0-9_]+)\s ([^\s]+?)

但是我没有发现如何说我的第一个小组应该是ES中的一个领域。

谢谢你的帮助,

kv {}过滤器(键/值)完成了工作(而不是grok): https ://www.elastic.co/guide/zh-CN/logstash/current/plugins-filters-kv.html

暂无
暂无

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

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