Разбейте Datadog COUNT / GAUGE без двойного подсчета

У меня есть сценарий, который запрашивает API нашего CI (Buildkite) один раз в минуту, чтобы получить подробную информацию обо всех агентах сборки и отправить метрики в Datadog для анализа. Однако получение точного количества этих агентов в пользовательском интерфейсе Datadog оказалось сложной задачей.

Если скрипт генерирует метрику COUNT для каждого агента, который он видит, тогда агенты будут дважды подсчитываться в пользовательском интерфейсе Datadog, когда интервал превышает минуту, потому что скрипт запускается один раз в минуту и ​​каждый раз видит (в основном) одних и тех же агентов. . Сценарий может подсчитать количество агентов, которые он видит при каждом запуске, и выдать это как GAUGE, но тогда я теряю возможность разбить счетчик в пользовательском интерфейсе Datadog по тегам, зависящим от агента (очередь и т. Д.).

Я полагаю, я мог бы испускать GAUGE со значением 1 для каждого агента при каждом запуске и добавлять искусственный тег index со значением числового индекса в массиве агентов и полагаться на пользовательский интерфейс Datadog для суммирования значений index. ? Конечно, я мог бы использовать идентификатор агента / хост, но Datadog взимает плату по количеству значений тегов, и у нас есть наши агенты в группе с автоматическим масштабированием, поэтому хосты часто меняются.

Это кажется хакерским - есть ли лучшее решение? Я слишком много думаю об этом?


person Alek Storm    schedule 04.04.2021    source источник


Ответы (1)


Вы можете пометить свои метрики именем или идентификатором агента, от которого он собирает метрики (если вы еще этого не сделали). Затем в Datadog вы можете написать запрос, который группирует по идентификатору агента и применяет функцию count_not_null: https://docs.datadoghq.com/dashboards/functions/count/

Это в основном захватывает случайную метрику, чтобы извлечь уникальное количество агентов, сообщающих эту метрику, чтобы принять общее количество агентов. Однако вы не сможете легко группировать по очереди, поэтому idk, если это было бы хорошим решением для вашего варианта использования.


Мне нравится ваша идея об использовании датчиков. Вы можете отправить новую метрику, называемую чем-то вроде myagent.running, которая отправляет значение 1 для каждого из ваших агентов и вычисляет сумму всех датчиков, чтобы получить счет. Фактически так реализована метрика datadog.agent.running: https://docs.datadoghq.com/integrations/agent_metrics/#metrics

person draav    schedule 05.04.2021