nagios监控sqlserver2005镜像

 more /opt/nagios/nagiosweb/libexec/check_mirror
#!/bin/bash
export LD_LIBRARY_PATH=/usr/local/lib
/opt/nagios/nagiosweb/libexec/check_dbmirroringbk  -H $1 -o $2 -d $3 -u $4 -p $5

 

[root@localhost libexec]# more /opt/nagios/nagiosweb/libexec/check_dbmirroringbk
#!/usr/bin/perl -w

use strict;
use Getopt::Long;
use DBI;

# Nagios specific

use lib "/opt/nagios/nagiosweb/libexec/";-----结合nagios安装目录修改
#use lib "/usr/lib/nagios/plugins";
use utils qw(%ERRORS $TIMEOUT);
#my $TIMEOUT = 15;
#my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);


my $o_host;
my $o_db;
my $o_port;
my $o_user="sa";
my $o_pw="";
my $name="";
my $state="";
my $role="";

sub print_usage {
    print "\n";
    print "Usage: check_dbmirroring.pl -H <host> -d <database> [-u <username>] [-p <password>] [-o <port>]\n";
    print "\n";
    print "\tDefault Username is 'sa' without a password\n\n";
    print "\tScript should be run on the PRINCIPAL with a read-only user\n";
    print "\tIf you want to run it on the MIRROR, the user MUST have SYSADMIN rights on the SQL-Server\n";
    print "\totherwise you get NULL\n";
    print "\n";
}

sub check_options {
    Getopt::Long::Configure ("bundling");
    GetOptions(
        'H:s'   => \$o_host,
        'd:s'   => \$o_db,
        'u:s'   => \$o_user,
        'p:s'   => \$o_pw,
        'o:s'   => \$o_port
        );
    if (!defined ($o_host) || !defined ($o_db)) { print_usage(); exit $ERRORS{"UNKNOWN"}};
}

########## MAIN #######

check_options();

my $exit_val;

# Connect to database
my $dbh =DBI->connect("dbi:Sybase:server=$o_host:$o_port","$o_user","$o_pw") or exit $ERRORS{"UNKNOWN"};
my $sth=$dbh->prepare("SELECT d.name, m.mirroring_role_desc, m.mirroring_state_desc
                       FROM sys.database_mirroring m
                       JOIN sys.databases d ON m.database_id = d.database_id
                       WHERE mirroring_state_desc IS NOT NULL AND name = '$o_db'");
$sth->execute;

while (my @row = $sth->fetchrow_array) {
         $name=$row["0"];
         $role=$row["1"];
        $state=$row["2"];
}

$exit_val=$ERRORS{"CRITICAL"};
$exit_val=$ERRORS{"OK"} if ( $role eq "PRINCIPAL" ) && ( $state eq "SYNCHRONIZED" );


print "OK - $name - $role - $state\n"        if ($exit_val eq $ERRORS{"OK"});
print "CRITICAL - Check your mirroring settings\n" if ($exit_val eq $ERRORS{"CRITICAL"});
exit $exit_val;

 

添加监控命令

define command{
        command_name    check_sqlserver_mirroring
        command_line    $USER1$/check_mirror $HOSTADDRESS$ $_HOSTPORT$ $_SERVICEDBNAME$ $_HOSTDBUSER$ $_HOSTDBPASSWORD$
        }

-------------------------------------------------------------------------------------------

添加监控主机和监控服务

define host{
        use             windows-server  ;
        host_name       sql186    ;
        alias           sql186    ;
        address         xxx..xx.xx186;
        _port           XXXX
        _dbuser         XXXXXXXXXXXX
        _dbpassword     XXXXXXXXXXXXXXX
        }

 

define service{
        use                     generic-service
        host_name               sql186    ; The name we're giving to this host
        _dbname                 user
        normal_check_interval   2
        service_description     sqlmirror_186_card
        check_command           check_sqlserver_mirroring
        }

 

 

参考文献

http://labs.consol.de/nagios/check_mssql_health/

 

http://newyue.blog.51cto.com/174760/526009

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值