轉:https://blog.csdn.net/reblue520/article/details/82720183#
簡介
爲了解ESXI虛擬主機的運行狀況,通過zabbix進行監控,圖形展示ESXI虛擬主機當前的狀態,避免因爲esxi服務器因爲資源利用率過高導致
概述
從 Zabbix 2.2.0 開始支持對 VMware 的監控。
Zabbix 可以使用 low-level discovery 自動發現 VMware hypervisors 和 虛擬機,並根據事先定義的主機原型,爲這些虛擬機建立 Host,添加監控。
Zabbix 中默認提供了幾個模板,可以直接用來監控 VMware vCenter 或 ESX hypervisor,支持 VMware vCenter 或 vSphere 版本最低爲 4.1。
細節
虛擬機監控分兩個步驟完成。首先,Zabbix 是通過 vmware collector 進程來監控虛擬機。這些進程通過 SOAP 協議從 VMware Web 服務獲取必要的信息,對其進行預處理並存儲到 Zabbix server 共享內存中。然後,zabbix pollers 通過 zabbix 簡單檢查 VMware keys 來檢索這些數據。
從 Zabbix 2.4.4 開始,收集的數據分爲兩種類型:VMware 配置數據和 VMware 性能數據。這兩種類型都由 vmware collectors 進程獨立收集。因此,建議啓用比受監控的 VMware 服務更多的收集器。否則,檢索 VMware 性能統計信息可能會由於檢索 VMware 配置數據而延遲(比較大型的環境,需要一段時間)。
目前基於 VMware 性能統計信息只有數據存儲,網絡接口和磁盤設備統計信息和自定義性能計數器項。
注意:由於監控進程使用soap協議獲取虛擬機信息,直接通過https://ip/sdk,返回400是正常現象
整體步驟:
1.修改服務端的zabbix_server.conf文件打開對vmware監控的支持
2.在vcenter的機器上添加zabbixmonitor只讀用戶作爲監控專用賬戶
3.服務端添加vcenter的監控模板和宏
說明:vcenter服務端不需要安裝zabbix_agent客戶端
準備
要使虛擬機監控正常工作,編譯 Zabbix 時應加上 –with-libxml2 和 –with-libcurl 編譯選項。
1.調整虛擬機監控:
# zabbix服務端操作
#修改配置文件 egrep -v '^$|^#' etc/zabbix_server.conf
StartPollers=15
StartTrappers=15
StartVMwareCollectors=10
VMwareFrequency=30
VMwarePerfFrequency=60
VMwareCacheSize=160M
VMwareTimeout=300
其中:
StartVMwareCollectors:vmware 收集器實例的數量。
此值取決於要監控的 VMware 服務的數量。在大多數情況下,這應該是:
servicenum < StartVMwareCollectors < (servicenum * 2)
其中 servicenum 是 VMware 服務的數量。例如:如果您有 1 個 VMware 服務要將 StartVMwareCollectors 設置爲 2,那麼如果您有 3 個 VMware 服務,請將其設置爲 5。請注意,在大多數情況下,此值不應小於 2,不應大於 VMware 數量的 2 倍服務。
VMwareCacheSize:VMwareFrequency=10。
用於存儲VMware數據的共享內存大小。
VMwareFrequency:從單個VMware服務收集數據之間的延遲(秒)。
VMwarePerfFrequency:從單個VMware服務檢索性能計數器統計信息之間的延遲(秒)。
VMwareTimeout:響應超時時間
# 重啓zabbix的服務端
# /etc/init.d/zabbix_server restart
查看啓動日誌
# 重啓服務端,觀察日誌,發現VMware monitoring: YES說明開啓成功
12584:20180902:232254.601 ****** Enabled features ******
12584:20180902:232254.601 SNMP monitoring: YES
12584:20180902:232254.601 IPMI monitoring: NO
12584:20180902:232254.601 Web monitoring: YES
12584:20180902:232254.601 VMware monitoring: YES
12584:20180902:232254.601 SMTP authentication: YES
12584:20180902:232254.601 Jabber notifications: NO
12584:20180902:232254.601 Ez Texting notifications: YES
12584:20180902:232254.601 ODBC: NO
12584:20180902:232254.601 SSH2 support: NO
12584:20180902:232254.601 IPv6 support: NO
12584:20180902:232254.601 TLS support: NO
配置
前面說過,Zabbix中默認提供了幾個模板,可以直接用來監控 VMware vCenter 或 ESX hypervisor。由於我們的ESXI主機使用vCenter集中管理,因此使用zabbix監控vCenter。
1.添加主機
“主機”頁面只需填寫“主機名稱”、“可見的名稱”即可,“agent代理程序的接口”需要寫 443
很多文檔都說填寫port爲80,這個是錯誤的,需要填寫443
2.添加模板
“模板”頁面只需添加“Template Virt VMware”即可。“Template VM VMware“模板應用於 VMware vCenter 和 ESX hypervisor 監控。 ”Template VM VMware Guest“和”Template VM VMware Hypervisor“模板由自動發現使用,通常設置爲自動鏈接到主機
3.設置宏
{$PASSWORD} => zabbixmonitor
{$URL} => https://192.168.254.69/sdk
{$USERNAME} => zabbixmonitor
{$URL} - VMware 服務 (vCenter or ESX hypervisor) SDK URL (https://servername/sdk).
{$USERNAME} - VMware 服務用戶名
{$PASSWORD} - VMware 服務{$ USERNAME}用戶密碼
安全起見,在vCenter 上只需爲zabbix添加一個只讀用戶zabbixmonitor即可
ssh登錄vcenter服務器,添加一個普通用戶,並將這個用戶添加到vcenter的只讀組中
# 添加只讀用戶
[root@zabbix:/usr/local/zabbix-3.2.0]# ssh -p22 192.168.254.69
VMware vCenter Server Appliance 6.5.0.10000
Type: vCenter Server with an embedded Platform Services Controller
[email protected]'s password:
Last login: Mon Sep 3 14:32:44 2018 from 192.168.254.148
Connected to service
* List APIs: "help api list"
* List Plugins: "help pi list"
* Launch BASH: "shell"
Command> shell
Shell access is granted to root
root@localhost [ ~ ]#
# 添加zabbixmonitor用戶
root@localhost [ ~ ]# useradd zabbixmonitor
root@localhost [ ~ ]# echo 'zabbixmonitor' | passwd --stdin zabbixmonitor
root@localhost [ ~ ]# passwd zabbixmonitor
root@localhost [ ~ ]# tail -n 1 /etc/passwd
zabbixmonitor:x:1020:100::/home/zabbixmonitor:/bin/appliancesh
可以
訪問需要調用的接口https://192.168.254.69/mob
輸入剛纔的只讀用戶賬號祕密zabbixmonitor
自動發現vmware終端機器需要關閉,因爲我們已經像監控物理機一樣添加了vmware終端機器
已經自動添加的需要刪除
自動發現一段時間,如果覺得慢可以改一下自動發現的時間(不建議,會浪費大量服務器性能)
自動發現的集羣
啓動發現的exsi
添加圖形展示cpu的使用情況
網絡使用情況
Cpu的使用率
Configuration-->Templates-->Template Virt VMware Hypervisor-->items-->create item
name:
hypervisor_cpu_used_percent
type:
Calculated #計算類型
key:
vmware.hv.cpu[usedpercent]
Formula:
100*last("vmware.hv.cpu.usage[{$URL},{HOST.HOST}]")/(last("vmware.hv.hw.cpu.freq[{$URL},{HOST.HOST}]")*last("vmware.hv.hw.cpu.num[{$URL},{HOST.HOST}]"))
Applications:
CPU
添加觸發器,當cpu使用率大於60%時觸發報警
內存使用率的監控
內存使用率
1.創建item
Configuration-->Templates-->Template Virt VMware Hypervisor-->items-->create item
name:
hypervisor_cpu_used_percent
type:
Calculated #計算類型
key:
vmware.hv.memory[usedpercent]
Formula:
100*last("vmware.hv.memory.used[{$URL},{HOST.HOST}]")/last("vmware.hv.hw.memory[{$URL},{HOST.HOST}]")
Applications:
memory
內存使用率超過85%報警