在nagios中可以实现性能图形展示,利用的是PNP4Nagios,check_mk当然也可以,而且很简单。

这篇文章在前一篇文章《check_mk自定义监控实践之powershell》的基础之前,脚本稍作修改

1、客户端process_top5.ps1

$dp = (Get-Process) | select -First 5
$ops = Get-WmiObject -Class Win32_OperatingSystem

echo `<`<`<process_top5`>`>`>    #这个输出很重要,用来告诉check_mk服务端目标客户端有哪些监控项
foreach($p in $dp){
    #输出进程名称及内存百分占比,这里为方便演示乘上50加大百分比
    Write-Host $p.name ("{0:0.0}" -f ($p.WorkingSet*50/$ops.TotalVisibleMemorySize))
}

2、监控端process_top5, 实际上只需要添加两行代码就可以实现 性能数据收集

process_top5_default_values=(20,30)

def inventory_process_top5(info):
   inventory = []
   for line in info:
      disk = line[0]
      field = float(line[1])
      inventory.append( (disk, "process_top5_default_values") )

   return inventory


def check_process_top5(item,params,info):
        warn,crit = params
        for line in info:
            if (line[0]) == item :
                celsius = float(line[1])
                perfdata = [ ( "process mem", celsius, warn, crit ) ]  #表示每次check后收集相关数据
                if celsius > crit:
                        return (2, "mem is %d %%" % celsius, perfdata)
                elif celsius > warn:
                        return (1, "mem is %d %%" % celsius, perfdata)
                else:
                        return (0, "mem is %d %%" % celsius, perfdata)
        return (3, "%s not found in agent output" % item)


check_info["process_top5"] = {
    'check_function':            check_process_top5,
    'inventory_function':        inventory_process_top5,
    'service_description':       '%s',
    'has_perfdata':              True,      #打开收集性能数据开关
}

现在打开check_mk页面,可以看到相应监控项后面已经多了个 星星的图标,点击进去就是PNP4Nagios的性能图形展示

3、check_mk还可以将实时的性能数据用图形很方便的展示在每一项的后面,即Perf-O-Meters,官方文档:http://mathias-kettner.de/checkmk_devel_agentbased.html

就像上图中“Check_MK”项,为了实现这个可能需要写些脚本,不过check_mk本身已经有了不少样式的脚本,这里我们可以利用cpu的Perf-O-Meters脚本(因为都是百分比,所以可以偷懒了)。

打开文件/usr/share/check_mk/web/plugins/perfometer/check_mk.py",找到perfometer_cpu_utilization函数,然后在底下添加一个perfometers项目

def perfometer_cpu_utilization(row, check_command, perf_data):
    util = float(perf_data[0][1]) # is already percentage
    color = "#60f020"
    return "%.0f%%" % util, perfometer_linear(util, color)

#perfometer_linear(perc, color)
perfometers["check_mk-h3c_lanswitch_cpu"] = perfometer_cpu_utilization
perfometers["check_mk-winperf_processor.util"] = perfometer_cpu_utilization
perfometers["check_mk-netapp_cpu"] = perfometer_cpu_utilization
perfometers["check_mk-cisco_cpu"] = perfometer_cpu_utilization
perfometers["check_mk-juniper_cpu"] = perfometer_cpu_utilization
perfometers["check_mk-brocade_mlx.module_cpu"] = perfometer_cpu_utilization
perfometers["check_mk-process_top5"] = perfometer_cpu_utilization   #为process_top5添加perfometers功能

重启web服务,然后就可以看到perfometers图了

posted on 2014-06-26 19:01  慕 林  阅读(1660)  评论(0编辑  收藏  举报