Новости
Обзоры и тесты
Техно
Советы
Разное
Главная » Техно

MRTG и CentOS 5. Использование скриптов для сбора статистики.

Добавлено на 04.10.2009 – 20:44

Мне потребовалось собирать базовую статистику с Linux-сервера работающего под управлением CentOS 5.3
Т.к. ничего особенного от статистики я не хотел, только простые графики некоторых переменных, я выбрал MRTG. Про то что это такое, рассказывать смысла нет, в Интернет по данному вопросу полно материалов.

Установить MRTG  из rmp-пакета очень просто: yum install mrtg.

Собирать статистику предполагалось используя snmp. Поэтому на машине с которой требуется собирать статистику требуется проинсталировать snmpd.
#yum install snmpd

Теперь настроим /etc/snmpd.conf
Я разрешил читать из всего дерева, вот что у меня получилось:

#cat /etc/snmp/snmpd.conf | more
syslocation Someplace Verhnyaya street billding 3 ats 1
syscontact Kudryavtsev Ignat
i.kudryavtsev@somemail.ru +79627277780

com2sec mrtg 127.0.0.1/32 CommunityKey #Разрешать запросы только для 127.0.0.1 с ключем  CommunityKey
group MyROGroup v2c mrtg

view all included .1 80

access MyROGroup »» any noauth exact all none none

Добавляем опцию для snmpd, что бы заводился только на localhost, т.е. демон слушает только на 127.0.0.1, причем на нестандартном порте 1161.

# cat /etc/sysconfig/snmpd.options
# snmpd command line options
# OPTIONS=»-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a»
OPTIONS=«127.0.0.1:1161»

Теперь можно попробывать создать конфигурацию mrtg, она создается посредствам утилиты cfgmaker:
Более подробно о ключах читайте в man cfgmaker

cfgmaker –snmp-options=:1161::::2c –global ‘WorkDir: /var/www/mrtg’ CommunityKey@127.0.0.1 –global ‘Options[_]: bits,growright’ > /etc/mrtg/mrtg.cfg

Объяснение команды: Отправлять запросы на  порт 1161 используя версию snmp 2c, с ключем CommunityKey по адресу , директория для вывода логов и графиков /var/www/mrtg’ , рисовать графики по битам в правую сторону. В директории /etc/mrtg/ где лежит файл конфигурации по-умочанию будет перезаписан файл mrtg.cfg

В MRTG есть дополнительных скрипты, которые используя данные ключей cfgmaker, попытаются получить информацию о сетевых интерфейсах хоста 127.0.0.1 и добавить необходимые строчки в конфигурацию.

Теперь нужно добаваить запуск скрипта mrtg с конфигурацией mrtg.cfg что бы он собирал новые значения и рисовал новые точки на графиках:
crontab –e
Добавим запуск скрипта раз в 5 минут:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * env LANG=C mrtg /etc/mrtg/mrtg.cfg –logging /var/log/mrtg.log
сохраняем.
Но увы статиска собираться не будет, в CentOS 5 появилась проблема с распознаванием кодировки
скритом mrtg значений которые ему передаются, в результате работы библиотеки snmp в perl:

для записи в конфигурации вида:

Target[127.0.0.1_5]: 1.3.6.1.2.1.25.3.3.1.2.768&1.3.6.1.2.1.25.3.3.1.2.771:CommunityKey@127.0.0.1:1161::::2c
MaxBytes[127.0.0.1_5]: 100
YLegend[127.0.0.1_5]: CPU LOAD
Options[127.0.0.1_5]: growright, integer, gauge
Title[127.0.0.1_5]: CPU LOAD
PageTop[127.0.0.1_5]: <H1>CPU LOAD</H1>

Ничего собираться не будет, более того, в логах будут одни нули.На графиках пусто. В CentOS 5.3 по-умолчанию ставиться версия  2.14.5
Пробывал последнюю стабильную версию mrtg-2.16.2.zip, не помогло.
Поэтому я решил использовать внешние скрипты, результаты работы которых передаются в mrtg, затем отрисовываются графики.

Пример:
Что бы снимать статистику загрузки двух ядер процессора, памяти, дисков и сетевых интерфейсов
я создал следующие записи, в которые результаты передаются через скрипты:

#WAN INTERFACE
Target[127.0.0.1_6]: `/mrtgscripts/intETH1`
MaxBytes[127.0.0.1_6]: 12500000
Title[127.0.0.1_6]: Traffic Analysis for Internet Interface (ip.ad.dr.es)
PageTop[127.0.0.1_6]: <H1>INTERNET INTERFACE UTILIZATION</H1>
YLegend[127.0.0.1_6]: Bytes\sec
ShortLegend[127.0.0.1_6]: Bytes
LegendI[127.0.0.1_6]:&nbsp;INTERFACE Utilization RX (Bytes)&nbsp
LegendO[127.0.0.1_6]:&nbsp;INTERFACE Utilization TX(Bytes)&nbsp
Options[127.0.0.1_6]: gauge, nopercent
#LAN INTERFACE
Target[127.0.0.1_7]: `/mrtgscripts/intETH0`
MaxBytes[127.0.0.1_7]: 12500000
Title[127.0.0.1_7]: Traffic Analysis for LAN Interface (ip.ad.dr.es)
PageTop[127.0.0.1_7]: <H1>LAN INTERFACE UTILIZATION</H1>
ShortLegend[127.0.0.1_7]: Bytes
YLegend[127.0.0.1_7]: Bytes\sec
LegendI[127.0.0.1_7]:&nbsp;INTERFACE Utilization RX (Bytes)&nbsp
LegendO[127.0.0.1_7]:&nbsp;INTERFACE Utilization TX(Bytes)&nbsp
Options[127.0.0.1_7]: gauge, nopercent

#CPU LOAD
Target[127.0.0.1_5]:`/mrtgscripts/cpu_load.sh cpu`
MaxBytes[127.0.0.1_5]: 100
YLegend[127.0.0.1_5]: CPU LOAD
Options[127.0.0.1_5]: gauge, nopercent
Title[127.0.0.1_5]: CPU LOAD
PageTop[127.0.0.1_5]: <H1>CPU LOAD</H1>
AbsMax[127.0.0.1_5]: 100
ShortLegend[127.0.0.1_5]: %
LegendI[127.0.0.1_5]:&nbsp;CPU Utilization Core 1 (percentage)&nbsp
LegendO[127.0.0.1_5]:&nbsp;CPU Utilization Core 2(percentage)&nbsp

#MEMORY USAGE
Target[127.0.0.1_8]:`/mrtgscripts/memory.sh`
MaxBytes[127.0.0.1_8]: 2001
YLegend[127.0.0.1_8]: Memory Usage
Options[127.0.0.1_8]: gauge, nopercent
Title[127.0.0.1_8]: MEMORY USAGE
PageTop[127.0.0.1_8]: <H1>MEMORY USAGE</H1>
AbsMax[127.0.0.1_8]: 2001
ShortLegend[127.0.0.1_8]: MegaBytes
LegendI[127.0.0.1_8]:&nbsp;Memry Free(Mbytes)&nbsp
LegendO[127.0.0.1_8]:&nbsp;Memory Used(Mbytes)&nbsp

#DISK USAGE
Target[127.0.0.1_9]: `/mrtgscripts/disk_usage.sh`
MaxBytes[127.0.0.1_9]: 72
YLegend[127.0.0.1_9]: Disk Usage
Options[127.0.0.1_9]: gauge, nopercent
Title[127.0.0.1_9]: DISK USAGE
PageTop[127.0.0.1_9]: <H1>DISK USAGE</H1>
AbsMax[127.0.0.1_9]: 72
ShortLegend[127.0.0.1_9]: GBytes
LegendI[127.0.0.1_9]:&nbsp;DISK FREE (Gbytes)&nbsp
LegendO[127.0.0.1_9]:&nbsp;DISK USED(Gbytes)&nbsp

Привожу примеры скриптов:

# cat /mrtgscripts/cpu_load.sh
NAME=$1
echo `snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 1.3.6.1.2.1.25.3.3.1.2.769 | cut -d ‘ ‘ -f 4`
echo `snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 1.3.6.1.2.1.25.3.3.1.2.771 | cut -d ‘ ‘ -f 4`
echo `/bin/date +%s`
echo $NAME

# cat /mrtgscripts/disk_usage.sh
echo `df -h |  awk ‘/sda3/ {print $3}’ | sed «s/G//»`
echo `df -h |  awk ‘/sda3/ {print $4}’ | sed «s/G//»`
echo `snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 sysUptime | cut -d ‘ ‘ -f 5`
echo DiskUsage

# cat /mrtgscripts/memory.sh
echo `free -m | awk ‘/Mem/ {print $4}’`
echo `free -m | awk ‘/Mem/ {print $3}’`
echo `snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 sysUptime | cut -d ‘ ‘ -f 5`
echo MemoryUsage

# cat /mrtgscripts/intETH0
#LAN INTERFACE
LASTRX=`cat ./RXeth0~`

NEWRX=`snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 ifHCInOctets.3 | cut -d ‘ ‘ -f 4`

SCOPERX=`expr $NEWRX — $LASTRX`
SPEEDRX=`expr $SCOPERX / 300`
let $SPEEDRX
echo $SPEEDRX

echo $NEWRX > ./RXeth0~

LASTTX=`cat ./TXeth0~`

NEWTX=`snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 ifHCOutOctets.3 | cut -d ‘ ‘ -f 4`

SCOPETX=`expr $NEWTX — $LASTTX`
SPEEDTX=`expr $SCOPETX / 300`
let $SPEEDTX
echo $SPEEDTX
echo $NEWTX > ./TXeth0~

echo `snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 sysUptime | cut -d ‘ ‘ -f 5`
echo eth1-INTERNET

# cat /mrtgscripts/intETH1
#WAN INTERFACE
LASTRX=`cat ./RXeth1~`

NEWRX=`snmpwalk -Osn –c CommunityKey -v 2c 127.0.0.1:1161 ifHCInOctets.2 | cut -d ‘ ‘ -f 4`

SCOPERX=`expr $NEWRX — $LASTRX`
SPEEDRX=`expr $SCOPERX / 300`
let $SPEEDRX
echo $SPEEDRX

echo $NEWRX > ./RXeth1~

LASTTX=`cat ./TXeth1~`

NEWTX=`snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 ifHCOutOctets.2 | cut -d ‘ ‘ -f 4`

SCOPETX=`expr $NEWTX — $LASTTX`
SPEEDTX=`expr $SCOPETX / 300`
let $SPEEDTX
echo $SPEEDTX
echo $NEWTX > ./TXeth1~

echo `snmpwalk -Osn -c CommunityKey -v 2c 127.0.0.1:1161 sysUptime | cut -d ‘ ‘ -f 5`
echo eth1-INTERNET

Теперь осталось создать индексный файл что бы все графики были на одной странице:

indexmaker /etc/mrtg/mrtg.cfg >/var/www/mrtg/index.html

Создаст файл, где будут графики всех переменных.
Предпологается что установлен web-сервер apache, а рабочая директория /var/www/mrtg/

Не забудьте изменить файл /etc/httpd/conf.d/mrtg.conf для доступа с нужных ip.

Должно получиться нечто похожее:
mrtg-page

В следующей статье я приведу как использовать MRTG для снятия статистики с VoIP оборудования CISCO.

Ссылки:
Официальный сайт проекта MRTG

Оставить комментарий

Напишите Ваш комментарий ниже. Также Вы можете подписаться на комментарии к материалу через RSS

Вы можете использовать следующие теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Мы поддерживаем Gravatar.

Контроль спама: *