配置zabbix监控vmware

1. 配置过程总的来说是比较简单的。结合官方文档,一般的环境都可以配置成功。

zabbix官方文档:https://www.zabbix.com/documentation/2.2/manual/vm_monitoring

 

其基本内容:

1) zabbix 2.2.0开始支持

2) Vcenter/Vsphere版本4.1及以上

3) zabbix在编译时必须 configure 里有 --with-libxml2 --with-libcurl,前者用来解析调用SOAP接口返回的XML,后者用来调用vcenter的SOAP接口

4) zabbix.conf配置

StartVMwareCollectors(0-250) 只有大于0时才能是该功能生效,意为预先配置的vmware监控实例数量

VMwareCacheSize(256K-2G)内存中维护的vmware集群结构的大小,建议80M。

VMwareFrequency(10-864000)zabbix获取更新vmware集群结构的最小间隔时间,单位为分钟。

5) 模板在zabbix中已经预先配置好了,对于vcenter的HOST,指定为Template Virt VMware。

6) 原则上添加对vcenter的host监控时,不需要zabbix_agent,在Web页面输入必要的ip信息,关联好模板,

填写好三个宏(web页面上叫巨集)即可。

${URL}https:///sdk  见[1]

${USERNAME}这个原文写的比较模糊,就是登录vcenter client的那个用户名,比如常见的Administrator

${PASSWORD}对应USERNAME用户的密码 见[2]

7) 配置好HOST后,经过VMwareFrequency时间后,zabbix监控到vmware vcenter机器上管理了那些esxi服务器,

    并将其加入到HOST中并同Template Virt VMware Hypervisor模板关联,再进一步监控到哪些vm和volume,

    也一并将其加入到HOST中并同Template Virt VMware Guest模板关联。

8) 在HOST自动发现并添加后,item的更新是根据每一个项目(item)设置的时间间隔来更新的,但是与VMwareFrequency有关,

    因为check_simple大多都是从内存中维护的vmware集群结构中获取的值。

2. zabbix官网上的功能详细信息

功能描述: https://www.zabbix.org/wiki/Docs/specs/ZBXNEXT-1633

功能开发跟踪:https://support.zabbix.com/browse/ZBXNEXT-1633


3. 代码索骥

1)  所有获得内存中维护的vmware集群结构的代码在src/zabbix_server/vmware/vmware.c中

2)  所有获取item的值的代码在src/zabbix_server/poller/checks_simple.c和src/zabbix_server/poller/checks_simple_vmware.c中

初始化 vmware.c的zbx_vmware_init,在zabbix_server.c初始化时调用

主循环程序 main_vmware_loop,在zabbix_server进入主循环程序时调用,

     其主要任务是vmware_service_update(),即通过调用vcenter的SOAP接口,获取hypervisors信息,vmlist信息等等一系列XML并解析,

     最终构建和更新内存中维护的vmware集群结构的内容,如结构体zbx_vmware_service_t,zbx_vmware_datastore_t等等——此处还需具体列出

item获取程序 src/zabbix_server/poller/poller.c的主循环程序main_poller_loop

   调用get_values调用get_value调用checks_simple.c的get_value_simple

   checks_simple.c的vmchecks数组维护了key和function的关系,并最终的function在checks_simple_vmware.c中

3) item获取的例子 vm.memory.size为例

   模板中的键值叫vmware.vm.memory.size[{$URL},{HOST.HOST}],

   在checks_simple.c中去掉vmware前缀,找到对应的function为check_vcenter_vm_memory_size

   checks_simple_vmware.c中的check_vcenter_vm_memory_size,AGENT_REQUEST中的两个参数就是键值中的URL和HOST.HOST

   从代码上看就是去取得内存中维护的vmware集群结构中该HOST的details的XML片段并且再细粒度的解析。

 

[1] 看网上很多人纠结于URL是否正确,因为用curl -I -k https:///sdk得到的返回时404,

   这个vmware的KB也解释了,只处理SOAP协议,用curl -i -k --data "" https://192.168.30.222/sdk就可以判定URL没有问题。 

[2] 看网上很多人纠结于用户名和密码是否正确,原因可能是密码中有XML需要转义的字符,比如<>之类的,

   最简单的办法是避免这个问题,将密码改掉。

你可能感兴趣的:(其他)