我想从我的F5 LTM发送多个不同的系统日志,但我可以在不改变我的Logstash配置的情况下发送任何类型的信息。 例如,今天我有两个iRule可以发送两种类型的日志:
<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和value。这可能吗?
一个简单的正则表达式来捕捉我的东西会是这样的:(只是一个例子)
(--[A-Za-z0-9_]+)\s ([^\s]+?)
但是我没有找到我怎么说可以说我的第一组人员应该是ES中的一个领域。
感谢您的帮助,
答案 0 :(得分:0)
kv {}过滤器(键/值)完成工作(而不是grok):https://www.elastic.co/guide/en/logstash/current/plugins-filters-kv.html