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个特点 第一:日期有,但是数据不完整 第二:日期对 ...
随机推荐
- 聊聊对APM的理解
本文主要从以下几个列举对APM的认识: -什么是APM工具 -为什么要用APM工具,APM工具的价值在哪里: -什么样的APM工具适合于传统金融业: -如何用好APM工具: -精准告警 - ...
- Android在ArrayAdapter<>里如何得到List<>的Items
public class ItemAdapter extends ArrayAdapter<DemoModel> { private final List<DemoModel> ...
- Mysql limit offset用法举例
转自:http://blog.csdn.net/iastro/article/details/53037600 Mysql limit offset示例 例1,假设数据库表student存在13条数据 ...
- model 模型层
using System; namespace MODEL { [Serializable] /// <summary> /// 作者: liuhaitao /// 描述: 实体层 -- ...
- ZOJ 3469Food Delivery(区间DP)
Food Delivery Time Limit: 2 Seconds Memory Limit: 65536 KB When we are focusing on solving prob ...
- ORA-39006、ORA-39065、ORA-01403、ORA-39097错误解决办法
今天有同事找说是expdp到出数据时报错: 处理方法:sys用户下执行如下语句重新生成DATAPUMP API用到的视图问题就解决了. SQL> @?/rdbms/admin/catmeta.s ...
- 数据库们~MySQL~MongoDB~Redis
mysql基础 mysql进阶 python操作mysql MongoDB Redis
- mybatis三剑客之mybatis-pagehelper分页插件
这是pom.xml里的依赖: 后续再讲具体的使用
- mysql 数据操作 单表查询 group by 聚合函数
强调: 如果我们用unique的字段作为分组的依据,则每一条记录自成一组,这种分组没有意义 多条记录之间的某个字段值相同,该字段通常用来作为分组的依据 如果按照每个字段都是唯一的进行分组,意味着按照这 ...
- java-mybaits-00103-入门程序原生的【查、增、删、改】
一.需求 实现以下功能: 根据用户id查询一个用户信息 根据用户名称模糊查询用户信息列表 添加用户 更新用户 删除用户 二.具体步骤 1.增加pom引用 2.增加log4j.properties # ...