通用说明

注意场景

当 nagios 主服务部署服务器要监控本身服务, 在配置 host 的时候需要填写本地 ip 地址 127.0.0.1, 例如下面

  1. # 注意, 如果本机地址和 nagios 服务在一台服务器上, 需要些 ip 地址 127.0.0.1, 否则会导致某些插件不可用
  2. define host{
  3. use host_base_template
  4. host_name AppServer1
  5. alias AppServer1
  6. address 127.0.0.1
  7. }

宏命令

  • Nagios 事先定义了许多宏,它们的值通常依赖于其上下文。
  1. 1. 场景
  2. HOSTNAME: 用于引用host_name指定所定义的主机的主机名;每个主机的主机名都是唯一的;
  3. HOSTADDRESS: 用于引用host对象中的address指令的值,它通常可以为IP地址或主机名;
  4. HOSTDISPLAYNAME: 用于引用host对象中alias指令的值,用以描述当前主机,即主机的显示名称;
  5. HOSTSTATE:某主机的当前状态,为UP,DOWN,UNREACHABLE三者之一;
  6. HOSTGROUPNAMES: 用于引用某主机所属的所有主机组的简名,主机组名称之间以逗号分隔;
  7. LASTHOSTCHECK:用于引用某主机上次检测的时间和日期,Unix时间戳格式;
  8. LISTHOSTSTATE:用于引用某主机前一次检测时的状态,为UP,DOWNUNREACHABLE三者之一;
  9. SERVICEDESC: 用于引用对应service对象中的desccription指令的值;
  10. SERVICESTATE: 用于引用某服务的当前状态,为OK,WARNING,UNKOWNCRITICAL四者之一;
  11. SERVICEGROUPNAMES: 用于引用某服务所属的所有服务组的简名,服务组名称之间以逗号分隔;
  12. CONTACTNAME: 用于引用某contact对象中contact_name指令的值;
  13. CONTACTALIAS: 用于引用某contact对象中alias指令的值;
  14. CONTACTEMAIL: 用于引用某contact对象中email指令的值;
  15. CONTACTGROUPNAMES: 用于引用某contact所属的所有contact组的简名,contact组名称之间以逗号分隔;
  16. 2. 如下使用案例:
  17. 联系人邮件: $CONTACTEMAIL$
  18. 通知类型: $NOTIFICATIONTYPE$
  19. Host 别名: $HOSTALIAS$
  20. Host 地址: $HOSTADDRESS$
  21. Service 描述: $SERVICEDESC$
  22. Service 状态: $SERVICESTATE$
  23. Service 服务状态类型: $SERVICESTATETYPE$
  24. Service 服务重试次数: $SERVICEATTEMPT$
  25. Time: $LONGDATETIME$
  26. 服务警报: $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$
  27. 额外的信息: $SERVICEOUTPUT$

返回状态

  • 0 (OK) 表示状态正常/绿色
  • 1 (WARNING) 表示出现警告/黄色
  • 2 (CRITICAL) 表示出现非常严重的错误/红色
  • 3 (UNKNOWN) 表示未知错误/深黄色。

事件处理器 event handler

  1. nagios.cfg 打开全局事件处理
  2. enable_event_handlers=1
  3. hosts.cfgservices.cfg 事件处理器
  4. event_handler_enabled=1
  5. 时间处理器的处理逻辑, 脚本(故障/恢复)状态才会触发 event handler, 具体流程如下
  6. 1) 正常检查间隔(check_interval), 发现脚本状态 <> 0, 触发 event_handler 定义的脚本, 不发送通知
  7. 2) 转到 故障检查间隔(retry_interval), 检查次数达到了(max_check_attempts), 触发 event_handler 定义的脚本, 并且发送通知
  8. 3) 达到 max_check_attempts 次数后, 转到 正常检查间隔(check_interval), 如果错误会继续发送通知邮件, 但是不再触发 event_handler 定义的脚本
  9. # 案例模板
  10. define service{
  11. # 检查间隔
  12. check_interval 1
  13. # 重试间隔
  14. #retry_interval 2
  15. # 重试次数
  16. max_check_attempts 2
  17. # 监控时间范围
  18. check_period 24x7
  19. # 通知配置
  20. notification_interval 60
  21. notification_period 24x7
  22. notification_options w,u,c,r
  23. host_name AppServer1
  24. service_description Test
  25. check_command check_tcp!8000
  26. # 打开 service 的事件处理器
  27. event_handler_enabled 1
  28. # 配置处理命令
  29. event_handler check_nrpe!spark_thrift_service
  30. contacts jason
  31. #retain_status_information 1
  32. }

延迟报警 flapping state

  1. Nagios 会对频繁变动的监控服务延迟通知, 为了能正常收到监控的信息, 需要把 nagios.cfg 配置中的关闭参数 enable_flap_detection
  2. enable_flap_detection=0