Мониторинг загруженности сетевого оборудования по протоколу SNMP в РЕДОС Linux
В большой сети может возникнуть потребность в мониторинге загруженности портов коммутатора. Для этого можно использовать Zabbix, но настройка этой системы мониторинга требует времени, для работы ПО и базы данных требуется много вычислительных ресурсов и памяти. Если вам нужно просто отслеживать ПК и сервера, с которых идет аномальный поток трафика, проще всего использовать сторонние утилиты.
Сегодня мы рассмотрим установку и настройку утилиты MRTG – Multi Router Traffic Grapher для сбора и отображения статистики использования интерфейсов коммутатора Eltex Mes2348B.
Настройка доступа к SNMP для коммутатора Eltex MES2348B
Прежде всего, давайте настроим SNMP на коммутаторе Eltex Mes2348B.
Откроем консоль коммутатора.
Перейдем в режим конфигурации
сonfigВключим SNMP на устройстве
snmp-server serverДобавим представление в котором разрешим доступ ко всем стандартным OID
snmp-server view iso iso includedЗаполним переменные с информацией о коммутаторе, она поможет вам отличать различные устройства на страницах статистики:
snmp-server description "Main commutator"
snmp-server location "Main COD"
snmp-server contact "Altunin V.V. contact@altuninvv.ru"Обязательно пропишем свой engineID, здесь вы можете установить своё значение!.
Обратите внимание! Это значение должно состоять из нескольких чисел в шестнадцатеричной системе счисления. В нашем случае ID состоит из цифр:
a8 45 82 45 87 54 cdВы можете задать любое значение. Оно нам понадобиться позже, когда мы будет создавать конфигурацию для MRTG!
snmp-server engineID local a84582458754cdДобавим ip-адрес сервера в список доступа:
management access-list remote-access
permit ip-source 192.168.1.12 service ssh
permit ip-source 192.168.1.21 service snmp
exit
management access-class remote-accessЕсли список у вас уже есть просто создайте еще один, изменив имя, например, добавив к нему цифру и пропишите:
management access-list remote-access1
permit ip-source 192.168.1.12 service ssh
permit ip-source 192.168.1.21 service snmp
exit
management access-list remote-access1а старый удалите
no management access-list remote-accessНастройка SNMP v2с
Для доступа к коммутатору по протоколу SNMP v2 нам достаточно указать имя сообщества, ip-адрес удаленного сервера и имя представления.
snmp-server community my_org_snmp ro 192.168.1.21 view isoГде:
my_org_snmp – имя сообщества;
192.168.1.21 – адрес сервера с которого будет осуществляться доступ к коммутатору по SNMP;
iso – имя представления, которое мы создали выше.
Настройка SNMP v3
Добавим группу доступа только для чтения:
snmp-server group snmp_readers v3 priv read isoВ консоли РЕДОС Linux сгенерируем пароли:
tr -dc A-Za-z0-9 </dev/urandom | head -c 6 ; echo ''SNqieK8heb8ptr -dc A-Za-z0-9 </dev/urandom | head -c 12 ; echo ''0dGYHojAxvKQДобавим пользователя:
snmp-server user mrtg_user snmp_readers v3 auth md5 SNqieK8heb8p priv-protocol aes-128-cfb priv 0dGYHojAxvKQЗапишем конфигурацию:
do wr memУстановка поддержки SNMP в РЕДОС Linux
Установим в РЕДОС Linux пакеты с утилитами для работы с SNMP:
sudo dnf install net-snmp net-snmp-utils -yПроверка доступности коммутатора по SNMP v2c из РЕДОС Linux
Проверим доступность SNMP по протоколу версии 2c. Для этого из консоли РЕДОС Linux введем:
snmpwalk -v2c -c my_org_snmp 192.168.130.253 iso.3.6.1.2.1.1.1.0iso.3.6.1.2.1.1.1.0 = STRING: "Main commutator"Доступ по SNMP v2c есть.
Проверка доступности коммутатора по SNMP v3 из РЕДОС Linux
Проверим доступность SNMP по протоколу версии 3. Для этого из консоли РЕДОС Linux введем:
snmpwalk -v3 -l authPriv -u mrtg_user -a MD5 -A SNqieK8heb8p -x AES -X 0dGYHojAxvKQ 192.168.130.253 iso.3.6.1.2.1.1.1.0iso.3.6.1.2.1.1.1.0 = STRING: "Main commutator"Доступ по SNMP v3 есть.
Определение SNMP EngineId
Проверим EngineId нашего коммутатора:
snmpwalk -v2c -c my_org_snmp 192.168.130.253 .1.3.6.1.6.3.10.2.1.1iso.3.6.1.6.3.10.2.1.1.0 = Hex-STRING: A8 45 82 45 87 54 CDУ нас есть доступ к коммутатору по SNMP можно продолжать установку ПО на сервер РЕДОС Linux.
Настройка РЕДОС Linux для работы с MRGT
Для отображения статистики нам потребуется Nginx.
Обратите внимание! Если на вашем сервере уже установлен и используется Nginx вам придется настроить его самостоятельно. Если вы продолжите следовать инструкциям по настройке Nginx, приведенным ниже, ваша конфигурация будет удалена!
Отключаем SELinux
На сервере нам не нужен мандатный доступ, поэтому можно его спокойно отключить:
sudo dnf remove selinux* -yУстановка пакетов Perl для работы с MRTG
Так же для работы MRTG с SNMP v3 нам потребуется установить дополнительные модули для Perl:
sudo dnf install net-snmp-perl perl-Net-SNMP perl-Crypt-Rijndael -yЕсли вы этого не сделаете, то при попытке создания конфигурации получите ошибку:
WARNING: SNMP V3 libraries not found, SNMP V3 disabled. Falling back to V2c.
reverting to snmpV2c for router public@192.168.1.2:2161::::3или
SNMPopen failed: Support for privProtocol "aes128" is unavailable (Required module Crypt/Rijndael.pm not found)
at /usr/bin/../lib64/mrtg2/Net_SNMP_util.pm line 1580.
Net_SNMP_util::snmpopen("my_org_snmp\@192.168.1.2:::::3:v4only", 0, ARRAY(0x556274297b10)) called at /usr/bin/../lib64/mrtg2/Net_SNMP_util.pm line 1690
Net_SNMP_util::snmpwalk_flg("my_org_snmp\@192.168.1.2:::::3:v4only", undef, HASH(0x5562739f0228), "1.3.6.1.2.1.1") called at /usr/bin/../lib64/mrtg2/Net_SNMP_util.pm line 786
Net_SNMP_util::snmpwalk("my_org_snmp\@192.168.1.2:::::3:v4only", HASH(0x5562739f0228), "1.3.6.1.2.1.1") called at /bin/cfgmaker line 951
main::DeviceInfo("my_org_snmp\@192.168.1.2:::::3", HASH(0x5562739f01e0), HASH(0x5562739f0228)) called at /bin/cfgmaker line 142
main::main() called at /bin/cfgmaker line 160
SNMPWALK Problem for my_org_snmp@192.168.1.2:::::3:v4only at /bin/cfgmaker line 951.
WARNING: Skipping my_org_snmp@192.168.1.2:::::3 as no info could be retrievedУстановка Nginx
Установим требуемые пакеты:
sudo dnf install git nginx wget unzip -yСоздадим папку для Nginx:
sudo mkdir /var/wwwЗагрузим нужные файлы из git-репозитория:
cd ~
git clone https://gitflic.ru/project/vasiliyaltunin/nginx-make-it-right-for-redos.git
cd nginx-make-it-right-for-redosДобавим группу и пользователя для nginx:
sudo groupadd www-data
sudo useradd -g www-data --shell=/usr/sbin/nologin www-dataУдалим папки со старыми настройками:
sudo rm -rf /etc/nginxСкопируем файлы конфигурации в нужное место:
sudo cp -r nginx /etcУстановим права на папки:
sudo chown -R www-data /var/www
sudo chgrp -R www-data /var/wwwСоздадим папку:
sudo mkdir /etc/nginx/sites-enabledВключим и перезапустим службу nginx:
sudo systemctl enable nginx
sudo systemctl restart nginxПроверим статус службы:
sudo systemctl status nginx | grep activeСоздадим папку для хранения файлов в папке веб-сервера.
sudo mkdir /var/www/monitoringДля каждого устройства создается своя папка!
Для большей безопасности мы можем добавить к имени папки случайную строку:
Запустим:
sudo mkdir -p /var/www/monitoring/mes2348b-$(tr -dc A-Za-z0-9 </dev/urandom | head -c 8)Проверим имя созданной папки:
sudo ls /var/www/monitoringmes2348b-1-a2s3a41wДалее я буду использовать имя папки:
/var/www/monitoring/mes2348b-a2s3a41wОбратите внимание! Если вы создали другое имя папки не забудьте изменить имя папки в параметрах cfgmaker при создании конфигурации!
Настройка Nginx
Будет создана папка:
/var/www/monitoring/mes2348b-a2s3a41wВ папке:
/etc/nginx/sites-availableсоздадим файл для нашего сайта:
sudo mcedit /etc/nginx/sites-available/monitoringserver {
listen 9090;
root /var/www/monitoring;
# Add index.php to the list if you are using PHP
index index.html;
server_name _;
location / {
allow 192.168.1.18;
deny all;
try_files $uri $uri/ =404;
}
}Я не буду рассматривать сейчас настройку HTTPS для этого сайта, но крайне вам рекомендую настроить самим или использовать реверс-прокси с настроенным HTTPS!
Обратите внимание, здесь мы разрешаем доступ к сайту только с ПК администратора!
Обязательно измените адрес 192.168.1.18 на адрес ПК, с которого будет осуществляться доступ к сайту. В противном случае получите ошибку 403!
Создадим символическую ссылку для активации сайта:
sudo ln -s /etc/nginx/sites-available/monitoring /etc/nginx/sites-enabled/monitoringПерезапустим службу Nginx:
sudo systemctl restart nginxТак как мониторинг должен быть доступен только администратору сделаем редирект по умолчанию на Госуслуги, чтобы запутать злоумышленников или ботов.
Добавим файл:
index.html В папку:
/var/www/monitoringЗапустим:
echo '<html><head><meta http-equiv="refresh" content="0; URL=https://gosuslugi.ru"/></head><body></body></html>' | sudo tee /var/www/monitoring/index.htmlОткроем ссылку:
http://192.168.1.21:9090Откроется страница Госуслуг.
Если вы получили ошибку:
403 ForbiddenПроверьте настройки сайта, возможно вы указали неверный ip-адрес ПК администратора!
Установка MRTG в РЕДОС Linux
Установим требуемые пакеты:
sudo dnf install mrtg -yСоздадим папку для хранения конфигураций MRTG:
sudo mkdir /var/lib/mrtgДля загрузки информации по протоколу SNMP нам нужно создать файл конфигурации MRTG для этого устройства.
Для каждого устройства создается свой файл, в файле храниться все необходимые настройки, в том числе и пароли, для запроса информации для каждого порта коммутатора.
Файл создается с помощью команды:
cfgmakerЧтобы создать конфигурацию для подключения по SNMP v2c запустим:
sudo cfgmaker --no-down --noreversedns --ifref=name --ifdesc=name --global 'WorkDir: /var/www/monitoring/mes2348b-a2s3a41w' --global 'Options[_]: growright, bits' -output=/var/lib/mrtg/eltex_mes2348b_1.cfg my_org_snmp@192.168.1.2:::::2Для использования авторизации SNMP v3 нам потребуется больше параметров:
sudo cfgmaker --no-down --noreversedns --ifref=name --ifdesc=name --global 'WorkDir: /var/www/monitoring/mes2348b-a2s3a41w' --global 'Options[_]: growright, bits' --output=/var/lib/mrtg/eltex_mes2348b_1.cfg --username=mrtg_user --authprotocol=md5 --authpassword=SNqieK8heb8p --privpassword=0dGYHojAxvKQ --privprotocol=aes128 --contextengineid=A84582458754CD my_org_snmp@192.168.1.2:::::3Рассмотрим параметры:
--no-down – не будут обрабатываться порты, которые принудительно на коммутаторе переведены в состояние Down;
--noreversedns – не будут выполняться запросы к DNS-серверу для ip-адресов, назначенных портам.
--ifref=name – будут использоваться имена портов (gi2_0_25) для ссылок на порты;
--ifdesc – будут использоваться имена портов (gi2_0_25) в поле описание порта;
--global 'WorkDir: /var/www/monitoring/mes2348b-a2s3a41w' – файлы с логами и картинками для данного устройства будут создаваться в указанной папке;
--global 'Options[_]: growright, bits, perminute' – устанавливает опции отображения графиков:
growright – график растет справа налево;
bits – отображает информацию в битах, килобитах, мегабитах;
Больше опций вы можете найти в документации на сайта MRTG - https://www.mrtg.org/mrtg/doc/mrtg-reference.en.html
--output=/var/lib/mrtg/eltex_mes2348b_1.cfg – указывает путь до файла, в который буде записана конфигурация;
Для SNMP v3 мы добавляем дополнительные опции:
--username=mrtg_user – имя пользователя SNMP
--authprotocol=md5 – используемый протокол
--authpassword=SNqieK8heb8p – пароль авторизации
--privpassword=0dGYHojAxvKQ – приватный пароль
--privprotocol=aes128 – приватный протокол
--contextengineid=A84582458754CD - EngineId
Далее следует сообщество SNMP, адрес сервера и протокол:
Для SNMP v2c:
my_org_snmp@192.168.1.2:::::2Для SNMP v2c:
my_org_snmp@192.168.1.2:::::3Обратите внимание! Здесь, после ip-адреса должно быть ровно 5 двоеточий! Это важно!
:::::3После запуска в папке:
/var/lib/mrtg/Будет создан файл:
eltex_mes2348b_1.cfgДанный файл создается только один раз при настройке мониторинга устройства!
Создадим файл index.html для отображения всех результатов на одной странице и навигации по страницам каждого порта.
Запустим:
sudo indexmaker /var/lib/mrtg/eltex_mes2348b_1.cfg --output=/var/www/monitoring/mes2348b-a2s3a41w/index.htmlЭтот файл содержит графики для всех портов коммутатора, позволяет визуально оценить загруженность портов, а сами картинки являются ссылками на индивидуальную страницу каждого порта устройства.
Обратите внимание! Если вы осуществляете мониторинг коммутаторов, объединенных в стэк, то при добавлении или удалении устройства из стека вам нужно будет перезапустить скрипт создания файла конфигурации и создания индекса!
Поэтому я рекомендую создать в папке:
/var/lib/mrtg/файл:
make_conf_eltex_mes2348b_1.sh с содержимым:
#!/bin/bash
sudo cfgmaker --no-down --noreversedns --ifref=name --ifdesc=name --global 'WorkDir: /var/www/monitoring/mes2348b-a2s3a41w' --global 'Options[_]: growright, bits, perminute' --output=/var/lib/mrtg/eltex_mes2348b_1.cfg --username=mrtg_user --authprotocol=md5 --authpassword=SNqieK8heb8p --privpassword=0dGYHojAxvKQ --privprotocol=aes128 --contextengineid=A84582458754CD my_org_snmp@192.168.1.2:::::3
sudo indexmaker /var/lib/mrtg/eltex_mes2348b_1.cfg --output=/var/www/monitoring/mes2348b-a2s3a41w/index.html
Теперь если вам потребуется обновить конфигурацию коммутатора или добавить новый, вы сможете использовать готовый файл с командами.
Сбор статистики с коммутатора с помощью MRTG
Для сбора статистики с коммутатора с помощью MRTG всё что нам нужно указать путь к файлу конфигурации. Все настройки для подключения через SNMP уже сохранены в этом файле!
Запустим:
env LANG=C sudo /bin/mrtg /var/lib/mrtg/eltex_mes2348b_1.cfgОбратите внимание наличие :
env LANG=CОбязательно для нормального запуска MRTG!
Автоматический сбор статистики с помощью MRTG и Cron
Рекомендуется собирать статистику не чаще, чем раз в пять минут, чтобы избежать повышения нагрузки на процессор коммутатора.
Добавим задачу в Cron для обновления статистики каждые пять минут:
Запустим:
sudo crontab -eВ конец файла добавим:
*/5 * * * * env LANG=C sudo /bin/mrtg /var/lib/mrtg/eltex_mes2348b_1.cfg --logging /var/log/mrtg.logОбратите внимание в конце файла Crontab обязательно должна быть пустая строка!
Теперь каждые пять минут будет собираться сбор статистики с коммутатора MES2348B!
Доступ к странице со статистикой
Теперь мы можем в браузере открыть ссылку:
http://192.168.1.21:9090/mes2348b-a2s3a41w/
Загрузится страница со статистикой:
Нажатие на график открывает подробную статистику:
![]()
Заключение
Сегодня мы рассмотрели настройку MRTG в РЕДОС Linux для мониторинга трафика на портах коммутатора Eltex MES2348B:
- Рассмотрели настройку SNMP v2c и v3 на коммутаторе Eltex MES2348B;
- Проверили доступность коммутатора по SNMP с сервера c РЕДОС Linux;
- Установили требуемые пакеты для работы MRTG;
- Установили и настроили Nginx;
- Установили пакеты MRTG;
- Рассмотрели создание конфигурации для MRTG для подключения по SNMP v2c и v3 и опции для запуска;
- Рассмотрели создание файла индекса для сайта MRTG;
- Запустили сбор статистики с устройства;
- Настроили автоматический сбор статистики каждые пять минут.
Добавить комментарий