Найти тему
BASH DAYS | Linux Factory

Фишка с системным журналом о которой мало кто знает

Оглавление

Мало кто знает об этой фишке в journalctl, сейчас расскажу…

Есть какой-то микросервис или скрипт, который пишет в системный журнал какие-то события или ошибки. К примеру у меня есть bash скрипт, который запускается по крону каждую минуту:

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, а заказчик требует сделать быстро и срочно, пойдёт и такое решение. Главное чтобы все были довольны.

Кстати я как-то встречал у клиента подобный самописный мониторинг, он нарочно отказался от всех этих модных штук в пользу — чем проще система, тем меньше отказов. Доля правды в этом есть, ну как говорится — каждому свой костыль и велосипед.

Рекомендую почитать