Are you looking to get certified in DevOps, SRE and DevSecOps?

Lets understand about SNMP first?
The name “Simple Network Management Protocol,” also known as SNMP, sounds like this methodology is a quick but inferior alternative to a better protocol. In fact, SNMP is the universal monitoring standard for network devices and it is implemented in all of the network equipment that you buy. There is no better system
- SNMP Version supported by Zabbix
- SNMPv1 Vs SNMPv2 Vs SNMPv3
- How SNMP works with Zabbix?
- Zabbix Template for SNMP
- What is an SNMP trap?
- Step 1 – Configure SNMP Agent
- Video Lecture
- Zabbix_agentd. conf
- Add the Agent Host to the Zabbix UI
- Zabbix_proxy. conf
- Add Proxy to Zabbix Server UI
- Zabbix UI ⇾ Administration ⇾ Proxies
- Troubleshooting
- Raspberry Pi OS
- PSK Encryption between the Proxy and Server
- Useful Links
- Пользователь (web-браузер) <-> Zabbix web-сервер
- Zabbix web-сервер <-> База данных Zabbix
- Zabbix-сервер <-> База данных Zabbix
- Zabbix-сервер <-> Zabbix-прокси
- Zabbix-сервер <-> Zabbix-агент и Zabbix-прокси <-> Zabbix-агент
- Zabbix-прокси <-> БД Zabbix-прокси
- Zabbix sender -> Zabbix-прокси и Zabbix-агент -> Zabbix get
- Авторегистрация с шифрованием
- Хранение чувствительной информации в Vault
- Заключение
- Мониторинг UserGate с помощью SNMP-запросов
- Настройка SNMP Traps в ZABBIX
- Шаблон Zabbix
SNMP Version supported by Zabbix
- SNMPv1
- SNMPv2, and
- SNMPv3
SNMPv1 Vs SNMPv2 Vs SNMPv3
The differences between SNMPv1, SNMPv2, and SNMPv3 are functional. The main distinctions:
How SNMP works with Zabbix?





Zabbix Template for SNMP

- Generic SNMP
- Interfaces SNMP
- Interfaces Simple SNMP
- Network Generic Device SNMP
- HOST-RESOURCES-MIB storage SNMP
- EtherLike-MIB SNMP
- 3rd Party Solutions
Refer Link here for details
What is an SNMP trap?
The normal operations of SNMP dictate that the device agent takes a passive role. It only sends out SNMP messages when prompted by a request from the SNMP manager. However, if the agent detects an emergency event on the device that it is monitoring, it will send out a warning message to the manager without waiting to be polled for data. This emergency message is called a trap.

Step 1 – Configure SNMP Agent
Mentor for DevOps — DevSecOps — SRE — Cloud — Container & Micorservices at

Zabbix прокси – это один из компонентов инфраструктуры Zabbix, который позволяет собирать данные мониторинга с нескольких устройств и отправлять данные на Zabbix Server. Zabbix Proxy можно использовать для сбора данных мониторинга в удаленных локациях, с хостов за межсетевым экраном, или для уменьшения нагрузки на центральный Zabbix Server в больших корпоративных сетях.
В этой статье мы покажем, как установить и настроить Zabbix Proxy на Linux (на примере Rocky Linux/ Oracle/RHEL 8).
Подключите репозиторий zabbix:
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm$ sudo dnf clean all
$ sudo dnf install -y zabbix-proxy-sqlite3 zabbix-agent policycoreutils-python-utils nano
Создайте каталог для базы данных SQLite:
$ sudo mkdir /var/lib/zabbix/$ sudo chown -R zabbix. /var/lib/zabbix/
Отредактируйте конфигурационный файл:
$sudo nano /etc/zabbix/zabbix_proxy.conf
Запустите zabbix-proxy (обязательно, т.к. это создаст правила для selinux):
$ sudo systemctl start zabbix-proxy
Если на хосте включен Selinux, нужно добавить разрешающие правила:
Включите службу zabbix-proxy:
$ sudo systemctl start zabbix-proxy$ sudo systemctl enable zabbix-proxy$ sudo systemctl status zabbix-proxy
Логи Zabbix прокси можно вывести так:
$ sudo tail -f /var/log/zabbix/zabbix_proxy.log
Сгенерируйте PSK ключ:
Добавьте информацию о PSK в конфигурационный файл zabbix proxy:
$ sudo nano /etc/zabbix/zabbix_proxy.conf
####### TLS-RELATED PARAMETERS #######
TLSConnect=psk
TLSPSKIdentity=sp-zbprx1
TLSPSKFile=/var/lib/zabbix/proxy.psk
$ sudo systemctl restart zabbix-proxy
Зарегистрируйте ваш прокси в веб-интерфейсе Zabbix Server и укажите ваш PSK ключ.

Video Lecture
The correct Zabbix repository was already installed from the last section, so we can just run
sudo apt install zabbix-agent
On Linux hosts, to enable auto restart after reboot,
sudo systemctl zabbix-agent.service
So, on the proxy server, enter
sudo nano /etc/zabbix/zabbix_agentd.conf
Zabbix_agentd. conf
In the above table, I use raspberrypi in the Hostname setting for this agent process. I could also use 127.0.0.1.
raspberrypi is the same as the hostname I entered into the proxy config file, this doesn’t matter, they both locally resolve to 127.0.0.1.
To get the hostname of a server, go onto the server, open a prompt and type hostname, and take note of the response. On my Raspberry PI, where i’ve installed the Zabbix Proxy service, the response of the hostname command is raspberrypi. Yours will most likely be different.
Add the Agent Host to the Zabbix UI
Double check by reading all the notes above.
Try tailing the agent and proxy logs on the proxy to see if there are any clues.
tail -f /var/log/zabbix/zabbix_agentd.log
And be sure that after any changes on the Zabbix server, wait a minute for the Zabbix server internal cache to update, then on the proxy run,
sudo zabbix_proxy -R config_cache_reload
Для передачи трапов в Zabbix будет использоваться snmptt. Установите необходимые сервисы. Для этого используйте команду:
# apt-get install snmptt snmptrapd snmp snmpd
Внесите изменения в конфигурационный файл /etc/default/snmptrapd. Измените параметра TRAPDRUN с no на yes (или самостоятельно добавьте TRAPDRUN=yes в случае отсутствия).
Внесите изменения в конфигурационный файл /etc/snmp/snmptrapd.conf. Укажите:
- имя сообщества для трапов public: authCommunity log,execute,net public
- обработчик трапов: traphandle default snmptthandler
Измените конфигурационный файл /etc/snmp/snmptt.ini:
- mode = daemon
- mibs_environment = ALL
- date_time_format = %H:%M:%S %Y/%m/%d
- log_file = /var/log/snmptt/snmptt.log
- unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log
Теперь известные трапы будут логироваться в файл /var/log/snmptt/snmptt.log, неизвестные — в файл /var/log/snmptt/snmpttunknown.log.
Внесите изменения в конфигурационный файл /etc/zabbix/zabbix_server.conf:
Создайте каталоги, используя следующие команды:
Установите стандартные mibs в систему из репозитария (если не было установлено ранее).
# apt-get install snmp-mibs-downloader
Выполните конвертацию файла UTM-TRAPS-MIB.mib в UG.conf:
После выполнения команды должен быть отображён следующий результат:
Done
Total translations: 19
Successful translations: 19
Failed translations: 0
Отформатируйте трапы, чтобы они распознавались Zabbix. Измените /usr/local/etc/snmp/UG.conf: измените FORMAT на FORMAT ZBXTRAP $aA
Если в системе используется iptables, то разрешите прием UDP-пакетов на порт 162 и сохраните добавленное правило, чтобы оно не сбросилось после перезапуска системы. Для этого используйте следующие команды:
# iptables -A INPUT -p udp -m udp -s 192.168.110.0/24 —dport 162 -j ACCEPT
# iptables-save
Перезапустите службы для применения изменений:
# /etc/init.d/snmpd restart
# /etc/init.d/snmptt restart
# /etc/init.d/snmptrapd restart
# /etc/init.d/zabbix-server restart
Проверьте, что snmptrapd слушает на порту 162:
Во вкладке События добавьте необходимые трапы.
I start with a brand-new installation of Raspberry Pi OS Lite. I use the 64 Bit version without the Desktop GUI.
You can get the installer from https://www.raspberrypi.com/software/
Raspberry Pi OS Lite doesn’t enable SSH by default.
If you are installing an older version of Raspberry Pi and you haven’t enabled SSH in the installer, then continue with these instructions.
To enable SSH, plug in an HDMI cable with monitor attached.
Plug in a USB keyboard.
Power it up.
When boot sequence has finished,
Navigate to option 3 Interface Options.
Select I2 SSH and enable.
Go Back to main menu.
You may also want to select 6 Advanced Options and select A1 Expand Filesystem to use all the SD card.
Go Back to main menu and select Finish
You can change the default Raspberry Pi password by using the passwd command.
I install Zabbix Proxy to manage communication between the Server and Agents on my local network.
It is important to know which operating system you intend to use for your proxy.
To find which operating system you are using, at the prompt, type one of these commands,
I select Raspberry Pi OS for the OS distribution and 11 Bullseye for the OS version on the Zabbix download page.
My Raspberry Pi is running Raspbian PI OS Lite (64 Bit) (No desktop GUI).
The commands used in this lecture are,
sudo wget https://repo.zabbix.com/zabbix/6.0/raspbian/pool/main/z/zabbix-release/zabbix-release_6.0-2+debian11_all.deb
sudo dpkg -i zabbix-release_6.0-2+debian11_all.deb
sudo apt install zabbix-proxy-sqlite3
Other database options for Zabbix proxy are MySQL and PostgreSQL.
They can be installed by using
sudo apt install zabbix-proxy-mysql
sudo apt install zabbix-proxy-pgsql
Note that with the sqlite3 version, you won’t need to install the database schema since it will be automatically created if it doesn’t already exist.
If you use MySQL or PostgreSQL then you also need to install the schema.
Visit the official Zabbix Proxy install documentation at https://www.zabbix.com/documentation/3.2/en/manual/installation/install_from_packages/proxy_installation
Edit the Server, Hostname and DBName parameters.
Zabbix_proxy. conf
I use the actual network hostname for this value to avoid ambiguity between the several uses of the term Hostname in the Zabbix documentation and UI. I just use the same name as is returned from entering the command hostname on my proxy server. When I enter hostname on my proxy server, it returns raspberrypi
I save, then I enter
sudo service zabbix-proxy start
To ensure that Zabbix Proxy auto starts after reboot then enter,
sudo systemctl zabbix-proxy.service
Add Proxy to Zabbix Server UI
I then create the proxy in Zabbix Server UI, then after several seconds, I refresh the proxy config screen and it will show that the proxy is now in communication with the server.
Zabbix UI ⇾ Administration ⇾ Proxies
The Proxy name must be the same name you configured in the Hostname parameter in the proxy configuration file /etc/zabbix/zabbix_proxy.conf on your proxy server.
In my example, it doesn’t matter that my Zabbix server is on a different network than the proxy. All messages received on the Zabbix Server from the external Proxy will contain this hostname in the payload, so the Zabbix Server process will reject anything that doesn’t match.
Also note that the Proxy name is the only required parameter on this form. You don’t need anything else to make it work.
Troubleshooting
Check the output of
sudo service zabbix-proxy status
Raspberry Pi OS
After selecting the operating system Raspberry Pi OS Lite (64 -bit), press the gear icon,


PSK Encryption between the Proxy and Server
Later on, you may be tempted to add PSK encryption between your Zabbix server and the Proxy. PSK is discussed more later on in the course.
You may see an error in the Proxy logs, cannot send proxy data to server at «zabbix.your-domain.tld»: connection of type «TLS with PSK» is not allowed for proxy «your-proxy»
Understand that the Proxy process, and the Proxies own Agent process are two different things with their own configurations. The proxies own agent is discussed in the next section.
Useful Links
А не пришло ли время разобраться и навести наконец-то порядок с безопасностью в мониторинге? Тем более, в одной из популярных систем мониторинга и встроенная возможность такая имеется.

Интересный факт: включение шифрования на компонентах Zabbix не требует открытия дополнительных портов на фаерволлах, демоны Zabbiх поддерживают шифрованные и нешифрованные соединения одновременно.
Велкам ту подкат.
В Zabbix есть следующие основные информационные потоки:
Пользователь (web-браузер) <-> Zabbix web-сервер
Шифрование этой коммуникации не поддерживается со стороны Zabbix, нужно самостоятельно выполнить настройку на стороне Apache или Nginx. В этой статье мы рассмотрим настройку Nginx с самоподписанным SSL-сертификатом, т.к. преимущественно используем именно Nginx в своих проектах по мониторингу на базе Zabbix. Можно использовать сертификат доверенного центра сертификации, например, бесплатный от Let’s Encrypt. Это позволит избежать страшных предупреждений в браузере. Обращаем внимание, что использование самоподписанного сертификата никак не умаляет надежности шифрованного соединения, оно будет таким же защищённым как и при использовании сертификата от доверенного CA.

В браузере появится «замочек» и можно посмотреть детали сертификата. Соединение зашифровано.

Zabbix web-сервер <-> База данных Zabbix
Перед началом настройки на стороне Zabbix, в БД должны быть созданы пользователи и роли с атрибутами, требующими шифрованное подключение.
Листинг создания пользователей для Zabbix web-сервера и Zabbix-сервера
Вызов статуса вернет, в том числе, данные по настройкам шифрования. Убедимся, что в строке SSL указаны алгоритмы шифрования.



На двух скриншотах выше можно увидеть нововведение в Zabbix версии 5.2 — поддержку интеграции с хранилищем Vault. Перед началом настройки Zabbix мы создали пару ключей и учетными данными для подключения к БД.

Берем клиентские ключи MySQL, заполняем необходимые поля и нажимаем Далее.

Другой способ настроить то же самое — соответствующие ключи в конфигурационном файле zabbix.conf.php.
Zabbix-сервер <-> База данных Zabbix
На предыдущем шаге мы уже создали пользователя для подключения, клиентские ключи для подключения тоже есть. Осталось прописать эти данные в конфигурационный файл Zabbix-сервера.

Использование Vault требует добавления значений к следующим переменным в конфигурации Zabbix-сервера:
Переменная VaultDBPath отвечает за хранение учетных данных для подключения к БД. Подробнее о шифровании подключений к БД можно узнать в документации Zabbix.
Zabbix-сервер <-> Zabbix-прокси
Как многие пользователи Zabbix знают, в системе существует два типа подключений для передачи метрик: пассивные и активные. Пассивные подразумевают запрос к источнику данных, а активные – отправку данных от источника вне зависимости запроса приемника. Аналогичным образом, соединение между сервером и прокси могут быть пассивными или активными. На скриншоте ниже настроен активный прокси, соединение, с которым зашифровано по технологии PSK.

Обратите внимание, что исходящие соединения (пассивные) могут выполняться каким-то одним способом на выбор, а для входящих доступны комбинации вариантов: без шифрования, PSK или сертификат.
На стороне прокси все настройки выполняются в конфигурационном файле. Для активных проверок:
Для пассивных проверок:
Zabbix-сервер <-> Zabbix-агент и Zabbix-прокси <-> Zabbix-агент
Мы не будем повторяться, настройка этих соединений аналогична настройке соединения сервера с прокси: для исходящих соединений доступен один вариант, для входящих один или несколько.

Названия переменных для настройки шифрования на стороне агента полностью аналогичны переменным в конфигурации прокси.
Zabbix-прокси <-> БД Zabbix-прокси
Подход к настройке аналогичен настройке шифрованного соединения между Zabbix-сервером и БД. Названия переменных такие же, указываются в конфигурационном файле Zabbix-прокси.
Zabbix sender -> Zabbix-прокси и Zabbix-агент -> Zabbix get
Шифрование соединения с утилитами Zabbix sender и Zabbix get выполняется при помощи специальных параметров при вызове соответствующих утилит.
zabbix_sender -z 127.0.0.1 -s zabbix02 -k Encrypt -o 18 —tls-connect psk —tls-psk-identity «test_zabbix» —tls-psk-file /etc/zabbix/keys/agent.psk
zabbix_get -s 127.0.0.1 -k agent.version
—tls-connect psk —tls-psk-identity «test_zabbix» —tls-psk-file /etc/zabbix/keys/agent.psk
Авторегистрация с шифрованием
Шифрование также поддерживается и для процесса авторегистрации.

После авторегистрации нового узла, настройки соединения с ним будут автоматически настроены на использование шифрования PSK.
Хранение чувствительной информации в Vault
Приятное нововведение, которое появилось в версии Zabbix 5.2 — поддержка хранилища Vault. Его можно использовать как для хранения учетных данных для доступа к БД так и для значений макросов. Так значения макросов выглядят в Vault:

А так на них можно сослаться в интерфейсе Zabbix:

Хранение значений макросов очень сильно упрощает управление учетными данными для разных шаблонов, позволяет легко отзывать учетные данные и вести аудит. Разумеется, из Vault можно брать значения любых макросов и это добавляет ещё одну степень свободы при автоматизации мониторинга в Zabbix.
Заключение
В статье мы рассказали о возможностях шифрования в Zabbix. Перед решением об использовании шифрованных подключений, важно понимать, что это снижает производительность системы мониторинга и сильнее утилизирует аппаратное обеспечение. Без понятной причины шифрование использовать не стоит.
Мы давно и успешно работаем с Zabbix, если у вас есть задачи по развитию, сопровождению или обновлению системы, оставьте заявку через форму обратной связи или свяжитесь другим удобным способом.
А ещё можно почитать:
Добавляем CMDB и географическую карту к Zabbix
Мониторинг принтеров — дело благородное
Структурированная система мониторинга на бесплатных решениях
Elastic под замком: включаем опции безопасности кластера Elasticsearch для доступа изнутри и снаружи
Для обработки событий от Zabbix, Prometheus, Elastic и других систем рекомендуем использовать Amixr (презентация по запросу).
Version: 5.x, 6.1.8, 6.1.9
Zabbix – это свободная система, позволяющая производить мониторинг сети, серверов, виртуальных машин, баз данных и приложений.
Мониторинг UserGate с помощью SNMP-запросов
Перейдите во вкладку события и, нажав Добавить, добавьте следующие события:
- Высокая загрузка процессора.
- Высокая загрузка памяти.
- Недостаточно места в разделе для журналов.
- Таблица статистики сетевых интерфейсов.
- Изменён статус RAID.
- Изменён статус блока питания.
Следующей командой пропишите путь к файлам MIB:
Установите стандартные MIBs в систему из репозитария.
# snmpwalk -v 2c -c public 192.168.117.250 UTM-MIB::cpuLoad.0
В результате выполнения команды будет отображена строка, похожая на следующую:
UTM-MIB::cpuLoad.0 = INTEGER: 2
Перезапустите сервисы, используя следующие команды:
# service snmpd restart
# service zabbix-server start
Для получения информации о загруженности CPU создайте элемент со следующими параметрами:
- Тип: SNMP агент.
- Тип информации: Числовой (целое положительное).
- Ед. измерения: %.
- Интервал обновления, например, 5s.
- Группы элементов данных: Perfomance.
Для получения информации о загруженности RAM создайте элемент со следующими параметрами:
Для получения информации о пространстве на диске, используемом для хранения журналов, создайте элемент со следующими параметрами:
- Тип: SNMP агент.
- Тип информации: Числовой (целое положительное).
- Ед. измерения: %.
- Интервал обновления, например, 1m.
- Группы элементов данных: Diskinfo.
Для получения информации о состоянии первого блока питания создайте элемент со следующими параметрами:
- Тип: SNMP агент.
- SNMP OID: UTM-MIB:: sysPowerSupply1Status.0
- Тип информации: Текст.
- Интервал обновления, например, 300s.
- Группы элементов данных: Powerinfo.
Аналогично создайте элемент для получения информации о состоянии второго блока питания.
Для получения информации о состоянии RAID создайте элемент со следующими параметрами:
- Тип: SNMP агент.
- Тип информации: Текст.
- Интервал обновления, например, 300s.
- Группы элементов данных: RAIDinfo.
Для получении информации с интерфейсов о прохождении трафика необходимо преобразовать название интерфейса из типа string в byte. Произведём преобразование на пример интерфейса port0.
Преобразование происходит с использованием таблицы символов ASCII: необходимо преобразовать каждый каждый символ в числовое значение. В соответствии с таблицей: «p» «o» «r» «t» «0» ➜ 112.111.114.116.48.
Для получения значения входящего трафика в kBytes/sec с интерфейса port0 SNMP OID для запроса будет следующий:
где 5 после rxKBPs. — это количество символов в названии port0, а 112.111.114.116.48 — результат преобразования port0 в соответствии с таблицей символов ASCII.
Аналогично создайте для других параметров
- UTM-MIB::txKBPs .5.112.111.114.116.48 — количество исходящего трафика в kBytes/sec на интерфейсе port0.
- UTM-MIB::rxPktPs.5.112.111.114.116.48 — количество входящих пакетов в секунду на интерфейсе port0.
- UTM-MIB::txPktPs.5.112.111.114.116.48 — количество исходящих пакетов в секунду на интерфейсе port0.
Данные мониторинга можно просмотреть в разделе Мониторинг ➜ Последние данные.
Настройка SNMP Traps в ZABBIX
mode = daemon
net_snmp_perl_enable = 1
mibs_environment = ALL
date_time_format = %H:%M:%S %Y/%m/%d
log_enable = 1
log_file = /var/log/snmptt/snmptt.log
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log
Перейдите в веб-интерфейс Zabbix. Для примера будет создан элемент данных UG_trapHighCPUUsage (высокая нагрузка процессора) с типом SNMP trap. Для этого перейдите в раздел Настройка ➜ Шаблоны, откройте нужный шаблон, перейдите во вкладку Элемент данных и нажмите Создать элемент данных. Укажите необходимые данные.
Трапы можно посмотреть в разделе Мониторинг ➜ Последние данные.
Шаблон Zabbix
Данный шаблон содержит соответствующий макрос с community по умолчанию public, набор элементов данных принимающих метрики системных параметров, статистику основных метрик интерфейса управления port0, триггеры и графики. Элементы данных сконфигурированы с использованием как идентификаторов объектов (OID), так и баз управляющей информации (MIB).
При загрузке шаблона, а также файлов MIB на сервер Zabbix, сконфигурированный узел сети уже сможет получать данные по имеющимся элементам. При необходимости администратор на основе информации в текущем шаблоне может добавить новые триггеры, графики и элементы данных по интерфейсам, которые требуют наблюдения.
Для загрузки шаблона на сервер Zabbix перейдите в раздел Настройка ➜ Шаблоны и нажмите на Импорт.
Используя данный шаблон можно получить следующую информацию по элементам данных:
Данные мониторинга доступны в разделе Мониторинг ➜ Последние данные.
Кроме элементов данных шаблон содержит набор триггеров.
Срабатывания триггеров будут отображены в разделе Мониторинг ➜ Проблемы.
В данном примере использовался iReasoning MIB Browser; ссылка для скачивания: https://www.ireasoning.com/mibbrowser.shtml.
Процесс определения идентификатора объекта.
Выделите интересующий вас объект для отображения дополнительной информации о нём. Данные об объекте (OID, MIB, тип доступа и т.п., а также принимаемые значения и описание объекта) будут отображены в таблице.
Альтернативным методом получения идентификаторов объектов и вывода текущих параметров является выполнение команды snmpwalk на сервере Zabbix.
Сообщить об ошибке
Последнее обновление: 14 мар, 2023
Также опубликовано в

