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个特点 第一:日期有,但是数据不完整 第二:日期对 ...
随机推荐
- Android TextView文字透明度和背景透明度设置
textview1.setTextColor(Color.argb(255, 0, 255, 0)); //文字透明度 控件设为半透明: 控件名.getBackground().setAlpha(in ...
- sprintf函数详解
转摘声明:选自<CSDN 社区电子杂志——C/C++杂志> 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样 ...
- ubuntu video,gdm swith
如果已经安装LightDM和GDM登录显示器.那么在Ubuntu下怎么在各种DM间任意切换呢? 以切换到GDM为例,打开终端,使用命令: sudo dpkg-reconfigure gdm 如果已经安 ...
- Day27-28 基础加强
day28基础加强 今日内容 泛型 注解 Servlet3.0 动态代理 类加载器 泛型 回顾泛型类 泛型类:具有一个或多个泛型变量的类被称之为泛型类. public class A<T&g ...
- centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides "*/vim" 第十节课
centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides "*/vim" 第十节课 你不能保证可逆化操 ...
- Atom+Nuclide(Windows)开发ReactNative
1 安装Atom,Nucilde 首先需要到官网下载Atom: 然后安装Nuclide, 重新打开Atom,会看到Nucilde的界面且菜单项会多出一个Nucilde 2 创建ReactNative ...
- mysql中的多行查询结果合并成一个(转)
SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 ...
- EasyUI Progressbar 进度条
通过 $.fn.progressbar.defaults 重写默认的 defaults. 进度条(progressbar)提供了一种显示长时间操作进度的反馈.进度可被更新以便让用户知道当前正在执行的操 ...
- spring requestmapping 拦截多个请求
@RequestMapping(value = {"/picture_content/{id}","/attachment_content/{id}",&quo ...
- 在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控
关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxD ...