如何在 kibana 中添加字节、会话和源参数以可视化 suricata 日志? 侧边栏:解析 JSON 日志

问题描述

我使用 rsyslog 将所有日志(此处为 suricata 日志)重定向到 logstash。我使用的 rsyslog 模板如下:

template(name="json-template"
  type="list") {
    constant(value="{")
      constant(value="\"@timestamp\":\"")     property(name="timereported" dateFormat="rfc3339")
      constant(value="\",\"@version\":\"1")
      constant(value="\",\"message\":\"")     property(name="msg" format="json")
      constant(value="\",\"sysloghost\":\"")  property(name="hostname")
      constant(value="\",\"severity\":\"")    property(name="syslogseverity-text")
      constant(value="\",\"facility\":\"")    property(name="syslogfacility-text")
      constant(value="\",\"programname\":\"") property(name="programname")
      constant(value="\",\"procid\":\"")      property(name="procid")
    constant(value="\"}\n")
}

对于每个传入的消息,rsyslog 会将日志属性插入到 JSON 格式的消息中,并将其转发到 Logstash,监听端口 10514。 参考链接https://devconnected.com/monitoring-linux-logs-with-kibana-and-rsyslog/

(我还在上面的参考链接中提到过配置了logstash)

我正在获取 Kibana 中的所有列发现(如 rsyslog 的 json-template 中所述),但我还需要 kibana 中的字节、会话和源列,但我没有得到这里。我附上了我在 Kibana here

上看到的专栏的快照

Kibana 上的可用字段(或列)是:

 @timestamp
t @version
t _type
t facility
t host
t message
t procid
t programname
t sysloghost
t _type
t _id
t _index
# _score
t severity

请告诉我如何在 Kibana 的可用字段中添加字节、会话和源。我需要这些参数才能在 Kibana 中进一步深入研究。

编辑:我添加了我的“/var/log/suricata/eve.json”的样子(我需要在 Kibana 中进行可视化。)

对于字节,我将使用 (bytes_toserver+bytes_toclient),这是一个可用的内部流。 我需要计算的会话。 Source_IP 我将用作源。

{"timestamp":"2020-05 04T14:16:55.000200+0530","flow_id":133378948976827,"event_type":"flow","src_ip":"0000:0000:0000:0000:0000:0000:0000:0000","dest_ip":"ff02:0000:0000:0000:0000:0001:ffe0:13f4","proto":"IPv6-ICMP","icmp_type":135,"icmp_code":0,"flow":{"pkts_toserver":1,"pkts_toclient":0,"bytes_toserver":87,"bytes_toclient":0,"start":"2020-05-04T14:16:23.184507+0530","end":"2020-05-04T14:16:23.184507+0530","age":0,"state":"new","reason":"timeout","alerted":false}}

解决方法

直接回答

详细阅读the grok docs

然后转到带有一些示例日志的 grok debugger 以找出表达式。 (现在 Kibana 的开发工具中还内置了一个 grok 调试器)

这个 grok patterns 列表也可能派上用场。

更好的方法

使用Suricata的JSON日志代替syslog格式,使用Filebeat代替rsyslog。 Filebeat 有一个开箱即用的 Suricata module

侧边栏:解析 JSON 日志

在 Logstash 的 filter 配置部分:

filter {

  json {
    source => "message"
    # you probably don't need the "message" field if it parses OK
    #remove_field => "message"
  }

}

[编辑:添加了 JSON 解析]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...