Можно ли настроить OpsView или Nagios для отправки отчетов об устройстве на основании отправленных им электронных сообщений о состоянии?

Я смотрю на настройку сервера 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 действительно НЕ будет делать то, что мне нужно?

И, конечно, открыты предложения о том, как это сделать, хотя программирование менее интенсивно, чем то, что Даниэль уже предлагал.

Благодарю.

1 ответ

Я делаю такие вещи все время, используя рукописные парсеры и send_nsca, В качестве примера, давайте придерживаться функции с именем "function 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 являются flavor-text, который будет отображаться в столбце "информация о состоянии" 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 секунд, и все, что он делает - это выдает КРИТИЧЕСКОЕ предупреждение с текстом состояния "STALE SERVICE". Это означает, что если по какой-либо причине цепочка уведомлений завершается сбоем - задание не выполнялось, электронная почта не доставлялась, сценарий синтаксического анализа был сломан, сбой NSCA - NAGIOS будет ворчать на соответствующих получателей, чтобы можно было исследовать проблему.

Это может быть только краткий обзор ответа. Я думал, что некоторые конкретные примеры конфигурации могут быть полезны, но полная кулинарная книга выходит далеко за рамки SF-ответа, поэтому, пожалуйста, не спрашивайте больше подробностей конфигурации.

Другие вопросы по тегам