elasticsearch 如何通过API获取Grafana中表面板中的行数?,elasticsearch,grafana,grafana-api,grafana-alerts,elasticsearch,Grafana,Grafana Api,Grafana Alerts" /> elasticsearch 如何通过API获取Grafana中表面板中的行数?,elasticsearch,grafana,grafana-api,grafana-alerts,elasticsearch,Grafana,Grafana Api,Grafana Alerts" />

elasticsearch 如何通过API获取Grafana中表面板中的行数?

elasticsearch 如何通过API获取Grafana中表面板中的行数?,elasticsearch,grafana,grafana-api,grafana-alerts,elasticsearch,Grafana,Grafana Api,Grafana Alerts,问题本身就说明了这一点,我知道最新的Grafana可以选择检查UI本身中的面板,但我想通过API公开给定表中的行数。我想写一个处理行数的自动化代码,但是,我想不出一个更简单的方法。我正在处理的grafana正在使用elasticsearch节点进行查询。更新: 我没有找到任何方法通过API端点从Grafana获取行数,但是,我所做的是,我复制了Grafana仪表板为仪表板中给定面板创建的Elasticsearch查询[您可以使用Chrome上的“网络”选项卡复制查询,或者,您可以简单地遵循以下操

问题本身就说明了这一点,我知道最新的Grafana可以选择检查UI本身中的面板,但我想通过API公开给定表中的行数。我想写一个处理行数的自动化代码,但是,我想不出一个更简单的方法。我正在处理的grafana正在使用elasticsearch节点进行查询。

更新:

我没有找到任何方法通过API端点从Grafana获取行数,但是,我所做的是,我复制了Grafana仪表板为仪表板中给定面板创建的Elasticsearch查询[您可以使用Chrome上的“网络”选项卡复制查询,或者,您可以简单地遵循以下操作:

  • 进入面板的下拉列表:
  • 按“检查”
  • 单击此处的“查询”选项卡:
  • 在那里,您将看到查询,复制它并在Elasticsearch查询API中使用它,您将获得所需的JSON响应 ]
,并计算处于最深级别的“桶”数(例如,您使用了4个group by,例如:

然后,最深的存储桶将位于第4级),并计算出具有键的存储桶的数量,这就给出了表面板中的行数

这是我为同样的目的编写的简单python代码:

def get_rows(data, lev, max_depth):
total_rows = 0
if lev == max_depth and 'key' in data:
    total_rows += 1
for key, value in data.items():
    if type(value) == dict:
        total_rows += get_rows(value, lev, max_depth)
    elif type(value) == list:
        if key == "buckets":
            for val in value:
                total_rows += get_rows(val, lev+1, max_depth)
return total_rows
在这里,对于上面的屏幕截图,max_depth=4。希望它能帮助使用Elasticsearch作为数据源的人