Протокол 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 агента в 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]
Сохраните файл (локацию и почтовый ящик желательно указать корректные). Теперь нужно добавить в автозагрузку сервис snmpd и запустить его:
# systemctl enable snmpd.service
# systemctl start snmpd
Проверьте, что сервис запущен:
# systemctl status snmpd
Если на сервере используется файерволл, нужно разрешить подключение к портам 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. Теперь вы можете добавить сервер в любую из систем мониторинга, работающую по 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 [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]
- -ro — read-only, то есть пользователь только для чтения
- Authpass — пароль аутентификации
- Privpass — приватный ключ
- Username — пользователь
После запуска команды, у вас будет создан пользователь с заданными паролем и ключом:
Запустите сервис:
# systemctl start snmpd
Попробуйте опросить SNMP агент с помощью утилиты snmpwalk (обратите внимание, для опроса по SNMPv3 нужно указывать имя пользователя, пароль и ключ).
# snmpwalk -v3 -a SHA -A 123456789 -x AES -X 1234567890 -l authPriv -u snmpuser localhost | head
Теперь вы смело можете добавлять свой сервер в любую систему мониторинга, работающую по SNMP.