在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解

Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。

启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列。

所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。

Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件

如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。基本上每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。

Nagios可以识别4种状态返回信息: 

0(OK)表示状态正常/绿色、

1(WARNING)表示出现警告/黄色

2(CRITICAL)表示出现非常严重的错误/红色

3(UNKNOWN)表示未知错误/深黄色。

Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。四种监控状态如下图所示:

当我们知道了nagios是通过命令返回值来判断状态,在shell中也即是通过命令的退出状态码来判断,这样我们可以自已编写一个监控脚本

第一步:编写脚本

vim  /usr/lib/nagios/plugins/check_disk.sh 写入如下内容: //这是一个disk脚本样例,你也可以写自己的监控脚本
#!/bin/bash
row=`df -h |wc -l`
for i in `seq 2 $row`
do
        ava=`df -h |sed -n "$i"p|awk ‘{print $4}‘`
        u_per=`df -h |sed -n "$i"p|sed -n "s/\%//"p|awk ‘{print $5}‘`
        p_p=`df -h |sed -n "$i"p|awk ‘{print $6}‘`
        if [ "$u_per" -gt "95"  ];then           //百分比可以自定义
                echo -n "$p_p CRITICAL $u_per% $ava  "
                sta[$i]=2
        elif [ "$u_per" -gt "90" ];then
                echo -n "$p_p WARNING! $u_per% $ava  "
                sta[$i]=1
        else
                echo -n "$p_p OK $u_per% $ava  "
                sta[$i]=0
        fi
done
n=0
for j in `seq 2 $row`
do
        if [ "${sta[$j]}" -gt $n  ];then
                n=${sta[$j]}
        fi
done
exit $n   //该循环是为了找出所有磁盘分区的sta[]最大值

2. 保存后,修改该脚本的权限
chmod +x  /usr/lib/nagios/plugins//check_disk.sh (client上)
3. 然后编辑/etc/nagios/nrpe.cfg文件
vim /etc/nagios/nrpe.cfg  # 加入一行:(client上)
command[check_disk]=/usr/lib/nagios/plugins/check_disk.sh
保存,重启nrpe服务
/etc/init.d/nrpe restart (client上)、

第二步:添加服务

cd /etc/nagios/conf.d/
vim IP.cfg     # 文件名可以自定义,我这里用客户端IP做文件名,也可以用主机名,目的是为了方便区分
define service{
        use     generic-service
        host_name       IP
        service_description     check_disk
        check_command           check_nrpe!check_disk
        max_check_attempts 5
        normal_check_interval 1
}
6. 重启nagios服务
/etc/init.d/nagios restart   (server上)

第三步:修改nagios.conf

添加配置文件

最新文章

  1. Java基础知识笔记(一:修饰词、向量、哈希表)
  2. redis 学习笔记(5)-Spring与Jedis的集成
  3. I.MX6 android 设置 默认 动态桌面
  4. C#_delegate - combine function
  5. FragmentTransaction.addToBackStack无效的问题
  6. git学习 #2:git基本操作
  7. POJ 3461 Oulipo(模式串在主串中出现的次数)
  8. ggplot2 geom设置—散点图
  9. zencart的modules下数据库操作templates排版和common首页引用
  10. leetcode 3 Longest Substring Without Repeating Characters最长无重复子串
  11. JMeter写入文件
  12. 洛谷P1169[ZJOI2007]棋盘制作
  13. 【原创】数据库基础之Mysql(2)主从库配置
  14. 高版本mysql8.0解压版安装步骤
  15. 有哪些Java性能优化方法?
  16. python sys.modules模块
  17. HDU 1024 Max Sum Plus Plus (动态规划)
  18. 剑指Offer题解(Python版)
  19. socket.io笔记三之子命名空间的socket连接
  20. c#修改cpu主频

热门文章

  1. epoll 数据库安装以及相关概念
  2. 云计算openstack核心组件--glance-镜像服务(6)
  3. 菜鸟系列Fabric——Fabric 私密数据(6)
  4. pycharm中文专业版安装使用
  5. ip地址查询python3小工具_V0.0.1
  6. [转帖] 基于telegraf, influxdb, grafana 建立 esxi 监控
  7. *【Python】【demo实验30】【练习实例】【使用Turtle实现实时时钟效果】
  8. Redis(1.5)Redis配置文件(4.0.14)
  9. Centos7 + nginx 托管 Django 项目
  10. Hadoop集群搭建-05安装配置YARN