Munin: различия между версиями
Sol (обсуждение | вклад) |
Sol (обсуждение | вклад) |
||
Строка 532: | Строка 532: | ||
Сохраните и закройте. Перезапустите службу Munin. Подождите пару минут (примерно 5 минут) или перезагрузить сервер Munin, чтобы Munin создал необходимые файлы / папки для вашей цели мониторинга. | Сохраните и закройте. Перезапустите службу Munin. Подождите пару минут (примерно 5 минут) или перезагрузить сервер Munin, чтобы Munin создал необходимые файлы / папки для вашей цели мониторинга. | ||
+ | |||
+ | ===Автоконфигурация плагинов=== | ||
+ | |||
+ | munin-node-configure --shell | sh | ||
== Munin Bootstrap Template:munin_dynamic_template == | == Munin Bootstrap Template:munin_dynamic_template == |
Текущая версия на 10:25, 20 октября 2015
Вводные данные: есть несколько удаленных точек, в каждой точке стоит небольшой комп с Fedora, который выпускает народ в интернет, устанавливает VPN с основным офисом и обеспечивает работу телефонии. Так же есть почтовые, веб и VPN сервера. Вот и хотелось видеть по ним некую информацию — как работают, температуру внутри компа, сетевую нагрузку, время отклика до некоторых узлов ну и т.д... Перечитал много всяких сайтов, и все же решил остановиться на Munin. Но как говорится, на вкус и цвет фломастеры разные, т.е. — каждому свое. Итак, все что буду описывать относится к ОС Fedora (версии от 8 до 17).
GitHub - все для мунин
Установка
Ставим серверную часть
yum install munin
Клиентская часть
yum install munin-node
Добавляем в автозапуск
chkconfig munin on chkconfig munin-node on
Добавляем виртуальный хост (/etc/httpd/conf/httpd.conf)
#domain munin.myhost.ru ServerName munin.myhost.ru ServerAlias munin.myhost.ru ServerAdmin [email protected] DocumentRoot /var/www/html/munin ErrorLog logs/munin.myhost.ru-error_log CustomLog logs/munin.myhost.ru-access_log common
Что бы ограничить доcтуп к статистике munin при установке создался файл munin-htpasswd (лежит в /etc/munin/), в этот файл нужно добавить пользователей с паролями с помощью стандартных команд htpasswd:
htpasswd /etc/munin/munin-htpasswd myuser
Рестартим сервис Apache и проверяем в браузере munin.myhost.ru. При запросе пароля вводим нашего пользователя и должны увидеть начальную страницу Munin.
Сразу добавим первый сервер для мониторинга — этот же самый сервер, для этого в файле /etc/munin/munin.conf прописываем следующее:
[server1.myhost.ru] address 127.0.0.1 use_node_name yes hddtemp_smartctl.sda.critical 55 hddtemp_smartctl.sdb.critical 55
Не обращайте пока внимания на две последние строчки — о них я напишу чуть позже. Хочу сразу заметить, что в статистике будут созданы группы серверов по доменному окончанию, то есть если у нас будут сервера типа:
server1.myhost.ru server2.myhost.ru server3.myhost.ru
... и
server1.myhost.local server2.myhost.local
... то у нас будет две группы в статистике myhost.ru и myhost.local и внутри этих групп будет уже статистика по серверам. Итак, один объект наблюдения у нас создан, давайте настроим на нем все, что мы хотим о нем знать. На этом сервере есть MySQL, Apache — их статистику мы будем собирать. Также интересен пинг до некоторых узлов в интернете, температура внутри сервера, его загрузка, аптайм и прочие характеристики... После установки в папке /etc/munin/plugins/ уже есть некий набор симлинков на плагины, его нужно проанализировать, убрать лишние и добавить нужные. Что добавил я.
cd /etc/munin/plusins/ ln -s /usr/share/munin/plugins/mysql_bytes ln -s /usr/share/munin/plugins/mysql_queries ln -s /usr/share/munin/plugins/mysql_slowqueries ln -s /usr/share/munin/plugins/mysql_threads ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt ln -s /usr/share/munin/plugins/multiping ln -s /usr/share/munin/plugins/hddtemp_smartctl
Первые четыре строчки — это обработка данных MySQL (трафик, запросы, медленные запросы и дочерние процессы), следующие три строчки — это мониторинг температуры, оборотов вентиляторов и напряжения внутри сервака, затем строчка проверки тайминга прохождения пингов и последняя — это температура жестких дисков. Плагины добавлены, теперь их надо настроить.
Нотификации
Помимо пассивного мониторинга, munin может также предупреждать нас о достижении некоторых лимитов по тому или иному ресурсу на сервере. Нотификации настраиваются на головном сервере мониторинга (в нашем случае это server1.example.com).
Откроем /etc/munin/munin.conf и добавим туда следующие строки:
# группы контактов – пока один me contacts me # команда на отправку нотификации contact.me.command |mail -s “Munin-notification for ${var:group} :: ${var:host}” [email protected] # всегда отправлять предупреждения и критические нотификации contact.me.always_send warning critical
В моем случае пришлось заместо mail нашаманить довольно топорный скриптик-враппер над qmail-inject:
#!/bin/bash echo “To: $1 From: [email protected] Subject: $2 $3 — example.com-monitoring with munin” | /var/qmail/bin/qmail-inject
И команда отправки выглядит так:
contact.me.command | /root/bin/munin.notify [email protected] “Munin-notification for ${var:group} :: ${var:host}” “[${var:group};${var:host}] -> ${var:graph_title} -> warnings: ${loop<,>:wfields ${var:label}=${var:value}} criticals: ${loop<,>:cfields ${var:label}=${var:value}}”
Результат выполнения будет такой:
Subject: Munin-notification for example.com :: server2.example.com [example.com;server2.example.com] -> CPU usage -> warnings: user=70.94 criticals: — example.com-monitoring with munin
Apache dynamic zoom
yum install munin munin-node
Directory permissions
First thing you have to do is check to make sure the temp directories are allowed for writing:
mkdir /var/lib/munin/cgi-tmp mkdir /var/lib/munin/cgi-tmp/munin-cgi-graph chmod 777 /var/lib/munin/cgi-tmp chmod 775 /var/lib/munin/cgi-tmp/munin-cgi-graph
Configuration
Munin.conf
Next ensure you have the following in your /etc/munin/munin.conf file:
dbdir /var/lib/munin htmldir /var/www/html/munin logdir /var/log/munin rundir /var/run/munin # Where to look for the HTML templates # tmpldir /etc/munin/templates # Where to look for the static www files # staticdir /etc/munin/static # temporary cgi files are here. note that it has to be writable by # the cgi user (usually nobody or httpd). # cgitmpdir /var/lib/munin/cgi-tmp # (Exactly one) directory to include all files from. includedir /etc/munin/conf.d graph_strategy cgi html_strategy cgi
Apache VirtualHost
Now comes the part where most of my time was wasted away by testing, debugging, then testing again. The Apache VirtualHost configuration for allowing dynamic zoom to work:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/munin ServerName munin.example.com ErrorLog logs/munin-error.log CustomLog logs/munin-access_log common RewriteLog logs/munin-rewrite.log RewriteLogLevel 5 ServerSignature Off # Rewrites RewriteEngine On # Static content in /static RewriteRule ^/favicon.ico /etc/munin/static/favicon.ico [L] RewriteRule ^/static/(.*) /etc/munin/static/$1 [L] # If it has the word static in the path, send to the static dir RewriteRule ^/.*/static/(.*) /etc/munin/static/$1 [L] # HTML RewriteCond %{REQUEST_URI} .html$ [or] RewriteCond %{REQUEST_URI} =/ RewriteRule ^/(.*) /var/www/cgi-bin/munin-cgi-html/$1 [L] # Images RewriteRule ^/(.*) /var/www/cgi-bin/munin-cgi-graph/$1 [L] # Ensure we can run (fast)cgi scripts <Directory "/var/www/cgi-bin"> Options +ExecCGI <IfModule mod_fcgid.c> SetHandler fcgid-script </IfModule> <IfModule !mod_fcgid.c> SetHandler cgi-script </IfModule> </Directory> </VirtualHost>
# rpm -qa \*munin\* \*cgi\* spawn-fcgi-1.6.3-1.el5 munin-node-2.0.12-2.el5 fcgi-2.4.0-12.el5 munin-common-2.0.12-2.el5 munin-2.0.12-2.el5 fcgi-perl-2.4.0-12.el5 mod_fcgid-2.2-11.el5 munin-cgi-2.0.12-2.el5
Nginx dynamic zoom
Настройка hddtemp_smartctl
Займемся настройкой плагинов. Начнем с hddtemp_smartctl. Этот плагин покажет нам температуру жестких дисков, используя технологию S.M.A.R.T
Первым делом выясняем сколько у нас дисков, какие они и включен ли на них S.M.A.R.T.
fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes 255 heads, 63 sectors/tra
Проверяем S.M.A.R.T. для диска /dev/sda
yum install smartmontools smartctl -i /dev/sda
smartctl 5.39.1 2010-01-28 r3054 [i386-redhat-... Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sou... === START OF INFORMATION SECTION === Device Model: VB0250EAVER Serial Number: 9VMHGQJN Firmware Version: HPG0 User Capacity: 250,059,350,016 bytes Device is: Not in smartctl database [for details use: ... ATA Version is: 8 ATA Standard is: ATA-8- ACS revision 6 Local Time is: Tue Apr 16 13:03:13 2013 MSK SMART support is: Available - device has SMART capability. SMART support is: Enabled
Две последние строчки говорят нам о том, что все у нас получится Теперь можно посмотреть подробную информацию о нашем диске:
smartctl -A /dev/sda
Среди всей информации можно увидеть строчки, содержащие Temperature. Значения этих строк и будет получать плагин. Проверить текущее значение можно так:
env drives="sda1" /etc/munin/plugins/hddtemp_smartctl
Должны увидеть что-то вроде этого:
sda1.value 17
Температура у нас есть, нужно прописать какие диски мы будем мониторить.
cd /etc/munin/plugin-conf.d/
Нам нужен файл hddtemp_smartctl, если он есть — редактируем, если нет — создаем. В итоге у нас должен получиться вот такой файл:
[hddtemp_smartctl] user root env.drives sda
Если у Вас больше дисков, то нужно только добавить их в строчку через пробел — env.drives sda sdb После этих манипуляций у Вас должен появиться график HDD Temperature:
Так как это плагин сам не может отправлять уведомления о критических температурах — рекомендуется добавить пороги температур в файл munin.conf сервера-сборщика, к примеру 55 градусов — hddtemp_smartctl.sda.critical 55
[server1.myhost.ru] address 127.0.0.1 use_node_name yes hddtemp_smartctl.sda.critical 55 hddtemp_smartctl.sda.warning 50
При достижении температуры 50 градусов — в мониторинге окно с графиком температуры выделится желтым цветом — предупреждение, при достижении температуры 55 градусов — выделится красным — критическая ситуация. Если настроена отправка уведомлений по почте на самом сервере (позже опишу как это делается) — на почту придет уведомление.
Настройка Bind9 Plugin
Bind9 Plugin
bind9 server config
Bind server needs to be configured to log queries. You can do so by adding to /etc/bind/named.conf.options
logging { channel b_query { file "/var/log/bind9/query.log" versions 2 size 1m; print-time yes; severity info; }; category queries { b_query; }; };
Now, make the directory and give it the right permission:
# mkdir /var/log/bind9 # chown bind:bind /var/log/bind9 # /etc/init.d/bind9 restart
munin node config
Set up the file correctly:
# ln -s /usr/share/munin/plugins/bind9 /etc/munin/plugins/bind9 # touch /var/lib/munin/plugin-state/bind9.state # chown munin:munin /var/lib/munin/plugin-state/bind9.state In /etc/munin/plugin-conf.d/munin-node make sure you have declared bind9 plugin: [bind9] user root
and restart munin-node
# /etc/init.d/munin-node restart
Bind9_rndc Plugin
bind9 server config
Your default bind install should already write to /var/cache/bind/named.stats when running the command:
# rndc stats
If not, make sure you have the following directive within options group in /etc/bind/named.conf.options:
statistics-file "/var/cache/bind/named.stats";
Now, restart bind:
# /etc/init.d/bind9 restart
munin node config
First, link the plugin to Munin plugin folder:
# ln -s /usr/share/munin/plugins/bind9_rndc /etc/munin/plugins/bind9_rndc In /etc/munin/plugin-conf.d/munin-node make sure you have declared bind9_rndc plugin: [bind9_rndc] user root env.querystats /var/cache/bind/named.stats
and restart munin-node
# /etc/init.d/munin-node restart
Настройка Nginx_memory
Мониторинг памяти занятой Nginxом
vim /usr/share/munin/plugins/nginx_memory
Вставляем туда
#!/usr/bin/perl -w # -*- mode: cperl; mode: autopair -*- # Magic markers: #%# family=auto #%# capabilities=autoconf # nginx_memory --- Munin plugin for monitoring Nginx memory # usage. Based on the nginx_memory.pl plugin # by AkyRhO <[email protected]>. # Copyright (C) 2010 António P. P. Almeida <[email protected]> # Author: António P. P. Almeida <[email protected]> # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the sale, # use or other dealings in this Software without prior written authorization. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. =head1 NAME nginx_memory - Munin plugin to show the RAM used by nginx. =encoding utf8 =head1 APPLICABLE SYSTEMS Any nginx host =head1 MAGIC MARKERS #%# family=auto #%# capabilities=autoconf =head1 VERSION 1.0 =head1 BUGS None known =head1 AUTHOR Based on a script by AkyRhO <[email protected]>. Modified by António Almeida <[email protected]> =head1 REPOSITORY Source code at http://github.com/perusio/nginx-munin =head1 LICENSE MIT =cut ## Munin config method. if (exists $ARGV[0] and $ARGV[0] eq "config") { print "graph_title nginx RAM usage\n"; print "graph_vlabel RAM\n"; print "graph_category nginx\n"; print "ram.label RAM\n"; print "graph_args --base 1024\n"; exit 0; } else { my $m = `ps u -p \$(pidof nginx) | awk 'NR > 1 {nm += \$5} END {print nm*1024}'`; print "ram.value $m"; }
ln -s /usr/share/munin/plugins/nginx_memory /etc/munin/plugins/nginx_memory
Настройка multiping
C этим плагином все просто — он показывает время ответа на пинги. Для настройки нужно в файл /etc/munin/plugin-conf.d/munin-node добавить хосты, которые будем пинговать:
[multiping] env.host www.ya.ru www.google.ru www.google.com
После этих манипуляций у Вас должен появиться график Ping times:
Настройка sensors_
У нас есть три плагина:
sensors_temp sensors_fan sensors_volt
теперь нужно понять какую информацию мы можем получить с наших датчиков. Сначала устанавливаем пакет lm_sensors:
yum install lm_sensors
После этого запускаем
sensors-detect
в первый проход этой утилиты я соглашаюсь со всем — то есть добавляю все датчики, которые обнаруживаются. На вопрос
Do you want to overwrite /etc/sysconfig/lm_sensors? (YES/no): y
отвечаем yes. Теперь запускаем команду
sensors
Видим примерно следующее: [root@server]#
sensors coretemp-isa-0000 Adapter: ISA adapter Core 0: +29.0°C (crit = +90.0°C) w83627dhg-isa-0a00 Adapter: ISA adapter Vcore: +1.10 V (min = +0.00 V, max = +1.74 V) in1: +1.59 V (min = +0.00 V, max = +1.06 V) ALARM AVCC: +3.41 V (min = +2.98 V, max = +3.63 V) +3.3V: +3.41 V (min = +2.98 V, max = +3.63 V) in4: +1.88 V (min = +0.29 V, max = +0.15 V) ALARM in5: +1.22 V (min = +0.64 V, max = +1.23 V) in6: +1.59 V (min = +0.42 V, max = +0.52 V) ALARM 3VSB: +3.42 V (min = +2.98 V, max = +3.63 V) Vbat: +3.38 V (min = +2.70 V, max = +3.30 V) ALARM fan1: 0 RPM (min = 337500 RPM, div = 4) ALARM fan2: 2083 RPM (min = 0 RPM, div = 8) ALARM fan3: 0 RPM (min = 5192 RPM, div = 4) ALARM fan4: 0 RPM (min = 675000 RPM, div = 2) ALARM fan5: 0 RPM (min = 6553 RPM, div = 2) ALARM temp1: +45.0°C (high = -103.0°C, hyst = +22.0°C) ALARM sensor = diode temp2: +55.0°C (high = +80.0°C, hyst = +75.0°C) sensor = diode temp3: +127.0°C (high = +80.0°C, hyst = +75.0°C) ALARM sensor = thermistor cpu0_vid: +2.050 V
Видно, что у нас отрабатывается два модуля — coretemp и w83627ehf (чипсет материнсокй платы). Второй показывает и температуру процессора — поэтому я от первого откажусь, и перезапущу sensors-detect , и добавлю только второй модуль. Уже после этих манипуляций мы получим графики напряжения, оборотов вентиляторов и температуры, но... Как видно некоторые напряжения выдают ALARM — и график напряжений будет выделен красным, как критическая ситуация. Из пяти разъемов вентиляторов я использую только один — fan2, по-хорошему нужно его обозвать CPU Fan и указать ему минимальное количество оборотов, ниже которого мы получим предупреждение. Открываем файл /etc/sensors3.conf и ищем блок нашего чипсета w83627ehf и добавляем строки:
label fan2 "CPU Fan" set fan2_min 2000 label temp2 "CPU Temp" и температура set temp3_over 40 set temp3_hyst 20
выполняем команду
sensors -s
и видим что нужные нам строчки стали выглядеть так:
CPU Fan: 2057 RPM (min = 2008 RPM, div = 4) CPU Temp: +55.0°C (high = +80.0°C, hyst = +75.0°C) sensor = diode
Теперь нужно исключить из мониторинга неиспользуемые датчики и ненужные температуры. Для этого открываем файл /etc/munin/plugin-conf.d/munin-node и добавляем блок:
[sensors_*] env.ignore_fan1 yes env.ignore_fan3 yes env.ignore_fan4 yes env.ignore_fan5 yes env.ignore_temp1 yes env.ignore_temp3 yes
Все, перезапускаем сервис munin-node и смотрим графики. Вот что было до того, как убрали неиспользуемое:
А вот уже конечный вариант:
Настройка MongoDB
- mongo_ops : operations/second
- mongo_mem : mapped, virtual and resident memory usage
- mongo_btree : btree access/misses/etc...
- mongo_conn : current connections
- mongo_lock : write lock info
- mongo_docs : number of documents (inserted, updated...)
Requirements
- MongoDB 2.4+
- python/pymongo
Install pymongo:
sudo apt-get install pip sudo apt-get install build-essential python-dev sudo pip install pymongo yum install -y python-pip
Install plugins
git clone https://github.com/comerford/mongo-munin.git /tmp/mongo-munin sudo cp /tmp/mongo-munin/mongo_* /usr/share/munin/plugins sudo ln -sf /usr/share/munin/plugins/mongo_btree /etc/munin/plugins/mongo_btree sudo ln -sf /usr/share/munin/plugins/mongo_conn /etc/munin/plugins/mongo_conn sudo ln -sf /usr/share/munin/plugins/mongo_lock /etc/munin/plugins/mongo_lock sudo ln -sf /usr/share/munin/plugins/mongo_mem /etc/munin/plugins/mongo_mem sudo ln -sf /usr/share/munin/plugins/mongo_ops /etc/munin/plugins/mongo_ops sudo ln -sf /usr/share/munin/plugins/mongo_docs /etc/munin/plugins/mongo_docs sudo chmod +x /usr/share/munin/plugins/mongo_* sudo service munin-node restart
Check if plugins are running:
munin-node-configure | grep "mongo_"
Test plugin output:
munin-run mongo_ops
Настройка fail2ban
Делаем симлинк на файлик плагина
ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/
Редактируем munin-node
vim /etc/munin/plugin-conf.d/munin-node
Добавляя туда
[fail2ban] env.client /usr/bin/fail2ban-client
Рестартим ноду
/etc/init.d/munin-node restart
Если в логах вылазит ошибка
Error output from fail2ban: Unable to contact server. Is it running?
Отключаем SELinux и вуаля
Добавление node (клиента для мониторинга)
Мы можем контролировать удаленные хосты на этой программе. Чтобы добавить новый сервер для мониторинга нужно на всех клиентских системах запустить и установить пакет munin-node:
yum install munin-node -y
Установить то установили, но нужно еще добавить конфигурацию.
vim /etc/munin/munin-node.conf
Укажите в Munin ваш IP адрес нового сервера:
[...] host_name your_new_HOST [...] allow ^78\.140\.189\.243$ allow ^::1$ [...]
Сохраните и закройте этот файл. Где, your_new_HOST это мой новый клиент — сервер. 78.140.189.243 это мой айпишник на котором висит Munin.
Запустите сервис munin-node в Munin на клиентском сервере:
service munin-node start chkconfig munin-node on
Затем перейдите к вашему серверу Munin и добавьте имя хоста вашей новой клиент-системы и IP-адрес в конец добавим следующее содержание:
vim /etc/munin/munin.conf
Добавьте следующие строки.
[your_new_HOST] address your_IP_clients_server use_node_name yes
Сохраните и закройте. Перезапустите службу Munin. Подождите пару минут (примерно 5 минут) или перезагрузить сервер Munin, чтобы Munin создал необходимые файлы / папки для вашей цели мониторинга.
Автоконфигурация плагинов
munin-node-configure --shell | sh
Munin Bootstrap Template:munin_dynamic_template
Munin Bootstrap Template: Munstrap
Установка на Red Hat/CentOS
cd /etc/munin mv /templates /templates_default mv /static /static_default git clone https://github.com/jonnymccullagh/munstrap.git mv /munstrap/templates mv /munstrap/static cd /var/www/html/munin mv static /etc/munin/static_old rm -rf /var/www/html/munin/* cp -R /etc/munin/static /var/www/html/munin chown -R munin:munin /var/www/html/munin/static su - munin --shell=/bin/bash /usr/bin/munin-cron
Using munin plugins
Installing The default plugin directory is /etc/munin/plugins/.
To install a plugin, place it in the plugin directory, and make it executable.
You can also place the plugin elsewhere, and install a symbolic link in the plugin directory. All the plugins provided with munin are installed in this way.
Configuring The plugin configuration directory is /etc/munin/plugin-conf.d/. The syntax is:
user <username> The user the plugin will run as.
Default: munin
group <groupname> The group the plugin will run as
Default: munin
env.variablename <variable content> Defines and exports an environment variable called “variablename” with the content set to <variable content>.
There is no need to quote the variable content.
Note
When configuring a munin plugin, add the least amount of extra privileges needed to run the plugin. For instance, do not run a plugin with “user root” to read syslogs, when it may be sufficient to set “group adm” instead. Example:
[pluginname] user username group groupname env.variablename some content for the variable env.critical 92 env.warning 95 Plugin configuration is optional.
Testing To test if the plugin works when executed by munin, you can use the munin-run command.
# munin-run myplugin config
# munin-run myplugin
Setting up the mysql_ Plugin in Munin
After spending a few days trying to get the mysql_ plugin working in my munin installation, I’ve decided to write up the process. It include some pointers about troubleshooting and diagnosing problems with the plugin. Once you have munin and mysql working:
# Save this to /etc/munin/plugin-conf.d/mysql_
[mysql_*]
env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306 env.mysqluser munin env.mysqlpassword 5uperS3cr3tPassw0rd
Next, create a new user in mysql:
mysql> CREATE USER [email protected] IDENTIFIED BY '5uperS3cr3tPassw0rd'; mysql> GRANT SUPER,PROCESS ON *.* TO [email protected]; mysql> GRANT SELECT ON mysql.* TO [email protected]; mysql> FLUSH PRIVILEGES;
You may need to install some perl dependencies:
yum install -y perl-Cache-Cache
Now, test that your new user is able to connect to the db thorough munin. You should not see any mysql errors printed here.
munin-node-configure --suggest 2>&1 | grep mysql
Next, install the suggested mysql plugins:
(munin-node-configure --shell 2>&1 | grep mysql | /bin/bash); service munin-node restart
Finally, you can confirm that the plugin is setup and working properly by testing it by running munin-run and telnet:
munin-run mysql_connections
max_connections.value 151 Max_used_connections.value 3 Aborted_clients.value 2 Aborted_connects.value 1 Threads_connected.value 3 Connections.value 36
telnet localhost 4949 Trying 1.2.3.4... Connected to localhost. Escape character is '^]'. # munin node at localhost fetch mysql_connections max_connections.value 151 Max_used_connections.value 3 Aborted_clients.value 2 Aborted_connects.value 1 Threads_connected.value 3 Connections.value 38 . quit Connection closed by foreign host.
I was getting errors mentioning “# Bad exit” while using telnet; running munin-run showed the actual error messages.