Настройка мониторинга сервера

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: , ,

Добавить комментарий