zabbix中监控某个进程的shell脚本
#!/bin/sh ret_ok=
ret_warn=
ret_critical=
ret_unknown= info_count=`ps -aux | awk 'BEGIN {cnt=0} /[^-c] dotnet GameServer.dll/{++cnt} END {print cnt}'`
process_count=$((${info_count}-))
if [[ ${process_count} < ]]; then
echo ${ret_critical}
else
echo ${ret_ok}
fi
这里还有一个带参数的以供参考
#!/bin/bash
#port on each server
port=$ #result code ret_ok=
ret_warn=
ret_critical=
ret_unknown= #get heartbeat message
#url:http://127.0.0.1:9002/heartbeat
curl_result=`curl -m -s http://127.0.0.1:$port/heartbeat` if [[ ${curl_result} == *"alive"* ]]; then
echo ${ret_ok}
else
echo ${ret_critical}
ps -aux查出来进程,用awk正则匹配,然后输出匹配行数,减去awk本身,其中进程名那里可以使用变量,这里图省事就写死了,反正以后可以再改
然后再在zabbix中添加
[root@zabbiclient1 zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@zabbiclient1 zabbix_agentd.conf.d]# ll check_process.conf
-rw-r--r-- root root Dec check_process.conf
[root@zabbiclient1 zabbix_agentd.conf.d]# cat check_process.conf
UserParameter=check.dotnet,/etc/zabbix/scripts/check_dotnet_running ##注意check.crontab必须和下面创建item时的key相对应
如果是带参数的,就在逗号后边的command后边加上[]中间括着参数,比如
UserParameter=check.dotnet[*],/etc/zabbix/scripts/check_dotnet_running $
在zabbix client机器上include 相关文件,
[root@zabbiclient1 etc]# pwd
/usr/local/zabbix/etc
[root@zabbiclient1 etc]# ls
zabbix_agent.conf zabbix_agent.conf.d zabbix_agentd.conf zabbix_agentd.conf.d
[root@zabbiclient1 etc]# cat zabbix_agentd.conf | grep -v "#" | grep -v "^$"
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
DebugLevel=
Server=192.168.10.134
ServerActive=192.168.10.134
Hostname=zabbixclient1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/check_process.conf ###Include该文件!
3: 下面关键的重点是通过zabbix_get 获取check.dotnetkey的值,这个值在创建trigger时时需要,否则
trigger表达式填写不正确,就无法触发trigger
当我将crond进程在134机器上stop掉的时候,在133机器上获取值
[root@zabbiclient2 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.134 -k check.dotnet
3
如果是有参数的,就是这样测试/usr/local/zabbix/bin/zabbix_get -s 192.168.10.134 -k check.dotnet[5],并在创建模板的时候在key中加入中括号加入参数
下面就创建一个模板,我创建的模板名为apptemplate,在模板里面创建一个item,crond is running,update interval 我设置为30s,见
然后创建一个trigger,trigger名为:dotnet does not work, 表达式值为{apptemplate:check.crontab.last(0)}=3
Severity 选择disaster,点save按钮即可创建。见附件
4:然后就可以在134机器上手动执行service dotnet stop,看看是否触发trigger,当然生产系统我就不完活了,你们自己慢慢玩吧
或另外一种方式:
Zabbix监控一个服务是否存在
有两种方法:
1:数进程数

接着创建trigger:

还有一种情况,例如:iptables,尽管它启动了,但不能通过ps –ef | grep iptables 来数进程数,这个时候就需要另外一种访问来处理了,见附件:

接着创建trigger,如下:

zabbix中监控某个进程的shell脚本的更多相关文章
- tomcat监控,自动重启shell脚本
tomcat监控,自动重启shell脚本如下,取名 monitor_tomcat.sh: #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # 获取tomcat进程ID(其中 ...
- 用于检测进程的shell脚本
用于检测进程的shell脚本 2010-07-07 10:38:08| 分类: Centos |字号 订阅 脚本一: #!/bin/sh program=XXXX #进程名 sn=`ps - ...
- Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.sh 方法二: source ./subscript.sh 注意: 1.两个点之 ...
- 监控Nginx服务的Shell脚本
Nginx 虽然处理并发量比 apache 确实要强点,但它这种 php-cgi 模式不是太稳定,这点网上也有朋友总结了,我在实现项目中也感受到了. 我们一台支付机,偶尔会出现以下情况的:php-cg ...
- 如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
- 找出1小时内占用cpu最多的10个进程的shell脚本
cpu时间是一项重要的资源,有时,我们需要跟踪某个时间内占用cpu周期最多的进程.在普通的桌面系统或膝上系统中,cpu处于高负荷状态也许不会引发什么问题.但对于需要处理大量请求的服务器来讲,cpu是极 ...
- zabbix 中监控windows 的typepref中的值
监控项:typepref -qx在zabbix中实现: 1.测试zabbix-get 获取数据: /usr/local/zabbix/bin/zabbix_get -s 192.168.1.3 -p1 ...
- 用于检测进程的shell脚本代码小结
本文介绍一段shell脚本,它可以检测某进程或某服务是否正在运行,然后以邮件通知.有需要的朋友参考下 一个简单的shell脚本,用来找出关键的服务是否正在运行,适用于Linux操作系统或Unix操作系 ...
- 监控hadoop任务结果shell脚本
需求:每日hadoop结果文件中,找出数据不完整的日期和没有跑出数据的日期,重新进行跑hadoop任务 分析:在result/目录生成的文件中数据有2个特点 第一:日期有,但是数据不完整 第二:日期对 ...
随机推荐
- crossdomain.xml跨域配置文件的安全注意事项
零.绪论: 对WEB中的FLASH确实了解不多,对程序中的跨域配置也了解不多,这是自己以前写的一篇笔记,到现在也还了解不深,勉强记下来罢了,备忘. 一.什么是crossdomain.xml?这是一个f ...
- python的内存管理与垃圾回收机制学习
一.python内存申请: 1.python的内存管理分为六层:最底的两层有OS控制.第三层是调用C的malloc和free等进行内存控制.第四层第五层是python的内存池.最上层使我们接触的直接对 ...
- Apache POI 读写 Excel 文件
目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...
- Android中的Apk的加固(加壳)原理解析和实现(转)
一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...
- wireshark, loopback
swapondd if=/dev/zero of=/data/mnt/swap bs=1024 count=8024000 sudo apt-get install wireshark sudo gr ...
- 去掉chrome、safari input或textarea在得到焦点时出现黄色边框的方法
1.去掉chrome.safari input或textarea在得到焦点时出现黄色边框的方法 input{ outline:0;} 2.去掉chrome.safari textarea右下角可拖动鼠 ...
- Just a Hook---hdu1698(线段树---区间处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 现有n个金属(编号1---n),每个金属的材质都是铜,有m个操作,每个操作都是把编号 L 到 R ...
- Air Raid---hdu1151(最小路径覆盖)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151 最小路径覆盖 == 顶点数 - 最大匹配. #include<stdio.h> #i ...
- android(十五) FTP的两种工作模式
(一)PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链 当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了 ...
- Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪(转载)
1. 前言 在博客里介绍了ShuffleWrite关于shuffleMapTask如何运行,输出Shuffle结果到Shuffle_shuffleId_mapId_0.data数据文件中,每个exec ...