Надоело мне что я ничего не знаю о текущей ситуации в сети, а вопросы которые мне задают почему все тормозит, а интернет у нас есть, а почта работает, а почему картинка с камеры так долго грузится — Вот и настал тот момент когда все мое желание на рабочем месте быть более осведомленным к проблемам навело меня на мысль, а почему здесь на текущем месте работы не используется такой замечательный инструмент, как mrtg –
MRTG — является свободным программным обеспечением, а в условиях когда нужно видеть что с сетью без задействования дорогих решений (а если денег не дают, то Ubuntu приходит на помощь). В основе утилиты MRTG — лежит сервис мониторинга и сбора данных по прошествии некого времени.Что не маловажно, данные собираются и визуализируются в виде графиков.
MRTG применяется для:
- мониторинга загруженности канала (входящий, исходящий, максимальный, средний трафик);
- мониторинга использования процессора, оперативной памяти, жёсткого диска; – об этом в следующих заметках мого блога
- наблюдения за температурными показателями аппаратных ресурсов;
- погодные данные и т.д. – об этом в следующих заметках мого блога
Чтобы все это выше получать необходимо чтобы на устройстве была поднята служба SNMP, как это сделать для Ubuntu’систем читайте заметку моего блога:
Но прежде чем начать, мне нужно вспомнить, а на каких IP адресах располагается сетевое оборудования, для этого мне посредством действующих репозитариев нужно установить самую актуальную версию сетевого сканера nmap — текущая:
ekzorchik@srv-mon:~$ apt-cache show nmap | grep Version
Version: 5.21-1.1ubuntu1
Маловато то будет, ставлю самую последнюю по заметке:
Нахожу все сетевые устройства в данном VLAN офиса где я работаю:
ekzorchik@srv-mon:~$ sudo nmap -n -sn 192.168.0.20-30
192.168.0.1 — Офис Текущий – DWS-3160-24PC
192.168.0.2 — Офис Текущий 2: – DGS-3120-24TC
Нахожу все сетевые устройства в данном VLAN офиса где который я поддерживаю удаленно:
После устанавливаю утилиты для работы с SNMP — запросами:
ekzorchik@srv-mon:~$ sudo apt-get install snmp snmpd snmp-mibs-downloader -y
Местонахождение MIB файлов: ls /var/lib/mibs/ietf/ -l
Теперь нужно подключиться к VLAN 1 :
ekzorchik@srv-mon:~$ sudo apt-get install vlan -y
ekzorchik@srv-mon:~$ sudo modprobe 8021q
ekzorchik@srv-mon:~$ sudo vconfig add eth0 1
Added VLAN with VID == 1 to IF -:eth0:-
WARNING: VLAN 1 does not work with many switches,
consider another number if you have problems.
ekzorchik@srv-mon:~$ sudo ip addr add 192.168.0.91/24 dev eth0.1
если нужно удалить объявленный vlan
ekzorchik@srv-mon:~$ sudo vconfig rem eth0.1
Removed VLAN -:eth0.1:-
ekzorchik@srv-mon:~$ sudo bash -c "cat /proc/net/vlan/config"
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.1 | 1 | eth0.
ekzorchik@srv-mon:~$ sudo /etc/init.d/networking restart
А теперь уже собственно и устанавливаю Web-ориентированное приложение именуемое, как MRTG:
ekzorchik@srv-mon:~$ sudo apt-get install mrtg -y
Make /etc/mrtg.cfg owned by and readable only by root? Yes
На заметку: дефолтный конфигурационный файл советую сохранить на случай если Вы по началу совершите ошибки его конфигурирования и Вам не захочется переустанавливать утилиту mrtg.
ekzorchik@srv-mon:~$ sudo cp /etc/mrtg.cfg /etc/mrtg.cfg.backup
По умолчанию MRTG создает простой конфигурационный файл по адресу /etc/mrtg.cfg в котором, но на его основе формируем свой описанный файл конфигурации, но предварительно на хосте с которого будем снимать информацию должен быть настроен SNMP
ekzorchik@srv-mon:~$ sudo -s
root@srv-mon:~# cfgmaker public@192.168.0.1 > /etc/mrtg.cfg
Полученный файл mrtg.cfg можно консольным редактором подправить исключив записи портов которых нет или они не заслуживают столь внимательного рассмотрения по сравнению с другими.
На заметку: Что включает в себя файл mrtg.cfg
Title[eth0]: Traffic eth0 # название генерируемой страницы MaxBytes[eth0]: 125000 # при получении значения, большего чем заданное, # значение не учитывается для построения графика AbsMax[eth0]: 125000 # при получении значения, большего чем заданное, значение # вообще не учитывается Options[eth0]: gauge # опция означает, что берется текущее входное значение, # а не по нарастающему итогу Target[eth0]: `/usr/sbin/cban -i eth0 -m` # откуда получаем данные PageTop[eth0]: eth0 statistics # заголовок генерируемой страницы YLegend[eth0]: Bytes/s # подпись к значению по оси Y графика ShortLegend[eth0]: B/s # единица измерения. добавляется к максимальному, # текущему и среднему значению Legend1[eth0]: Incoming Traffic # подпись для входящего трафика Legend2[eth0]: Outgoing Traffic # подпись для исходящего трафика Legend3[eth0]: Maximum Incoming Traffic # подпись для максимального входящего трафика Legend4[eth0]: Maximum Outgoing Traffic # подпись для максимального исходящего трафика LegendI[eth0]: In: # краткая подпись для цифровых данных (входящий) LegendO[eth0]: Out: # краткая подпись для цифровых данных (исходящий) WithPeak[eth0]: ymwd # строим графики за y-год, m-месяц, w-неделю, d-день
После того, как файл конфигурации создан, сгененируем страницу Web для наглядного отображения:
root@srv-mon:~# mkdir -p /var/www/mrtg
Далее генерирую страницу по конфигурационному файлу:
root@srv-mon:~# indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
root@srv-mon:~# chown -R www-data:www-data /var/www
root@srv-mon:~# exit
exit
Проверяю что служба cron запущена:
ekzorchik@srv-mon:~$ sudo service cron status
cron start/running, process 800
Создаю задание:
ekzorchik@srv-mon:~$ sudo crontab -e
* * * * * mrtg /etc/mrtg.cfg > /dev/null
Перезапускаю службу cron:
ekzorchik@srv-mon:~$ sudo killall -HUP cron
Либо если у Вас сетевых устройств несколько то для каждого из них формируем свой конфигурационный файл /etc/mrtg[*].cfg и прописываем его в задание/
После запускаю mrtg с указанием конфигурационного файла:
ekzorchik@srv-mon:~$ sudo mrtg /etc/mrtg.cfg
———————————————————————–
ERROR: Mrtg will most likely not work properly when the environment
variable LANG is set to UTF-8. Please run mrtg in an environment
where this is not the case. Try the following command to start:
env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
, ага теперь по другому запускаю:
ekzorchik@srv-mon:~$ sudo env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
если же в процессе Вы видите ошибки вида:
Rateup WARNING: /usr/bin/rateup Can’t rename
rateup is a program called by mrtg to generate new logfile entries and
to update the traffic PNG images.
Поэтому нужно создавать актуальный индексный файл для каждой машины которую хотим визуализировать, решение выше указанной ошибки повторный запуск команды и после ошибки уже не будет.
Далее создаю описательный файл конфигурации для веб-сервера apache2 с целью возможности захода на URL адрес формируемой статистики mrtg:
ekzorchik@srv-mon:~$ sudo apt-get install apache2 -y
ekzorchik@srv-mon:~$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mrtg.conf
ekzorchik@srv-mon:~$ sudo unlink /etc/apache2/sites-available/default
ekzorchik@srv-mon:~$ sudo unlink /etc/apache2/sites-enabled/000-default
ekzorchik@srv-mon:~$ sudo nano /etc/apache2/sites-available/mrtg.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
Alias /mrtg "/var/www/mrtg"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ekzorchik@srv-mon:~$ sudo a2ensite mrtg.conf
ekzorchik@srv-mon:~$ sudo service apache2 reload
Теперь открываем в браузере:
http://IP&DNS/mrtg и получаем статистику собираемой информации с мониторящихся устройств.
Изменяя файл index.html подредактирую описательную часть собираемой статистики, т. е. Можно дополнить что за что отвечает тот или иной порт к примеру:
ekzorchik@srv-mon:~$ sudo indexmaker /etc/mrtg.cfg --output /var/www/mrtg/index.html --title Corp_Router_ТекущееМесто
ekzorchik@srv-mon:~$ sudo chown -R www-data:www-data /var/www
ekzorchik@srv-mon:~$ sudo service apache2 restart
Следом формирую конфигурационный файл для второго сетевого устройства:
ekzorchik@srv-mon:~$ sudo su -
root@srv-mon:~# cfgmaker public@192.168.0.2 > /etc/mrtg1.cfg
На заметку: Как и говорил выше вывод информации по сетевому устройству можно отформатировать (утилита cfgmaker), к примеру обозначить назначение интерфейсов, адрес интерфейса, номер и тип интерфейса:
,либо после формирования конфигурационного файла /etc/mrtg.cfg посредством текствого редактора подправить значение колонок:
Title[192.168.0.2_1]: VOIP gateway for 1/1 — DWS
PageTop[192.168.0.2_1]: <h1>VOIP gateway for 1/1 — DWS</h1>
А после сформировать на основе измененных данный файл для просмотра посредством браузера.
root@srv-mon:~# indexmaker /etc/mrtg1.cfg > /var/www/mrtg/index1.html
root@srv-mon:~# chown -R www-data:www-data /var/www/*
root@srv-mon:~# service apache2 restart
Теперь обратившись по адресу: http://IP&DNS/mrtg/index1.html получим формируемые графики другого сетевого устройства, также на забываем добавить его в файл задания по аналогии с mrtg.conf
На заметку: если Вы что-то напортачили с файлом /etc/mrtg.cfg — его можно удалить, и создать заново:
ekzorchik@srv-mon:~$ sudo rm /etc/mrtg.cfg
ekzorchik@srv-mon:~$ sudo rm -Rf /var/www/mrtg/*
ekzorchik@srv-mon:~$ sudo dpkg-reconfigure mrtg
либо просто удалить и заново поставить.
ekzorchik@srv-mon:~$ sudo apt-get install --reinstall mrtg
или так
ekzorchik@srv-mon:~$ sudo aptitude reinstall mrtg
В процессе работы столкнулся с тем, что формируемые графики не обновляются:
The statistics were last updated Saturday, 4 July 2015 at 15:25, хотя на текущее время уже Sat Jul 4 15:29:40 MSK 2015
опытным путем выяснил что нужно изменить задание
ekzorchik@srv-mon:~$ sudo su -
root@srv-mon:~# crontab -e
* * * * * env LANG=C /usr/bin/mrtg /etc/mrtg1.cfg > /dev/null
* * * * * env LANG=C /usr/bin/mrtg /etc/mrtg2.cfg > /dev/null
и после перезапустив демон cron снимаемые показатели начали обновляться при нажатии клавиши F5 открытой страницы с графиками.
Если же показатели все равно не отображаются, а просто выполнив в консоли:
root@srv-mon:~# env LANG=C /usr/bin/mrtg /etc/mrtg2.cfg
, то следует внимательно смотреть “Планировщик” на предмет корректности настройки правила.
По такому же принципу можно визуализировать снимаемую информацию с различных сетевых устройств если же у меня буду возникать какие-либо интересные моменты я буду освящать их на своем блоге, а пока все, до встречи с уважением автор блога — ekzorchik.