Настройка мониторинга сервера
Centos, VPS | Комментировать запись
1: Установка сервера мониторинга
Запустите сервер CentOS 6.3 x64, который будет использоваться для мониторинга других серверов.
Примечание: В данном руководстве IP-адрес этого сервера – 111.222.111.222. В дальнейшем все фрагменты кода будут содержать этот IP-адрес, потому не забывайте вносить соответствующие поправки.
2: Установка пакетов для мониторинга
yum -y install net-snmp && chkconfig snmpd on && :> /etc/snmp/snmpd.conf
Добавьте в /etc/snmp/snmpd.conf следующие строки:
com2sec mynetwork 111.222.111.222 MyHosting
group MyROGroup v1 mynetwork
view all included .1 80
access MyROGroup "" any noauth exact all none none
В качестве клиентов используются mymail.tk (123.123.123.123) и myclient.tk (111.111.111.22).
При использовании фаервола разрешите соединения UDP на порт 161 с сервера мониторинга, запретив любые другие подключения:
iptables -I INPUT -s 111.222.111.222 -p udp --dport 161 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 161 -j DROP
Запустите демон SNMP на всех серверах, которые нужно отслеживать:
service snmpd start
3: Настройка сервера мониторинга
yum -y install net-snmp-utils rrdtool httpd && chkconfig httpd on
Создайте БД RRD для каждого клиента. Для того достаточно запустить:
rrdtool create /root/mymail.tk.rrd -s 60 DS:in:COUNTER:300:U:U DS:out:COUNTER:300:U:U RRA:AVERAGE:0.5:1:10080
rrdtool create /root/myclient.tk.rrd -s 60 DS:in:COUNTER:300:U:U DS:out:COUNTER:300:U:U RRA:AVERAGE:0.5:1:10080
Создайте скрипт для обновления графиков. Первый блок команд будет создавать и обновлять файл данных, второй блок будет наносить данные на график в файле PNG, который хранится в DocumentRoot сервера Apache.
Сохранит этот файл как /root/rrdupdate.sh и убедитесь, что после символов обратного слеша (\) нет пробелов.
#!/bin/bash
rrdupdate /root/mymail.tk.rrd N:`snmpget -v 1 -c MyHosting-Oqv 123.123.123.123 \
IF-MIB::ifInOctets.1`:`snmpget -v 1 -c MyHosting-Oqv 123.123.123.123 IF-MIB::ifOutOctets.1`
rrdtool graph /var/www/html/mymail.tk.png \
-a PNG -h 125 -s -43200 --title "mymail.tk (198.211.107.218)" \
-v "Data Throughput" \
'DEF:in=/root/mymail.tk.rrd:in:AVERAGE' \
'DEF:out=/root/mymail.tk.rrd:out:AVERAGE' \
'CDEF:kbin=in,1024,/' \
'CDEF:kbout=out,1024,/' \
'AREA:in#00FF00:Bandwidth In' \
'LINE1:out#0000FF:Bandwidth Out\j' \
'GPRINT:kbin:LAST:Last Bandwidth In\: %3.2lf KBps' \
'GPRINT:kbout:LAST:Last Bandwidth Out\: %3.2lf KBps\j' \
'GPRINT:kbin:AVERAGE:Average Bandwidth In\: %3.2lf KBps' \
'GPRINT:kbout:AVERAGE:Average Bandwidth Out\:%3.2lf KBps\j'
rrdupdate /root/myclient.tk.rrd N:`snmpget -v 1 -c MyHosting-Oqv 111.111.111.22 \
IF-MIB::ifInOctets.1`:`snmpget -v 1 -c MyHosting-Oqv 111.111.111.22 IF-MIB::ifOutOctets.1`
rrdtool graph /var/www/html/myclient.tk.png \
-a PNG -h 125 -s -43200 --title "myclient.tk (111.111.111.22)" \
-v "Data Throughput" \
'DEF:in=/root/myclient.tk.rrd:in:AVERAGE' \
'DEF:out=/root/myclient.tk.rrd:out:AVERAGE' \
'CDEF:kbin=in,1024,/' \
'CDEF:kbout=out,1024,/' \
'AREA:in#00FF00:Bandwidth In' \
'LINE1:out#0000FF:Bandwidth Out\j' \
'GPRINT:kbin:LAST:Last Bandwidth In\: %3.2lf KBps' \
'GPRINT:kbout:LAST:Last Bandwidth Out\: %3.2lf KBps\j' \
'GPRINT:kbin:AVERAGE:Average Bandwidth In\: %3.2lf KBps' \
'GPRINT:kbout:AVERAGE:Average Bandwidth Out\:%3.2lf KBps\j'
Запустите скрипт, чтобы убедиться, что он создаёт графики:
bash /root/rrdupdate.sh
ls -lah /var/www/html/*.png
Теперь осталось только настроить cron, который будет обновлять графики каждые 5 минут, и перезапустить Apache:
echo "*/5 * * * * bash /root/rrdupdate.sh" > /var/spool/cron/root
service httpd start
Можно добавить эти графики на сайт или же создать новую страницу /var/www/html/index.html.
Оставьте сервер на некоторое время, чтобы он заполнился данными, а за тем перейдите на IP-адрес сервера мониторинга. На экране появятся результаты мониторинга клиентов в виде графиков.
Tags: Apache, CentOS 6, SNMP