
Установка MRTG в Unix/Linux
MRTG – программа позволяющая строить графики на основе данных, получаемых по протоколу SNMP и в статье «Установка MRTG в Unix/Linux» я расскажу о ней.
MRTG — является свободным программным обеспечением под лицензией GPL. Это инструмент для организации сервиса мониторинга и измерения данных с течением времени. Данные от различных источников собираются и затем отображаются в виде графиков.
Утилита первоначально была разработана Тобиасом Отикером (Tobias Oetiker) и Дейвом Рэндом (Dave Rand) для мониторинга трафика, но впоследствии превратилась в удобный инструмент для создания графиков и сбора статистических данных для различных задач и процессов.
MRTG применяется для:
- мониторинга загруженности канала (входящий, исходящий, максимальный, средний трафик);
- мониторинга использования процессора, оперативной памяти, жёсткого диска;
- наблюдения за температурными показателями аппаратных ресурсов;
- погодные данные и т.д.
Установка MRTG на CentOS/Fedora/RedHat
Устанавливаем дополнительное ПО:
# yum install gd libpng zlib net-snmp net-snmp-utils mrtg -y
В нашем случае мы используем Localhost для мониторинга.
Отредактируем SNMPD. конф файл:
# vim /etc/snmp/snmpd.conf
И прописываем:
group MyRWGroup v1 local group MyRWGroup v2c local group MyRWGroup usm local view all included .1 80 access MyRWGroup "" any noauth exact all all none rocommunity public rwcommunity public dontLogTCPWrappersConnects yes pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
Добавляем службу в автозагрузку ОС и перезапускаем ее:
# chkconfig snmpd on # service snmpd restart
Проверка конфигурации SNMP и подключение:
# snmpwalk -v 1 -c local localhost IP-MIB::ipAdEntIfIndex
Вывод:
IP-MIB::ipAdEntIfIndex.31.187.70.238 = INTEGER: 2 IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
И еще пару проверок:
# snmpwalk -Os -Oq -v1 -c public 127.0.0.1 IP-MIB::ipAdEntIfIndex ipAdEntIfIndex.31.187.70.238 2 ipAdEntIfIndex.127.0.0.1 1 # snmpwalk -Os -Oq -v1 -c public 31.187.70.238 IP-MIB::ipAdEntIfIndex ipAdEntIfIndex.31.187.70.238 2 ipAdEntIfIndex.127.0.0.1 1 # snmpget -v 1 -c public 31.187.70.238 .1.3.6.1.2.1.1.1.0 SNMPv2-MIB::sysDescr.0 = STRING: Linux captain-notes 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64
Настройка MRTG на CentOS/Fedora/RedHat
Конфигрурационный файл лежит:
# vim /etc/mrtg/mrtg.cfg
Но я сгенерирую свой, для своих нужд….
Создаем конфигурационный файл для localhost:
# cfgmaker --global 'WorkDir: /usr/local/nagios/share/stats' --output /usr/local/nagios/etc/mrtg.cfg solutions@@localhost
или
# cfgmaker --global 'Workdir: /usr/local/nagios/share/stats' --global 'Options[_]: bits,growright' --output /usr/local/nagios/etc/mrtg.cfg 31.187.70.238
Можно сделать кастомный и со многими плюшками, вот пример:
EnableIPv6: no WorkDir: /usr/local/nagios/share/stats HtmlDir: /usr/local/nagios/share/stats ImageDir: /usr/local/nagios/share/stats LogDir: /var/lib/mrtg ThreshDir: /var/lib/mrtg MaxBytes[_]: 1250000 Options[_]: growright, bits XSize[_]: 400 YSize[_]: 200 Target[localhost_eth0]: 1:public@31.187.70.238 SetEnv[localhost_eth0]: MRTG_INT_IP="31.187.70.238" MRTG_INT_DESCR="eth0" MaxBytes[localhost_eth0]: 1250000 Title[localhost_eth0]: Traffic Analysis for eth0 Options[localhost_eth0]: growright, nobanner, pngdate, nopercent, noinfo PageTop[localhost_eth0]: <h1>Traffic Analysis for Ethernet0</h1> <TABLE> <TR><TD>System:</TD><TD>CentOS</TD></TR> <TR><TD>Maintainer:</TD><TD>"Vitaliy Natarov"</TD></TR> <TR><TD>Interface:</TD><TD>Ethernet0</TD></TR> <TR><TD>IP:</TD><TD>No hostname defined for IP address (31.187.70.238)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> Target[localhost_venet0_0]: SetEnv[localhost_venet0_0]: MRTG_INT_IP="31.187.70.238" MRTG_INT_DESCR="venet0:0" MaxBytes[localhost_venet0_0]: 1250000 Title[localhost_venet0_0]: Traffic Analysis for venet0:0 Options[localhost_venet0_0]: growright, nobanner, pngdate, nopercent, noinfo PageTop[localhost_venet0_0]: <h1>Traffic Analysis for venet0:0</h1> Target[localhost_venet0]: SetEnv[localhost_venet0]: MRTG_INT_IP="31.187.70.238" MRTG_INT_DESCR="venet0" MaxBytes[localhost_venet0]: 1250000 Title[localhost_venet0]: Traffic Analysis for venet0 Options[localhost_venet0]: growright, nobanner, pngdate, nopercent, noinfo PageTop[localhost_venet0]: <h1>Traffic Analysis for venet0</h1> PageTop[localhost.cpu]: <H1>Active CPU Load %</H1> XSize[localhost.cpu]: 600 YSize[localhost.cpu]: 150 RouterUptime[localhost.cpu]: public@localhost Title[localhost.cpu]:CPU Load Target[localhost.cpu]:`/usr/local/nagios/etc/mrtg-scripts/cpu.sh` MaxBytes[localhost.cpu]: 150 Options[localhost.cpu]: growright,unknaszero,nopercent,gauge,pngdate,nolegend,nobanner LegendI[localhost.cpu]: User, % LegendO[localhost.cpu]: System, % YLegend[localhost.cpu]: CPU Utilization Legend1[localhost.cpu]: Avg load by User in % Legend2[localhost.cpu]: Avg load by System in % ShortLegend[localhost.cpu]: % Target[timewait]: `/usr/local/nagios/etc/mrtg-scripts/mrtg.wait.sh` MaxBytes[timewait]: 2048 Options[timewait]: gauge, nopercent, growright, pngdate YLegend[timewait]: Online Users ShortLegend[timewait]: % XScale[timewait]: 1.4 YScale[timewait]: 1.4 LegendI[timewait]: TIME_WAIT LegendO[timewait]: TOTAL Title[timewait]: linux-notes.org - Connections (TIME_WAIT) PageTop[timewait]: <H1>node2.roga.tw - TIME_WAIT</H1>
Создаем папку:
# mkdir /usr/local/nagios/etc/mrtg-scripts
И добавляем скрипты:
# echo '#!/bin/sh DATA=`sar -u 1 10 | grep "Среднее значение"` USER=`echo $DATA | awk '{print $5 }'` SYSTEM=`echo $DATA | awk '{print $6 }'` echo $USER echo $SYSTEM ' > chown nagios. /usr/local/nagios/etc/mrtg-scripts/cpu.sh
И:
# echo '#!/bin/bash waitCnt=`netstat -plan | grep :80 | grep TIME_WAIT | wc -l` p80Cnt=`netstat -plan | grep :80 | wc -l` UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'` echo $waitCnt echo $p80Cnt echo $UPtime echo linux-notes.org ' > chown nagios. /usr/local/nagios/etc/mrtg-scripts/mrtg.wait.sh
Выставляем нужные права:
# chown -R nagios. /usr/local/nagios/etc/mrtg-scripts
Недавно, я устанавливал nagios, если кому-то нужно, вот статьи:
Установка Nagios с nginx в CentOS
Установка Nagiosgraph в Unix/Linux
И по этому, я скопирую данный файл в другую директорию.
# chown nagios. /usr/local/nagios/etc/mrtg.cfg # chmod 755 /usr/local/nagios/etc/mrtg.cfg # mkdir -p /usr/local/nagios/share/stats # chown nagios. /usr/local/nagios/share/stats
PS: Я только для своих нужд использую другой путь ( для сбора статистики с nagios).
Создаем HTML страницы.
Далее, создаем index файл:
# indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
У меня это:
# /usr/bin/indexmaker --output=/usr/local/nagios/share/stats/index.html /usr/local/nagios/etc/mrtg.cfg
Выполните начальный прогон:
# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
У меня это:
# LANG=C LC_ALL=C /usr/bin/mrtg /usr/local/nagios/etc/mrtg.cfg --logging /var/log/mrtg.log --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
Смотрим чтобы служба crond работала
# /etc/init.d/crond status
И добавим задание:
# echo '*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --logging /var/log/mrtg.log --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok' > /etc/cron.d/mrtg-nagios
Добавьте в файл /etc/httpd/conf.d/mrtg.conf директивы, разрешающие обращаться к веб-серверу с необходимых вам IP-адресов:
Alias /mrtg /var/www/mrtg Order deny,allow Deny from all Allow from 66.66.66.66 Allow from 66.66.66.67
где:
66.66.66.66, 66.66.66.67 – IP-адреса, с которых разрешен доступ к просмотру статистики
И последнее, но не в последнюю очередь мы добавим ссылку(и) в меню Nagios с инструментом.
Измените файл на боковой панели:
# vim /usr/local/nagios/share/side.php
Добавляем:
<div class="navsection"> <div class="navsectiontitle">Extra Tools</div> <div class="navsectionlinks"> <ul class="navsectionlinks"> <li><a href="/nagios/stats" target="<?php echo $link_target;?>">MRTG stats</a></li> </ul> </div> </div> </div>
Сохранить и перезагрузить Nagios. Теперь можно приступать к настройке клиентов и наслаждаться удивительным Nagios.
Для красоты и удобства, я нашел php скрипт, который хорошо отображает данные логи:
# wget 2>/dev/null http://linux-notes.org/wp-content/uploads/scripts/nagios/share/stats/index.txt -v -O /usr/local/nagios/share/stats/index.php
Выглядит следующим образом это все дело:
ВСЕ! Тема «Установка MRTG в Unix/Linux» завершена.