-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonitor.sh
More file actions
38 lines (29 loc) · 1.27 KB
/
Copy pathmonitor.sh
File metadata and controls
38 lines (29 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
# Адреса health endpoint TaskTracker API
URL="http://localhost:5000/health"
# Файл для запису історії перевірок
LOG_FILE="/opt/tasktracker-api/monitor.log"
# Файл стану з кількістю помилок поспіль
STATE_FILE="/opt/tasktracker-api/.monitor_state"
# Часова мітка для логу
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# Початкове значення лічильника помилок
if [ ! -f "$STATE_FILE" ]; then
echo "0" > "$STATE_FILE"
fi
# Зчитування кількості попередніх невдалих перевірок
FAILURES=$(cat "$STATE_FILE")
# Отримання HTTP коду відповіді
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
# Обробка результату healthcheck
if [ "$HTTP_CODE" = "200" ]; then
echo "[$TIMESTAMP] INFO: TaskTracker API is healthy (HTTP 200)" >> "$LOG_FILE"
echo "0" > "$STATE_FILE"
else
echo "[$TIMESTAMP] ERROR: TaskTracker API returned HTTP $HTTP_CODE" >> "$LOG_FILE"
FAILURES=$((FAILURES + 1))
echo "$FAILURES" > "$STATE_FILE"
if [ "$FAILURES" -ge 3 ]; then
echo "[$TIMESTAMP] [ALERT] TaskTracker API failed $FAILURES times in a row" >> "$LOG_FILE"
fi
fi