SNMP мониторинг MySQL
В этом посте я расcкажу, как можно мониторить хост с БД MySQL через SNMP. В качестве ПО для мониторинга будем использовать The Dude. Это софт от разработчиков роутеров Microtic, который зарекомендовал себя очень хорошо. Особенно примечательно в нем то, что там используется минимум сторонних библиотек, из-за чего он может похвастаться минимальным размером.
Будем считать, что сервер и клиент mysql уже установлен. Теперь приступим к установке агента.
Установка mysq-snmp
Ставим зависимости
1 |
sudo apt-get install libmath-bigint-gmp-perl libunix-syslog-perl libnet-snmp-perl libsnmp-perl snmp-mibs-downloader |
Качаем mib-ы
1 |
sudo /usr/bin/download-mibs |
Теперь ставим сам mysql-snmp
1 2 3 4 |
git clone https://github.com/masterzen/mysql-snmp ./mysql-snmp cd ./mysql-snmp sudo dpkg-buildpackage -rfakeroot -uc -b sudo make install |
Perl-скрипт демона устанавливается в /usr/sbin/mysql-snmp. Вот информация о том, что куда ставится:
1 2 3 4 5 |
andrey@srv:~/mysql-snmp$ sudo make install install -m 755 mysql-snmp /usr/sbin/mysql-snmp install -m 644 MYSQL-SERVER-MIB.txt /usr/share/snmp/mibs install -m 644 mysql-snmp.1 /usr/share/man/man1 gzip /usr/share/man/man1/mysql-snmp.1 |
Копируем файл из дистрибьютива mysql-snmp в файл /etc/snmp/mysql-snmp.cnf , чтобы агент (/usr/sbin/mysql-snmp смог подконнектиться к базе
1 2 |
sudo cp ./my.cnf /etc/snmp/mysql-snmp.cnf sudo mcedit /etc/snmp/mysql-snmp.cnf |
Добавляем в MySQL пользователя для mysql-snmp (хост прописываем localhost) и прописываем его в этом конфиге.
1 2 3 4 5 |
[client] host=localhost #port=3306 user=mysqlsnmp password=mysqlsnmppass |
Создаём файл /etc/init.d/mysql-snmp. Содержимое берем отсюда: https://gist.github.com/bugcy013/bde864a26f81e8b52e6e или из дистрибьютива mysql-snmp
1 2 3 |
wget https://gist.githubusercontent.com/bugcy013/bde864a26f81e8b52e6e/raw/a1a6d575e7ea19424b765ca8a0b48bc04b3d871f/mysql-snmp%2520upstart sudo cp ./mysql-snmp%20upstart /etc/init.d/mysql-snmp sudo chmod +x /etc/init.d/mysql-snmp |
Прописываем там путь до конфига /etc/snmp/mysql-snmp.cnf
sudo mcedit /etc/init.d/mysql-snmp
В файл /etc/snmp/snmpd.conf добавляем строчку
master agentx
Тестируем snmp-агента
1 |
sudo /usr/sbin/mysql-snmp |
Включаем автозагрузку;
1 |
sudo update-rc.d mysql-snmp defaults |
Запускаем:
1 |
/etc/init.d/mysql-snmp start |
Смотрим /var/log/syslog, что запускается без ошибок
1 2 3 |
Apr 5 01:32:41 mysql snmpd[31694]: Turning on AgentX master support. Apr 5 01:32:41 mysql systemd[1]: Started LSB: SNMP agents. Apr 5 01:32:41 mysql snmpd[31696]: NET-SNMP version 5.7.3 |
Тестируем выдачу oid-ов локально.
1 |
snmpwalk -m MYSQL-SERVER-MIB -v 2c -c public localhost enterprises.20267 |
Теперь надо добавить mib-ы mysql в Dude. Для этого на левой панели ищем группу Mib notes, открываем и видим там mib-файлы. Добавляем туда файл https://github.com/masterzen/mysql-snmp/blob/master/MYSQL-SERVER-MIB.txt и после этого делаем snmpwalk из Dude. По окончании в выпадающем списке справа будут MIB-ы в группе MYSQL-SERVER-MIB. У меня их оказалось 150 штук.
Ссылки
http://ubuntuforums.org/showthread.php?t=2177741
http://fsm-software-ba.com/downloads/Application-MySQL-Install-Doc.pdf
https://gist.github.com/bugcy013/bde864a26f81e8b52e6e
https://github.com/masterzen/mysql-snmp/blob/master/MYSQL-SERVER-MIB.txt