rev="post-123" No Comments
Ще дам пример със статистика на мрежов интерфейс на линукс компютър.
Какво е необходимо:
1. Инсталиран и конфигуриран SNMP демон – пример.
2. Инсталиран и работещ RRDTool.
3. Добре охладена халба бира и кофа с чипс.
SNMP ще ни предостави достъп до всички системни „броячи“, ако мога така да ги нареча:
# snmpwalk -v2c -c public localhost
Ще видите доста дълъг списък.
Като начало ни трябват само мрежовите интерфейси, с които разполага машината:
# snmpwalk -v2c -c public localhost IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: eth2
IF-MIB::ifDescr.5 = STRING: eth3
От тук ни трябва само индекса на мрежовата карта, която ще следим – да кажем eth0, която е с индекс 2.
За да получим изпратените от интерфейса байтове:
# snmpwalk -v2c -c public localhost IF-MIB::ifHCOutOctets.2
IF-MIB::ifHCOutOctets.2 = Counter64: 6377552360
За да получим приетите от интерфейса байтове:
# snmpwalk -v2c -c public localhost IF-MIB::ifHCInOctets.2
IF-MIB::ifHCInOctets.2 = Counter64: 135903877111
Да, но на нас ни трябват само цифрите от брояча, и вместо да парсваме целия този стринг, който получаваме от snmpwalk, добавяме параметрите -Oqv
:
# snmpwalk -v2c -c public -Oqv localhost IF-MIB::ifHCOutOctets.2
6377552360
и
# snmpwalk -v2c -c public -Oqv localhost IF-MIB::ifHCInOctets.2
135903877111
Малко по-добре нали 🙂
Така, вече имаме данните от броячите. Сега трябва да подготвим RRD базата данни за съхранението им:
/opt/rrdtool/bin/rrdtool create eth0.rrd --step 300 --start N \
DS:in:DERIVE:600:0:U \
DS:out:DERIVE:600:0:U \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:6:2016 \
RRA:AVERAGE:0.5:24:8640
Като съответно корегирате пътя до rrdtool с този на вашата инсталация. Не би трябвало да се налага корекция на която и да е от цифрите, които виждате тук. Изпълнението на тази команда ще създаде файл eth0.rrd, в който ще съхраняваме отчитанията на броячите на мрежовия интерфейс.
Примерен скрипт, който проверява броячите и ги съхранява в базата данни:
#!/bin/bash
out=`snmpwalk -v2c -Oqv -c public localhost IF-MIB::ifHCOutOctets.2`
in=`snmpwalk -v2c -Oqv -c public localhost IF-MIB::ifHCInOctets.2`
/opt/rrdtool/bin/rrdtool update eth0.rrd -t in:out N:$in:$out
Това кодче трявба да се изпълнява на всеки 5 минути.
Добавяме го в cron:
# crontab -e
И добавяме следния ред:
*/5 * * * * /rrd/updaterrd >> /rrd/rrd.log
Изхода от всяко изпълнение ще се записва във файла /rrd/rrd.log – помага при търсене на грешки.
Настроихме компютъра да отчита и събира статистиките за интерфейса, остана да ги изрисуваме:
/opt/rrdtool/bin/rrdtool graph -a PNG eth0.png \
--title "Daily stats" --start -1day \
DEF:i=eth0.rrd:in:AVERAGE DEF:o=eth0.rrd:out:AVERAGE \
-h 80 -w 250 \
AREA:o#0903FF:"Out" LINE1:i#00ff00:"In\n"
Това ще изрисува статистиката за последният ден. Можете да я генерирате директно в директория достъпна от уеб сървъра, за да може да бъде поставена по-късно в уеб сайт.
Графиката показва скоростта на натоварване в MB/s мегабайти в секунда (не мегабити).
RRDTool е много мощен инструмент, и ако се зачетете в документацията му ще откриете куп параметри, с които да направите вашите графики максимално удобни за четене и с външен вид, който ви допада.
Сега докато си изпиете бирата и си изхрупате чипса ще са се събрали достатъчно данни, за да проверите какво сте направили.
Очаквайте продължение…
Последни коментари