Nagios脚本编写事例
目标:编写一个简单的nagios脚本,实现监控client上的nginx进程是否启动,假如没启动的话发出报警。
首先在master上对nagios的配置文件进行设置,修改services.cfg文件,在最末尾添加上以下内容:
define service{
use local-service,services-pnp
host_name centos1
service_description CheckNginxState #监控服务的名称
check_period 24x7
notification_options c #表明critical的情况时发出报警
check_command check_nrpe!check_nginx #定义执行命令的名称,需与客户机上的nrpe.cfg上的定义一致
}
补充一点是对客户机添加脚本与master的commands.cfg无关,commands.cfg只定义面对master的本地服务的。本次我们是对客户机增加服务,因此就无需在master的commands.cfg上定义我们新增的命令了。这个问题当时困扰了我很长时间才发现。
转到客户机上,修改nagios上的nrpe.cfg文件,添加上以下内容:
command[check_nginx]=/usr/local/nagios/libexec/check_nginx.sh
解析一下这行文本的含义:
check_nginx,命令的名称,正如上面所说,需要与master上的servers.cfg中的check_command所引用的名称一致。
/usr/local/nagios/libexec/check_nginx.sh,这是脚本在客户机上的实际位置。
接下来编写check_nginx.sh这个脚本,这个脚本需放在/usr/local/nagios/libexec/下。脚本内容如下:
#!/bin/bash
a=`ps -e|grep nginx|wc -l`
if [ -n $a ];then
echo "nginx is running."
exit 0
else
echo "nginx is NOT running."
exit 2
fi
在这个脚本中,当检测到nginx进程正在运行时,脚本会返回0给nagios,代表nginx正常运行;当检测到nginx进程不存在时,会返回2给nagios,触发critical告警。
把脚本保存并加上执行权限,重启一下master的nagios服务,即可生效。

Nagios脚本编写事例的更多相关文章
- Linux 脚本编写基础
txt去重 http://man.linuxde.net/sort Linux 脚本编写基础 http://www.cnblogs.com/linn/archive/2007/03/05/664 ...
- SecureCRT中python脚本编写
SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是Secu ...
- LoadRunner脚本编写(转)
性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...
- shell脚本编写方法
shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell shebang ...
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
- linux 脚本编写基础(一)
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...
- 7. Shell 脚本编写
一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...
随机推荐
- Magical Forest
Problem Description There is a forest can be seen as N * M grid. In this forest, there is some magic ...
- Android 自学之核心服务
所谓Android的核心服务主要包括熵服务(Entropy Service).电源管理器(Power Manager).Activity管理器(Activity Manager).通话寄存器(Tele ...
- 进程间通信之管道(pipe、fifo)
我们先来说说进程间通信(IPC)的一般目的,大概有数据传输.共享数据.通知事件.资源共享和进程控制等.但是我们知道,对于每一个进程来说这个进程看到属于它的一块内存资源,这块资源是它所独占的,所以进程之 ...
- 关于php一些数组函数
array_column($array,"key") 将二维数组中的键名为key的数据生成一个新数组 array_unique($array) 去除重复值
- org.json 使用
org.json 和 json-lib 使用上差不多. //JSONObject public static void main(String[] args) { String jsonObjectS ...
- C#中参数传递【转】
转自[Learning hard] 建议参考 『第十一回:参数之惑---传递的艺术(上)』 一.引言 对于一些初学者(包括工作几年的人在内)来说,有时候对于方法之间的参数传递的问题感觉比较困惑的,因为 ...
- JS中的嵌套作用域
在JS中仅仅区分全局变量和局部变量还不够,实际上,变量作用域可以有任意层级(嵌套).其他函数内部定义的函数可以调用父函数的局部变量,而内部函数里定义的函数则不仅可以调用父函数的局部变量,还可以调用祖父 ...
- java匹配中文汉字的正则表达式
正则表达式匹配中文先要了解中文的编码 代码如下 复制代码 [u4E00-u9FA5]汉字?[uFE30-uFFA0]全角字符 [u4E00-u9FA5]汉字?[uFE30-uFFA0]全角字符 匹配中 ...
- 标准库string类型简述
若想使用标准库的string类需要使用如下声明: #include <string> Using std::string: Using std::wstring: 那么就可以使用这两个类了 ...
- Linux系统下给VMWare安装Tools
1.进入Linux系统. 2.在VMware的窗口菜单中选VM >> install VMware Tools,虚拟机自动将VMware-tools装入虚拟光驱中. 3.在虚拟光驱里找出V ...