Мало кто знает об этой фишке в 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.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Этот способ можно адаптировать под любые задачи и сделать быстрый мониторинг с оповещением в Slack/Telegram.

Костыльно? ОЧЕНЬ! Я даже не представляю, сколько сейчас людей перевернулось в гробу.

Но когда под рукой нет поднятой связки Prometheus + Grafana + Alertmanager, а заказчик требует сделать быстро и срочно, пойдёт и такое решение. Главное, чтобы все были довольны.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Кстати, я как-то встречал у клиента подобный самописный мониторинг: он нарочно отказался от всех этих модных штук в пользу — чем проще система, тем меньше отказов.

Доля правды в этом есть, ну, как говорится, каждому свой костыль и велосипед.