MRTG и SNMP настройка под Gentoo: различия между версиями

Материал из AlexNook
Перейти к навигацииПерейти к поиску
Строка 340: Строка 340:


====Создание скрипта для снятия показаний с процессора====
====Создание скрипта для снятия показаний с процессора====
ввв
Для сбора информации о загруженности процессора как я и писал выше, использую '''sysstat'''. В этот пакет входит масса различных програмок для вывода разнообразной инфы. Меня интересует именно процессор. Т.к. mrtg выводит данные беря их 1 раз в 5 минут, то нет смысла собирать данные по каждому ядру в отдельности. Я пошёл по пути сбора общей загрузки процессора. Для этого скрипт делает 10 замеров с интервалом в 1 секунду, выводя из этих данных среднее значение. При этом замеряется сразу общая загрузка ЦП не делая акценты на ядра. Для этого всего используется команда {{Codeline|sar -u 1 10}}.


===Настройка мониторинга памяти===
===Настройка мониторинга памяти===

Версия 20:12, 27 июля 2009

MRTG (Multi Router Traffic Grapher) — является свободным программным обеспечением под лицензией GPL. Это инструмент для организации сервиса для мониторинга и измерения сетевого трафика с течением времени. Данные с различных сетевых устройств собираются при помощи протокола SNMP, а затем отображаются в виде графиков.

Установка

Для работы с mrtg понядобятся следующие пакеты:

Code: Необходимые пакеты
net-analyzer/net-snmp 
media-libs/gd 
net-analyzer/mrtg 
sys-process/dcron
sysstat
Note: sysstat мне понадобился для получения информации о загруженности моего процессора, ибо через SNMP нормально свой C2D E6600 я не смог мониторить, приходили ложные данные, вот и пришлось написать маленький скриптик, который передаёт данные для mrtg

Ставяться все пакеты стандартным

emerge
Note: Для вывода данных через веб я использовал сервачок Apache: net-www/apache


Настройка

Note: Я пошёл по тому же пути что и на Генту вики (линк смотри внизу статься, т.е. мониторинг каждой фени выделил в отдельный конфиг файл, хотя mrtg может легко работать и с 1 конфигурационным файлом!

Создание папок для конфигов

Под рутом создаём следующие папки:

mkdir /etc/mrtg

место для конфигурационных файлов. Лежат *.cfg и *.sh а так же файлы, которые создаёт mrtg.

mkdir /etc/cron.mrtg

Папка с заданиями для крона.

mkdir -p /var/www/stat/htdocs/mrtg

создаём папку для веб вывода данных

Конфигурация SNMP демона

SNMP (англ. Simple Network Management Protocol — простой протокол управления сетью) — это протокол управления сетями связи на основе архитектуры TCP/IP.

Далее создаём (правим) конфиг.

File: /etc/snmp/snmpd.conf
####
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):

#       sec.name  source          community
com2sec local     127.0.0.0/24        public

####
# Second, map the security names into group names:

#               sec.model  sec.name
group MyROGroup v1                 local
group MyROGroup v2c                local
group MyROGroup usm                local

####
# Third, create a view for us to let the groups have rights to:

#           incl/excl subtree                          mask
view all    included  .1                               80

####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:

#                context sec.model sec.level match  read   write  notif
access MyROGroup ""      any       noauth    exact  all    none   none

###############################################################################
# System contact information
#

syslocation Russia.Moscow
syscontact Alexander <gav-alex@bk.ru>

Делаем это не обращая внимание на предупреждения не делать этого =). В файле /etc/snmp/snmpd.conf.example можно почитать, что означают те или иные параметры конфига.

Теперь проверяем настройки другого конфига snmp. Где надо убедиться, что у нас есть там необходимая единственная нам строчка, которая говорит о том, что все данные надо брать из конфига, который мы создали чуть выше - /etc/snmp/snmpd.conf

File: /etc/conf.d/snmpd
# Initial (empty) options.
SNMPD_FLAGS="-C -c /etc/snmp/snmpd.conf"

Теперь добавляем демон в атозапуск и стартуем его. Теперь у нас есть основной источник для фидинга данных =).

/sbin/rc-update add snmpd default
/etc/init.d/snmpd start

Настройка конфигов для мониторинга сетевых интерфейсов

Дадим систему самой создать дефолтный конфиг, который потом немного подправим под свои нужды.

/usr/bin/cfgmaker  \
--output=/etc/mrtg/traffic.cfg \
--ifdesc=ip \
--ifref=descr \
--global "WorkDir: /var/www/stat/htdocs/mrtg/net" \
--global "Options[_]: bits,growright" \
  public@localhost

Далее в ручную поправим файл для того, чтобы активировать lo и ppp.

Note: У меня с ppp не прокатило, он то пахал, то нет. Иногда у меня создавался почему-то второй туннель ppp1 вместо ppp0. В общем я забил на это. Тем более простой монитор интерфейса сетевухи практически полностью отражает реальную картину интернет канала, т.к. из локальной сети провайдеря у меня трафика нет вообще почти (может 1-2 раза в год на форум выйду)

В итоге у меня вышел вот такой файл.

File: /etc/mrtg/traffic.cfg
### Global Config Options

#  for UNIX
# WorkDir: /home/http/mrtg

### Global Defaults

#  to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits

EnableIPv6: no
WorkDir: /var/www/stat/htdocs/mrtg/net
Options[_]: bits,growright,nopercent

######################################################################
# System: router_a
# Description: Linux router_a 2.6.27-gentoo-r8-released_by_alex- #1 SMP Tue Apr 21 00:13:13 MSD 2009 x86_64
# Contact: Alexander <gav-alex@bk.ru>
# Location: Russia.Moscow
######################################################################

### Interface 1 >> Descr: 'lo' | Name: 'lo' | Ip: '127.0.0.1' | Eth: '' ###

Target[localhost_lo]: \lo:public@localhost:
SetEnv[localhost_lo]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"
MaxBytes[localhost_lo]: 125000000
Title[localhost_lo]: Localhost bandwidth
XSize[localhost_lo]: 600
YSize[localhost_lo]: 150
RouterUptime[localhost_lo]: public@localhost
PageTop[localhost_lo]: <h1>Localhost bandwidth @ router_a</h1>
                <div id="sysdetails">
                        <table>
                                <tr>
                                        <td>System:</td>
                                        <td>router_a located in Russia.Moscow</td>
                                </tr>
                                <tr>
                                        <td>Maintainer:</td>
                                        <td>Alexander <gav-alex@bk.ru></td>
                                </tr>
                                <tr>
                                        <td>Description:</td>
                                        <td>lo  </td>
                                </tr>
                                <tr>
                                        <td>ifType:</td>
                                        <td>softwareLoopback (24)</td>
                                </tr>
                                <tr>
                                        <td>ifName:</td>
                                        <td>lo</td>
                                </tr>
                                <tr>
                                        <td>Max Speed:</td>
                                        <td>10.0 Mbits/s</td>
                                </tr>
                                <tr>
                                        <td>Ip:</td>
                                        <td>127.0.0.1 (localhost)</td>
                                </tr>
                        </table>
                </div>

### Interface 2 >> Descr: 'eth0' | Name: 'eth0' | Ip: '10.134.46.181' | Eth: '00-22-15-64-00-4f' ###

Target[localhost_eth0]: \eth0:public@localhost:
SetEnv[localhost_eth0]: MRTG_INT_IP="10.134.46.181" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_eth0]: 125000000
Title[localhost_eth0]: Internet bandwidth
XSize[localhost_eth0]: 600
YSize[localhost_eth0]: 150
RouterUptime[localhost_eth0]: public@localhost
PageTop[localhost_eth0]: <h1>Internet bandwidth @ router_a</h1>
                <div id="sysdetails">
                        <table>
                                <tr>
                                        <td>System:</td>
                                        <td>router_a located in Russia.Moscow</td>
                                </tr>
                                <tr>
                                        <td>Maintainer:</td>
                                        <td>Alexander <gav-alex@bk.ru></td>
                                </tr>
                                <tr>
                                        <td>Description:</td>
                                        <td>eth0  </td>
                                </tr>
                                <tr>
                                        <td>ifType:</td>
                                        <td>ethernetCsmacd (6)</td>
                                </tr>
                                <tr>
                                        <td>ifName:</td>
                                        <td>eth0</td>
                                </tr>
                                <tr>
                                        <td>Max Speed:</td>
                                        <td>100.0 Mbits/s</td>
                                </tr>
                                <tr>
                                        <td>Ip:</td>
                                        <td>10.134.46.181</td>
                                </tr>
                        </table>
                </div>

### Interface 3 >> Descr: 'eth1' | Name: 'eth1' | Ip: '192.168.0.1' | Eth: '00-22-15-63-eb-fd' ###

Target[localhost_eth1]: \eth1:public@localhost:
SetEnv[localhost_eth1]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="eth1"
MaxBytes[localhost_eth1]: 125000000
Title[localhost_eth1]: LAN bandwidth
XSize[localhost_eth1]: 600
YSize[localhost_eth1]: 150
RouterUptime[localhost_eth1]: public@localhost
PageTop[localhost_eth1]: <h1>LAN bandwidth @ router_a</h1>
                <div id="sysdetails">
                        <table>
                                <tr>
                                        <td>System:</td>
                                        <td>router_a located in Russia.Moscow</td>
                                </tr>
                                <tr>
                                        <td>Maintainer:</td>
                                        <td>Alexander <gav-alex@bk.ru></td>
                                </tr>
                                <tr>
                                        <td>Description:</td>
                                        <td>eth1  </td>
                                </tr>
                                <tr>
                                        <td>ifType:</td>
                                        <td>ethernetCsmacd (6)</td>
                                </tr>
                                <tr>
                                        <td>ifName:</td>
                                        <td>eth1</td>
                                </tr>
                                <tr>
                                        <td>Max Speed:</td>
                                        <td>100.0 Mbits/s</td>
                                </tr>
                                <tr>
                                        <td>Ip:</td>
                                        <td>192.168.0.1</td>
                                </tr>
                        </table>
                </div>

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

Сперва я пытался пойти по обычному пути. Создал конфиг следующего содержания:

File: /etc/mrtg/cpu.cfg
WorkDir: /var/www/localhost/htdocs/mrtg
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[localhost.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1 + ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1 + 
ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
RouterUptime[localhost.cpu]: public@127.0.0.1
MaxBytes[localhost.cpu]: 100
Title[localhost.cpu]: CPU Load
PageTop[localhost.cpu]: <H1>Active CPU Load %</H1>
Unscaled[localhost.cpu]: ymwd
ShortLegend[localhost.cpu]: %
YLegend[localhost.cpu]: CPU Utilization
Legend1[localhost.cpu]: Active CPU in % (Load)
Legend2[localhost.cpu]:
Legend3[localhost.cpu]:
Legend4[localhost.cpu]:
LegendI[localhost.cpu]:  Active
LegendO[localhost.cpu]:
Options[localhost.cpu]: growright,nopercent

Даже скачал недостающий файл UCD-SNMP-MIB.txt, однако, это не прокатило. Данные которые получал MRTG были совершенно неверные и график строился не тот, что ожидалось.

Поэтому подумав, я понял, что Mrtg ведь может строить вообще любые графики, лишь бы был источник информации. Ему на фход передаются 2 значение (Input и Output), которые он и отображает на графиках. Потому было решено создать собственный конфиг для сбора инфы о загрузке моего E6600.

File: /etc/mrtg/cpu.cfg
PageTop[localhost.cpu]: <H1>Active CPU Load %</H1>
XSize[localhost.cpu]: 600
YSize[localhost.cpu]: 150
RouterUptime[localhost.cpu]: public@localhost
WorkDir: /var/www/stat/htdocs/mrtg/cpu
#Browser Title
Title[localhost.cpu]:CPU Load
Target[localhost.cpu]: `/etc/mrtg/cpu_utilization.sh`
MaxBytes[localhost.cpu]: 150
Options[localhost.cpu]: growright,unknaszero,nopercent,gauge,pngdate
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]: %
#Colours[localhost.cpu]: Yellow#FFFF00,Crimson#DC143C,GREEN#00eb0c,BLUE#1000ff

Поясню некоторые параметры:

PageTop - HTML, которые добавляется до графиков

XSize, YSize - размеры генерируемой картинки (максимум 600 на 150).

RouterUptime - вывод информаци и названии систему, а так же её аптайм.

WorkDir - рабочая папка, куда будет генится отчёт (веб директория в нашем случае)

Title - заголовок, который помещается в HTML tag <tite></title>

Target - Источник данных. В нашем случае это скриптик, который я написал. Его рассмотрим ниже.

MaxBytes - максимально возможное значение данныех, которое будет считаться валидным.

Options - опции построения графика (в нашем случае это: 1)строить справа на лево, 2) все неизвестные значения принимать как нулевые, 3) не показывать процентное соотношение текущих значений парамотров относительно их максимумов возможных, 4) данные по которым строим график не являются накопительными, т.е. строим например графики температуры процессора, 5) вписывать дату в png картинку)

LegendI - название первой кривой на графике (входные данные)

LegendO - название второй кривой на графике (выходные данные)

Legend1 - внизу после графиков указывается легенда, что означает конкретный цвет.

Legend2 - внизу после графиков указывается легенда, что означает конкретный цвет.

ShortLegend - это в каких единицах измеряется текущая величина (например у процессора это %)

Colours - цветовая схема построения графика

YLegend - подпись оси ординат на самой картинке png.

Создание скрипта для снятия показаний с процессора

Для сбора информации о загруженности процессора как я и писал выше, использую sysstat. В этот пакет входит масса различных програмок для вывода разнообразной инфы. Меня интересует именно процессор. Т.к. mrtg выводит данные беря их 1 раз в 5 минут, то нет смысла собирать данные по каждому ядру в отдельности. Я пошёл по пути сбора общей загрузки процессора. Для этого скрипт делает 10 замеров с интервалом в 1 секунду, выводя из этих данных среднее значение. При этом замеряется сразу общая загрузка ЦП не делая акценты на ядра. Для этого всего используется команда sar -u 1 10.

Настройка мониторинга памяти

/etc/mrtg/mem.cfg 

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt Target[localhost.mem]: memAvailReal.0&memAvailReal.0:public@localhost

PageTop[localhost.mem]:

Free Memory

WorkDir: /var/www/localhost/htdocs/mrtg Options[localhost.mem]: nopercent,growright,gauge,noinfo Title[localhost.mem]: Free Memory MaxBytes[localhost.mem]: 1000000 kMG[localhost.mem]: k,M,G,T,P,X YLegend[localhost.mem]: bytes ShortLegend[localhost.mem]: bytes LegendI[localhost.mem]: Free Memory: LegendO[localhost.mem]: Legend1[localhost.mem]: Free memory, not including swap, in bytes

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

/etc/mrtg/ping.cfg 

WorkDir: /var/www/localhost/htdocs/mrtg Title[localhost.ping]: Round Trip Time

PageTop[localhost.ping]:

Round Trip Time

Target[localhost.ping]: `/etc/mrtg/ping.sh` MaxBytes[localhost.ping]: 2000 Options[localhost.ping]: growright,unknaszero,nopercent,gauge LegendI[localhost.ping]: Pkt loss % LegendO[localhost.ping]: Avg RTT YLegend[localhost.ping]: RTT (ms)


Создание заданий для крона

/etc/cron.mrtg/cpu 
  1. !/bin/sh

/usr/bin/mrtg /etc/mrtg/cpu.cfg

/etc/cron.mrtg/mem

  1. !/bin/sh

/usr/bin/mrtg /etc/mrtg/mem.cfg

/etc/cron.mrtg/ping

  1. !/bin/sh

/usr/bin/mrtg /etc/mrtg/ping.cfg

/etc/mrtg/ping.sh

#!/bin/sh
PING="/bin/ping"
# Google, for example
ADDR="google.com"
DATA=`$PING -c10 -s500 $ADDR -q `
LOSS=`echo $DATA | awk '{print $18 }' | tr -d %`
echo $LOSS
if [ $LOSS = 100 ];
then
              echo 0
else
       echo $DATA | awk -F/ '{print $5 }'
fi

/bin/chmod +x /etc/cron.mrtg/* /bin/chmod +x /etc/mrtg/ping.sh

Run each script 3 times (disregard the warnings) /etc/cron.mrtg/traffic /etc/cron.mrtg/cpu /etc/cron.mrtg/mem /etc/cron.mrtg/ping_google /etc/cron.mrtg/ping_yandex


Make the Index

/usr/bin/indexmaker --output=/var/www/localhost/htdocs/mrtg/index.html \ --title=".::Router_a Statistics::." \ --sort=name \ --enumerate \ /etc/mrtg/traffic.cfg \ /etc/mrtg/cpu.cfg \ /etc/mrtg/mem_physical.cfg \ /etc/mrtg/mem_virtual.cfg \ /etc/mrtg/mem_buffer.cfg \ /etc/mrtg/mem_swap.cfg \ /etc/mrtg/mem_cached.cfg \ /etc/mrtg/ping_google.cfg \ /etc/mrtg/ping_yandex.cfg

Make the mrtg.cfg

cfgmaker --global "WorkDir: /var/www/localhost/htdocs/mrtg/" \ --global "Options[_]: growright,bits" \ --ifref=ip \ public@localhost > /etc/mrtg/mrtg.cfg


Cronjob /bin/cat >> /var/spool/cron/crontabs/root

  • /5 * * * * /bin/run-parts /etc/cron.mrtg >/dev/null 2>&1


Если нет нужного файла http://www.shrubbery.net/mibs/UCD-SNMP-MIB.txt

Ссылки

http://oss.oetiker.ch/mrtg/doc/mrtg-faq.en.html http://209.85.135.104/search?q=cache:F7kOdNopPnEJ:no.gentoo-wiki.com/HOWTO_SNMP_and_MRTG_Made_Easy+MRTG+gentoo+wiki&hl=en&ct=clnk&cd=1&client=opera http://forums.gentoo.org/viewtopic-t-105862-postdays-0-postorder-asc-start-50.html http://www.net-snmp.org/wiki/index.php/TUT:snmpwalk