Как отслеживать медленный лог MySQL и отправлять почту для оповещения?
Я включил mysql медленный журнал запросов на сервере Ubuntu. Я предпочитаю получать оповещения по электронной почте с медленным SQL, когда появляется любой медленный запрос, чтобы я мог оптимизировать SQL. Мне нужно легкое решение.
2 ответа
Если вы можете сидеть сложа руки в ожидании медленного запроса, не торопитесь с ним - удачи вам!
Это не то, как я занимаюсь мониторингом / настройкой моих систем. Я получаю систему для регистрации всех запросов, затем использую модифицированную версию этого сценария для удаления литералов из предложения WHERE, а затем устанавливаю приоритеты на основе суммы времен анонимных запросов (код, который я использую, также вычисляет среднее значение, stddev и макс)
Но довольно простое решение для достижения того, что вы просите (запустите frmo cron):
#!/bin/bash
CTL_FILE='/var/lock/slowchk'
LOG_FILE='/var/log/mysql_slow_query.log'
if [ ! -f ${CTL_FILE} ]; then
touch ${CTL_FILE}
fi
if [ ${LOG_FILE} -nt ${CTL_FILE} ]; then
touch ${CTL_FILE}
tail -200 ${LOG_FILE} | mail -s 'Slow Queries' user@example.com
else
touch ${CTL_FILE}
fi
Обратите внимание, что запросы появляются в журнале только после того, как они завершены - если у вас есть какие-то настоящие неприятности, вы можете проанализировать вывод "mysqladmin processlist", чтобы найти материал, который в настоящее время выполняется более чем с порогом, с вид убить его.
Я часто использую MyTOP, похожий на top монитор запросов для MySQL, это Perl-скрипт с некоторым хаком, в который вы можете добавить функцию отправки уведомлений.