zabbix通过vcenter监控虚拟机CPU使用百分比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix通过vcenter监控虚拟机CPU使用百分比相关的知识,希望对你有一定的参考价值。

现在虚拟机都已经添加上了,但虚拟机得CPU使用百分比因为没有相关模板,没法添加,请问有什么办法添加。(esxi主机得VMware Hypervisor模板里有CPU frequency,可以使用计算公式:usage/num*freq计算出来CPU使用百分比,但VMware Guest模板里面没有freq。)

参考技术A 楼主有没有找到答案,也在头痛这个事情

Zabbix通过SNMP监控多核CPU使用率时, 计算CPU平均使用率

环境:没有Agent,只能通过SNMP监控时,需要获取多核CPU的平均使用率。

ZABBIX的使用SNMP监控CPU使用率时,由于设备都是多核CPU,监控的都是单独某一核心的使用率,但单独某一核使用率过高触发告警实际意义不大

所以写了一个“外部检查”查询CPU的每个核心的使用率,然后再计算该设备CPU的总体的一个使用率。

cd /usr/local/share/zabbix/externalscripts/
vim /usr/local/share/zabbix/externalscripts/sqlcpuload.sh
sqlcpuload.sh脚本内容如下
cd /home/zabbix/scripts/cpu/$1 || mkdir /home/zabbix/scripts/cpu/$1
cd /home/zabbix/scripts/cpu/$1
cat  /home/zabbix/scripts/cpuload.sql | sed -e "s/CNGDCOP01/$1/g" > cpuloadT.sql
mysql -uzabbixapi -ppassword < cpuloadT.sql | awk ‘{ sum += $4; } END {print sum/(NR-1)}‘
rm -rf cpuloadT.sql
cpuload.sql查询脚本如下(实际环境可以只保留需要的平均值一栏,理论上可以缩短一丢丢查询时间)
USE zabbix;
SELECT
FROM_UNIXTIME(trends_uint.clock,%Y-%m-%d %H:00:00) AS `日期______ 时间____`,
trends_uint.value_min AS `最小值`,
trends_uint.value_avg AS `平均值`,
trends_uint.value_max AS `最大值`
FROM
trends_uint
WHERE trends_uint.itemid = ANY(
SELECT items.itemid FROM items WHERE items.hostid=
ANY(SELECT `hosts`.hostid FROM `hosts`WHERE `hosts`.`host` = 
CNGDCOP01
)
AND items.key_ LIKE hrProcessorLoad[% AND items.key_ NOT LIKE hrProcessorLoad[{%)

and UNIX_TIMESTAMP(now())-trends_uint.clock < 7200
order by trends_uint.itemid,trends_uint.clock desc

上面查询的该监控项的趋势数据里的最新的平均值,为的是节约查询时间。

技术分享

如果数量监控数据不大,但要求比较实时,可以把trends_uint换成history_uint,缩短数据更新时间。(当然如果环境允许直接安装agent就不用这么麻烦了)

下面是官网对趋势数据的说明

技术分享

---------------------------------

 运行结果如下

技术分享

zabbix模板中添加监控项和触发器

技术分享

-------最后测试OK

技术分享

 





以上是关于zabbix通过vcenter监控虚拟机CPU使用百分比的主要内容,如果未能解决你的问题,请参考以下文章

zabbix3监控ESXI主机

zabbix3监控ESXI主机

vcenter虚拟机显示数字

Zabbix 3.2.6监控虚拟机VMware

请教虚拟win server 2008 vmware7要用啥桌面型的CPU呢?

深入浅出Zabbix 3.0 -- 第十一章 VMware 监控