标签:系统监控 nagios nsca linux pnp4nagios
数据提交时间戳,被监控节点名称,被监控的服务名称,服务状态(OK/WARNING/CRITICAL/UNKNOWN),插件自定义的额外数据。具体每个字段的解释如下:
1. timestamp is the time in time_t format (seconds since the UNIX epoch) that the service check was perfomed (or submitted). Please note the single space after
the right bracket.
2. host_name is the short name of the host associated with the service in the service definition
3. svc_description is the description of the service as specified in the service definition
4. return_code is the return code of the check (0=OK, 1=WARNING, 2=CRITICAL, 3=UNKNOWN)
5. plugin_output is the text output of the service check (i.e. the plugin output)
SERVICE STATUS: First line of output | First part of performance dataoutput可以自定义显示更加详细的监测数据,显示在Nagios的status Information栏。Performance data显示在Performance Data栏,它就有特殊的格式要求,具体结构如下:
'label'=value[UOM];[warn];[crit];[min];[max] 'label'=value[UOM];[warn];[crit];[min];[max]每个‘label‘,value组合由空格分开,在我们系统中没有额外定义性能数据的UOM,warn,crit,min,max,具体含义可以参考:https://nagios-plugins.org/doc/guidelines.html#PLUGOUTPUT
<span style="font-size:10px;">cat /proc/stat nagios:/usr/local/nagios/var/rw # cat /proc/stat cpu 3793272 14468 2247200 1691101331 60064 0 929 363857 0 cpu0 947929 2161 571867 422672541 57686 0 569 142613 0 cpu1 1012031 5207 579405 422725361 828 0 121 72264 0 cpu2 953097 4324 557950 422803715 752 0 117 75309 0 cpu3 880213 2775 537976 422899713 797 0 120 73670 0 intr 395106792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ......
<span style="font-size:12px;">参数 解释 user: 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒 nice: 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies) system: 从系统启动开始累计到当前时刻,内核运行时间(单位:jiffies) idle: 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies) iowait: 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) , irq: 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies) softirq: 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies) steal_time: Stolen time, which is the time spent in other operating systems whenrunning in a virtualized environment guest: Time spent running a virtual CPU for guestoperating systems under the control of the Linux kernel我们的做法很简单,读取第一行CPU信息,统计5秒钟2次/proc/stat的差值,计算我们关心的user,system,idle,iowait,idle,steal_time所占总CPU时间的百分比
</pre><pre name="code" class="python"># Check if CPU Usage is Critical/Warning/OK if cpu_usage_percent >= 90: return_code = pynsca.CRITICAL plugin_output = 'STATISTICS CRITICAL : ' elif cpu_usage_percent >= 70: return_code = pynsca.WARNING plugin_output = 'STATISTICS WARNING : ' elif cpu_usage_percent >= 0: return_code = pynsca.OK plugin_output = 'STATISTICS OK : ' else return_code = pynsca.UNKNOWN plugin_output = 'STATISTICS UNKNOWN: '
plugin_output += 'user=%(user).2f%% system=%(system).2f%% iowait=%(iowait).2f%% stealed=%(steal_time).2f%% idle=%(idle).2f%% | user=%(user).2f%%;;;; system=%(system).2f%%;;;; iowait=%(iowait).2f%%;;;; stealed=%(steal_time).2f%%;;;; idle=%(idle).2f%%;;;;' % cpu_stat_map #print plugin_output nscaClient = pynsca.NSCANotifier(nagios_address) nscaClient.svc_result(cmd_options.local_address, service_description, return_code, plugin_output)
*/1 * * * * /home/nagios/check_cpu_status.py >/dev/null 2>&1
Note: 真正的脚本还需要考虑可移植性,被监控机器节点名称,阀值等必须参数化,监控多样性,可以只监控其中一个核,加入>/dev/null 2>&1是为了去除crontab的邮件通知
Memory
[1402017111] PROCESS_SERVICE_CHECK_RESULT;192.168.0.6;Memory_Status;0;OK: Used memory percentage is 37.2979746597% (2935 MiB) | usedMemory=37.2979746597%;80;90;;
Memory每分钟查看一次/proc/meminfo,从total-free-buffers-cached得出正在被用的memory,看它占用总内存的百分比,超过80%报WARNING,90%报CRITICAL
nagios:/usr/local/nagios/var/rw # cat /proc/meminfo MemTotal: 8401536 kB MemFree: 6881104 kB Buffers: 190732 kB Cached: 497344 kB <div><span style="font-family:Tahoma;font-size:12px;color:#000000;font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none;">*/1 * * * * /home/nagios/check_mem.py >/dev/null 2>&1</span><span style="font-size:12px;"> </span></div>Disk
[1383817502] PROCESS_SERVICE_CHECK_RESULT;192.168.0.6;Disk_Status;0;STATISTICS OK : "MOUNT/"Usage=40% | "MOUNT/"Usage=40%;80;90;;
Disk每十分钟执行一次:“df -h”,查看磁盘Use%,超过80%报WARNING,90%报CRITICAL
IO & IOPS
[1383817420] PROCESS_SERVICE_CHECK_RESULT;192.168.0.6;IO_Status;0;STATISTICS
OK : await=0.00% util=0.00% | await=0.00%;;;; util=0.00%;;;;
IO每分钟执行一次:“iostat
-xkd”,获取磁盘rkB/s(读取数据速率), wkB/s(写入数据速率),await(请求响应时间)和util(CPU用来处理IO的时间百分比)信息
[1399532518] PROCESS_SERVICE_CHECK_RESULT;192.168.0.6;IOPS_Status;2;STATISTICS CRITICAL : iops=58.0 | iops=58.0;;;;
IOPS每分钟执行一次:“iostat”,获取磁盘io tps信息
Note: 需要安装sysstat
Bandwidth
[1399532517] PROCESS_SERVICE_CHECK_RESULT;192.168.0.6;Bandwidth_Status_eth1;0;STATISTICS OK : - The Traffic In is 0.8Kbps, Out is 0.53Kbps, Total is 1.33Kbps.|In=0.8Kbps;;;0;0 Out=0.53Kbps;;;0;0 Total=1.33Kbps;;;0;0
Bandwidth和CPU类似,通过计算一段时间内/proc/net/dev的tx,rx以及total的数值差除以时间间隔得到吞吐量。
JVM Heap
[1399533015] PROCESS_SERVICE_CHECK_RESULT;192.168.0.6;Heap_Status;0;OK: Used heap percentage is 50.3057759255% (1054988 MiB) | usedHeap=50.3057759255%;90;98;;我们系统用的是weblogic,可以通过weblogic.Admin获取JVM的信息 (weblogic.Admin GET -pretty -type JRockitRuntime | egrep ‘FreeHeap|UsedHeap|TotalHeap‘),现在系统比较关注的信息就是heap使用情况。
看看最终Nagios中的数据样子(以某节点以及节点的CPU Service数据为例):
题外话: 另外很多客户都有自己的监控系统,他们的系统不止监控CPU,内存这些硬件资源的使用情况,还会扫描系统日志,看看是否有error/warning,扫描系统开启的端口和服务,是否符合安全规范,比如是否有可以匿名直接登陆的ftp,在整体系统设计的时候要千万小心操作系统应该打开多少服务,日志的打印也要精心设计。
第一篇: Nagios 使用介绍
第二篇: Nagios配置篇 -- Nagios Server端
实战Nagios NSCA方式监控Linux系统资源使用情况 -- Nagios配置篇 -- 被监控端
标签:系统监控 nagios nsca linux pnp4nagios
原文地址:http://blog.csdn.net/cloud_ll/article/details/39315707