Как отслеживать медленный лог 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-скрипт с некоторым хаком, в который вы можете добавить функцию отправки уведомлений.

Другие вопросы по тегам