June 12
Uptime Kuma – добавляем мониторинг статуса systemd сервисов
Uptime Kuma — отличный инструмент для мониторинга доступности сервисов, но в нем нет встроенной поддержки systemd. В этом посте я покажу, как с помощью простого bash-скрипта и Push отслеживать статус systemd сервисов и получать оповещения об измнении их статуса.
Настраиваем Uptime
- Переходим в Uptime Kuma и логинимся
- Добавляем Группу (чтоб статистика была общая) Нажимаем +Add New monitor
- Выбираем тип мониторинга Group
Настройки для Group такие:
- Friendly Name: Server (Можете выбрать удобное вам)
- Heartbeat Interval: 300
- Retries: 2
- Heartbeat Retry Interval: 30
- Resend Notification if Down X times consecutively: 5
Добавляем сервис из systemctl
- Добавляем сервис. Нажимаем +Add New monitor
- Выбираем Monitoring Type: Push
- Friendly Name: rclone-yandex
- Push URL: Копируем в буфер и записываем, он нам позже пригодится.
- Heartbeat Interval: 300
- Retries: 2
- Heartbeat Retry Interval: 30
- Resend Notification if Down X times consecutively: 5
- Monitoring Group: Выбираем Server, или то что вы указали в Friendly Name на предыдущем шаге.
Повторяем
Повторяем шаг для всех нужных вам сервисов. Можно через кнопку Clone в уже готовом сервисе. Так будет проще. У меня получились: unbound, rclone-yandex, qbittorrent,vaultwarden.
Создаем скрипт для отправки статуса сервисов
nano /etc/sendstatus.sh
#!/bin/bash # Название сервисов и их Push URL до символа ? # Например ["qbittorrent"]=http://10.1.0.12:3001/api/push/Qwerty declare -A SERVICES=( ["qbittorrent"]="http://10.1.0.12:3001/api/push/zCDfxf232fds" ["vaultwarden"]="http://10.1.0.12:3001/api/push/djfhDf23e12" ["unbound"]="http://10.1.0.12:3001/api/push/df234SDd98Kdx" ["rclone-yandex"]="http://10.1.0.12:3001/api/push/Df23cxsd2" ) # Перебираем сервисы и отправляем статус в Uptime for SERVICE in "${!SERVICES[@]}"; do URL="${SERVICES[$SERVICE]}" if systemctl is-active --quiet "$SERVICE"; then # Сервис работает — отправляем UP curl -fsS -X GET "$URL?status=up&msg=$SERVICE%20is%20active" > /dev/null else # Сервис упал — отправляем DOWN curl -fsS -X GET "$URL?status=down&msg=$SERVICE%20is%20inactive" > /dev/null fi done
- В скрипте перечисляем сервисы и их
Push URL
в секцииSERVICES
. Т.е у вас должен быть сервис с названием qbittorent, vaultwarden, unbound, rclone-yandex и т.д. Через = указываем Push URL до?status=up&msg=OK&ping=
так как актуальный статус мы будем передавать самим скриптом. Чтобы проверить что у вас сервис присутвует можно выполнить комманду:systemctl list-unit-files | grep rclone
. Т.еsystemctl list-unit-files | grep <название сервиса>
- Сохраняем файл
/etc/sendstatus.sh
- Проверяем работу скрипта:
bash /etc/sendstatus.sh
chmod +x /etc/sendstatus.sh
crontab -e
*/4 * * * * /etc/sendstatus.sh