最近在学习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 5echo `<`<`<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取值15000000for 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文件上

[root@trdcentos62 ~]# check_mk --checks=process_top5 -I [hostname]
process_top5      5 new checks

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

[root@trdcentos62 ~]# 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项信息

转载于:https://www.cnblogs.com/waiwofei/p/3810544.html

check_mk自定义监控实践之powershell相关推荐

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

    在nagios中可以实现性能图形展示,利用的是PNP4Nagios,check_mk当然也可以,而且很简单. 这篇文章在前一篇文章<check_mk自定义监控实践之powershell>的 ...

  2. 360容器平台监控实践

    女主宣言 360 近年来上线了容器云平台,给团队工作带来了一些便利,同时也给运维工作带来了很多挑战.InfoQ记者张婵10月30日采访整理,首发于公众号"高效开发运维". PS:丰 ...

  3. 基于 Prometheus 的边缘计算监控实践

    监控作为边缘计算基础设施的重要组成部分,是边缘稳定性的基本保障.本文主要介绍火山引擎边缘计算的监控实践,分享火山引擎如何进行监控技术选型以及构建监控服务体系.主要内容如下: 边缘计算监控初衷 基于 P ...

  4. 爱奇艺号基于Prometheus的微服务应用监控实践

    前 言 微服务架构是目前各大互联网公司普遍采用的软件架构方式.在微服务架构中,系统被拆分为多个小的.相互独立的服务,这些服务运行在自己的进程中,可以独立的开发和部署.在业务快速变化时,微服务单一职责. ...

  5. [博客迁移]探索Windows Azure 监控和自动伸缩系列3 - 启用Azure监控扩展收集自定义监控数据...

    上一篇我们介绍了获取Azure的监控指标和监控数据: http://www.cnblogs.com/teld/p/5113376.html 本篇我们继续:监控虚拟机的自定义性能计数器. 随着我们应用规 ...

  6. 通过案例学功能 自定义监控功能初探

    IT系统千差万别,即便是通用的Java.PHP也会由于版本的差异,配置和接口存在大同而小异,但往往就是这些小差别,会对系统的稳定性和性能产生大影响.市面上的IT监控产品都只能对标准应用的流行版本进行准 ...

  7. Windows性能计数器监控实践

    Windows性能计数器(Performance Counter)是Windows提供的一种系统功能,它能实时采集.分析系统内的应用程序.服务.驱动程序等的性能数据,以此来分析系统的瓶颈.监控组件的表 ...

  8. 70 Zabbix自定义监控项

    一.背景 zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求.有时候由于业务需求,需要自定义监控项. 下面以创建监听TCP连接数自定义监控项为例,分享如何创建zabbix自定义监控项. ...

  9. 容器监控实践—Heapster

    概述 该项目将被废弃(RETIRED) Heapster是Kubernetes旗下的一个项目,Heapster是一个收集者,并不是采集 1.Heapster可以收集Node节点上的cAdvisor数据 ...

最新文章

  1. 自适应采样非局部神经网络的点云鲁棒操作
  2. 免校准的电量计量芯片_万物互联,开启智慧计量新时代—2020年中国物联网计量创新发展论坛在济南举办...
  3. JAVA时间格式的处理 SimpleDateFormat 类(小结)
  4. Spring MVC 和 Spring 总结
  5. 感知机中任一点到超平面的距离的公式推导
  6. Apache Superset从入门到放弃(基于python3.6.9)
  7. Google SRE 读书笔记 扒一扒SRE用的那些工具
  8. Vue中,在<template>内进行页面链接跳转
  9. c/c++教程 - 2.4.1 类和对象,封装,class和struct的区别,成员属性设为私有,类拆分成.h.c文件编写方法
  10. 在SharePoint2007中使用TimeJob.
  11. Deadline提前,引入滚动审稿,想投ACL 2022的同学要抓紧了
  12. Windows集群网络负载均衡
  13. angular2-swiper的使用
  14. python 实现手机自动拨打电话(循环通话测试)
  15. 多声道音频指南(二)—— 前世与今生
  16. python星星闪烁_python实现while循环打印星星的四种形状
  17. LoadLibrary加载dll失败的问题
  18. 雅思做题技巧误区一,不敢选TRUE。误区二,见到only或must等绝对词就选FALSE。误区三,找不到就选NOT GIVEN。误区四,喜欢把TRUE/FALSE/NOT GIVEN理解为
  19. linux ssh服务状态,查看linux ssh服务信息及运行状态方法
  20. 使用docker部署Nexus

热门文章

  1. 007_html头部元素
  2. Smoke Test与Ad hoc Test
  3. 用户添加页面html,HTML用户注册页面设置源码
  4. dump java崩溃自动 不生成_一个宏命令,就可以程序崩溃时生成dump文件
  5. activexobject对象不能创建_【设计模式】建造者模式:你创建对象的方式有它丝滑吗?...
  6. 实用金属材料手册_实用电工材料手册
  7. 跟踪分析Linux内核5.0系统调用处理过程
  8. 二章: CentOS6.5 连接FTP服务器、部署telnet服务、安装SCP、服务端FTP、SFTP部署
  9. mysql忘记密麻麻_mysql忘记密码怎么办
  10. mysql 内存引擎_MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)