Установка и настройка SNMP в CentOS

Установка и настройка SNMP в CentOS

Протокол SNMP (Simple Network Management Protocol) используется для получения информации о текущем состоянии серверов, сетевых устройств, принтеров и другого IP оборудования (можно собирать различные метрики: загрузка CPU, количество процессов, состояние служб и многое другое). Основные преимущества SNMP – он поддерживается практически на любых устройствах и не требует установки отдельного агента системы мониторинга. В этой статье мы рассмотрим, как установить и настроить SNMP агент (и SNMP v3) на сервере под управлением Linux CentOS 8.

Установка агента SNMP и утилит диагностики в CentOS Linux

Перед установкой пакетов SNMP, сначала установите на сервере последние обновления с помощью пакетного менеджера dnf (yum):

# dnf update -y

Затем установите агент SNMP и дополнительные утилиты из стандартного репозитория:

# dnf install net-snmp net-snmp-utils -y

установка snmp агента и утилит диагностики в linux centos

Настройка SNMP агента в CentOS

Перед началом настройки параметров SNMP сервиса, создайте копию оригинального конфигурационного файла:

# mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig

Теперь отредактируйте настройки SNMP агента:

# nano /etc/snmp/snmpd.conf

Добавьте следующие строки:

rocommunity public  

syslocation MSK-DC1 syscontact [email protected]

Это три базовых объекта протокола SNMP. Разбро всех опций конфигурации агента Net-SNMP выходит за рамки статьи.

Сохраните файл (локацию и почтовый ящик желательно указать корректные). Теперь нужно добавить в автозагрузку сервис snmpd и запустить его:

# systemctl enable snmpd.service
# systemctl start snmpd

Проверьте, что сервис запущен:

# systemctl status snmpd

проверка статуса службы snmpd в linux

Если на сервере используется файерволл, нужно разрешить подключение к портам 161 и 162 TCP/UDP. Для firewalld в CentOS можно выполнить такие команды:

# firewall-cmd --zone=public --add-port=161/udp --permanent
# firewall-cmd --zone=public --add-port=161/tcp –permanent
# firewall-cmd --zone=public --add-port=162/udp --permanent
# firewall-cmd --zone=public --add-port=162/tcp --permanent
# firewall-cmd --reload

Опрос SNMP агента с помощью утилиты snmpwalk

С помощью утилиты snmpwalk вы можете опросить SNMP агент. Для локальной проверки службы по протоколу SMMPv2 используется команда:

# snmpwalk -v 2c -c public -O e 127.0.0.1

Если SNMP настроен корректно, вы получите от агента набор SNMP данных.

После настройки конфигурационного файла и запуска проверочной команды, я получил ошибку:
Timeout: No Response from localhost

Решилось она очисткой всего конфигурационного файла и добавлением только тех строчек, которые я указал в статье. Если вам нужны будут какие-то специфичные настройки, внимательно проверяйте все, так как сам сервис запускается без проблем, но фактически он не работает.

Также вы можете опросить сервер локально командой:

# snmpwalk -v2c -c public localhost system

SNMPv2-MIB::sysDescr.0 = STRING: Linux server.build-centos.info 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (106564) 0:17:45.64
SNMPv2-MIB::sysContact.0 = STRING: [email protected]
SNMPv2-MIB::sysName.0 = STRING: server.build-centos.info
SNMPv2-MIB::sysLocation.0 = STRING: MSK-DC01
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (0) 0:00:00.00

Затем проверьте, что ваш SNMP агент доступен удаленно. Выполните следующую команду с другого сервера (нужно предварительно установить утилиты snmp):

# snmpwalk -v2c -c public 10.10.22.225 system

опрос агента snmp с помощью утилиты snmpwalk

Как видите, удаленный сервер получил с сервера информацию по протоколу SNMP. Теперь вы можете добавить сервер в любую из систем мониторинга, работающую по SNMP (например, Zabbix или Cacti).

Настройка протокола SNMP v3 в CentOS

В первой части статьи мы рассматривали, как настроить SNMP агент, который работает по версиям протокола 1 и 2. SNMPv3 – это более современная и безопасная версия протокола. Оно из преимуществ которого — возможность аутентификации и шифрования. Для настройки SNMPv3 вам нужно создать отдельного пользователя с паролем, задать пароль шифрования, права доступа и алгоритм шифрования (MD5 или SHA).

Чтобы создать пользователя для SNMP v3, нужно остановить сервис snmpd:

# systemctl stop snmpd

Теперь можно создать пользователя:

# net-snmp-create-v3-user -ro -A 123456789 -a SHA -X 1234567890 -x AES snmpuser

Синтаксис команды net-snmp-create-v3-user:

net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]

  • -ro — read-only, то есть пользователь только для чтения
  • Authpass — пароль аутентификации
  • Privpass — приватный ключ
  • Username — пользователь

После запуска команды, у вас будет создан пользователь с заданными паролем и ключом:

создать пользователя для snmpv3 net-snmp-create-v3-user

Запустите сервис:

# systemctl start snmpd

Попробуйте опросить SNMP агент с помощью утилиты snmpwalk (обратите внимание, для опроса по SNMPv3 нужно указывать имя пользователя, пароль и ключ).

# snmpwalk -v3 -a SHA -A 123456789 -x AES -X 1234567890 -l authPriv -u snmpuser localhost | head

Теперь вы смело можете добавлять свой сервер в любую систему мониторинга, работающую по SNMP.

Linux
Установка и настройка SNMP в CentOS