Пятница, 13.02.2026 19:00

Мониторинг загруженности сетевого оборудования по протоколу SNMP в РЕДОС Linux

Мониторинг загруженности сетевого оборудования по протоколу 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 ''
SNqieK8heb8p
tr -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.0
iso.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.0
iso.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.1
iso.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/monitoring
mes2348b-1-a2s3a41w

Далее я буду использовать имя папки:

/var/www/monitoring/mes2348b-a2s3a41w

Обратите внимание! Если вы создали другое имя папки не забудьте изменить имя папки в параметрах cfgmaker  при создании конфигурации!

Настройка Nginx

Будет создана папка:

/var/www/monitoring/mes2348b-a2s3a41w

В папке:

/etc/nginx/sites-available

создадим файл для нашего сайта:

sudo mcedit /etc/nginx/sites-available/monitoring
server {
    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;

- Запустили сбор статистики с устройства;

- Настроили автоматический сбор статистики каждые пять минут.

Категория РЕД ОС Linux

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 203