【问题标题】:Nagios check_mssql_health with perl DBD::Sybase without FreeTdsNagios check_mssql_health 与 perl DBD::Sybase 没有 FreeTds
【发布时间】:2016-04-14 14:01:11
【问题描述】:

我通常在不得已的情况下在论坛上寻求帮助,但我确实被困住了......

顺便说一句:我不知道这是否应该在 StackOverflow 或 ServerFault 上继续... Anyhoo

我已经在这个问题上工作了大约 18 个小时......一直......

我有一个生产 Nagios 3.2.0 盒子,我继承了它没有文档,更不用说配置文件是一个完整的狗的早餐 所以,是时候更新它了。

我已经安装了 Nagios 3.5.1(最终版)和 NConf 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

当前框似乎没有使用:

freetdsunixODBC

我这样说是因为似乎已经安装了一个阶段(试错?(就像我一样??))因为相应的配置文件不包含生产系统的任何相关配置;只是样本数据。在生产系统中,我可以在我们的环境中指定任何 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 连接,但运气都为零。

这里是我尝试过的东西的链接...

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

http://www.freetds.org/userguide/perl.htm

http://www.freetds.org/userguide/config.htm

http://www.freetds.org/userguide/dsnless.htm

http://www.unixodbc.org/doc/FreeTDS.html

https://msdn.microsoft.com/en-us/library/hh568451%28v=sql.110%29.aspx

更不用说我一直在编译、重新编译和排除所有编译错误/依赖项的问题。好头疼啊。

看来这个 OP 与我想要完成的目标相同。但他的问题是 11 个月大,只被浏览了 33 次。

FreeTds without freetds.conf

如何让我的新服务器使用 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 box 成功。

为了更进一步,我什至在两个盒子上都做了一个 strace!

作品:

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 strace 输出:http://pastebin.com/Ek7sVeGD

故障服务器的完整 pastebin strace 输出:http://pastebin.com/QK3BgVhp

他们彼此非常不同,但我太累了,我的大脑正在关闭我......

有人有什么建议吗?

干杯。

【问题讨论】:

    标签: sql-server perl sybase nagios freetds


    【解决方案1】:

    你能运行这个并给出输出吗?

    perl -MDBI -e 'DBI->installed_versions;'
    
    find / -name freetds.conf
    

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 2023-03-26
      • 1970-01-01
      • 2017-04-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2015-08-17
      相关资源
      最近更新 更多