Мониторинг параметров MySQL в Zabbix
dev-db/mysql-5.1.67
net-analyzer/zabbix-2.2.2-r1
Статья рассказывает о том как настроить мониторинг многочисленных параметров MySQL сервера с помощью Zabbix.
Как ни странно в сети оказалось весьма мало действенных и эффективных рецептов по мониторингу производительности MySQL в заббиксе, поэтому я предлагаю свой вариант.
Он отличается большой гибкостью и эффективностью, т.к. он не использует ни perl ни php скриптов, а только bash и в нем предусмотрен кэш.
Установка скрипта
Создание папки для скриптов:
mkdir /etc/zabbix/scripts/ chown root:zabbix -R /etc/zabbix/scripts/ chmod 750 /etc/zabbix/scripts/
Создадим сам скрипт:
Кеш необходим ввиду особенности работы zabbix когда на каждый элемент собираемых данных выполняется по отдельному запросу. Т.е. если вы мониторинге 20 параметров MySQL, то за один период обновления будет инициировано 20 обращений к БД.
Время действия кэша в секундах должно устанавливается чуть меньше чем период опроса элементов.
Установка прав
chown root:zabbix /etc/zabbix/scripts/mysql-stats.sh chmod 550 /etc/zabbix/scripts/mysql-stats.sh
Проверка
sudo -u zabbix /etc/zabbix/scripts/mysql-stats.sh none questions USER PASSWORD
Вы должны получить статистические данные, если этого не произошло, то конфигурация выполнена не правильно.
Если для проверки скрипт запускался с правами root, то он будет владельцем кэш файла - удалите кэш файл после проверок.
Чтобы посмотреть список доступных метрик выполните
mysqladmin -uroot -p extended-status
Настройка MySQL
Создать пользователя zabbix@localhost в MySQL.
mysql [(NONE)]> SHOW grants FOR zabbix@localhost; +---------------------------------------------------------------------------------------------------------------+ | Grants FOR zabbix@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY PASSWORD '*F5C5B411175D3849C095FBCBD20C8F084E7AC49E' | +---------------------------------------------------------------------------------------------------------------+
Настройка Zabbix сервера
Вызов скрипта через zabbix-agent
Настройка
... UserParameter=mysql-stats[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD]
Для работы скрипта нужно передать имя пользователя и пароль для подключения к MySQL. Их можно указать в конфиге zabbix-agent или в самом скрипте.
Перезапустить
/etc/init.d/zabbix-agentd restart
Проверка
zabbix_get -s HOST -k 'mysql-stats[questions]'
Для контролируемых данных нужно создать соответствующее элементы с типом «Zabbix агент» и ключом вида:
mysql-stats[key]
где key - контролируемая метрика
Готовый Шаблон для мониторинга MySQL Stats (agent) с уже настроенными элементами и графиками.
Обсуждение
Спасибо!
у меня заработало после исправления
на
может быть проблема с правами на файлик /tmp/mysqlstat.cache, если вы в первый раз запустили скрип не забикс агентом, будьте внимательней. А так все работает, спасибо!
Спасибо! Установка прошла без проблем.
а как можно приспособить данный скриgт для получения данных с других серверов mysql(под win)? или может есть что иное для мониторига множества баз
Не подскажете в чем может быть проблема? не снимается статистика через скрипт,в логах пишет:
при этом например
из консоли срабатывает без проблем
Прописал логин и пароль на агенте.
Запускаю с сервера: В логе агента появляется хотя он именно там и есть. Подскажите куда копать.Супер. Спасибо
у команды stat на Linux и FreeBSD синтаксис разный! в Linux используется GNU stat
Чтобы графики из приложенного шаблона заработали, нужно
Вместо UserParameter=mysql-stats[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD] и zabbix_get -s HOST -k 'mysql-stats[questions]'
Указать UserParameter=mysql[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD] и тогда проверка по zabbix_get -s HOST -k 'mysql[questions]'
В шаблоне все item через mysql[*] прописаны
Все сделал по статье вроде, но ни один параметр не работает. В логах zabbix-сервера:
и т.д.
В чем может быть дело? Куда копать?
Ребят кто шарит подскажите! Этот шаблон, Template App MySQL, он мониторит полностью всю субд mysql? А могу ли я как-то настроить мониторинг одной отдельной базы???
to run this script you don't need any mysql privileges "SHOW STATUS provides server status information (see Section 5.1.7, “Server Status Variables”). This statement does not require any privilege. It requires only the ability to connect to the server." So, just create a user to monitor: Create user ‘zabbix’@’localhost’ identified by ‘password’; Thanks a lot for your article. Is the best under the whole Gogole results