关于nagios系统下使用shell脚本自定义监控插件的编写
在自已编写监控插件之前我们首先需要对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中也即是通过命令的退出状态码来判断,这样我们可以自已编写一个监控脚本
如编写监控postgresql数据库的ESTABLISHED连接数,可以如下的命令及语法进行编写。
#!/bin/bash
#
if [ "$1" = "-w" ] && [ "$2" -gt "" ] && [ "$3" = "-c" ] && [ "$4" -gt "" ]; then pgsql=`netstat -lnaput| grep ":5432" | grep ESTABLISHED | wc -l` if [ "$pgsql" -ge "$4" ]; then
echo "Pgsql_concurrent: CRITICAL Total: $pgsql - concurrent_count |USED=$pgsql;200;500;;"
$(exit )
elif [ "$pgsql" -ge "$2" ]; then
echo "Pgsql_concurrent: WARNING Total: $pgsql - concurrent_count|USED=$pgsql;200;500;;"
$(exit )
else
echo "Pgsql_concurrent: OK Total: $pgsql - concurrent_count|USED=$pgsql;200;500;;"
$(exit )
fi else
echo "check_PgsqlCount"
echo ""
echo "Usage:"
echo "check_PgsqlCount -w <warn count> -c <crit count>"
echo ""
echo "Copyright (C) 2014 http://www.cnblogs.com/5201351"
exit
fi
以上监控脚本为笔者工作所编写,在此作为一种编写nagios监控插件的思路,其中在if语句中的3条echo语句中、我们可以发现输出的内容是由|分隔
其中只写入"|"之前的内容也行,"|"之后的的内容为可选见容,nagios会将"|"之后的内容作为性能数据输出。如可输出给pnp4nagios,性能数据格式如下:
'label'=value[UOM];[warn];[crit];[min];[max]
需要注意的是:
1、性能数据的多个选项值之间用分号;分割
2、如果label中包含空格、等号、或者单引号,则label需要用单引号来括起来
3、warn/crit/min/max可以为null值,如果有值单位必须统一
4、如果UOM单位是%,则min和max不需要再指定
5、UOM单位可以是如下: 默认空,表示数量(用于用户数、处理器数等)
s 表示秒(也可以用us,ms)
% 表示百分比
B 表示字节(也可以用KB,MB,TB,GB)
c 一个连续的计数(如:接口传输的字节数)
关于nagios系统下使用shell脚本自定义监控插件的编写的更多相关文章
- 关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题
关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主 ...
- linux系统下的shell脚本
#!/bin/bash 说明我需要启用bin目录下的bash解释器解释脚本##将第一个文件拷贝到第二个文件,如果出错将错误输出到/dev/null 的空.if判断cp的返回值是否为1,1为成功,0为 ...
- mac终端下运行shell脚本
最近公司要弄关于IOS下自动化打包的东西,研究了用命令行的形式来代替手工的方式来处理.即: 用xcodebuild 和xcrun 语法来进行脚本实现. 但由于语法的结构够了,另一个问题产生了, ...
- CentOS下编写shell脚本来监控MySQL主从复制的教程
这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- 【linux】系统初始化的shell脚本
根据参考网上的一些文章,总结出来一个系统初始化的shell脚本 1.初始化脚本 #!/bin/bash cat << EOF +------------------------------ ...
- 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出
有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...
- Jmeter(五十四) - 从入门到精通高级篇 - 如何在linux系统下运行jmeter脚本 - 上篇(详解教程)
1.简介 上一篇宏哥已经介绍了如何在Linux系统中安装Jmeter,想必各位小伙伴都已经在Linux服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在Linux系统下运 ...
随机推荐
- 在Unity3d中调用外部程序及批处理文件
如果调用外部普通应用程序, 比如notepad.exe 这样调用 static public bool ExecuteProgram(string exeFilename, string workDi ...
- Lua中调用函数使用点号和冒号的区别
1.初学者最易混乱Top1——调用函数时用点号还是用冒号? 我们来看看下面的两句代码: mSprite.setPosition(, ); mSprite:setPosition(, ); 对于初次接触 ...
- 使用jstl+el表达式遇到的几个问题
1.使用jstl访问Map<Integer,String>中的内容时总取不到? el表达式的一个bug,在解析数字的时候,会自动将数字转换成Long类型. 我的解决办法是,Map的key改 ...
- [原]pomelo开发环境搭建
pomelo基于nodejs服务器开源框架,比较牛逼的! 1.安装nodejs(官网下载地址) 安装python等 具体见官网说明 2.安装pomelo(见官方步骤)或者 http://blog.cs ...
- WebBrowser中html元素如何触发winform事件
这个问题来自论坛提问,对dom稍微了解的话还是比较简单的,只要注册一下事件就可以了. C#代码如下: using System;using System.ComponentModel;using Sy ...
- scala中to和util操作
// Range:to:默认步进为1 val to1 = 1 to 10 println(to1) // 定义一个不进为2的Range val to2 = 1 to 10 by 2 println(t ...
- linux-满足多字符条件统计行数
测试数据: 2017-10-24 14:14:11:1123 [ INFO] order_type=add,order_id=9150882564978710367790292017-10-24 14 ...
- Python爬虫学习笔记-1.Urllib库
urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫. 0X01 基本使用 简单的爬取一个页面: import urllib2 request ...
- PHP 使用 MongoDB
PHP 想要往 MongoDB 里增删查改数据,需要先安装 mongodb 或 mongo 扩展模块,一般两个都装上: cd /usr/local/src/ wget https://pecl.php ...
- BugHD 与你的应用一起成长
BugHD 新增功能 1.新增安装量.启动量的统计功能 BugHD SDK 1.3.0新增安装量.启动量的统计功能,在崩溃分析页面右上角可看到安装量和启动量. BugHD 体验优化 1.Android ...