【问题标题】:Logstash and grok : Variables name determined from inputLogstash 和 grok :根据输入确定的变量名称
【发布时间】:2015-12-17 16:36:15
【问题描述】:

我想从我的 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 中索引变量名和值。这可能吗?

一个简单的正则表达式来捕捉我的东西是这样的:(只是一个例子)

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

但我不知道我怎么能说我的第一组抓到的应该是 ES 中的一个字段。

感谢您的帮助,

【问题讨论】:

  • 这可能通过 kv{} 过滤器(键/值)实现。
  • 这确实可以完成这项工作:谢谢

标签: elasticsearch logstash logstash-grok


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2015-01-11
    • 2018-12-26
    • 2021-03-15
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多