目标:编写一个简单的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脚本编写事例的更多相关文章

  1. Linux 脚本编写基础

    txt去重    http://man.linuxde.net/sort Linux 脚本编写基础 http://www.cnblogs.com/linn/archive/2007/03/05/664 ...

  2. SecureCRT中python脚本编写

    SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是Secu ...

  3. LoadRunner脚本编写(转)

    性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...

  4. shell脚本编写方法

    shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell  shebang ...

  5. Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

    日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...

  6. 一个很不错的bash脚本编写教程

    转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...

  7. shell脚本编写笔记

    包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...

  8. linux 脚本编写基础(一)

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  9. 7. Shell 脚本编写

    一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...

随机推荐

  1. SSIS 学习(0):企业离 BI 还有多远?【转】

    上一篇文章<<企业需要BI吗?>>发表后,有一些网友反应:BI现在还不火:BI仅仅在一些大企业有用武之地,中小型企业只能是望其项背,遥不可及了:BI仅仅是一些花拳秀腿而已,如果 ...

  2. learning nodejs 2 - connect middleware

    学习了connect module nodejs 的中间件方式 var connect = require('connect'); var server = connect.createServer( ...

  3. linux-查看磁盘硬盘空间

    du :查看文件和目录的磁盘使用情况 用法 du [选项][文件] -s:仅显示总计只列出最后加总的值 -h:以K/M/G为单位提高信息的可读性 du -sh文件名  显示文件的大小 du -sh文件 ...

  4. CF Drazil and Date (奇偶剪枝)

    Drazil and Date time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. LeetCode 231

    Power of Two Given an integer, write a function to determine if it is a power of two. /************* ...

  6. hdu 1518 深搜

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...

  7. 知道网站PV流量,如何选何云主机配置带宽大小

  8. EF 实体+ Newtonsoft.Json 输出JSON 时动态忽略属性的解决方法

    最近的项目采用的是 ASP.NET mvc 4.0 + entity framework 5.0 ,后台以JSON形式抛出数据是借助于Newtonsoft.Json ,   要想忽略的属性前面添加特性 ...

  9. 在虚拟机中安装Linux

    安装CentOS 6.4教程(详细步骤) CentOS是RHEL的克隆版本,功能上是一模一样的,另外重新编译之后还修复了一些后者的bug.主要区别就是CentOS免费,但没有官方的技术支持,而RHEL ...

  10. Warrior!之家与Warrior!博客网站发布

    这个网站从大一下学期就开始做,断断续续,一开始感觉无从下手,做了一个草稿便停止了.最近再拿回来,感觉并没有什么难度,便把它做完了,采用ajax页内跳转,对几个搜索引擎都有seo,目前谷歌搜索“Warr ...