3 авг. 2009 г.

Linux, FreeBSD, Мониторинг сервера с помощью MRTG.


Возникла задача мониторинга загрузки нескольких серверов. Решили использовать пакет MRTG для построения графиков. Платформы серверов - Linux Slackware и FreeBSD.
С Linux-ом всё прошло гладко. Скачал, собрал, прописал в Apache и cron-е. В инете нашел пару скриптов для получения данных по загрузке памяти, процессора и сетевых интерфейсов. Благо, информации по этой системе много. Могу порекомендовать соответствующий раздел блога Bog BOS, ну и, естественно, документацию, идущую с пакетом.
С FreeBSD было сложнее. Из исходников пакет собираться не хотел - постоянно ругался на недостающие библиотеки. Пришлось установить его из портов - встал нормально. Затем оказалось, что скрипты для Linux не хотят работать во FreeBSD. Для получения информации по памяти пришлось доставить программку freecolor (из портов же). Использовал ее следующим образом:

#!/bin/sh
freecolor -b -o | /usr/bin/awk '\
NR==2 {ramUsed = $3 }\
NR==3 {swapUsed = $3 }\
END { print swapUsed "\n" ramUsed "\n0\n0" }'


Для информации по CPU использовал такой скрипт на Perl:

#!/usr/bin/perl
$cpu_orig=`/usr/local/bin/bsdsar -u > /tmp/bsdsar.tmp`;
$cpu_str=`/usr/bin/tail -1 /tmp/bsdsar.tmp`;
$val=(split(' ',$cpu_str))[1];
$val2=(split(' ',$cpu_str))[2];
$val=int($val);
$val2=int($val2);
print "$val\n";
print "$val2\n";
print "0\n";
print "0\n";


С загрузкой сетевых интерфейсов пришлось возиться с установкой snmpd. Из портов его поставить не получилось. Решил ставить из исходников. Но наткнулся на статейку с кучей рекламы (видать дорвей). В ней кратко описано поднятие штатного snmp-демона bsnmpd. С его помощью и решился вопрос. mrtg-conf приобрел следующий вид:

### Interface 1 >> Descr: 'rl0' | Name: 'rl0' | Ip: '77.120.101.132' | Eth: ###


Target[LAN0]: 1:public@127.0.0.1:
SetEnv[LAN0]: MRTG_INT_IP="xxx.xxx.xxx.xxx" MRTG_INT_DESCR="rl0"
MaxBytes[LAN0]: 12500000
Title[LAN0]: Traffic Analysis for LAN0
PageTop[LAN0]: <h1>Traffic Analysis for LAN-0 -- xxx.xxx.xxx.xxx (hostname)</h1>
Options[LAN0]: gauge, nopercent, growright

### Interface 2 >> Descr: 'rl1' | Name: 'rl1' | Ip: 'xxx.xxx.xxx.xxx'###

Target[LAN1]: 2:public@127.0.0.1:
SetEnv[LAN1]: MRTG_INT_IP="xxx.xxx.xxx.xxx" MRTG_INT_DESCR="rl1"
MaxBytes[LAN1]: 12500000
Title[LAN1]: Traffic Analysis for LAN1 -- xxx.xxx.xxx.xxx (gorod13.com)
PageTop[LAN1]: <h1>Traffic Analysis for LAN1 -- xxx.xxx.xxx.xxx (hostname)</h1>
Options[LAN1]: gauge, nopercent, growright

Комментариев нет:

Отправить комментарий