Я собираюсь настроить сервер Nagios (или, возможно, OpsView) для мониторинга нашей сети.
У меня есть несколько периферийных устройств, схема oid которых не включает узлы для какой-то метрики, которую я хочу отслеживать. В настоящее время я отслеживаю метрику на основе сообщений о статусе, периодически отправляемых с самого устройства.
Можно ли настроить Nagios (или Opsview) так, чтобы он сообщал о состоянии устройства на основе содержимого полученного электронного письма?
В конечном итоге я бы хотел свести его к чему-то вроде красного / зеленого статуса. Бонусные баллы, если я могу получить третий (например, желтый) статус, указывающий, что ожидаемое электронное письмо о статусе не получено.
Если ни Nagios, ни Opsview не могут этого сделать, я готов предложить то, что может. Даже если это так, и я буду использовать Nagios для остальных / типичных задач сетевого мониторинга.
Спасибо всем.
Изменить. По запросу это [очищенный] пример электронного письма, которое я хотел бы проанализировать / обработать:
Return-path: <notificationsvc@example.com>
Envelope-to: admin@example2.com
Delivery-date: Fri, 28 Nov 2014 03:15:21 -0600
Received: from [xx.xx.xx.xx] (port=49676 helo=DiskStation)
by mailserver.example.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256)
(Exim ver x.xx)
(envelope-from <notificationsvc@example.com>)
id 123456-000000-1Z
for admin@example2.com; Fri, 28 Nov 2014 03:15:21 -0600
Date: Fri, 28 Nov 2014 04:15:21 -0500
From: "Fifteen " <notificationsvc@example.com>
To: <admin@example2.com>
Subject: =?UTF-8?B?RmlmdGVlb[snipped]
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Dear user,
Function X on Fifteen has been completed.
Task: Function X to server3
Target Server: server3.example.com (xx.xx.xx.xx)
Action Time: 2014/11/28 04:15
РЕДАКТИРОВАТЬ 2 - Итак, чтобы продолжить предложение @DanielAgans, в настоящее время для меня это слишком доморощенное. Это просто слишком далеко от моего набора навыков и зоны комфорта, чтобы заниматься прямо сейчас, но я бы действительно хотел иметь способ контролировать эти коробки, а не вручную смотреть и обрабатывать электронные письма. Очень надеялся найти какой-нибудь плагин для nagios или Opsview. Мои поиски и комментарий Даниэля заставляют меня чувствовать, что это может быть тупиковый запрос.
Может ли кто-нибудь подтвердить, что Nagios / Ops действительно НЕ будет делать то, что мне нужно?
И, конечно, открыт для предложений о том, как это сделать, хотя и менее интенсивно, чем то, что уже предложил Даниэль.
Спасибо.
Я делаю такие вещи все время, используя рукописные парсеры и send_nsca
. Для примера, давайте остановимся на функции под названием «функция X» на машине с именем server3.
Обычно я использую адрес получателя, специфичный для данной службы - скажем, functionXs3@example.com
. Вы можете сделать это в почтовом ящике общего назначения, но это означает больше логики в анализаторе (что означает больше шансов на ошибки, вызывающие ложноотрицательные результаты) и шанс случайного удаления электронной почты, предназначенной для человека. Мой почтовый сервер получает адрес в небольшой программе, например для sendmail, в файле псевдонимов:
functionXs3: "|/usr/local/bin/functionx"
В очереди, /usr/local/bin/functionx
это маленький, легкий сценарий, который ищет характерные признаки успеха / неудачи и соответствующим образом реагирует. Я предполагаю, что текст Function X on Fifteen has been completed
сигнализирует об успехе, а его отсутствие сигнализирует об ошибке, поэтому синтаксический анализатор может быть примерно таким:
#!/bin/bash
grep "Function X on Fifteen has been completed" && \
( echo "server3 function X 0 success" | send_nsca -H nagios.example.com ) || \
( echo "server3 function X 1 failure" | send_nsca -H nagios.example.com )
Это не подходящее место для начинающих по настройке и настройке. send_nsca
на клиенте, а также демон прослушивания NSCA на сервере, но обратите внимание, что группы пробелов в echo
приведенные выше инструкции должны быть одиночными табуляторами, и что success
и failure
- это ароматный текст, который будет отображаться в столбце «информация о состоянии» NAGIOS, и любые соответствующим образом настроенные уведомления.
Внутри NAGIOS вы определяете хост и службу соответственно:
define host{
use host-template
host_name server3
address 192.168.34.56
}
define service{
use passive-service-template
host_name server3
service_description function X
max_check_attempts 1
check_freshness 1
freshness_threshold 100000
}
Обратите внимание, как host_name
и service_description
именно сопоставьте первые два поля, отображаемые в send_nsca
. В freshness_threshold
должно быть установлено значение в секундах, несколько большее, чем обычная частота, с которой должно выполняться задание функции; в моем случае задание должно выполняться один раз в день (86400 сек). Написание шаблонов сервиса и хоста в основном следует оставить как упражнение, но в качестве руководства вам будет полезно что-то вроде этого:
define service{
name passive-service-template
use service-template
normal_check_interval 60
retry_check_interval 60
active_checks_enabled 0 ; passive checks already enabled
check_command check_dummy!2 "STALE SERVICE"
register 0
}
define command{
command_name check_dummy
command_line $USER1$/check_dummy $ARG1$
}
Обратите внимание на использование check_dummy
как проверка свежести. Это то, что NAGIOS вызывает, когда у него не было уведомления о пассивной службе в последний freshness_threshold
секунд, и все, что он делает, - это КРИТИЧЕСКОЕ предупреждение с текстом статуса «УСТАРЕВШИЙ СЕРВИС». Это означает, что если по какой-либо причине цепочка уведомлений выйдет из строя без предупреждения - задание не было выполнено, электронная почта не была доставлена, сценарий синтаксического анализа был сломан, NSCA не удалось - NAGIOS будет ворчать на соответствующих получателей, чтобы можно было изучить проблему.
Это может быть лишь мимолетный обзор ответа. Я думал, что несколько конкретных примеров конфигурации могут быть полезны, но полная кулинарная книга путь выходит за рамки ответа SF, поэтому пожалуйста не просите много дополнительных деталей конфигурации.