Nagios 3.x.x / Icinga 1.x.x服务器集成对于SMS提醒通过FoxBox设备在Debian挤压

Nagios 3.xx / Icinga 1.xx服务器集成通过FoxBox设备在Debian Squeeze上的短信提醒

本教程介绍如何将标准的Nagios(或Icinga)监控服务器与SMS通知外部设备FoxBox( www.smsfoxbox.it )进行集成

1初步说明

如制造商所说,FoxBox有两种类型的版本(G25和LX800),硬件细节不同。 在本指南中,我们将参考SMS Gateway LX800(由于其更高的性能和CompactFlash存储,我们购买了这个),但我相信它可以扩展到其他版本没有问题。

我们的服务器在Debian Squeeze上运行Nagios Core 3.5.0(带1.4.16 Nagios插件)。 可能对于不同的发行,路径会发生变化,但逻辑依然很小。

2在FoxBox端安装

该设备专为这些通信任务而设计,因此除此之外还有很多功能:

  • 提供从我们的监控服务器可访问的有效IP地址;
  • 插入测试完整的SIM卡,发送短信。

3在服务器端安装

首先我们需要将这个脚本放在文件夹/ usr / lib / nagios / plugins /中

#!/usr/bin/perl
use LWP::UserAgent;
use Getopt::Long;
use strict;
use warnings;
use constant OK => 0;
use constant WARNING => 1;
use constant CRITICAL => 2;
use constant UNKNOWN => 3;
use constant SEND_PAGE => "/source/send_sms.php";
my($host);
my($username);
my($password);
my($number);
my($message);
sub usage() {
    print("Usage: send_sms -h|--host <host> -u|--user <username> --pw|--pass
<password> -n|--number
<phone_number> -m|--message <message>\n\n");
    print("<host> - IP address or hostname of the SMS FoxBox\n");
    print("<username> - name of the SMS FoxBox administrator\n");
    print("
<password> - password of the SMS FoxBox administrator\n");
    print("
<phone_number> - phone number where SMS will be sent\n");
    print("<message> - message to be sent\n");
}
sub send_sms {
    my($host, $user, $pass, $phonenum, $text) = @_;
    my($ua);
    my($html_page);
    my($response);
    my($status_code);
    $ua = LWP::UserAgent-&gt;new;
    $ua-&gt;timeout(10);
    $response = $ua-&gt;post("http://$host" . SEND_PAGE,
                [
                    "username" =&gt; $user,
                    "pwd" =&gt; $pass,
                    "from" =&gt; 'Nagios',
                    "nphone" =&gt; $phonenum,
                    "testo" =&gt; $text,
                    "nc" =&gt; "http://$host" . SEND_PAGE
                ]);
    if(!$response-&gt;is_success) {
        print("ERROR: " . $response-&gt;status_line . "\n");
        $status_code = UNKNOWN;
    }
    $html_page =  $response-&gt;content;
    if($html_page =~ /p class="(\w+)"/g) {
        if($1 eq "confneg") {
            print("ERROR: Unable to send SMS\n");
            $status_code = UNKNOWN;
        }
        else {
            $status_code = OK;
        }
    }
    else {
        print("ERROR: Unknown page output\n");
        $status_code = UNKNOWN;
    }
    return $status_code;
}
undef $host;
undef $username;
undef $password;
undef $number;
undef $message;
GetOptions(    'host|H=s'    =&gt; \$host,
        'user|u=s'     =&gt; \$username,
        'pass|pw=s'     =&gt; \$password,
        'number|n=s'     =&gt; \$number,
        'message|m=s'     =&gt; \$message);
if(!defined $host || !defined $username || !defined $password || !defined $number || !defined $message) {
    usage();
    exit(UNKNOWN);
}

$message =~ s/\\n/\n/g;
my($ret_status);
$ret_status = send_sms($host, $username, $password, $number, $message);
exit($ret_status);

正确设置此文件的权限同样重要,以便Nagios用户执行它。

现在我们应该添加新的通知命令,在短信通道上工作,而不是传统的电子邮件。 为此,我们必须将这些行添加到/etc/nagios3/commands.cfg文件

# 'notify-host-by-foxbox' command definition
define command{
        command_name    notify-host-by-foxbox
        command_line    /usr/lib/nagios/plugins/sendSMS.sh -h "127.0.0.1" -u "nagiosadmin" -pw "nagios" -n "$CONTACTPAGER$" -m "Host Alert: $HOSTNAME$ \nHost State: $HOSTSTATE$ \nDate/Time: $LONGDATETIME$"
        }
# 'notify-service-by-foxbox' command definition
define command{
        command_name    notify-service-by-foxbox
        command_line    /usr/lib/nagios/plugins/sendSMS.sh -h "127.0.0.1" -u "nagiosadmin" -pw "nagios" -n "$CONTACTPAGER$" -m "Service Alert: $HOSTALIAS$/$SERVICEDESC$ \nService State: $SERVICESTATE$ \nDate/Time: $LONGDATETIME$"
        }

如您所见,我们需要联系人的新信息:电话号码。 因此,我们必须在文件/etc/nagios3/conf.d/contacts_nagios2.cfg中将其定义为“寻呼机”。

而且,我们设置了service / host notification命令。 默认情况下,这些使用电子邮件通道,而我们想通过新的通知命令提醒,所以我们也必须编辑参数“service_notification_commands”和“host_notification_commands”:

define contact{
        contact_name                    test-contact
        use                             generic-contact
        alias                           tester
        email                           yourname@domain
        host_notification_commands      notify-host-by-foxbox
        service_notification_commands   notify-service-by-foxbox
        pager                           12453683421
        }

显然,一旦完成配置,我们必须重新启动Nagios服务才能看到它们的效果。

检查一切是否正常,也许您可​​以启动飞行前检查

nagios3 -v /etc/nagios3/nagios.cfg

正如我所看到的,这种架构也已经在一对FoxBox版本上实现,提供了一体化通知解决方案(EasyG2 G25和监控LX800)。

(参考: www.smsfoxbox.it

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏