Вопрос или проблема
Я пытаюсь понять, как правильно получать уведомления, когда некоторый сервис systemd имеет проблемы. Ручная проверка systemctl status
не является устойчивым вариантом; по крайней мере, я хочу, чтобы у меня был простой значок в трее, например, просто зеленый или красный. Звуковые и/или визуальные уведомления тоже могут быть полезны. Удивительно, но, похоже, я не могу найти какие-либо существующие инструменты для этого, поэтому лучшее, что я могу придумать, это написать свой собственный, возможно, какой-то простой bash-скрипт, который периодически будет опрашивать systemctl и обновлять статус значка.
Это довольно плохо, но, увы.
Прежде чем я на самом деле начну тратить время на это, хочу убедиться, не пропускаю ли я случайно какие-либо лучшие варианты?
sudo systemctl --type=service
sudo systemctl --state=active
sudo systemctl --state=failed
journalctl -b -p err
Этого должно быть достаточно, чтобы отслеживать и находить любые некорректно работающие сервисы.
Используйте инструмент командной строки check_systemd
из коллекции плагинов мониторинга Nagios. Вы можете просто вызвать его без параметров или настройки Nagios (что является настоящим адом).
На Ubuntu вам просто нужно выполнить:
sudo apt -y install monitoring-plugins-systemd
и затем можете проверить
/usr/lib/nagios/plugins/check_systemd
Если $?
равно 0, всё в порядке, если 1 – плохо, а 2 – критично.
Все другие возвращаемые значения должны сообщить вам, что стоит бежать, потому что мир горит.
Ответ или решение
Для мониторинга состояния служб systemd существует несколько эффективных методов, которые могут помочь автоматизировать процесс и уведомить вас о возникновении проблем.
1. Использование командной строки
Вы можете использовать следующие команды для анализа состояния служб:
-
Чтобы увидеть все активные службы:
sudo systemctl --type=service
-
Для фильтрации по активным и неактивным сервисам:
sudo systemctl --state=active sudo systemctl --state=failed
-
Для просмотра ошибок из журналов:
journalctl -b -p err
Однако, вручную запрашивать эти команды регулярно неэффективно.
2. Использование check_systemd
из набора плагинов Nagios
Если вы хотите получить более автоматизированное решение, вы можете использовать инструмент check_systemd
, который входит в набор плагинов Nagios. Этот инструмент можно вызывать без необходимости настраивать весь Nagios:
-
Установите плагин на Ubuntu:
sudo apt -y install monitoring-plugins-systemd
-
Затем вы можете запускать:
/usr/lib/nagios/plugins/check_systemd
Возвращаемые значения:
0
означает, что все в порядке.1
означает, что есть проблемы.2
означает критическую ситуацию.
3. Создание собственного скрипта
Если вам нужно больше контроля среди визуальных уведомлений, вы можете написать простой Bash-скрипт, который будет опрашивать статус сервисов и обновлять иконку в трее:
Пример скрипта:
#!/bin/bash
SERVICE_NAME="имя_вашей_службы"
while true; do
if systemctl is-active --quiet $SERVICE_NAME; then
# Здесь можно обновить иконку на "зеленую"
notify-send "$SERVICE_NAME" "Служба работает" --icon="status-online"
else
# Здесь можно обновить иконку на "красную"
notify-send "$SERVICE_NAME" "Служба не работает" --icon="status-offline"
fi
sleep 60 # интервал проверки
done
4. Использование мониторинговых инструментов
Существуют более мощные решения для мониторинга, такие как Zabbix, Prometheus или Grafana. Эти инструменты позволяют не только отслеживать состояние служб, но и настраивать оповещения, графики и другую аналитику.
Заключение
Существует множество способов мониторинга состояния служб systemd. Выбор подходящего метода зависит от ваших требований и бюджета. Если вы хотите просто следить за состоянием, то check_systemd
— это хорошее решение. Однако, если нужны визуальные уведомления и детализированный анализ, стоит рассмотреть написание собственного скрипта или использование полнофункционального мониторинга.