Chinaunix首页 | 论坛 | 博客
  • 博客访问: 784393
  • 博文数量: 434
  • 博客积分: 11187
  • 博客等级: 上将
  • 技术积分: 5221
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-19 01:00
文章分类

全部博文(434)

文章存档

2016年(2)

2013年(1)

2012年(115)

2011年(195)

2010年(32)

2009年(89)

分类: LINUX

2011-12-08 15:10:24

1.如何编写检测脚本
编写Nagios的插件可以使用PERL、SHELL、Python等脚本语音,管理员可以根据自身情况选择
一种来使用。

2.Nagios插件编写条件
Nagios插件的脚本或执行程序必须(至少)要做两件事:
一是退出时给出几种可能的返回值中的一个。
Nagios用插件的返回值来生成主机或服务的状态。下表里列出了合法的返回值以及对应的服务
或主机状态。
插件返回值               服务状态                    主机状态
0                              正常(OK)                    运行(UP)
1                              告警(WARNING)        运行(UP)或宕机(DOWN)/不可达(UNREACHABLE)*
2                              紧急(CRITICAL)          宕机(DOWN)/不可达(UNREACHABLE)
3                              未知(UNKNOWN)      宕机(DOWN)/不可达(UNREACHABLE)
二是至少要给出一条输出内容到标准输出设备(STDOUT)。
例如:DISKOK-freespace:/3326MB(56%);

3.检测脚本存放目录
#cd/usr/local/nagios/libexec/
所有的检测脚本都放在该目录下。

4.规划编写一个监控Linux内存的插件
#free -m
  1. # free -m
  2.                   total     used    free   shared   buffers    cached
  3. Mem:               2026     1784     241     0        167       1103
  4. -/+ buffers/cache: 514      1512
  5. Swap:               4094    180      3913
第一行的total值:系统内存总值
第二行的free值:系统可用内存值
系统可用内存值/ 系统内存总值,所得的百分比为目前系统可用的内存百分比。
# vi /usr/local/nagios/libexec/check_mem
  1. #!/bin/bash
  2. #from network
  3. #This Nagios plugin can be checked your system memory status
  4. USAGE_Method="$(basename $0) [-w|--warning] [-c|--critical]"
  5. USAGE_Value="WARNING value must be large than CRITICAL value:`basename $0` $*"
  6. STATE_OK=0
  7. STATE_WARNING=1
  8. STATE_CRITICAL=2
  9. STATE_UNKNOWN=3

  10. #设置Nagios要求的状态
  11. if [ $# -lt 4 ];then
  12. echo
  13. echo "Usage:$USAGE_Method"
  14. echo
  15. exit 0
  16. fi

  17. while [ $# -gt 0 ];do
  18. case "$1" in
  19. -w|--warning)
  20. shift
  21. WARNING=$1
  22. ;;
  23. -c|--critical)
  24. shift
  25. CRITICAL=$1
  26. ;;
  27. esac
  28. shift
  29. done

  30. if [[ $WARNING -eq $CRITICAL || $WARNING -lt $CRITICAL ]]
  31. then
  32. echo
  33. echo "$USAGE_Value"
  34. echo
  35. echo "Usage:$USAGE_Method"
  36. echo
  37. exit 0
  38. fi

  39. #取当前没使用的内存,注意是未使用!
  40. FREE_MEM=$(free -m|grep -|awk -F' ' '{print $4}')
  41. #取当前系统总内存
  42. TOTAL_MEM=$(free -m|grep Mem|awk -F' ' '{print $2}')
  43. #使用bc输出百分比
  44. PERCENT=$( bc<<<"scale=2;621/977"|tr '^.' ' ')

  45. #如果监测百分比小于等于用户设置的严重错误值,返回2
  46. if [ $PERCENT -le $CRITICAL ];then
  47. echo "CRITICAL - $FREE_MEM MB ($PERCENT%) Free Memory"
  48. exit 2
  49. fi

  50. #如果百分比小于等于用户设置的警告值就警告并返回1
  51. if [ $PERCENT -le $WARNING ];then
  52. echo "WARNING - $FREE_MEM MB ($PERCENT%) Free Memory"
  53. exit 1
  54. fi

  55. #如果百分比大于用户设置的警告值就输出OK返回0
  56. if [ $PERCENT -gt $WARNING ];then
  57. echo "OK - $FREE_MEM MB ($PERCENT%) Free Memory"
  58. exit 0
  59. fi
5.测试插件
5.1 本地测试
#cd /usr/local/nagios/libexec/
#chmod +x /usr/local/nagios/libexec/check_mem
#./check_mem
Usage:check_mem.sh [-w|--warning] [-c|--critical]
##./check_mem -w 30-c 20
OK - 1547 MB ( 63%) Free Memory

5.2 服务器端测试
1>修改客户端的nrpe.confg
#vi/usr/local/nagios/etc/nrpe.cfg
添加:
command[check_mem]=/usr/local/nagios/libexec/check_mem -w 20 -c 10
2>修改服务器端的服务定义文件
vi /usr/local/nagios/etc/objects/services.cfg
  1. defineservice{
  2. host_name              Nagios-Client
  3. service_description    check-mem
  4. check_period           24x7
  5. max_check_attempts     4
  6. normal_check_interval  3
  7. retry_check_interval   2
  8. contact_groups         sagroup
  9. notification_interval  10
  10. notification_period    24x7
  11. notification_options   w,u,c,r
  12. check_command check_nrpe!check_mem
  13. }
3>重新加载Nagios
#/etc/init.d/nagiosreload
Runningconfigurationcheck...done.
Reloadingnagiosconfiguration...done
4>登陆验证
省略
阅读(2892) | 评论(0) | 转发(1) |
0

上一篇:puppet 参考资料

下一篇:lwp-request 安装

给主人留下些什么吧!~~