check_mk自定义监控实践之powershell

最近在学习check_mk,这是一款基于nagios监控工具,但比nagios更易使用,引起了我的兴趣,我最关注的依然是对自定义监控脚本的支持度。在windows下的实践,其支持的客户端脚本或插件可以是 exe,bat,vbs,ps1等,我采用powershell来编写监控脚本。

本文适合对check_mk有一定了解的人,关于check_mk的介绍和搭建,请点击查看:手把手打造开源新监控利器check_mk

另外如果觉得这篇文章描述不够清晰,可以参考官方文档:http://mathias-kettner.de/checkmk_devel_agentbased.html

=====================================================================================================

1、首先我们在客户端创建自定义监控脚本 process_top5.ps1:

$dp = (Get-Process) | select -First 5

echo `<`<`<process_top5`>`>`>    #这个输出很重要,用来告诉check_mk监控端目标客户端有哪些监控项
foreach($p in $dp){
    Write-Host $p.name $p.WorkingSet
}

脚本很简单,抓取当前计算机前5个进程,输出进程名和内存占用。将这个文件拷贝到 客户端check_ck插件目录(C:\Program Files (x86)\check_mk\plugins)

2、在监控端输入“check_mk -d hostname”,查看返回内容中可以看到<<<process_top5>>>段,可以看到有5项进程信息

[[[Windows PowerShell]]]
<<<logwatch>>>
<<<process_top5>>>
agent 19939328
AlipaySecSvc 20549632
aspnet_state 1511424
check_mk_agent 9351168
cmd 6447104
<<<local>>>

现在需要在监控端 编写check脚本,用于解析客户端返回值,检查项脚本位于“/usr/share/check_mk/checks”目录下(check脚本为python编写,需要些的东西并不负责,所以不会python的人也无需担心)。注意文件名必须和新增的监控项名相同(即process_top5),内容如下:

process_top5_default_values=(10000000,15000000)   #定义报警阈值,顺序无所谓

#inventory代表检查清单,参数info为客户端返回项<<<process_top5>>>,其返回值inventory用于check_process_top5中的item参数
def inventory_process_top5(info):
   inventory = []
   for line in info:
      disk = line[0]
      field = int(line[1])
      inventory.append( (disk, "process_top5_default_values") )

   return inventory

#这个是check主函数
def check_process_top5(item,params,info):
        warn,crit = params   #取出process_top5_default_values中定义的阈值,注意赋值顺序,这里warn取值10000000,crit取值15000000
        for line in info:
            if (line[0]) == item :
                celsius = int(line[1])
                if celsius > crit:
                        return (2, "mem is %d" % celsius)
                elif celsius > warn:
                        return (1, "mem is %d" % celsius)
                else:
                        return (0, "mem is %d" % celsius)
        return (3, "%s not found in agent output" % item)

#这里是向check_mk添加检查项
check_info["process_top5"] = {
    ‘check_function‘:            check_process_top5,
    ‘inventory_function‘:        inventory_process_top5,
    ‘service_description‘:       ‘%s‘,
}

3、 通过“ check_mk -L | grep process_top5” 可以看到监控端已经有该check,然后要将process_top5添加到对应的host文件上

[[email protected] ~]# check_mk --checks=process_top5 -I [hostname]
process_top5      5 new checks

“5 new checks”代表process_top5新增了5个监控项,实际上就是对应的5个进程项,在该host对应autocheck文件也已经增加了这5项,如下

[[email protected] ~]# cat /var/lib/check_mk/autochecks/3.81.mk
[
  ("3.81", "process_top5", ‘AlipaySecSvc‘, process_top5_default_values),
  ("3.81", "process_top5", ‘agent‘, process_top5_default_values),
  ("3.81", "process_top5", ‘aspnet_state‘, process_top5_default_values),
  ("3.81", "process_top5", ‘check_mk_agent‘, process_top5_default_values),
  ("3.81", "process_top5", ‘cmd‘, process_top5_default_values),
  (‘3.81‘, ‘df‘, ‘C:/‘, {}),
  (‘3.81‘, ‘df‘, ‘D:/‘, {}),
  (‘3.81‘, ‘df‘, ‘E:/‘, {}),
  (‘3.81‘, ‘df‘, ‘F:/‘, {}),
  (‘3.81‘, ‘df‘, ‘G:/‘, {}),
  (‘3.81‘, ‘logwatch‘, ‘HardwareEvents‘, ""),
  (‘3.81‘, ‘logwatch‘, ‘Windows PowerShell‘, ""),
  (‘3.81‘, ‘mem.win‘, None, {}),
  (‘3.81‘, ‘uptime‘, None, {}),
  (‘3.81‘, ‘winperf_if‘, ‘01‘, {‘state‘: [‘1‘], ‘speed‘: 1000000000}),
  (‘3.81‘, ‘winperf_if‘, ‘02‘, {‘state‘: [‘1‘], ‘speed‘: 1000000000}),
  (‘3.81‘, ‘winperf_if‘, ‘03‘, {‘state‘: [‘1‘], ‘speed‘: 1000000000}),
  (‘3.81‘, ‘winperf_if‘, ‘04‘, {‘state‘: [‘1‘], ‘speed‘: 1000000000}),
  (‘3.81‘, ‘winperf_if‘, ‘05‘, {‘state‘: [‘1‘], ‘speed‘: 100000}),
  (‘3.81‘, ‘winperf_if‘, ‘06‘, {‘state‘: [‘1‘], ‘speed‘: 100000}),
  (‘3.81‘, ‘winperf_if‘, ‘07‘, {‘state‘: [‘1‘], ‘speed‘: 100000}),
  (‘3.81‘, ‘winperf_if‘, ‘08‘, {‘state‘: [‘1‘], ‘speed‘: 100000}),
  (‘3.81‘, ‘winperf_if‘, ‘09‘, {‘state‘: [‘1‘], ‘speed‘: 1410065408}),
  (‘3.81‘, ‘winperf_if‘, ‘10‘, {‘state‘: [‘1‘], ‘speed‘: 100000}),
  (‘3.81‘, ‘winperf_phydisk‘, ‘SUMMARY‘, diskstat_default_levels),
  (‘3.81‘, ‘winperf_processor.util‘, None, winperf_cpu_default_levels),
]

4、打开check_mk监控页面,查看对应host的service,可以看到已经增加的那5项信息

check_mk自定义监控实践之powershell

时间: 2024-11-05 15:45:24

check_mk自定义监控实践之powershell的相关文章

check_mk自定义监控增加性能数据图形展示

在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`

关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题

关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列, Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. N

zabbix自定义监控,监控网卡信息

上篇我记录了怎样自定义监控CPU<自定义监控项--监控CPU信息>,这里分享一下自定义监控网卡eth0,出战和入站流量. 自定义监控项,网卡信息 1.选择要监控的主机,按顺序打开Items ConfigurationèHostèItems 2.创建Item 3.配置Item信息 (1)监控网eth0进站流量 (2)选择应用集,Add添加保存Item (3)添加eth0进站流量监控项完成 4.通过克隆监控项配置eth0出站流量 (1)找到刚监控监控点击 (2)进入Item配置界面,下拉找到克隆.

自定义监控项--监控CPU信息

自定义监控项--监控CPU信息 1.服务端安装zabbix-get安装 Zabbix-Get 是Zabbix 中的一个程序,用于Zabbix-Server 到Zabbix-Agent 的数据获取,通常可以用来检测验证Agent 的配置是否正确. [email protected]:~# apt-get install zabbix-get Reading package lists... Done Building dependency tree Reading state informatio

zabbix服务器添加监控主机,使用监控模板及自定义监控项

上一篇博文记录了<Ubuntu系统LNMP环境下安装配置zabbix3.04>,这里我记录了添加监控主机,添加监控模板和自定义监控CPU 添加监控主机 1.监控主机安装zabbix-agent $ sudo apt-get install zabbix-agent 2.修改zabbix_agent.conf配置文件 $ sudo vi /etc/zabbix/zabbix_agentd.conf - Server=120.40.*.* #zabbix-server端IP - ServerAct

zabbix源码安装,自定义监控205的用户数,有触发器但没有邮件报警

zabbix源码安装,自定义监控205的用户数,有触发器但没有邮件报警 监控端配置:(192.168.4.5) 1基础环境:(实验环境可以关闭防火墙,但生产环境不能关闭,否则不安全,要设置相应规则) [[email protected]桌面]# /etc/init.d/iptables stop [[email protected]桌面]# setenforce 0 2搭建lamp平台,(它运行在lamp平台上) [[email protected]桌面]# yum -y install htt

Cacti 模板(图形模板、数据模板、主机模板)与自定义监控脚本

Cacti定义了三种类型的模板,分别是 主机模板 数据模板 图形模板     主机模板(Host templates),它是图像模板和数据查询的一个集合,描述了监控某一类型的机器需要生成那些图像. 数据模板(Data templates),它描述了 Cacti 存储哪些数据到指定类型的 RRD 文件.该模板与 RRDTool 工具的 create 命令相关. 图形模板(Graph templates),描述了生成的一张图像应该是什么样子的.包括使用哪些数据模板.展示哪些元素.是否使用 CDEF

阿里云自定义监控tomcat进程数

阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :cms_post.py自定义监控SDK(bash版) :cms_post.sh下载地址:http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974901 本文使用shell版本做演示       这里说下我的简单需求,我们需要监控ECS服务

shell编程之【nagios自定义监控系统磁盘脚本】

之前写了一篇文章主要介绍nagios的搭建使用 http://msiyuetian.blog.51cto.com/8637744/1704346 下面这篇文章主要介绍nagios自定义监控系统磁盘的脚本实现. Nagios可以识别4种状态返回信息,即 0 表示状态正常(OK).1 表示出现警告(WARNING).2 表示出现非常严重的错误(CRITICAL),3 表示未知错误(UNKNOWN).Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来.我们就可以利用上面这个特性