Мало кто знает об этой фишке в 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.
Этот способ можно адаптировать под любые задачи и сделать быстрый мониторинг с оповещением в слак/телегр