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

Материал из AlexNook
Перейти к навигацииПерейти к поиску
Строка 93: Строка 93:
===Настройка конфигов для мониторинга сетевых интерфейсов===
===Настройка конфигов для мониторинга сетевых интерфейсов===
Дадим систему самой создать дефолтный конфиг, который потом немного подправим под свои нужды.
Дадим систему самой создать дефолтный конфиг, который потом немного подправим под свои нужды.
{{Root|
{{Root|<pre>
/usr/bin/cfgmaker  \
/usr/bin/cfgmaker  \
--output=/etc/mrtg/traffic.cfg \
--output=/etc/mrtg/traffic.cfg \
--ifdesc=ip \
--ifdesc=ip \
--ifref=descr \
--ifref=descr \
--global "WorkDir: /var/www/localhost/htdocs/mrtg" \
--global "WorkDir: /var/www/stat/htdocs/mrtg/net" \
--global "Options[_]: bits,growright" \
--global "Options[_]: bits,growright" \
   public@localhost
   public@localhost
}}
</pre>}}


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


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

Версия 19:35, 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>


/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
/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