Установка MRTG в Unix/Linux

Установка 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 в CentOS

ВСЕ! Тема «Установка MRTG в Unix/Linux»  завершена.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.