乐维社区
作者乐维社区·2020-04-17 11:12
研发工程师·广东乐维软件有限公司

Zabbix监控在windows的进程(非进程数)

字数 1472阅读 4386评论 4赞 2

作者:广州九一乐维 许远

场景介绍:

小Z同学最近遇到个项目需求,需求是用zabbix监控运行在windows的进程。然鹅,当小Z同学在网上搜了一大堆,发现基本上都是使用官方的proc.num(*.exe)键值拿到进程数量,很显然,这并不符合客户实际的需求,如果是只运行1个的还好,若是运行了3到6个,例如java,就特别的dan疼,在任务管理器发现全是java.exe的。也许,你可以找到有些文章的说可以使用任务管理器可以看到命令行(图一),tasklist /V查看进程详情(图二)等等,然鹅,对于java来说还是看不到的。

当然了拿到java.exe和pid也可以,但作为运维人员最关注的是要知道是谁停了,而不是PID,况且人家也不知道PID对应的进程是啥。所以,本着上进负责的精神,在查阅了几天的资料后,终于实现了!!!在这里记录下来,为热爱zabbix的小伙伴做个参考,也可以自行拓展结合脚本等其他技术实现。教程不复杂,多做几次就上手了。

方法:

  1. 对于非java的进程,确实使用tasklist可以监控到具体的进程名,例如监控邮箱服务器程序,方法是打开cmd,输入 tasklist | findstr “mailServer.exe” 这里只输出具体的进程名 或者 tasklist | find “mailServer.exe” 这里会输出进程,使用的资源,PID等等。然后再zabbix_agentd.conf后面加上 UserParameter=mailServer, tasklist | findstr “mailServer.exe” 保存重启agent;在zabbix做监控时,信息类型选择字符或者文本即可。
  2. 重点来了,对于java进程亦或者是在任务管理器只看到运行了一堆相同的进程名,但看不到具体的实例名可以利用windows自带的 WMIC命令来获取!打开cmd,输入 wmic process 回车,会输出目前在运行的所有进程,比tasklist还详细,输出的结果包含命令行、执行路径、PID、使用的资源、所有者等等。有兴趣的小伙伴可以到官网多多了解,拓展一下其他的WMIC参数。

当然了,对于封装好的jar包程序,常规的执行命令也就是java –jar **.jar,是可以用wmic拿到的,命令是 wmic process where name=”java.exe” 就可以输出当前正在运行的所有java进程,但结果不太美观,所以可以指定一下要找的jar包名,例如: wimc process where name=”java.exe” | find “jar包名” ,这样出来的结果就是客户想要的了。

以下是agent配置示例:

UserParameter=java_jar, WMIC.exe process where name=”java.exe” | find “jar包名”

这里保险一点,写上完整的WMIC.exe就不会报命令找不到的错。监控项照上一步。

  1. 触发器

在给非数值的监控配置触发器时,要注意类型要选择红框的 str()

因为返回的结果是字符串,所以在V这里填上jar包进程名即可。可以只写包名+版本,不用整行都写。

问题和恢复的表达式:监控项是每60s检测一次,触发器这里也是每60s检测一次,发现和取值不符则发送告警信息。如果发现乱报警,那就多注意调整下。

完成后,可以停止程序检测下是否符合需求。

教程结束!!!本文是针对不带参数启动的java进程的监控,带参数启动的后面有空会出一篇,当然了,其实也比较简单。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论4 条评论

匿名用户
2020-12-31 08:29
犀利
liujinlongliujinlong联盟成员项目经理china
2020-04-27 17:06
很好
sbihcsbihc项目经理信息中心
2020-04-19 08:07
有用
sbihcsbihc项目经理信息中心
2020-04-19 08:07
有用
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广