Мало кто знает об этой фишке в journalctl, ща расскажу…
Короче, допустим, у тебя есть какой-то микросервис или скрипт, который пишет в системный журнал какие-то события или ошибки. К примеру, у меня есть Bash-скрипт, который запускается по cron каждую минуту:
if [[ "$THREADS" -ge "500" ]]; then
logger "MYSQL THREADS OVERLOAD:" "$THREADS"
fi
Суть скрипта заключается в том, чтобы мониторить число тредов в MySQL: если тредов больше 500, то в системный журнал пишется фраза «MYSQL THREADS OVERLOAD».
Далее у меня есть ещё один Bash-скрипт, также запускается раз в минуту:
TH=$(journalctl -S -180s | grep -c 'MYSQL THREADS OVERLOAD')
if [[ "$TH" -ge "3" ]]; then
systemctl reboot mysql
fi
Этот скрипт читает системный журнал и проверяет: если за три минуты в журнале проскочила трижды (либо больше) фраза «MYSQL THREADS OVERLOAD», то запускается полезная нагрузка. В данном примере у меня ребутится MySQL.
Костыльно? ОЧЕНЬ! Я даже не представляю, сколько сейчас людей перевернулось в гробу.
Но когда под рукой нет поднятой связки Prometheus + Grafana + Alertmanager, а заказчик требует сделать быстро и срочно, пойдёт и такое решение. Главное, чтобы все были довольны.
Доля правды в этом есть, ну, как говорится, каждому свой костыль и велосипед.








Комментарии