Поскольку вопрос говорит сам за себя, я знаю, что последняя версия Grafana имеет возможность проверять панели в самом пользовательском интерфейсе, но я хотел показать количество строк в данной таблице через API. Хотел написать код автоматизации, который имеет дело с количеством строк, однако я не могу придумать более простого способа сделать это. Графана, с которой я имею дело, использует узлы elasticsearch для запросов.
Как получить количество строк в панели таблицы в Grafana через API?
Ответы (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 в качестве источника данных.