【问题标题】:Properly plotting on Grafana from Elasticsearch data从 Elasticsearch 数据中正确绘制 Grafana
【发布时间】:2022-01-10 14:51:00
【问题描述】:

我想根据 ElasticSearch 中存储的一些文档在 Grafana 上绘制时间序列。文件结构如下:

{
    "timestamp": date,
    "name1": str,
    "name2": str,
    "number": float
 }

由于对于给定的name1 值,只有name2 的某些值是可能的,所以我在 Grafana 上设置了两个变量:

Name1: {"find": "terms", "field":"name1.keyword"}
Name2: {"find":"terms", "field":"name2.keyword", "query":"name1:$Name1"}

这两个变量正确地生成了两个下拉菜单,在给定 name1 的值的情况下,我可以使用它们来选择正确的 name2 值。现在,在菜单中选择name1name2 的给定值后,我希望Grafana 绘制与name1name2 的(唯一)组合相对应的number 的时间序列,并且我'我试图通过以下查询来做到这一点:

name1:$Name1 AND name2:$Name2

选择Group By: Date Histgramtimestamp 作为时间轴。问题是,除非每个name1 只有一个name2 值,否则这将无法正常工作,让我通过一个示例来解释原因。假设我有这两个文件:

{
    "timestamp": 20220110,
    "name1": "foo",
    "name2": "bar",
    "number": 2.0
 }

{
    "timestamp": 20220110,
    "name1": "foo",
    "name2": "tee",
    "number": 3.0
 }

我选择max 作为指标。在这种情况下,无论我在name2 下拉菜单中选择什么,Grafana 总是会绘制一个点(20220110, 3),其中 3 对应于 2 到 3 之间的最大值。我理解这种行为的原因:我做了什么不明白的是如何获得我想要的。所以:我怎样才能改变我的查询,在name2下拉菜单中选择bar,我得到一个点(20220110, 2),如果我从同一个菜单中选择tee,我得到@987654345 @?

【问题讨论】:

    标签: elasticsearch lucene grafana opensearch grafana-variable


    【解决方案1】:

    为了完整起见,我想出了解决方案。因此,这种行为不应该是我上面描述的行为,原因是name2 通常在字符串中使用- 字符,Lucene 查询对这些字符的解释很差。在这种情况下,唯一安全的方法是以这种方式编写变量:

    Name1: {"find": "terms", "field":"name1.keyword"}
    Name2: {"find":"terms", "field":"name2.keyword", "query":"name1.keyword:$Name1"}
    

    和对应的Lucene查询为

    name1.keyword:$Name1 AND name2.keyword:$Name2
    

    这按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 2016-03-20
      相关资源
      最近更新 更多