🐹 CentOS 7: Утилита hddtemp. Мониторинг температуры жестких дисков в Grafana.

Содержание:

1. Задача.
2. Выполнение задачи.
3. Проверка температуры.
4. Мониторинг температуры жестких дисков в Grafana.

4.1. Предварительная настройка Pushgateway.
4.2. Выбор целевого диска.
4.3. Создание bash скрипта для извлечения метрик.
4.4. Визуализация метрик с помощью Grafana.
4.5. Удаление метрик.

5. Оригиналы источников информации.


На чем было опробовано:

  1. CentOS 7 Linux x86_64 release 7.8.2003.

1. Задача.

Задача: организовать мониторинг и визуализацию температуры указанного физического (не виртуального) жесткого диска.

2. Выполнение задачи.

Для операционной системы CentOS 7 есть отличная утилита hddtemp — инструмент для измерения температуры жестких дисков. Она проста в использовании и установке.

Для установки репозитория hddtemp в CentOS 7 требуется установить EPEL репозиторий и выполнить команду:

# yum -y install epel-release

После установки репозитория можно устанавливать и утилиту:

# yum -y install hddtemp

3. Проверка температуры.

Посмотрим какие устройства хранения информации у нас есть в системе:

# ls -l /dev | grep -E 'sd|hd'

В выводе будет что-то подобное:

3.1. Проверить температуру можно указанием конкретного устройства:

# hddtemp /dev/sda

3.2. Проверить температуру без аннотации можно указанием ключа -n и конкретного устройства:

# hddtemp -n /dev/sda

Ответ: 46.

3.3. Если необходимо сразу получить информацию о температуре нескольких жестких дисков, то можно привести команду к следующему виду:

# hddtemp /dev/sd{a,b,c}

4. Мониторинг температуры жестких дисков в Grafana.

4.1. Предварительная настройка Pushgateway.

Предварительно настройте программное обеспечение Prometheus, Pushgateway, Grafana. С помощью них мы будем получать значения температуры жёстких дисков, передавать метрики в Prometheus с помощью Pushgateway и визуализировать в Grafana.

Схема такая: hddtemp —> Pushgateway —> Prometheus —> Grafana

Ссылка на инструкцию по установке: «Prometheus: Установка и настройка Prometheus Server.»

Ссылка на инструкцию по установке: «Prometheus: Визуализация произвольных метрик и значений в Grafana через Pushgateway.»

Ссылка на инструкцию по установке: «Grafana: Установка и настройка Grafana Server.»

4.2. Выбор целевого диска.

К примеру, у нас есть два физических жестких диска.

Первый жесткий диск Corsair Force GS:

# hddtemp /dev/sdb

Ответ:

Будем снимать значение температуры с ключом -n.

# hddtemp -n /dev/sdb

Ответ: 36.

Второй жесткий диск HGST HTS545050A7E680:

# hddtemp /dev/sdc

Ответ:

Будем снимать значение температуры с ключом -n.

# hddtemp -n /dev/sdc

Ответ: 32.

4.3. Создание bash скрипта для извлечения метрик.

Создадим файл скрипта и объявим его исполняемым:

# cd ~
# touch pushgateway-all-in-one.sh
# chmod +x pushgateway-all-in-one.sh

Наполним файл с текстом скрипта:

# mcedit pushgateway-all-in-one.sh

Текст такой:

#!/bin/bash

var_sdb=$(hddtemp -n /dev/sdb)
var_sdc=$(hddtemp -n /dev/sdc)

cat << EOF | curl --data-binary @- http://localhost:9091/metrics/job/emachines_custom_metrics/instance/localhost
     hddtemp_sdb_current_metric $var_sdb
     hddtemp_sdc_current_metric $var_sdc
EOF

Запустим один раз скрипт, чтобы от сформировал метрику и отправил её значение:

# sh /root/pushgateway-all-in-one.sh

Ответ: ничего.

Внимание! Перед тем как заходить в web-список метрик Pushgateway и Prometheus, убедитесь, что у вас открыты порт 9090 и порт 9091 на сервере, в противном случае вы не сможете попасть на эти сервисы и ничего не увидите.

Заходим в web-список метрик Pushgateway:

# http://Ваш-IP:9091/metrics

И в списке метрик ищем нашу метрику hddtemp_sdb_current_metric:

Заходим в web-список диаграмм Prometheus:

# http://Ваш-IP:9090/graph

И в списке метрик ищем нашу метрику hddtemp_sdb_current_metric или hddtemp_sdc_current_metric:

Отлично метрика проталкивается Pushgateway с помощью скрипта pushgateway-all-in-one.sh и попадает в Prometheus. Это было сделано единоразово вручную, путем запуска скрипта.

Можно, конечно, записать скрипт на исполнение 1 раз в минуту с помощью crontab:

# mcedit /etc/crontab/

Запись:

# Pushgateway push metrics to Prometheus
* * * * * root /usr/bin/bash /root/pushgateway-all-in-one.sh > /dev/null 2>&1

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

Например можно зациклить выполнение крипта комбинацией команд:

# while sleep 15; do /root/pushgateway-all-in-one.sh; done;

Гдеsleep 15 — это время периодичности запуска скрипта каждые 15 секунд, как у выводы метрик в Grafana из Protetheus по умолчанию.

Поставим в автозапуск данную комбинацию и скрипт стартанёт, сразу после перезагрузки сервера:

# mcedit /etc/crontab/

Запись:

# Pushgateway push metrics to Prometheus
@reboot root while sleep 15; do /root/pushgateway-all-in-one.sh; done; > /dev/null 2>&1

Для инициализации процесса доставки значений, без перезагрузки сервера, запустим выполнение комбинации команд в фоновом режиме с помощью утилиты screen:

# screen

# while sleep 15; do /root/pushgateway-all-in-one.sh; done;

Ответ: в командной строке что-то сработало и зациклилось.

Нажимаем «Ctrl+a» затем «d» и сворачиваем сессию screen с запущенной комбинацией программ. Теперь до перезагрузки сервера оно будет работать в фоновом режиме и каждые 15 секунд отправлять нам метрику температуры жёсткого диска.

Ссылка на инструкцию по установке: «CentOS 7: Установка, настройка и эксплуатация утилиты screen.»

4.4. Визуализация метрик с помощью Grafana.

Заходим в Grafana и выполняем всё по инструкции, но место метрик температуры CPU node_hwmon_temp_celsius{instance=~'$node'} используем нашу метрику — hddtemp_sdb_current_metric.

Ссылка на инструкцию по настройке визуализации метрик: «Grafana: Делаем график температуры CPU для мониторинга температуры реальном времени.»

В итоге у нас получится тоже самое, но с информацией про жесткие диски.

При необходимости можете написать скрипты для каждого жесткого диска и мониторить каждый в отдельности или все метрики включить в один скрипт и смотреть графики все вместе, как вам будет удобнее.

4.5. Удаление метрик.

Если вам больше не нужны ваши самодельные метрики, то их можно и убрать.

Внимание! Обратите внимание, что приведенные ниже curl-вызовы не удаляют данные немедленно. Фактические данные все еще существуют на диске и будут очищены через определенные период в будущем.

Заходим на web-портал Pushgateway:

# http://Ваш-IP:9091

И просто нажимаем Delete Group для деактивации сбора метрик:

или вот так:

  • Удалите все показатели, сгруппированные по заданию и экземпляру:

# curl -X DELETE http://localhost:9091/metrics/job/emachines_custom_metrics/instance/localhost

  • Удалите все показатели, сгруппированные только по заданиям:

# curl -X DELETE http://localhost:9091/metrics/job/emachines_custom_metrics

  • Удалите все метрики во всех группах (требуется включить API администратора с помощью флага командной строки --web.enable-admin-api в конфигурации systemd):

# curl -X PUT http://localhost:9091/api/v1/admin/wipe

Далее удаляем bash-скрипты получения значений метрик и убираем записи в crontab о запуске сбора метрик в автоматическом режиме на самом сервере.

5. Оригиналы источников информации.

    1. my-biz.com.ua «Centos/RedHat: смотрим температуру жестких дисков (HDD)».
    2. quaded.com «Centos — hddtemp просмотр температуры диска».
    3. sysadmin.ru «Просмотр температуры жесткого диска с помощью hddtemp».
    4. dbiers.me «Monitor HDD Temperatures with Collectd, InfluxDB, Grafana – (CentOS 7.x x64)».
    5. losst.ru «Мониторинг температуры Linux».
    6. wikival.bmstu.ru «Сервис PrometheusСервис Prometheus».
    7. quay.io «Prometheus Pushgateway».
    8. devconnected.com «Monitoring Linux Processes using Prometheus and Grafana».
    9. quay.io «Prometheus Pushgateway».
    10. github.com «A simple way to make PushGateway always return 500».
    11. metricfire.com «Prometheus Pushgateways — Everything You Need To Know».
    12. github.com «pushgateway».