Как получить количество строк в панели таблицы в Grafana через API?

Поскольку вопрос говорит сам за себя, я знаю, что последняя версия Grafana имеет возможность проверять панели в самом пользовательском интерфейсе, но я хотел показать количество строк в данной таблице через API. Хотел написать код автоматизации, который имеет дело с количеством строк, однако я не могу придумать более простого способа сделать это. Графана, с которой я имею дело, использует узлы elasticsearch для запросов.


person Banipreet Singh Raheja    schedule 07.04.2021    source источник


Ответы (1)


Обновлять:

Я не нашел способа получить количество строк через конечную точку API из Grafana, однако я скопировал запрос Elasticsearch, который панель Grafana сделала для данной панели в панели управления [Вы можете скопировать запрос либо используя вкладку Сети в Chrome, либо вы можете просто выполнить следующее:

  • Откройте этот раскрывающийся список для панели:  Элемент списка
  • Нажмите Inspect
  • Щелкните вкладку «Запрос» здесь:  введите описание изображения здесь
  • Там вы увидите запрос, скопируйте его и используйте в API запросов Elasticsearch, и вы получите желаемый ответ JSON]

, и подсчитали количество сегментов, находящихся на самом глубоком уровне (скажем, вы использовали 4 группировки, например:  введите описание изображения здесь

тогда самая глубокая корзина будет на уровне 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 в качестве источника данных.

person Banipreet Singh Raheja    schedule 12.04.2021