Динамические пороги на индикаторах Grafana?

Вопрос или проблема

Я извлекаю данные через SNMP с некоторых Dell iDRAC. Они предоставляют несколько измерений температуры системы:

  • Температура на входе системной платы
  • Температура CPU1
  • Температура CPU2
  • Температура CPU3
  • Температура CPU4
  • Температура окружающей среды шасси

Для каждой метрики также доступны различные пороговые значения. Для каждого значения temperatureProbeReading есть соответствующее значение temperatureProbeUpperNonCriticalThreshold и temperatureProbeUpperCriticalThreshold. Метрики представлены с помощью snmp-exporter в следующем виде:

# HELP temperatureProbeReading 0700.0020.0001.0006 Этот атрибут определяет показания температурного датчика, тип которого отличается от temperatureProbeTypeIsDiscrete - 1.3.6.1.4.1.674.10892.5.4.700.20.1.6
# TYPE temperatureProbeReading gauge
temperatureProbeReading{temperatureProbeIndex="1",temperatureProbeLocationName="System Board Inlet Temp",temperatureProbechassisIndex="1"} 290
temperatureProbeReading{temperatureProbeIndex="2",temperatureProbeLocationName="CPU1 Temp",temperatureProbechassisIndex="1"} 490
temperatureProbeReading{temperatureProbeIndex="3",temperatureProbeLocationName="CPU2 Temp",temperatureProbechassisIndex="1"} 480
temperatureProbeReading{temperatureProbeIndex="4",temperatureProbeLocationName="CPU3 Temp",temperatureProbechassisIndex="1"} 430
temperatureProbeReading{temperatureProbeIndex="5",temperatureProbeLocationName="CPU4 Temp",temperatureProbechassisIndex="1"} 400
temperatureProbeReading{temperatureProbeIndex="6",temperatureProbeLocationName="Chassis Ambient Temp",temperatureProbechassisIndex="1"} 290
# HELP temperatureProbeUpperNonCriticalThreshold 0700.0020.0001.0011 Этот атрибут определяет верхний некритический порог температурного датчика - 1.3.6.1.4.1.674.10892.5.4.700.20.1.11
# TYPE temperatureProbeUpperNonCriticalThreshold gauge
temperatureProbeUpperNonCriticalThreshold{temperatureProbeIndex="1",temperatureProbeLocationName="System Board Inlet Temp",temperatureProbechassisIndex="1"} 420
temperatureProbeUpperNonCriticalThreshold{temperatureProbeIndex="2",temperatureProbeLocationName="CPU1 Temp",temperatureProbechassisIndex="1"} 980
temperatureProbeUpperNonCriticalThreshold{temperatureProbeIndex="3",temperatureProbeLocationName="CPU2 Temp",temperatureProbechassisIndex="1"} 980
temperatureProbeUpperNonCriticalThreshold{temperatureProbeIndex="4",temperatureProbeLocationName="CPU3 Temp",temperatureProbechassisIndex="1"} 980
temperatureProbeUpperNonCriticalThreshold{temperatureProbeIndex="5",temperatureProbeLocationName="CPU4 Temp",temperatureProbechassisIndex="1"} 980
temperatureProbeUpperNonCriticalThreshold{temperatureProbeIndex="6",temperatureProbeLocationName="Chassis Ambient Temp",temperatureProbechassisIndex="1"} 440
# HELP temperatureProbeUpperCriticalThreshold 0700.0020.0001.0010 Этот атрибут определяет верхний критический порог температурного датчика - 1.3.6.1.4.1.674.10892.5.4.700.20.1.10
# TYPE temperatureProbeUpperCriticalThreshold gauge
temperatureProbeUpperCriticalThreshold{temperatureProbeIndex="1",temperatureProbeLocationName="System Board Inlet Temp",temperatureProbechassisIndex="1"} 470
temperatureProbeUpperCriticalThreshold{temperatureProbeIndex="2",temperatureProbeLocationName="CPU1 Temp",temperatureProbechassisIndex="1"} 1030
temperatureProbeUpperCriticalThreshold{temperatureProbeIndex="3",temperatureProbeLocationName="CPU2 Temp",temperatureProbechassisIndex="1"} 1030
temperatureProbeUpperCriticalThreshold{temperatureProbeIndex="4",temperatureProbeLocationName="CPU3 Temp",temperatureProbechassisIndex="1"} 1030
temperatureProbeUpperCriticalThreshold{temperatureProbeIndex="5",temperatureProbeLocationName="CPU4 Temp",temperatureProbechassisIndex="1"} 1030
temperatureProbeUpperCriticalThreshold{temperatureProbeIndex="6",temperatureProbeLocationName="Chassis Ambient Temp",temperatureProbechassisIndex="1"} 470

Я хотел бы использовать эти значения в качестве порогов в некоторых визуализациях “Gauge”. Я немного изучил преобразования и “конфигурацию из результатов запросов“, что, кажется, может быть правильным путем, но я не совсем уверен, что понимаю поведение этой функции. Я хотел бы начать с следующего запроса:

temperatureProbeReading{instance="$instance"}/10

Это должно отобразить набор индикаторов, по одному для каждого местоположения датчика, и я хотел бы, чтобы каждый индикатор имел порог, вычисленный из соответствующих значений temperatureProbeUpperNonCriticalThreshold и temperatureProbeUpperCriticalThreshold. Просто создать индикаторы легко; только с помощью самого запроса я получаю:

введите описание изображения здесь

Отлично! Но я не уверен, как настроить динамические пороги. Я начал с добавления дополнительных запросов для значений порогов…

введите описание изображения здесь

…и теперь у меня слишком много индикаторов (чтобы было ясно, я это ожидал; я просто не уверен, является ли это необходимым первым шагом или нет).

Настройки “конфигурации из результатов запросов” не позволяют использовать значение из одного запроса в качестве порога для другого (в данном случае, у меня есть три запроса — A, B и C — и я хотел бы использовать результаты из B и C, чтобы установить порог для A [а затем скрыть B и C из визуализации]).

Есть ли способ сделать это? Я надеялся избежать необходимости создания шести отдельных визуализаций с статическими порогами.

Ответ или решение

Создание динамических порогов для визуализации датчиков температуры в Grafana может значительно улучшить удобство мониторинга систем, предоставляя гибкую настройку на основе текущих данных. Чтобы интегрировать динамические пороги температуры в ваши графики, сначала необходимо понять, как Grafana работает с запросами и как оно может использовать несколько запросов для настройки визуализации.

Теория: Понимание и настройка порогов в Grafana

Grafana предлагает визуализацию данных из различных источников, включая SNMP, через плагины, такие как snmp-exporter, который преобразует данные из MIB OID в метрики Prometheus. В вашем случае, вы извлекаете данные о температуре и пороговые значения для критически и некритически допустимых температур. Эти пороговые значения важны для настройки системных предупреждений и визуализации, так как они определяют, когда необходимо принять меры по предотвращению перегрева систем.

В Grafana для метрик можно установить статические пороги, однако более продвинутый подход предполагает использование динамических порогов на основе данных, поступающих в реальном времени. Чтобы реализовать это, вы используете функцию "Config from query results", которая позволяет задействовать результаты одного запроса для конфигурации другого.

Пример: Как настроить динамические пороги

Вы уже начали процесс, добавив дополнительные запросы для извлечения пороговых значений температуры из SNMP. Основная идея заключается в создании запросов, каждый из которых будет извлекать нужные метрики: A для показателей температуры, B для некритических порогов и C для критических. В вашем случае:

  1. Запрос A: Извлечение текущей температуры (например, temperatureProbeReading{instance="$instance"}/10). Это ваши основные данные, которые вы хотите визуализировать на графике.

  2. Запрос B: Извлечение некритического температурного порога (например, temperatureProbeUpperNonCriticalThreshold{instance="$instance"}/10).

  3. Запрос C: Извлечение критического температурного порога (например, temperatureProbeUpperCriticalThreshold{instance="$instance"}/10).

После того как вы настроили эти запросы, вам нужно настроить Transformations и Overrides, чтобы использовать значения из B и C как пороги для A. Следуйте этим шагам:

  1. Перейдите в панель визуализации графиков Gauge в Grafana.
  2. Откройте раздел Query и создайте три упомянутых запроса (A, B, C).
  3. Перейдите на вкладку Transformations после Query.
  4. Используйте Merge или Join для объединения результатов запросов B и C с запросом A на основе label temperatureProbeIndex.
  5. Перейдите в раздел Overrides в конфигурации панели, чтобы задать правила для отображения.
  6. Настройте пороги, используя функции передачи параметров из результатов запросов B и C как динамические пороги для запроса A.

Применение: Интеграция и визуализация

После того как вы настроили объединение данных в разделе Transformations и установили пороговые значения динамически через Overrides, ваши графики смогут гибко отображать температурные значения с учетом текущих порогов. Динамические пороги позволяют значительно улучшить видимость по монитору каждого элемента системы, создавая предупреждения в реальном времени, когда температура выходит за рамки допустимого, что особенно важно для предотвращения перегрева и сбоев в работе серверов.

В дополнение, стоит скрыть метрики запросов B и C для чистоты отображения. Это можно сделать через настройки панели, выбирая какие из результатов показывать или скрывать в визуализации. Эти шаги обеспечат более точное и оперативное управление вашими системами.

Таким образом, Grafana позволяет динамически интегрировать и визуализировать данные о температуре, что обеспечит эффективное и надежное решение для мониторинга состояния вашего оборудования, минимизируя риски и упрощая диагностику.

Оцените материал
Добавить комментарий

Капча загружается...