Nagios分布式配置

摘自:http://www.comeonsa.com/2010/08/nagios%e5%88%86%e5%b8%83%e5%bc%8f%e9%85%8d%e7%bd%ae/comment-page-1/#comment-237

Nagios分布式配置
2010年8月14日 k9.huang 发表评论 阅读评论
nagios的分布式是通过在主服务端开启nsca接口进行内容的接收,客户端通过调用send_nsca程序,进行内容的传输,服务端在接收到约定格式的内容后,进行告警。以下内容省略了,nagios的主服务端与分布式服务端的安装步骤。

一、NSCA插件安装与配置
http://nchc.dl.sourceforge.net/sourceforge/nagios/nsca-2.7.2.tar.gz

编译安装nsca:
查看源代码打印帮助0 ./configure && make all

nagios主服务端:
1.拷贝nsca相关文件至nagios目录
查看源代码打印帮助0 cp sample-config/nsca.cfg /usr/local/nagios/etc/

1 cp src/nsca /usr/local/nagios/bin/

2 chown nagios.nagios /usr/local/nagios/etc/nsca.cfg

3 chown nagios.nagios /usr/local/nagios/bin/nsca

2.配置nsca.cfg文件中password
查看源代码打印帮助0 vi /usr/local/nagios/etc/nsca.cfg #去掉password前面的#,设置密码

1 password=xxx

3.开启nsca程序
查看源代码打印帮助0 /usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca.cfg

4.开启防火墙5667端口
查看源代码打印帮助0 iptables -I RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5667 -j ACCEPT

nagios分布式服务端:
1.拷贝send_nsca相关文件至nagios目录
查看源代码打印帮助0 cp sample-config/send_nsca.cfg /usr/local/nagios/etc/

1 cp src/send_nsca /usr/local/nagios/bin/

2 chown nagios.nagios /usr/local/nagios/etc/send_nsca.cfg

3 chown nagios.nagios /usr/local/nagios/bin/send_nsca

2.配置nsca.cfg文件中password
查看源代码打印帮助0 vi /usr/local/nagios/etc/send_nsca.cfg #去掉password前面的#,配置与主服务端相同的密码

1 password=xxx

二、Nagios主服务端与分布式服务端配置
nagios主服务端:
1.修改nagios.cfg文件
查看源代码打印帮助0 vi /usr/local/nagios/etc/nagios.cfg

1 #修改以下参数值

2 check_external_commands=1

3 accept_passive_service_checks=1

4 accept_passive_host_checks=1

2.修改服务与主机的监控,以下为配置示例,该示例定义的服务与主机应该与分布式服务端相同
查看源代码打印帮助00 define host{

01 name test

02 use generic-host

03 address 192.168.0.8 #分布式服务端内监控的主机地址

04 passive_checks_enabled 1 #开启被动检测模式

05 active_checks_enabled 0 #关闭主服务端对该主机的主动检测

06 }

07 define service{

08 use generic-service #根据实际情况修改

09 host_name test

10 service_description CPU Load

11 check_command check_nrpe!check_load

12 check_freshness 1 #开启强制刷新

13 freshness_threshold 450 #主服务端强制刷新的时间,具体含义请参考手册

14 passive_checks_enabled 1 #开启被动检测模式

15 active_checks_enabled 0 #关闭主服务端对该服务的主动检测

16 }

nagios分布式服务端:
1.修改nagios.cfg文件
查看源代码打印帮助0 vi /usr/local/nagios/etc/nagios.cfg

1 #修改以下参数值

2 enable_notifications=0

3 obsess_over_services=1

4 ocsp_command=submit_check_result

5 obsess_over_hosts=1

6 ochp_command=submit_check_result

2.创建submit_check_result脚本
查看源代码打印帮助00 vi /usr/local/nagios/libexec/submit_check_result

01 #!/bin/sh

02 # Arguments:

03 # = host_name (Short name of host that the service is

04 # associated with)

05 # = svc_description (Description of the service)

06 # = state_string (A string representing the status of

07 # the given service – “OK”, “WARNING”, “CRITICAL”

08 # or “UNKNOWN”)

09 # = plugin_output (A text string that should be used

10 # as the plugin output for the service checks)

11 #

12 # Convert the state string to the corresponding return code

13 return_code=-1

14 case “$3” in

15 OK)

16 return_code=0

17 ;;

18 WARNING)

19 return_code=1

20 ;;

21 CRITICAL)

22 return_code=2

23 ;;

24 UNKNOWN)

25 return_code=-1

26 ;;

27 esac

28 # pipe the service check info into the send_nsca program, which

29 # in turn transmits the data to the nsca daemon on the central

30 # monitoring server

31 /usr/bin/printf “%s\t%s\t%s\t%s\n” “$1” “$2” “$return_code” “$4” | /usr/local/nagios/bin/send_nsca -H 1.1.1.1(修改为主服务端的ip) -c /usr/local/nagios/etc/send_nsca.cfg
查看源代码打印帮助0 chmod +x /usr/local/nagios/libexec/submit_check_result

1 chown nagios.nagios submit_check_result

3.在command.cfg文件中定义submit_check_result命令
查看源代码打印帮助0 vi /usr/local/nagios/etc/objects/command.cfg

1 #加入以下内容

2 define command{

3 command_name submit_check_result

4 command_line /usr/local/nagios/libexec/submit_check_result $HOSTNAME$ ‘$SERVICEDESC$’ $SERVICESTATE$ ‘$SERVICEOUTPUT$’

5 }

4.配置示例
查看源代码打印帮助00 define host{

01 name test

02 use generic-host

03 address 192.168.0.8 #分布式服务端内监控的主机地址

04 }

05 define service{

06 use generic-service

07 host_name test

08 service_description CPU Load

09 check_command check_nrpe!check_load

10 }

BTW:请注意分布式服务端与主服务端定义主机与服务配置的区别,当分布式服务端定义了主机与服务时,同样需要在主服务端定义一次。freshness_threshold 强制刷新时间,主要的作用是当分布式服务端未提交新的数据时,服务端可以强制进行状态刷新,进行及时的预警。

如何在不安装分布式nagios的情况下,监控另一网络防火墙内的内网主机呢?其实方法很多,比如check_ssh,这里共享一个方法,该方法是同事nonamexz的创意,在此借花献佛。

通过nagios的自定义变量,在nrpe的命令行增加一个端口的参数,通过防火墙进行映射至内网不同的服务器

查看源代码打印帮助00 define command{

01 command_name check_NRPE #定义一个新的命令

02 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p $_HOSTPORT$ -t 60

03 }

04 define host{

05 name test

06 use generic-host

07 address 2.2.2.2 #需要监控的服务器的外网地址,比如防火墙地址

08 _PORT 5668 #自定义的外网端口,改端口是通过防火墙进行内的需要监控的服务器的nrpe的端口映射

09 }

10 define service{

11 use generic-service

12 host_name test

13 service_description CPU Load

14 check_command check_NRPE!check_load #这里定义的时候,使用自定义的nrpe

15 }

发表回复

您的电子邮箱地址不会被公开。