MRTG - визуальный мониторинг сети, HDD, CPU
MRTG (Multi Router Traffic Grapher) — это свободное програмное обеспечение, для визуального мониторинга по SNMP-протоколу. Но в данном примере я буду его использовать для визуализации текущей загрузки интернет канала провайдера.
Подразумевается, что у вас уже установлен web-сервер Apache или другой.
Обновляем порты и начинаем установку:
[root@router /usr/ports/net-mgmt/mrtg]#make install clean
После установки нас попросят добавить mrtg в rc.conf:
mrtg_daemon_enable="YES"
[root@router /]#
В даном случае MRTG не будет брать статистику с клиентов по SNMP протоколу, а с PF. Для этого мы создадим скрипт который будет считать количество In\Out пакетов на сетевом интерфейсе:
/sbin/pfctl -sI -vv -i tun0 | grep "In4/Pass" | awk '{print $6}'
/sbin/pfctl -sI -vv -i tun0 | grep "Out4/Pass" | awk '{print $6}'
echo tun0
Отредактируем конфиг mrtg под себя:
HtmlDir: /usr/local/www/mrtg
ImageDir: /usr/local/www/mrtg/img
LogDir: /usr/local/www/mrtg
Language: russian
Options[^]: growright, unknaszero, nobanner, transparent, noinfo, nopercent, integer
Background[_]: #B0C4DE
XSize[_]: 400
YSize[_]: 100
# Мониторинг на сетевом интерфейсе
Target[tun0]: `/usr/local/etc/mrtg/tun0.sh`
Title[tun0]: ADSL Ukrtelecom External
Pagetop[tun0]: <H1>ADSL Ukrtelecom OGO</H1>
Options[tun0]: bits
MaxBytes[tun0]:1250000
#Смотрим температуру CPU
Target[cpu_temp]: `sysctl dev.cpu | awk '/temperature/ {print int($2)}' && sysctl dev.cpu | awk '/temperature/ {print int($2)}'`
Title[cpu_temp]: CPU Temperature Server
PageTop[cpu_temp]: <h1>CPU Server Temperature</h1>
Options[cpu_temp]: gauge
LegendI[cpu_temp]: Temperature CPU 0
LegendO[cpu_temp]: Temperature CPU 1
YLegend[cpu_temp]: C
ShortLegend[cpu_temp]: C.
MaxBytes[cpu_temp]: 70
Legend1[cpu_temp]: CPU Temperature Server CPU 0
Legend2[cpu_temp]: CPU Temperature Server CPU 1
#Количество клиентов mpd
Target[mpd]: `/usr/local/etc/mrtg/mpd.sh`
MaxBytes[mpd]: 1
AbsMax[mpd]: 1250000
Title[mpd]: mpd online users
PageTop[mpd]: <h1>mpd online users</h1>
Options[mpd]: gauge
YLegend[mpd]: Users per Hour
ShortLegend[mpd]: users
LegendI[mpd]: Online users
LegendO[mpd]: -
Legend1[mpd]: Online users
Legend2[mpd]: -
#Мониторинг ejabberd сервера
Target[ejabberd]: `/usr/local/sbin/ejabberdctl connected_users_number && echo 0`
MaxBytes[ejabberd]: 1
AbsMax[ejabberd]: 1250000
Title[ejabberd]: ejabberd statistics
PageTop[ejabberd]: <h1>ejabberd statistics</h1>
Options[ejabberd]: gauge
YLegend[ejabberd]: Users per Hour
ShortLegend[ejabberd]: users
LegendI[ejabberd]: Online users
LegendO[ejabberd]: -
Legend1[ejabberd]: Online users
Legend2[ejabberd]: -
#Смотрим температуру HDD
Title[hdd_temp]: HDD Temperature Home Server
Target[hdd_temp]: `/usr/local/sbin/smartctl -a -s on /dev/ad4 | grep Temp | awk -F " " '{print $10}'`
LegendI[hdd_temp]: Temperature HDD
LegendO[hdd_temp]: -
YLegend[hdd_temp]: C
MaxBytes[hdd_temp]: 1
AbsMax[hdd_temp]: 200
ShortLegend[hdd_temp]: Grad
PageTop[hdd_temp]: <h1>HDD Temperature Home Server</h1>
Legend1[hdd_temp]: HDD Temperature Server
# ipfw user_2
Target[user_2]: `ipfw show 300 | awk '{ print $3 }' && ipfw show 400 | awk '{ print $3 }'`
Title[user_2]: user_2
Pagetop[user_2]: <H1>user 192.168.100.2</H1>
Options[user_2]: bits
MaxBytes[user_2]:1250000
*работа с smartctl описана Разбираем SMART
*Для снятия значений с датчиков температуры CPU, необходимо выполнить:
*Для снятия количества виртуальных ин-ов ng*:
$count=0;
open(vpn, "ifconfig | grep 'ng' |");
while(<vpn>)
{
$count++;
}
print $count,"\n";
print $count,"\n";
close(PASS);
Intel
Подгрузить модуль "coretemp.ko":
и добавим строку в /boot/loader.conf, что бы подгружался при загрузке FreeBSD:
или добавить в ядро:
и пересобрать его.
После этого можно проверить работоспособность:
После того, как вы сделали одно из действий описанных выше, проверим работоспособность:
dev.cpu.0.temperature: 37,5C
AMD:
Для процессоров AMD, все по аналогии, только подставляем:
или в ядре:
Теперь необходимо сделать "скелет" html-странички:
[root@router /usr/local/etc/mrtg]# indexmaker /usr/local/etc/mrtg/mrtg.cfg --bodyopt bgcolor="#B0C4DE" --output /usr/local/www/mrtg/index.html
С генерируем графические элементы для этой странички. Эту команду необходимо выполнить 3-ри раза, первые 2 раза он матерится на отсутствие в WorkDir файлов с расширением *.png, *.log и *.old.
2010-10-09 14:34:38, Rateup WARNING: /usr/local/bin/rateup The backup log file for tun0 was invalid as well
2010-10-09 14:34:38, Rateup WARNING: /usr/local/bin/rateup Can't remove tun0.old updating log file
2010-10-09 14:34:38, Rateup WARNING: /usr/local/bin/rateup Can't rename tun0.log to tun0.old updating log file
2010-10-09 14:34:44, Rateup WARNING: /usr/local/bin/rateup Can't remove rl0.old updating log file
Далее добавим его в cron, минимальное значение для обновления графиков в mrtg - 5 минут.:
Добавим виртуалхост в апач:
ServerAdmin admin@local
ServerName noc.local
DocumentRoot /usr/local/www/data/mrtg
DirectoryIndex index.php index.php3 index.html
AddType application/x-httpd-php .php .php3
Action application/x-httpd-php /cgi-bin/php-cgi
ErrorLog /var/log/noc-error.log
CustomLog /var/log/noc-custom.log combined
</VirtualHost>
Теперь можно наблюдать визуально вот такие графики:
- Войдите на сайт для отправки комментариев
- Версия для печати
Мониторинг сети? ХМ, полезно. Есть еще статьи по этому поводу?