Эх сурвалжийг харах

create example systemd watcher for hadnlers

blezz-tech 1 сар өмнө
parent
commit
d37777f9dc

+ 11 - 0
handlers/conf/bin/install.sh

@@ -0,0 +1,11 @@
+
+mkdir -p /etc/systemd/system/service-monitor
+
+cp -r ./conf/service-monitor /etc/systemd/system/service-monitor
+
+cp ./conf/bin/service-failure-check.sh /usr/local/bin
+cp ./conf/bin/service-watcher.sh /usr/local/bin
+
+
+chmod +x /usr/local/bin/service-failure-check.sh
+chmod +x /usr/local/bin/service-watcher.sh

+ 8 - 0
handlers/conf/bin/service-failure-check.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+SERVICE="$1"
+if ! systemctl is-active --quiet "$SERVICE"; then
+    echo "$(date): Сервис $SERVICE всё ещё не работает. Уведомление отправлено."
+    # Пример отправки уведомления (настройте под свою систему):
+    echo "Сервис $SERVICE не работает!" | mail -s "Ошибка сервиса" admin@example.com
+fi

+ 15 - 0
handlers/conf/bin/service-watcher.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+SERVICES=("service1" "service2" "service3" "service4" "service5" 
+          "service6" "service7" "service8" "service9" "service10")
+
+for service in "${SERVICES[@]}"; do
+    if ! systemctl is-active --quiet "$service"; then
+        echo "$(date): Сервис $service не работает. Перезапуск..."
+
+        systemctl restart "$service"
+        systemctl start "service-failure-watcher@${service}.timer"
+
+        echo "$(date): Таймер для $service активирован"
+    fi
+done

+ 6 - 0
handlers/conf/service-monitor/service-failure-watcher@.service

@@ -0,0 +1,6 @@
+[Unit]
+Description=Проверка статуса сервиса %I
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/service-failure-check.sh %i

+ 9 - 0
handlers/conf/service-monitor/service-failure-watcher@.timer

@@ -0,0 +1,9 @@
+[Unit]
+Description=Проверка сервиса %I через 15 минут
+
+[Timer]
+OnActiveSec=15m
+Unit=service-failure-watcher@%i.service
+
+[Install]
+WantedBy=timers.target

+ 6 - 0
handlers/conf/service-monitor/service-watcher.service

@@ -0,0 +1,6 @@
+[Unit]
+Description=Мониторинг и восстановление сервисов
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/service-watcher.sh

+ 9 - 0
handlers/conf/service-monitor/service-watcher.timer

@@ -0,0 +1,9 @@
+[Unit]
+Description=Ежечасная проверка сервисов
+
+[Timer]
+OnCalendar=hourly
+Persistent=true
+
+[Install]
+WantedBy=timers.target