Kibana直方图-在一张图表上绘制多个系列

Kibana直方图-在一张图表上绘制多个系列,kibana,Kibana,我在Elasticsearch中有一个索引,它包含一个简单对象数组(键值请参见下面的示例) 这些文档有一个时间戳 我可以用Kibana为每个键值创建单独的直方图(即一个图表表示发送的字节数,另一个图表表示接收的字节数) 我想知道是否有办法在一张直方图上同时显示这两个系列 谢谢 亚西尔 这可以通过运行两个查询实现,一个用于打印发送的字节,另一个用于打印接收的字节。设置直方图以使用公共“值”字段。看起来您可能还需要拆分数据,以便有唯一的记录,即时间戳、发送的字节数、值和时间戳、接收的字节数、值 -布

我在Elasticsearch中有一个索引,它包含一个简单对象数组(键值请参见下面的示例)

这些文档有一个时间戳

我可以用Kibana为每个键值创建单独的直方图(即一个图表表示发送的字节数,另一个图表表示接收的字节数)

我想知道是否有办法在一张直方图上同时显示这两个系列

谢谢

亚西尔


这可以通过运行两个查询实现,一个用于打印发送的字节,另一个用于打印接收的字节。设置直方图以使用公共“值”字段。看起来您可能还需要拆分数据,以便有唯一的记录,即时间戳、发送的字节数、值和时间戳、接收的字节数、值


-布伦特

这可以用一个叫做“多字段直方图”的较新面板来完成。最近安装了Kibana补丁后,我可以在Kibana3中使用它


请参阅显示面板的此链接

为了分享关于新Kibana版本的知识,使用Kibana的Timelong工具很容易。当要求创建可视化时,请选择“Timeseries”

对我来说,只需跟随开头弹出的几个对话框,就足以理解如何开始。像这样的事情应该会启动它:

.es('showstatus.variable_name:bytes_sent'), .es('showstatus.variable_name:bytes_received')

我有这个问题的解决办法。与@OmarOthman给出的类似,但没有上述问题,即:

  • 在数组中聚合信息是不可能的

  • 您需要将文档分解为单独的文档,每个文档包含数组的每个值。您可以使用parent 记录弹性体的特征以收集它们

  • 一旦您拥有具有此形状的文档:
  • 分类形式:

    { "_datetime" : "2014-03-21 10:10:10", "bytes_sent": 12312, "bytes_received" : 123123 }  
    { "_datetime" : "2014-03-21 10:10:11", "bytes_sent": 12310, "bytes_received" : 12313 }
    
    而不是:

    […]
    "_datetime" : "2014-03-21 10:10:10",
    "showstatus": [
    {
    "value": 96451,
    "variable_name": "bytes_sent"
    },
    {
    "value": 435322,
    "variable_name": "bytes_received"
    }
    ]
    }
    […]
    
    您可以在Timelon中绘制多个系列,如@OmarOthman,但也可以使用Timelon方法添加第二个(甚至第三个)Y轴,如:

    .es('avg:bytes_sent').yaxis(1, label='Bytes sent').bars(), .es('avg:bytes_received').yaxis(2, label='Bytes received', positon='right').bars()
    
    使用该方法,您可以将其绘制为日期直方图


    @OmarOthman提出的另一种方法仅显示平均“值”,即从showstatus数组的所有文档中获取所有“值”数据。之所以这样做,是因为“showstatus.variable\u name:bytes\u sent”查询始终为真,因为所有文档的数组showstatus中都有该“variable name”。因此,除非某些文档在数组showstatus中没有字节\发送变量\名称,否则这两个系列将是相同的。试着画出来,它不会像预期的那样工作。

    谢谢Brent,最后我把数组中的每个元素“showstatus”索引到一个单独的文档中,这大大增加了文档的数量。但看起来这是唯一的办法。正如我告诉@OmarOthman的,这行不通。它将生成showstatus数组中变量“值”的平均值。对于数组showstatus中包含变量名称“bytes\u sent”的所有文档,查询“showstatus.variable\u name:bytes\u sent”都将为真,即使它们有额外的变量名称,该名称仅显示从showstatus数组的所有文档中获取所有“value”数据的平均“value”。之所以这样做,是因为“showstatus.variable\u name:bytes\u sent”查询始终为真,因为所有文档的数组showstatus中都有该“variable name”。因此,除非某些文档在数组showstatus中没有字节\发送变量\名称,否则这两个系列将是相同的。试着画出来,它不能像预期的那样工作。
    .es('avg:bytes_sent').yaxis(1, label='Bytes sent').bars(), .es('avg:bytes_received').yaxis(2, label='Bytes received', positon='right').bars()