使用Nagios监控Windows服务器CPU利用率(SNMP方式)

xiaoxiao2021-03-01  37

监控WIndows服务器相关性能,建议采用SNMP方式,但是配置比较麻烦。假如采用NSCLIENT++插件会更加方便,前提是需要在具体被监控服务器上安装插件。万一影响了服务器本身的应用程序就不太好了。所以,我一直在寻找监控Windows服务器的SNMP方式。 1、增加脚本如下: cat /usr/lib/nagios/plugins/check_snmp_win_cpuload.pl#!/usr/bin/perl## syntax: check_win_snmp_cpuload.pl HOST COMMUNITY WARN CRIT## returns average load % across all CPUs#use strict;use Net::SNMP;my $host = shift;my $community = shift;my $warn = shift;my $crit = shift;unless($crit) {errorExit("syntax: check_win_snmp_cpu.pl HOST COMMUNITY WARN CRIT");}our %ERRORS = (OK => 0,WARNING => 1,CRITICAL => 2,UNKNOWN => 3,DEPENDENT => 4);my $oidCpuTable='.1.3.6.1.2.1.25.3.3.1.2';# get SNMP session objectmy ($snmp, $err) = Net::SNMP->session(-hostname => $host,-community => $community,-port => 161,-version => 1);errorExit( $err ) unless (defined($snmp));# get cpu load tablemy $response = $snmp->get_table(-baseoid => $oidCpuTable);errorExit( "error getting cpu table" ) unless $response;my %value = %{$response};$snmp->close();my $cnt = 0;my $sum = 0;foreach my $load ( values %value ){$cnt += 1;$sum += $load;};my $pct = int ($sum / $cnt);my $err = ($pct > $crit) ? 'CRITICAL' : ($pct > $warn) ? 'WARNING' : 'OK';print "$err : CPU Load $pct%/n";exit $ERRORS{$err};sub errorExit {my $msg = shift;print "UNKNOWN: $msg/n";exit $ERRORS{UNKNOWN};} 2、定义相应的执行命令: cat mysnmp.cfgdefine command{command_name snmp_win_cpucommand_line /usr/lib/nagios/plugins/check_snmp_win_cpuload.pl '$HOSTADDRESS$' public 80 90} 3、新建服务配置文件: cat service.cfgdefine service {host_name jw-insideservice_description CPUcheck_command snmp_win_cpuuse generic-service}4、新建主机文件: define host {host_name jw-insidealias jw-insideaddress 10.10.10.11use generic-hosticon_image vendors/windowsxp.pngicon_image_alt jw-inside-servervrml_image vendors/windowsxp.pngstatusmap_image vendors/windowsxp.png }其实熟悉nagios配置的人,只需要步骤1中的脚本就可以。我就不上图片了。
转载请注明原文地址: https://www.6miu.com/read-4200125.html

最新回复(0)