Sql server Nagios使用perl DBD::Sybase检查\u mssql\u运行状况,不使用FreeTds

Sql server Nagios使用perl DBD::Sybase检查\u mssql\u运行状况,不使用FreeTds,sql-server,perl,sybase,nagios,freetds,Sql Server,Perl,Sybase,Nagios,Freetds,我通常在论坛上寻求帮助作为最后的手段,我很好,真的被卡住了 顺便说一句:我不知道这是堆栈溢出还是服务器故障。。。阿尼胡 我已经研究这个问题18个小时了。。。直的 我继承了一个生产Nagios 3.2.0的盒子,没有任何文档,更不用说配置文件了 所以,现在是我更新它的时候了 我已经安装了Nagios 3.5.1(最终版)和NCOF 1.3.0(最终版)。这是一种享受 当前框有: Red Hat Linux release 4 check_mssql_health (1.5.3) perl v5.

我通常在论坛上寻求帮助作为最后的手段,我很好,真的被卡住了

顺便说一句:我不知道这是堆栈溢出还是服务器故障。。。阿尼胡

我已经研究这个问题18个小时了。。。直的

我继承了一个生产Nagios 3.2.0的盒子,没有任何文档,更不用说配置文件了 所以,现在是我更新它的时候了

我已经安装了Nagios 3.5.1(最终版)和NCOF 1.3.0(最终版)。这是一种享受

当前框有:

Red Hat Linux release 4 
check_mssql_health (1.5.3)
perl v5.8.8 built for i386-linux-thread-multi
DBD::Sybase 1.10
当前框似乎没有使用:

freetds
unixODBC

我之所以这么说,是因为它似乎是在某个阶段安装的(试用和错误?(就像我一样??),因为相应的配置文件不包含任何与生产系统相关的配置;只是样本数据。在生产系统中,我可以在我们的环境中指定任何sql server,它可以正常工作

./check_mssql_health --server SERVER --username USER --password PASS --mode free-list-stalls
OK - 0.00 free list stalls per second | free_list_stalls_per_sec=0.00;4;10
新的盒子有:

CentOS 6.7 (final)
check_mssql_health (1.6.2)
perl v5.10.1 (*) built for x86_64-linux-thread-multi
DBD::Sybase 1.10
这就是我每次得到的:

./check_mssql_health --server SERVER --username USER --password PASS --mode free-list-stalls
CRITICAL - cannot connect to SERVER. DBI connect(';server=SERVER','USER',...) failed: (no error string) at ./check_mssql_health line 3280
我尝试了很多不同的方法来配置“无配置”DBD::Sybase连接,但没有成功

以下是我尝试过的东西的链接

更不用说我花了那么多时间编译、重新编译和排除所有编译错误/依赖项。真头痛

看来这次行动和我想完成的目标是一致的。但他的问题已经提出11个月了,只看了33次

如何让我的新服务器使用check_mssql_health

更重要的是,一个小的
sqltest.pl

#! /usr/bin/perl -w

use DBI;
use strict;

my $username = "USER";
my $password = "PASS";
my $dsn = "DBI:Sybase:;host=SERVER;port=1433";
if (my $dbh = DBI->connect(
    $dsn, $username, $password,
    { RaiseError => 1, AutoCommit => 0, PrintError => 1 })) {
  printf "connection succeeded\n";
} else {
  printf "connection failed\n";
}
新盒子坏了。当前prod框成功

为了更进一步,我甚至在两个盒子上都做了特写

作品:

connect(3, {sa_family=AF_INET, sin_port=htons(1433), sin_addr=inet_addr("10.2.23.2")}, 16) = -1 EINPROGRESS (Operation now in progress)
open("/usr/share/locale/locale.alias", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0
...
write(1, "connection succeeded\n", 21connection succeeded
失败:

connect(5, {sa_family=AF_INET, sin_port=htons(1433), sin_addr=inet_addr("10.2.23.2")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=5, events=POLLOUT}, {fd=4, events=POLLIN}], 2, 90000000) = 1 ([{fd=5, revents=POLLOUT}])
getsockopt(5, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
...
write(2, "DBI connect(';host=insyd2ft01;po"..., 239DBI connect(';host=SERVER;port=1433','USER',...) failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (44)
Server , database
Message String: Server name not found in configuration files.
at ./sqltest.pl line 9
) = 239
我不想使用配置文件

工作服务器的完整pastebin策略输出:

故障服务器的完整pastebin策略输出:

他们彼此都很不一样,但我太过分了,我的大脑对我关闭了

有人有什么建议吗


干杯。

您能运行此程序并给出输出吗

perl -MDBI -e 'DBI->installed_versions;'

find / -name freetds.conf