桦凌信息技术服务工作室翻译,转载请注明出处:http://www.wardking.com/2011/05/monitoring-vmware-esx-3-x-esxi-vsphere-4-and-vcenter-server
本文主要阐述如何使用Nagios的扩展插件check_esx来监控VMware ESX和vSphere服务器。既可以实现监控单台ESX(i)/vSphere服务器,也可以监控VirtualCenter/vCenter服务器集群。当企业中已经部署虚拟数据中心(vCenter)时,应该监控vCenter而不是单台VM服务器。
本文目标:
- 监控 VMware ESX Datacenter/vCenter 虚拟数据中心
- 监控 VMware ESX/vSphere 服务器
- 直接监控运行于VMware 架构上的虚拟服务器
- 通过虚拟数据中心监控虚拟服务器
- 通过虚拟数据中心监控ESX/vSphere服务器
实施需求:
首先在ESX/vSphere主机系统中添加一个新的用户,加入”user”组,赋予”Read Only”权限。具体设置可以参考vSphere手册。
必须在Nagios服务器上安装VMware vSphere SDK for Perl工具包,如果你已经在VMware网站注册,可以直接从这里下载:http://communities.vmware.com/community/developer/forums/vsphere_sdk_perl。请根据你的操作系统下载对应的32bit/64bit版本。
监控命令:
从这里下载check_esx3,存放至nagios安装目录下的libexec目录中,建议更名为check_esx3,并添加可执行权限。
编辑Nagios配置文件command.cfg,添加监控命令:
# VMware ESX Infrastructure
define command{
command_name check_esx3_host_cpu_usage
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l cpu -s usage -w $ARG3$ -c $ARG4$
}define command{
command_name check_esx3_host_mem_usage
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l mem -s usage -w $ARG3$ -c $ARG4$
}define command{
command_name check_esx3_host_swap_usage
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l mem -s swap -w $ARG3$ -c $ARG4$
}define command{
command_name check_esx3_host_net_usage
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l net -s usage -w $ARG3$ -c $ARG4$
}define command{
command_name check_esx3_host_vmfs
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l vmfs -s $ARG3$ -w $ARG4$ -c $ARG5$
}define command{
command_name check_esx3_host_runtime_status
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s status
}define command{
command_name check_esx3_host_runtime_issues
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s issues
}define command{
command_name check_esx3_dc_host_cpu_usage
command_line $USER1$/check_esx3 -D $ARG1$ -u $ARG2$ -p $ARG3$ -H $HOSTALIAS$ -l cpu -s usage -w $ARG4$ -c $ARG5$
}define command{
command_name check_esx3_dc_host_mem_usage
command_line $USER1$/check_esx3 -D $ARG1$ -u $ARG2$ -p $ARG3$ -H $HOSTALIAS$ -l mem -s usage -w $ARG4$ -c $ARG5$
}更多命令设置参考./check_esx3 –help
设置监控主机和服务
建议设置自定义配置文件esx.cfg,以下为部分设置:
define host{
use linux-server
host_name vSphere3
alias vSphere Host3(SSB412)
address 10.2.1.153
hostgroups ESX
icon_image vmware.png
icon_image_alt VMware vSphere (SSB412)
vrml_image vmware.jpg
statusmap_image vmware.gd2
2d_coords 800,900
parents RackSW_PDC_1
}define service{
use generic-service
host_name VM-ESXi-01,VM-ESXi-02,vSphere1,vSphere2,vSphere3
service_description CPU Usage
check_command check_esx3_host_cpu_usage!nagios!password!100!110
}define service{
use generic-service
host_name VM-ESXi-01,VM-ESXi-02,vSphere1,vSphere2,vSphere3
service_description Memory Usage
check_command check_esx3_host_mem_usage!nagios!password!100!110
}
监控效果:
如有问题,欢迎交流。


4 comments
xiao
2011/08/20 在 12:42 下午 (UTC 8) Link to this comment
你好,能否共享一份check_esx.pl文件?
Michael ZHANG
2011/08/21 在 11:31 上午 (UTC 8) Link to this comment
已经上传,请下载
jony
2011/09/12 在 3:24 下午 (UTC 8) Link to this comment
你好,我想问一下你监控的是ESXi吗?不是ESX吧?还有ESXi被监控端和nagios监控端之间是通过什么进行信息的传送的?
Michael ZHANG
2011/11/21 在 4:51 下午 (UTC 8) Link to this comment
图片上的vSphere主机就是ESX。必须安装VMware vSphere SDK for Perl才可以实现两个服务器之间的通讯。