#python #prometheus #monitoring #grafana #prometheus-node-exporter
Вопрос:
Допустим, у меня есть файл, который используется для отслеживания состояния устройств, подключенных к компьютеру. Файл выглядит так:
DEVICE_1 = ONLINE
DEVICE_2 = OFFLINE
DEVICE_3 = ONLINE
DEVICE_4 = OFFLINE
Как я могу использовать библиотеку Python prometheus_client для создания пользовательского экспортера, который будет очищать значения в этом файле? Я планирую отобразить значения в виде графика временных рядов с помощью Grafana, чтобы я мог видеть, как состояние каждого устройства меняется со временем. Нужно ли мне использовать гистограмму или датчик? Важно, чтобы я сохранял идентификатор устройства и его состояние вместе. Может ли кто-нибудь объяснить наилучший подход, чтобы их можно было преобразовать в метрику?
Ответ №1:
Здесь есть 2 вопроса: какой тип метрики использовать для этих данных и как использовать клиентскую библиотеку.
Я собираюсь ответить на вопрос о типе метрики. Я определяю «лучший» как создание графика, подобного приведенному ниже, который будет циклически изменяться между 1/0, когда устройство подключено/ОТКЛЮЧЕНО:
Я бы реализовал датчик, который либо равен 1/0. Гистограмма добавляет сложности и выборок наблюдений. Его можно использовать для отслеживания скорости удаления устройств, т. е. устройство 1 удаляется/подключается X раз за последние 60 минут.
В вашем приложении-экспортере python проанализируйте свой файл и используйте метки для указания значений для каждого устройства
g = Gauge('customapp_activedevices', 'Description of gauge')
while True:
file= open("devicefile", "r")
deviceCollection = file.read()
for device in deviceCollection:
if device.status == 'ONLINE':
metricVal = 1
else:
metricVal = 2
g.labels(devicename=device).set(metricVal)
Тогда ваш запрос grafana довольно прост, потому что эти метки станут разными рядами на вашем графике. Вы также должны установить метку экземпляра в своем экспортере, чтобы панель мониторинга grafana могла обрабатывать несколько экземпляров вашего экспортера и несколько устройств.
Комментарии:
1. Спасибо, что ответили! На самом деле это именно то решение, к которому я тоже пришел. Однако есть одна проблема. Каждый раз, когда я изменяю состояние устройства в файле. Скажем, DEVICE_1 = ОТКЛЮЧЕН. Он будет отображаться как совершенно новая метрика, и Grafana дважды отобразит 2 состояния (онлайн, оффлайн) DEVICE_1 на панели мониторинга . Знаете ли вы о чем-нибудь, чтобы я мог показать метрику только один раз и как она меняется со временем?
2. Подожди, не обращай внимания. Я смог разобраться в своей проблеме. Я добавлял в свою метрику вторую метку, которая отслеживала состояние, и это привело к созданию совершенно отдельной метрики. То, что Брэндон сделал выше, работает правильно. Просто используйте 1 метку, которая статична, и вы знаете, что она не изменится. Это предотвратит создание другой метрики. Еще раз спасибо!