【问题标题】:How to visualize a count of all values in an array field in Kibana如何可视化 Kibana 中数组字段中所有值的计数
【发布时间】:2018-03-29 09:20:28
【问题描述】:

我在 Kibana 中创建特定类型的可视化时遇到问题。我在 Kibana 中的事件是关于两个 ip 地址之间通信的统计信息。其中两个字段是特定 IP 地址使用的端口列表。字段示例如下:

ip1 = 192.168.101.2
ip2 = 192.168.101.3
ip2Ports = 80,443
ip1Ports = 80,57000,0

我想对所有值进行最高计数,例如

port    count
80      2
57000   1
443     1

我已经能够将 ip2Ports 解析为 ip2Ports_List.column1、ip2Ports_List.column2 等,但我只能在可视化中选择一个具有术语聚合的术语。我可以拆分图表,但这会导致每个字段的计数不同。如果我通过原始 ip2Ports 字段,它只是聚合为字符串,例如“80,443”。

是否甚至可以创建具有多个值的字段的最高计数可视化?如果是这样,我会怎么做。如果没有,有没有办法重组我的数据以便我可以做到?谢谢!

【问题讨论】:

    标签: logstash visualization kibana


    【解决方案1】:

    我的问题源于 Logstash 发送的值格式。我原以为使用 csv 过滤器产生的“ip2Ports_List.column1”格式是数组的一部分。不是。经过分析,'ip2Ports_List.column1' 似乎与一个新字段没有太大区别。

    Elastic 需要一个数组来提供我想要的可视化效果。我不确定制作它的最佳方法是什么,所以我最终使用了 ruby​​ 过滤器。这就是代码最终的样子:

    ruby {
      code => "fields = event.get('portsIp').split(',')
      event.set('portsIpArray',fields)"
    }
    

    “portsIp”看起来像“80,443”。拆分它会将 'portsIp' 变成一个 Ruby 数组。我只是将该数组设置为新事件字段“portsIpArray”的值。

    当我尝试可视化“portsIpArray”字段时,它看起来完全符合我的要求,将每个端口视为单独的值,并且仍然将每个端口与相同的事件/字段相关联。

    额外: 我还发现,如果您像我一样直接在 Logstash conf 文件中编写代码,Logstash 不喜欢在双引号代码中使用双引号。事后看来这是有道理的,但它并没有给出明确的错误,因此很难弄清楚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2017-03-14
      相关资源
      最近更新 更多