Мониторинг параметров 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
Настройка
/etc/zabbix/zabbix_agentd.conf
... 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) с уже настроенными элементами и графиками.
Обсуждение
Спасибо!
у меня заработало после исправления
на
Выражаю благодарность автору статьи и поситителю 7x7 за коректную правку поправку автор P.S. FreeBSD 10.1-RELEASE+autossh ⇒ Zabbix 2.2.7 (Debian 8.0 Jessie)
Присоединяюсь к kyourselfer . FreeBSD 10.4-⇒ Zabbix 3.2 (FreeBSD 10.4)
может быть проблема с правами на файлик /tmp/mysqlstat.cache, если вы в первый раз запустили скрип не забикс агентом, будьте внимательней. А так все работает, спасибо!
Спасибо! Установка прошла без проблем.
а как можно приспособить данный скриgт для получения данных с других серверов mysql(под win)? или может есть что иное для мониторига множества баз
Можно, если слегка модернизировать:
Не подскажете в чем может быть проблема? не снимается статистика через скрипт,в логах пишет:
при этом например
из консоли срабатывает без проблем
Проверяйте права. Доступность на выполнение скрипта пользователю zabbix.
Прописал логин и пароль на агенте.
Запускаю с сервера: В логе агента появляется хотя он именно там и есть. Подскажите куда копать.Работает из консоли?
Наткнулся на те-же грабли ( Алексей у Вас есть решение ?
Отвечу на свои грабли) в логах строчка "mysql_stat.sh: not found" появлялась потому что не установил bash.
Супер. Спасибо
у команды 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[*] прописаны
Это был шаблон для 2.0, для 2.2 надо было брать, пожалуй надо было выделить это красным
Все сделал по статье вроде, но ни один параметр не работает. В логах zabbix-сервера:
и т.д.
В чем может быть дело? Куда копать?
проверку скрипта из консоли под пользователем zabbix делали? содержимое кеш-файла смотрели?
Команда
работает, кеш заполняется метриками, а команда
bash установлен. После ряда перезапусков ошиьбки из логов чудом ушли (по могу понять из-за чего) Агент не выдает результатов
а так
права на кеш-файл
конфиг агента (UserParameter и Server)
Ребят кто шарит подскажите! Этот шаблон, 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