Zabbix: проверка доступности запросом ICMP Ping
07.05.2020
insci
CentOS, Linux, Ubuntu, Windows Server 2016
комментариев 6
В этой статье мы рассмотрим пошаговую настройку мониторинга сетевых устройств по протоколу ICMP в системе мониторинга Zabbix с помощью ping. Эта самая простая, но популярная задача безагентного мониторинга, когда вам нужно проверить доступность удаленного сервера, сайта или сетевого оборудования с сервера мониторинга. Zabbix может отправлять ICMP запросы до узла, и если ответ не получен, время ответа (response time) слишком большое или наблюдается большой % потери пакетов, вывести предупреждение в дашборде. Протокол ICMP в основном используется для проверки доступности сетевых узлов. Утилиты ping и traceroute/tracert также работают через ICMP.
Для начала нужно настроить файервол на узлах , которые будут мониториться (разрешить icmp ping запросы), а также убедиться, что на сервере Zabbix установлена и сконфигурирована утилита fping.
Открытие портов для ICMP ping в Windows Server и Linux
По умолчанию в Windows Server разрешен ICMP ping, но, если по каким-то причинам он был выключен, включить его можно через команду netsh или PowerShell. Запустите командную строку с правами администратора и введите:
Set-NetFirewallRule -Name FPS-ICMP-ERQ-In -Enabled True -Profile Any -Action Allow
Эти команды создадут в файерволе правило, которое разрешает входящие ICMP echo запросы.
В современных дистрибутивах Linux входящий ICMP также разрешен. Если по каким-то причинам он выключен, то добавьте эти правила в iptables. Выполните команды из-под root/sudo:
iptables -I INPUT -p icmp —icmp-type echo-request -j ACCEPT
iptables -I OUTPUT -p icmp —icmp-type echo-reply -j ACCEPT
Таким образов вы добавите правила, разрешающие ICMP запросы в самое начало цепочки правил iptables.
Если вы используете firewalld для управления правилами фаейрвола, разрешить ответ на icmp ping можно так:
firewall-cmd —permanent —direct —add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
Установка fping, настройка путей в Zabbix
В Zabbix для ICMP проверок используется утилита fping. Во многих дистрибутивах Linux эта утилита предустановлена, поэтому для начала проверим её наличие в системе. Зайдите на ваш zabbix сервер и введите команду:
Если такой команды нет, установите её с помощью пакетного менеджера:
- Для Ubuntu: apt install fping
- Для CentOS нужно сначала подключить EPEL репозиторий, а потом выполнить установку: yum install fping
По умолчанию утилита установится в /usr/bin/fping. В случае возникновения проблем с fping, убедитесь что утилита действительно лежит по пути /usr/bin/fping, и если она находится в другой директории, измените указанные ниже строки в zabbix_server.conf, указав корректный путь к fping.
Шаблон ICMP Ping в Zabbix и его компоненты
В Zabbix по умолчанию есть шаблон Template Module ICMP Ping (может называться иначе, в зависимости от версии Zabbix). Именно его мы будем использовать для мониторинга сетевых узлов через ICMP ping. Шаблон включает в себя 3 проверки:
- ICMP ping – доступность узла по ICMP;
- ICMP loss – процент потерянных пакетов;
- ICMP response time – время ответа ICMP ping, в миллисекундах;
Обратите внимание на колонку Key: icmpping, icmppngloss и icmppingsec, это встроенные в zabbix ключи. Они являются Simple checks, т.е. “простой проверкой”, в которой не участвует zabbix-agent.
Полный список Simple checks, для которых не нужно устанавливать агент zabbix на системы, которые нужно мониторить, можно посмотреть здесь https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/simple_checks
В шаблоне находятся 3 триггера, которые следят за вышеописанными ключами и их значениями.
Некоторые триггеры, например, “High ICMP ping response time” используют макросы шаблона. Значения этих макросов можно изменить во вкладке Macros.
Значения, при которых сработает триггер.
- Для ICMP Ping Loss процент потерь за последние 5 минут равняется 20.
- Для Response Time за последние 5 минут значение равняется 150 миллисекундам.
Создание узла в Zabbix, подключение ICMP Ping шаблона
В этой статье я буду настраивать мониторинг узла с Windows Server. Перейдите в Configuration -> Hosts -> Create Host.
Введите Host name, выберите группу и укажите IP адрес вашего узла в Agent interfaces.
Перейдите во вкладку Templates, нажмите Select и выберете Template Module ICMP Ping.
Нажмите Add в форме выбора шаблона и затем снова Add для завершения создания узла.
В колонке Templates отображаются все шаблоны, подключенные к узлу.
Теперь проверим работу мониторинга. Перейдите в Monitoring -> Latest data, нажмите на Select возле Hosts, и выберите узел, который вы только что создали.
В столбце Last Value отображаются последние данные, которые пришли с этого узла.
Также можно посмотреть на график по определенному значению, например, ICMP Response time. Нажмите ссылку Graph.
В случае возникновения проблем, вы сможете увидеть уведомления в дашборде Zabbix.
ICMP ping это самая простая и самая базовая проверка доступности для сетевых устройств. Если вы хотите получать больше данных о вашем устройстве, то вы можете настроить мониторинг устройств с помощью агентов Zabbix, по SNMP или другим протоколам.
Предыдущая статья Следующая статья
Заметки админа
Столкнулся с интересной проблемой, до сути которой докопался как-то не сразу, хотя решение в итоге вышло простым. После настройки мониторинга резервных каналов связи на объектах Zabbix стал регулярно ругаться, что на этих элементах большие потери пакетов, хотя по факту их не было. Зато были задержки: по 900 и более мс.
Попытавшись как-то потюнить сам Zabbix, начал копать глубже, в результате чего выяснилось, что простые проверки, реализованные в частности в дефолтном шаблоне системы Template ICMP Ping, опираются на fping с параметрами по-умолчанию, что описано в данной статье. То есть если ответ на ICMP запрос не получен в установленное время, пинг считается потерянным. В моем случае zabbix 3.0 и fping 3.8 значение таймаута по умолчанию составляет 500 мс, что явно меньше того, что требуется. Увеличить это можно в самих настройках шаблона, указав в элементе ICMP loss ключ icmppingloss[. 3000], где 3000 — искомый таймаут (тут каждому свой, я установил 3000 для компенсации роста задержек при нагрузке на канал).
Правда, в моем случае zabbix ругался не на 100% потерю пакетов, а на 33%, т.е. 1 пакета из 3-х. И здесь все логично. С параметрами по-умолчанию zabbix отправляет 3 пакета, и таймаут действителен только для последнего. По окончании таймаута утилита fping завершает работу, возвращая результат. Соответственно, терялся в моем случае только последний пакет.
Диагностировать данную проблему можно собственно утилитой fping:
fping -C 3 -p 1000 -t 2000 192.168.1.1
Используемые в zabbix параметры и их значения по-умолчанию приведены по ссылке выше. Надеюсь, данная статья вам помогла.
How to Ubuntu
Также есть нюанс при указании единиц измерения — выдержка из мануала:
Если указан символ единицы измерения, Zabbix добавит пост обработку полученного значения и отобразит его с заданным постфиксом единицы измерения.
По умолчанию, если исходное значение превышает 1000, оно делится на 1000 и так отображается. Например, если вы задали bps и полученное значение равно 881764, оно будет отображено как 881.76 Kbps.
Для единиц измерения B (байт), Bps (байты в секунду) используется специальная обработка, при которой значение делится на 1024. Таким образом, если единица измерения указана как B или Bps , Zabbix будет отображать:
1 как 1B/1Bps
1024 как 1KB/1KBps
1536 как 1.5KB/1.5KBps
Еще есть вариант настройки:
Тип информации: Числовой (целое положительное)
Единица измерения: bps
Пользовательский множитель: 8 — переводим байты в биты
Интервал обновления (в сек): 60
Хранение значения: Дельта (скорость в секунду)
Zabbix – Simple ICMP Ping Checks
In this article we’ll show how to configure ICMP-based network device monitoring using ping in Zabbix. It is the easiest and the most popular task of agentless monitoring, when you want to check the availability of a remote server, website or network device from your monitoring server. Zabbix can send ICMP requests to the host, and if no answer is received, the response time is too long or a large percentage of packets are lost, it displays a warning on the dashboard. The ICMP protocol is mostly used to check the availability of network hosts. Ping and traceroute/tracert tools also work over ICMP protocol.
First of all, you must configure a firewall on the hosts you are going to monitor (allow icmp ping requests) and make sure that fping is installed and configured on your Zabbix server.
How to Open Ports for ICMP Ping on Windows Server and Linux?
By default, ICMP ping is allowed on Windows Server, but if is has been disabled on any reason, you can enable it using netsh or PowerShell. Run the command prompt as administrator and enter the following:
Set-NetFirewallRule -Name FPS-ICMP-ERQ-In -Enabled True -Profile Any -Action Allow
The commands will create a firewall rule allowing inbound ICMP echo requests.
Inbound ICMP traffic is also allowed in modern Linux distros. If it is disabled on any reason, add these rules to iptables. Run the following commands under root/sudo:
# iptables -I INPUT -p icmp —icmp-type echo-request -j ACCEPT
# iptables -I OUTPUT -p icmp —icmp-type echo-reply -j ACCEPT
Thus, you will add the rules allowing ICMP requests to the beginning of the iptables rule chain.
If you use firewalld to manage firewall rules, you can allow ICMP ping reply as follows:
# firewall-cmd —permanent —direct —add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
How to Install Fping & Set Paths in Zabbix?
Fping is used in Zabbix to perform ICMP checks. In most Linux distros, the utility is preinstalled, so make sure that it exists in the operating system first. Go to your Zabbix server and run this command:
If there is no such tool, install it using a package manager:
- In Ubuntu: apt install fping
- In CentOS, you will have to connect EPEL repository first and then install the tool: yum install fping
By default, the tool is installed in /usr/bin/fping. If there are any problems with fping, make sure that it is located in /usr/bin/fping. If it is in another directory, change the following lines in zabbix_server.conf by specifying the correct path to fping.
ICMP Ping Template in Zabbix
By default, there is the Template Module ICMP Ping in Zabbix. (It may have a different name depending on a Zabbix version.) We will use it to monitor network hosts using ICMP ping. The template includes 3 checks:
- ICMP ping – node availability over ICMP;
- ICMP loss – percentage of lost packets;
- ICMP response time – ICMP ping response time in milliseconds.
Look at the Key column: icmpping, icmppngloss and icmppingse, these are built-in keys in Zabbix. They are Simple checks, it means that the Zabbix Agent is not used to perform them.
The template contains 3 triggers that track the keys described above and their values.
Some triggers, like High ICMP ping response time, use the template macros. You can change macro values in the Macros tab.
The values that will activate a trigger:
- The package loss percentage of ICMP Ping Loss ($ICMP_LOSS_WARN) for the last 5 minutes is more than 20.
- The Response Time value ($ICMP_RESPONSE_TIME_WARN) is over 150 milliseconds for the last 5 minutes.
Create Host in Zabbix and Connect the ICMP Ping Template
In this article I will configure monitoring of a host running Windows Server. Let’s add this host to zabbix. Go to Configuration -> Hosts -> Create Host.
Enter a host name, select a group and enter an IP address of your host in Agent interfaces.
Open the Templates tab, click Select and choose Template Module ICMP Ping.
Click Add in the template selection form and Add to finish host creation.
All templates connected to the host are displayed in the Templates column.
Then check how the monitoring works. Go to Monitoring -> Latest data, click Select next to Hosts and select the host you have just created.
The latest data received from the host are displayed in the Last Value column.
Also, you can view a graph for a specific value, like the ICMP Response time. Click Graph.
In case of any problems, you will see a notification on Zabbix dashboard.
ICMP ping is the easiest basic check of your network device availability. If you want to get more data about your device, you can configure device monitoring using Zabbix Agent, SNMP or other protocols.