【问题标题】:Kibana histogram - drawing multiple series on a single chartKibana 直方图 - 在单个图表上绘制多个系列
【发布时间】:2014-03-20 20:27:29
【问题描述】:

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

文档有时间戳。

我可以在 Kibana 中为每个键值创建单独的直方图(即一个图表用于 bytes_sent,另一个用于 bytes_received)。

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

谢谢

亚西尔

"_index": "myindex",
    "_type": "showstatus",
    "_id": "JhyLAGbcRDyXmrIMmP5lLg",
    "_score": 1,
    "_source": {
       "_datetime" : "2014-03-21 10:10:10",
       "showstatus": [
          {
             "value": 96451,
             "variable_name": "bytes_sent"
          },
          {
             "value": 435322,
             "variable_name": "bytes_received"
          }
       ]
    }

【问题讨论】:

    标签: kibana


    【解决方案1】:

    可以使用名为“multifieldhistogram”的新面板来完成。最近安装了 Kibana 补丁后,我可以在 Kibana3 中使用它。

    请查看显示面板的链接。 https://code.csdn.net/chenryn/kibana

    【讨论】:

      【解决方案2】:

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

      -布伦特

      【讨论】:

      • 感谢布伦特,最后我将数组“showstatus”的每个元素索引到一个单独的文档中,这显着增加了文档的数量。但看起来这是唯一的方法。
      • 我告诉@OmarOthman,这行不通。它将产生 showstatus 数组中变量“值”的平均值。并且查询 'showstatus.variable_name:bytes_sent' 对于包含在其数组 showstatus 变量名“bytes_sent”的所有文档来说都是正确的,即使它们有额外的变量名
      【解决方案3】:

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

      1. 不可能将信息聚合到一个数组中,is a feature that the Elastic team has not addressed yet

      2. 您需要将文档分解为单独的文档,每个文档对应一个数组值。您可以使用父母 记录弹性的特征以收集它们。

      3. 一旦你有了这个形状的文件:

      分解形式:

      { "_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"
      }
      ]
      }
      […]
      

      您可以像@OmarOthman said 一样在Timelion 中绘制多个系列,但您也可以使用Timelion 的yaxis 方法添加第二(甚至第三)Y 轴,例如:

      .es('avg:bytes_sent').yaxis(1, label='Bytes sent').bars(), .es('avg:bytes_received').yaxis(2, label='Bytes received', positon='right').bars()
      

      使用bars 方法,您可以将其绘制为日期直方图。

      @OmarOthman 提出的另一种方法将只显示平均“值”,从 showstatus 数组的所有文档中获取所有“值”数据。这样做是因为查询“showstatus.variable_name:bytes_sent”始终为真,因为所有文档在其数组 showstatus 中都有该“变量名”。因此,除非某些文档在数组 showstatus 中没有 bytes_sent variable_name,否则这两个系列都是相同的。尝试绘制它,它没有按预期工作。

      【讨论】:

        【解决方案4】:

        为了分享有关较新 Kibana 版本的知识,这很容易使用 Kibana 的 TimeLion 工具。当系统要求您创建可视化时,选择“时间序列”。

        对我来说,按照开头弹出的几个对话框了解如何开始就足够了。这样的事情应该开始了:

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

        【讨论】:

        • 这只会显示从 showstatus 数组的所有文档中获取所有“价值”数据的平均“价值”。这样做是因为查询“showstatus.variable_name:bytes_sent”始终为真,因为所有文档在其数组 showstatus 中都有该“变量名”。因此,除非某些文档在数组 showstatus 中没有 bytes_sent variable_name,否则这两个系列将是相同的。尝试绘制它,它没有按预期工作。
        猜你喜欢
        • 1970-01-01
        • 2011-10-15
        • 1970-01-01
        • 2020-04-08
        • 1970-01-01
        • 2014-03-06
        • 1970-01-01
        • 2020-01-05
        相关资源
        最近更新 更多