是否可以设置 OpsView 或 Nagios 以根据其发送的状态电子邮件来报告设备情况?

是否可以设置 OpsView 或 Nagios 以根据其发送的状态电子邮件来报告设备情况?

我正在考虑设置一个 Nagios(或者 OpsView)服务器来监控我们的网络。

我有一些外围设备,它们的 oid 架构不包含我想要监控的某些指标的节点。目前,我根据设备本身定期发送的状态电子邮件来监控指标。

是否可以设置 Nagios(或 Opsview)根据收到的电子邮件内容报告设备状态?

最终,我希望将其降到类似红色/绿色的状态。如果我能获得第三个(例如黄色)状态,表示尚未收到预期状态电子邮件,则可以获得加分。

如果 Nagios 和 Opsview 都不能做到这一点,我愿意听取建议。即使它只能做到这一点,我也会使用 Nagios 来完成其余/典型的网络监控任务。

谢谢大家。

编辑-根据要求,这是一个我想要解析/处理的电子邮件的[净化]示例:

Return-path: <[email protected]>
Envelope-to: [email protected]
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 <[email protected]>)
    id 123456-000000-1Z
    for [email protected]; Fri, 28 Nov 2014 03:15:21 -0600
Date: Fri, 28 Nov 2014 04:15:21 -0500
From: "Fifteen " <[email protected]>
To: <[email protected]>
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 插件。我的搜索和 Daniel 的评论让我感觉这可能是一个死胡同请求。

有人能确认 Nagios/Ops 确实不能满足我的需要吗?

当然,我们也愿意接受关于如何做到这一点的建议,尽管编程强度没有丹尼尔所建议的那么高。

谢谢。

答案1

我经常使用手写解析器和 来做这种事情send_nsca。为了举例说明,我们继续使用名为 server3 的机器上的名为“function X”的函数。

我通常的做法是使用特定于相关服务的收件人地址 - 比如说[email protected]。您可以在通用邮箱上执行此操作,但这意味着解析器中的逻辑更多(这意味着错误导致误报的可能性更大)并且意外删除发给人类的电子邮件的可能性更大。我让我的邮件服务器将地址接收到一个小程序中,例如用于 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上述语句中的空格组必须是单个 TAB,并且successfailure风味文本,它们将出现在 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_nameservice_description确切地匹配回显到 的前两个字段send_nscafreshness_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”的 CRITICAL 警报。这意味着,如果通知链因任何原因而默默失败 - 作业未运行、电子邮件未送达、解析脚本损坏、NSCA 失败 - NAGIOS 将向相应的收件人发出抱怨,以便调查问题。

这只能是答案的简要概述。我认为一些具体的配置示例可能会有所帮助,但完整的食谱是方式超出了 SF 答案的范围,所以不要要求更多的配置细节。

相关内容