专注系统运维、网络架构,研究技术凯发app官方网站的解决方案,记录我的思想轨迹、工作学习、生活和关注的领域
分类: 系统运维
2012-12-12 13:37:09
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。
如今,监控系统是琳琅满目,有nagios、cacti、zabbix、centreon、munin等,也有系统集成如fan等。个人在经过不同监控的安装测试后,还是比较倾向于nagios的监控,简单命令;而且结合pnp4nagios等插件可以实现图表的功能。
nagios、pnp4nagios使用的是rrdtool工具来实现画图的,关于naigos和pnp4nagios的安装这里就不介绍了。
rrdtol是一套可以把数据生成表的程式,关于rrdtool的介绍和学习,大家可以到下面网站学习。
另外关于shell scripts学习,网上有很多资料,偶然看到一个网站:
关于监控脚本,这里也不介绍了,可以自己编写,也可以网络上下载开发好的插件。
这里主要介绍关于监控数据的获取,以及通过pnp4nagios展示数据报表。
一、数据的获取方式
nagios性能数据
nagios将插件输出中"|"号后的内容作为性能数据。性能数据格式如下:
注意:
1. 多个性能数据之间用空格分割
2. label 可以包含任何字符
3. 如果label中包含空格、等号、或者单引号,则label需要用单引号来括起来
4. warn/crit/min/max可以为null值
value, min and max只能为负号“-” “0到9” 和小数点“.” 并且单位必须统一
例如:cpu_user=0.5%;99.9;-9;
5. 如果uom单位是%,则min和max不需要再指定
6. uom单位可以是如下: 默认空,表示数量(用于用户数、处理器数等)
s 表示秒(也可以用us,ms)
% 表示百分比
b 表示字节(也可以用kb,mb,tb,gb)
c 一个连续的计数(如:接口传输的字节数)
如内存监控的数据:
说明:内存使用18.700%,实际使用内存为3003mb。
我们查看脚本:
红色代码部分即为性能数据,其中:
label为used和realmemused,再次强调,如果label有特殊字符,需加"",参数间最好不要空格。
used作为pnp4nagios的变量,如var1、var2,在pnp中也可以写成一样的值。
usepct为第一个参数值,即18.700。
uom单位是%,同样realmemused的uom单位是mb。
到处,监控的数据已经获取。
补充:格式为warn/crit/min/max值。
如:used=${usepct}%;${warn};${crit};0;100
warn和crit为触发值,$1 、$2,,也可以在图表展示出来。
min/max 表示最低值、最高值。
二、pnp4nagios生成数据图表。
找到pnp的模版目录,我的目录为:
/usr/local/pnp4nagios/share/templates 模版开发目录
/usr/local/pnp4nagios/share/templates.dist 系统自带模版
监控脚本的名称和php模版名称对应。
因为为php语言,所以要遵循php格式
语法详解:
说明:设置图表标题,高度等。详细参数有:
-s 绘图资料的起始时间,预设是4小时前
-e 绘图资料的结束时间,预设是现在
-t --title图表标题
-v --vertical-label y 軸说明
-w 资料区的宽度,资料区指的是数据显示示的部份,即底部说明
-h 资料区的高度
-u y 軸正值高度
-l y 軸負值高度
-m 自动跳转y軸最大值
def 其语法为
vnam 为nagios监控脚本 "|" 后输出的第一个变量,如var1 、var2,也可以指定名称。
ds(data source),亦即在图表中宣告一个资料来源,必須先宣告,让以下的图從这里取资料。average|max|min 为取数据平均值和最大值等。
def以下代码为绘图显示过程。
1、显示第一种写法,用()语法:
line线条方式:
用这条函式就是您想把资料用线条的方式表示,其中依照的粗细又可分为line1、line2、line3三种size;vname即def中的vname;#rrggbb這这里填你想要线条显示的顏色,使用rgb代码;name填写底部显示名称。
area方块方式:
area("vname",#rrggbb,name);
用这种方式就是您想把资料用填充块狀的方式表示,其他后面的参数请參照line的用法,做出来的实例如下︰
stack行数其显示︰
stack("vname",#rrggbb,name);
则是读出数据值至其上的数值,也就是要有资料数值在 stack 数值之上,如有多个变量,数值高的显示在上面,用法同上兩个。
gprint vname 即def中的vname,而array看你要输出的文字是average/max/min/last等数值,format 如同 printf 中的格式,
做出來如下示例︰
2、显示第二种写法,用 : 语法 :
语法中参数还是一样。
另外关于报警线条的显示,可以写为:
1、
做出来的示例:
三、示例
1、以check_mem.php模版说明︰
代码:
效果图:
2、check_traffic.php网卡流量监控模版
代码:
效果图:
以上仅个人理解,如有错误的地方,希望大家指正,谢谢。