我正在尝试将我的 esxi 服务器(我有 3 个)添加到我的 nagios 监控中。我正在使用互联网上各处记录的 perl SDK 和脚本,最新脚本在这里:http://git.op5.org/git/?p=nagios/op5plugins.git;a=blob_plain;f=check_esx3.pl;hb=HEAD
我已将我的两个 esxi4 盒子更新到 4.1u1(4.1.0、348481)
我遇到的问题是检查非常慢。
我已经使用 DProf 跟踪了 perl 命令
/usr/bin/perl -d:DProf /usr/lib/nagios/plugins/check_esxi -H HOSTNAME -u nagios -p PASSWORD -l cpu -s usage -w 85 -c 95
我得到以下输出(通过 dproff)
Total Elapsed Time = 6.634312 Seconds
User+System Time = 5.154312 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
44.1 2.276 4.339 2 1.1380 2.1695 Vim::login
12.9 0.667 1.638 4254 0.0002 0.0004 Class::MethodMaker::Engine::create_methods
8.91 0.459 0.588 4254 0.0001 0.0001 Class::MethodMaker::scalar::scal0000
5.18 0.267 0.304 4254 0.0001 0.0001 Class::MethodMaker::Engine::install_methods
3.20 0.165 0.165 26005 0.0000 0.0000 XML::LibXML::Node::nodeName
2.50 0.129 0.129 4254 0.0000 0.0000 Class::MethodMaker::Engine::check_opts
2.41 0.124 0.594 925 0.0001 0.0006 ComplexType::deserialize
1.92 0.099 0.091 1561 0.0001 0.0001 Class::MethodMaker::Engine::_find_target_class
1.40 0.072 0.072 3326 0.0000 0.0000 XML::LibXML::Node::textContent
1.36 0.070 0.336 5816 0.0000 0.0001 XML::LibXML::Element::getChildrenByTagName
1.14 0.059 0.068 4254 0.0000 0.0000 Class::MethodMaker::OptExt::encode
1.07 0.055 0.055 5816 0.0000 0.0000 XML::LibXML::Node::_childNodes
1.05 0.054 1.820 1561 0.0000 0.0012 Class::MethodMaker::Engine::import
0.97 0.050 0.050 1 0.0500 0.0500 utf8::AUTOLOAD
0.97 0.050 0.205 25 0.0020 0.0082 main::BEGIN
由于我运行的是 4.1,因此我启用了 SSH 并连接到控制台。这是我在 /var/log/messages 中看到的内容(这是 esxi4,因此没有 vkernel 日志)
[2011-09-05 22:53:36.543 51E40B90 verbose 'Proxysvc Req06598'] New proxy client SSL(TCP(local=192.168.99.101:57617, peer=192.168.99.22:443))
[2011-09-05 22:53:43.091 52081B90 verbose 'Proxysvc Req06599'] New proxy client SSL(TCP(local=192.168.99.101:57652, peer=192.168.99.22:443))
[2011-09-05 22:53:43.136 51E81B90 info 'Vimsvc'] [Auth]: User nagios
[2011-09-05 22:53:43.137 51E81B90 info 'ha-eventmgr'] Event 4814 : User [email protected] logged in
[2011-09-05 22:53:44.429 52081B90 verbose 'App'] CloseSession called for session id=5260ca10-fdc9-3a26-4d0c-45be7792c716
[2011-09-05 22:53:44.430 52081B90 info 'ha-eventmgr'] Event 4815 : User nagios logged out
请注意两次登录,间隔大约 7 秒 - 第二次登录很快完成检查。
另外,我也经常在日志中看到这两个,但我认为这是无关的
[2011-09-05 22:53:40.031 51AD1B90 verbose 'Statssvc'] HostCtl exception Unable to complete Sysinfo operation. Please see the VMkernel log file for more details.
我还注意到通过 vsphere 登录服务器相当慢,大约需要 3-4 秒才能开始加载。这可能无关紧要。esxi 服务器没有承受巨大的负载,尽管它安装了 iscsi lun 并且可能有大约 6-7 个活动虚拟机。我检查(并增加了)主机的资源分配,并在运行检查命令时检查了 esxtop(没有发现任何结果)。
这种延迟是一个问题,因为 nagios 的 perl 进程在尝试连接时 CPU 占用率达到 100%,并且这种情况发生在我的所有 3 个 esxi 服务器上。因此,随着 nagios 发出越来越多的检查,监控服务器的 CPU 和平均负载会急剧上升,因为所有进程都在等待响应。这只会加剧延迟问题并导致所有检查超时。
一个朋友也运行 nagios,相同的监控脚本和相同的 esxi 更新可以运行相同的检查,并且它在不到一秒的时间内完成,而对我来说它需要长达 10 秒(正如您在 dproff 输出中看到的那样)
如果我可以提供任何其他信息来帮助诊断此问题,请告诉我主机昨晚重新启动(使用 4.1 更新)
提前致谢,
加雷思
--edit1:将总次数添加到 proff 输出中,并将 perl check 命令设为块引用
--编辑2:
自从发帖以来,我一直在积极诊断这个问题。我发现我朋友的 nagios 服务器是一台 x64 机器,所以我启动了一个新的 ubuntu 10.4 x64 VM(请注意,在不同的主机上)在安装了 esxi 检查所需的所有内容(需要大量 cpan 模块)后,我可以对新安装的检查进行计时,CPU 检查大约在 2 秒内完成。
这表明问题出在 nagios 服务器或 perl 上,而不是 VMWare esxi 服务器上
我已经确定了
- vmware 工具已安装
- 我必须在测试服务器上安装的所有 cpan 模块在生产服务器上都是最新的
- 生产服务器是 aptitude update && aptitude upgrade
- 反向 DNS(如下所示)正在运行
- 转发 DN(如下所示)正在运行
- 使用直接 IP 进行测试,无主机名
- 在进行测试之前,停止了 nagios 服务器,这样 LA 就会下降到 0.01
- 将 vmware nic 驱动程序从灵活(主机为 esxi3.5)更改为增强型 vmxnet
- 将虚拟 CPU 数量从 1 增加到 2
我无法将 nagios 迁移到新的 x64 机器,它无法在我们的管理虚拟机服务器(包含这个监控箱和一些跳转主机)上运行
32 位机器(我最初使用并在上面进行了分析)仍然需要 8-10 秒的 100% CPU 来完成 CPU 检查
我意识到该磁盘是安装在该服务器的 iSCSI lun 上的虚拟磁盘,这会稍微减慢磁盘 IO 速度,但我不希望查询远程服务器成为高磁盘 IO 操作。
答案1
您的 DNS 怎么样?VMWare 服务器的主机文件中是否有您的监控服务器的反向 DNS 条目?反向 DNS 是否可以通过您站点的 DNS 服务器解析?这可能是延迟的原因。如果您无法更改 DNS 服务器,请尝试/etc/hosts
在受影响的 VMWare 服务器上为您的 Nagios 服务器添加一个条目,看看它是否能缩短登录/执行时间。