Cacti监控Windows CPU利用率
1 目的
本文的目的是介绍如何在Cacti中对多核CPU进行监控,并将多核CPU的使用率求平均值后在一张监控图中进行显示。
Cacti自身提供了一个监控Windows CPU的Data query,通过该方法可以列举出Windows系统内所有CPU核的使用率,例如2核CPU会画出两个CPU的监控图,4核CPU会画出4个CPU的监控图。
这样的监控对于CPU核数较少的Windows系统来说还不是问题,但在我最近的项目中碰到的情况是一般的服务器都有40核,有的甚至是64核,对于如此多的CPU核数再采用每核一张图的方式就有点繁杂了。
我们还是希望不论是多少核的CPU,最后都统一求平均值后在一张图中显示。解决的思路是利用Data Query定义PHP脚本将多核CPU进行汇总,最后只输出一行,该值是多核CPU利用率的平均值。
2 实现方法
2.1 定义XML文件
对原有的/resource/script_server目录下的host_cpu.xml文件进行修改,目的是让其只显示一行,并显示总共有多少核的CPU,将新文件命名为host_cpu_sv.xml,部分内容如下:
其中ss_host_cpu_sv.php的PHP文件就是要将多核CPU汇总的执行文件,
2.2 ss_host_cpu_sv.php文件
截取部分文件的内容如下: ... ...
elseif ($cmd == \ $arg = $arg1;
$index = rtrim($arg2);
$arr_index = ss_host_cpu_sv_reindex(cacti_snmp_walk($hostname, $snmp_community, $oids[\$snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $ping_retries, $max_oids, SNMP_POLLER)); $arr = ss_host_cpu_sv_reindex(cacti_snmp_walk($hostname, $snmp_community, $oids[\$snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $ping_retries, $max_oids, SNMP_POLLER)); //计算总共的CPU利用率
$usage_total = 0;
for ($i=0;($i /* * Print XML file \ */ //输出的结果是平均的CPU利用率 if (($arg == \ return round($usage_total / sizeof($arr_index)); } else { return \ } } 在该PHP脚本中首先计算CPU总共的使用率,然后输出求平均后的值。 2.3 定义Data Query 在定义好xml文件和PHP脚本后,我们就可以定义Data Query了,如下图所示: 在添加好Data Query后需要为该Data Query关联图形模板,如下图所示: 其中Suggested Values中name和title中的|query_hrProcessorCount| core就是总共的CPU核数。 然后在device中添加该Data Query,如下图所示: 如图中,显示有一行,然后是创建图形,*Create Graphs for this Host,如下图: Processor Count代表总共的CPU核数,最后生成的CPU监控图形如下: 最后的图形显示所有的4核CPU在一张图上显示,并且CPU利用率是所有CPU核的利用率平均值。
相关推荐: