Как узнать время последнего активного состояния хоста в Zabbix?

Я использую простой ICMP опрос для мониторинга доступности нескольких хостов, который предоставляет три данных: ICMP loss, ICMP ping и ICMP response time. Однако мне нужно также отслеживать время, когда последний раз хост был онлайн, на основе результатов опросов. <br/> Как правильно определить тип данных и формулу для этого элемента? Потребуются ли для этого дополнительные настройки, например, триггеры или что-то подобное?
  • 20 ноября 2024 г. 14:23
Ответы на вопрос 2
Чтобы отслеживать время последнего активного состояния хоста в Zabbix при использовании ICMP опросов, вы можете создать вычисляемый элемент (calculation item) для этой цели. Вот шаги, которые помогут вам настроить это:

### Шаг 1: Создание элемента для записи последнего времени

Вам нужно создать новый элемент данных (item), который будет записывать время последнего успешного пинга. Для этого выполните следующие действия:

1. Перейдите в конфигурацию вашего хоста в Zabbix.
2. В разделе "Items" нажмите "Create item".
3. Задайте имя, например, "Last online time".
4. В поле "Type" выберите "Calculated".
5. Установите "Key", например `last.online`.
6. В качестве "Calculating expression" используйте следующую формулу:

   ```plaintext
   now() 
   ```
   Это будет возвращать текущее время, когда ICMP пинг успешен.

### Шаг 2: Добавление триггера

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

1. Перейдите в раздел "Triggers" и нажмите "Create trigger".
2. Задайте имя, например, "Host is down".
3. В поле "Expression" введите:

   ```plaintext
   {your.host:key.icmp.ping.last()}=0
   ```
   Это выражение проверяет, был ли последний ICMP пинг успешным. Если нет, триггер сработает.

4. В разделе "Operations" вы можете настроить уведомления, если хост не доступен.

### Шаг 3: Отображение времени последнего активного состояния

Для максимально понятного отображения, вы можете создать еще один элемент:

1. Создайте элемент с типом "Zabbix trapper".
2. При каждом успешном ICMP опросе отправляйте значение времени в этот элемент. Это можно сделать с помощью простой пользовательской скриптовой автоматизации, которая отправляет значение `now()` в этот элемент, когда ICMP пинг успешен.

### Пример скрипта для отправки времени:

Вы можете использовать `zabbix_sender` для отправки значения времени в Zabbix сервер:

```bash
zabbix_sender -z ZABBIX_SERVER -s "your.host" -k "last.online" -o "$(date +%s)"
```

### Заключение

Теперь при каждом успешном ICMP опросе ваш элемент "Last online time" будет обновляться текущим временем, что позволит вам отслеживать, когда хост в последний раз был доступен. Разумеется, вы можете дополнительно настроить графики, чтобы визуализировать эти данные на панелях Zabbix.
Вам нужен элемент данных system.uptime . Но это будет работать только с агентом.
Похожие вопросы