Будем рисовать графики загрузки сети, CPU, памяти и т.д.
Получиться должно примерно так:
- Network Usage. Зеленый цвет символизирует входящий трафик, а синий олицетворяет исходящий.
- CPU Usage and Load Average. Зеленый – CPU, синий – Load Average.
- Newly Created Connections. Количество новых соединений за единицу времени.
- Memory Used. Да, именно оно.
# apt install nginx-light mrtg snmpd
Написать в /etc/snmp/snmpd.conf:
agentAddress udp:127.0.0.1:161 com2sec AllUser default public group AllGroup v1 AllUser view SystemView included .1.3.6.1.2.1.1 view SystemView included .1.3.6.1.2.1.25.1.1 view AllView included .1 access AllGroup "" any noauth exact AllView none none
Поправить уровень логгирования в snmpd: snmpd options и systemd
Перезапустить snmpd:
# /etc/init.d/snmpd restart
Сгенерировать конфиг:
# cfgmaker public@localhost > /etc/mrtg.cfg
Посмотреть внимательно в конфиг и найти, как называется внешний интерфейс. В примере конфига (см.ниже) это localhost_2.
Пример конфига, в котором надо поменять только цифру в локальном интерфейсе (2 на то, что нашлось в предыдущем пункте) и количество тредов в процессоре:
WorkDir: /var/www/html EnableIPv6: no #Network Usage Target[localhost_2]: 2:public@localhost: MaxBytes[localhost_2]: 125000000 Options[localhost_2]: growright Title[localhost_2]: Traffic Analysis PageTop[localhost_2]: <h1>Traffic Analysis</h1> # CPU Load and Load Average Target[load]: (.1.3.6.1.4.1.2021.11.9.0&.1.3.6.1.4.1.2021.10.1.5.2:public@localhost + .1.3.6.1.4.1.2021.11.10.0&PseudoZero:public@localhost) * (.1.3.6.1.2.1.25.6.3.1.1.16&PseudoOne:public@localhost) / 2 # ^^ # CPU count: || # grep ^processor /proc/cpuinfo | wc -l ===================// MaxBytes[load]: 100000 YLegend[load]: Usage Options[load]: nopercent,growright,noinfo,gauge,unknaszero LegendI[load]: CPU LegendO[load]: Load Legend1[load]: CPU Legend2[load]: Load YTicsFactor[load]: 0.01 Factor[load]: 0.01 ShortLegend[load]: Title[load]: CPU Usage and Load Average PageTop[load]: <h1>CPU Usage and Load Average</h1> # TCP Connections Target[tcp]: .1.3.6.1.2.1.6.6.0&.1.3.6.1.2.1.6.6.0:public@127.0.0.1 MaxBytes[tcp]: 1000000 Options[tcp]: perminute,nopercent,growright,noinfo,unknaszero Title[tcp]: Newly Created Connections PageTop[tcp]: <h1>Newly Created Connections</h1> YLegend[tcp]: Conn per minute LegendI[tcp]: Connections LegendO[tcp]: Connections Legend1[tcp]: Connections Legend2[tcp]: Connections ShortLegend[tcp]: per minute Colours[tcp]: GREEN#00eb0c,GREEN#00eb0c,DARK GREEN#006600,VIOLET#ff00ff Target[mem]: .1.3.6.1.4.1.2021.4.5.0&.1.3.6.1.4.1.2021.4.5.0:public@127.0.0.1 - .1.3.6.1.4.1.2021.4.6.0&PseudoZero:public@127.0.0.1 - .1.3.6.1.4.1.2021.4.14.0&PseudoZero:public@127.0.0.1 - .1.3.6.1.4.1.2021.4.15.0&PseudoZero:public@127.0.0.1 MaxBytes1[Mem]: 1000000000 MaxBytes2[Mem]: 1000000000 Colours[mem]: GREEN#00eb0c,RED#ff0000,DARK GREEN#006600,VIOLET#ff00ff Options[Mem]: gauge, growright YLegend[Mem]: Memory Used (Bytes) ShortLegend[Mem]: Bytes kilo[Mem]: 1024 kMG[Mem]: k,M,G,T,P LegendI[Mem]: Used LegendO[Mem]: Total Legend1[Mem]: Memory Used [MBytes] Legend2[Mem]: Memory Total [MBytes] Title[Mem]: Memory Used PageTop[Mem]: <H1>Memory Used</H1>
Сгенерировать index.html:
# indexmaker /etc/mrtg.cfg > /var/www/html/index.html
Задача в крон уже добавлена (см /etc/cron.d/mrtg).
Бонус: пояснение по поводу графика CPU Usage and Load Average и странной формулы.
В Linux можно получить по SNMP три полезных для этого графика значения:
.1.3.6.1.4.1.2021.11.9.0 – percentage of user CPU time
.1.3.6.1.4.1.2021.11.10.0 – percentages of system CPU time
.1.3.6.1.4.1.2021.10.1.5.2 – CPU load 5-min average
Первые два приходят в процентах (и мы их просто суммируем), третье – в попугаях. Нельзя просто так взять и выбросить всё это на один график. Но можно подобрать коэффициент, который сделает CPU Load и Load Average численно сопоставимыми, а график осмысленным. Этот коэффициент – количество тредов в процессоре. Просто так на написанную руками цифру MRTG умножить не даст. Ну то есть даст, но умножит на него и CPU Load и Load Average. А умножить только CPU Load можно либо на PseudoOne, либо на PseudoZero, либо на значение какой-либо другой записи. Готовой записи, которая отдавала бы количество тредов, в MIB нет. Но есть запись .1.3.6.1.2.1.25.6.3.1.1, которая содержит в себе пронумерованный список установленных пакетов. И если обратиться к например восьмому элементу этого списка, то мы получим число 8. Грязно, но подходит.