Как быстро организовать мониторинг температуры CPU сервера?
Поймать баланс между системным инженерным подходом и быстрым решением задачи на коленке ad-hoc порой непросто.
Для мониторинга нагрузки системы существуют как различные готовые инструменты, так и известные мониторинговые конструкторы типа ELK/Opensearch и Prometheus-Grafana. Но порой быстрее для проведения локальных экспериментов быстро накидать в командной строке скрипт, собрать данные в JSON и затем уже анализировать данные в знакомых BI инструментах.
У меня сервер, как уже ранее писал, под управлением ProxMox, который основан на Debian. Температуру можно собрать с помощью утилиты sensors
(пакет lm-sensors
) и вывести в JSON.
Но в готовом JSON для мониторинга нам не хватает отметки времени. Как вставить в JSON метку времени? Например, можно брать с помощью команды командной строки date
.
Можно воспользоваться утилитой jq
jq
имеет специальные “фильтры”, с помощью которых можно манипулировать JSON. Мы вставим новое поле “time” со значением равным выводу команды “date”.
sensors -j | jq --arg date "$(date)" '. |= {"time": $date} + .'
Осталось зациклить в бесконечном цикле – и наша система сбора информации о температуре CPU готова!
#!/bin/bash
while [ 2 -lt 3 ]
do
sleep 2
sensors -j |jq --arg date "$(date)" '. |= {"time": $date} + .' >> ./temp.json
done
На выходе у нас готовый JSON, пригодный для анализа!