下面给出一些从网上找来的相关的配置 ,可以参考一下,但并不是全都适用,仅供参考

sendEmail的

http://blog.csdn.net/robinson_0612/article/details/8314570

1. 查看详细的帮助文件,如下方式:   

2.   ./sendEmail --help addressing  

3.   ./sendEmail --help message  

4.

5. 四、示例

6.   #发送者使用任意的邮箱方式发送邮件

7.   robin@SZDB:~> sendEmail -f robinson@oracle.com \  

8.   > -t robinson.cheng@trade.com \  

9.   > -u "Test Mail" \  

10.   > -m "This is a test mail from Robinson"  

11.   Dec 18 14:10:23 szdb sendEmail[18494]: Email was sent successfully!  

12.

13.   #发送者使用一个真实存在的互联网邮件服务器来发送邮件

14.   robin@SZDB:~> sendEmail -f rocket010824@163.com \  

15.   > -t robinson.cheng@trade.com \  

16.   > -u "Test Mail" \  

17.   > -s smtp.163.com \  

18.   > -xu jackson \  

19.   > -xp temp_000 \  

20.   > -m "This is test mail from Robinson"  

21.   Dec 18 14:13:24 szdb sendEmail[18500]: Email was sent successfully!  

22.

23. 发送给多个邮件接收人

24.   robin@SZDB:~> sendEmail -f robinson@oracle.com \                                                                     

25.   > -t "Robinson cheng <robinson.cheng@trade.com>" jackson@163.com \  

26.   > -u "Send email to mutiple people" \  

27.   > -m "This is a test mail"   

28.   Dec 18 14:24:57 szdb sendEmail[18537]: Email was sent successfully!  

29.

30. 使用抄送,密送接收人

31.   robin@SZDB:~> sendEmail -f robinson@oracle.com \  

32.   > -t "Robinson cheng <robinson.cheng@trade.com>" \  

33.   > -cc jason.wu@trade.com \  

34.   > -bcc jackson@163.com \  

35.   > -u "Test mail " \  

36.   > -m "This is a test mail"  

37.

38. 发送带有附件的邮件

39.   robin@SZDB:~> sendEmail -f robinson@oracle.com \  

40.   > -t "Robinson cheng <robinson.cheng@trade.com>" \  

41.   > -cc jason.wu@trade.com \  

42.   > -u "Test mail with multi attached" \  

43.   > -m "This is a test mail with multi attached" \  

44.   > -a /users/robin/addmrpt_1_11584_11649.txt "/users/robin/Temp log"  

45.   Dec 18 14:43:35 szdb sendEmail[18664]: Email was sent successfully!  

46.

47.   #使用文件内容作为邮件的body   

48.   robin@SZDB:~> sendEmail -f robinson@oracle.com \  

49.   > -t "Robinson cheng <robinson.cheng@trade.com>" \  

50.   > -u "Test mail and the body from file contents" \  

51.   > -o message-file=/users/robin/addmrpt_1_11584_11649.txt  

52.   Dec 18 14:50:39 szdb sendEmail[18715]: Email was sent successfully!  

53.

54.   robin@SZDB:~> cat addmrpt_1_11584_11649.txt | sendEmail -f robinson@oracle.com \  

55.   > -t "Robinson cheng <robinson.cheng@trade.com>" \  

56.   > -u "Test mail and the body from file contents"  

57.   Reading message body from STDIN because the '-m' option was not used.  

58.   If you are manually typing in a message:  

59.     - First line must be received within 60 seconds.  

60.     - End manual input with a CTRL-D on its own line.  

61.

62.   Dec 18 14:47:31 szdb sendEmail[18709]: Message input complete.  

63.   Dec 18 14:47:31 szdb sendEmail[18709]: Email was sent successfully!  

64.

65.   #发送邮件时读取html文件内容作为body   

66.   robin@SZDB:~> sendEmail -f robinson@oracle.com \  

67.   > -t "Robinson cheng <robinson.cheng@trade.com>" \  

68.   > -u "HTML test mail" \  

69.   > -o message-file=/users/robin/CNMMBO_awrrpt_1_20121218.html  

70.   Dec 18 14:54:07 szdb sendEmail[18721]: Email was sent successfully!  

71.

72.   #Author :Robinson   

73.   #Blog   : http://blog.csdn.net/robinson_0612   

74.

75.   #发送html邮件

76.   robin@SZDB:~> sendEmail -f robinson@oracle.com \  

77.   > -t robinson.cheng@trade.com \  

78.   > -u "This is an html test mail" \  

79.   > -o message-content-type=html \  

80.   > -m "The body is html format"  

81.   Dec 18 15:19:36 szdb sendEmail[18883]: Email was sent successfully!  

另一个sendEmail

http://dingning51cto.blog.51cto.com/1797315/477209

1. /usr/local/bin/sendEmail –f nagios@test.com–t mail@test.com –s mail.test.com –u “from nagios” –xu nagios –xp 123456–m nagios test 

解释:   
-f 表示发送者的邮箱    
-t 表示接收者的邮箱    
-s 表示SMTP服务器的域名或者ip    
-u 表示邮件的主题    
-xu 表示SMTP验证的用户名    
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)    
-m 表示邮件的内容

修改commands.cfg

    # 'notify-by-email' command definition

define command{

        command_name    notify-by-email

        command_line    /usr/bin/printf "%b" "***** Nagios 2.9 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f nagios@test.com -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp 123456

                            }

nagios配置文件

开始配置nagios   
为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义对象创建独立的配置文件:    
即为:    
创建hosts.cfg文件来定义主机和主机组    
创建services.cfg文件来定义服务    
用默认的contacts.cfg文件来定义联系人和联系人组    
用默认的commands.cfg文件来定义命令    
用默认的timeperiods.cfg来定义监控时间段    
用默认的templates.cfg文件作为资源引用文件

(1)templates.cfg文件   
 nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。这就是templates.cfg的作用。    
下面详细介绍下templates.cfg文件中每个参数的含义:

 define contact{  

        name                            generic-contact        #联系人名称,

        service_notification_period     24x7                   #当服务出现异常时,发送通知的时间段,这个时间段“7x24"在timeperiods.cfg文件中定义

        host_notification_period        24x7                   #当主机出现异常时,发送通知的时间段,这个时间段“7x24"在timeperiods.cfg文件中定义

        service_notification_options    w,u,c,r         #这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态,c即criticle,表示紧急状态,r即recover,表示恢复状态。也就是在服务出现警告状态、未知状态、紧急状态和重新恢复状态时都发送通知给使用者。

        host_notification_options       d,u,r         #定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态,u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。

        service_notification_commands   notify-service-by-email  #服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-service-by-email”在commands.cfg文件中定义。

        host_notification_commands      notify-host-by-email     #主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-host-by-email”在commands.cfg文件中定义。

        register                        0  

        }  

 define host{   

        name                            generic-host    #主机名称,这里的主机名,并不是直接对应到真正机器的主机名,乃是对应到在主机配置文件里所设定的主机名。

        notifications_enabled           1              

        event_handler_enabled           1               

        flap_detection_enabled          1               

        failure_prediction_enabled      1             

        process_perf_data               1              

        retain_status_information       1             

        retain_nonstatus_information    1                

        notification_period             24x7           #指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。

        register                        0                

        }  

define host{  

        name                            linux-server    #主机名称

        use                             generic-host    #use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来,在nagios配置中,很多情况下会用到引用。

        check_period                    24x7            #这里的check_period告诉nagios检查主机的时间段

        check_interval                  5                #nagios对主机的检查时间间隔,这里是5分钟。

        retry_interval                  1               #重试检查时间间隔,单位是分钟。

        max_check_attempts              10               #nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况,而是多试几次,因为有可能只是一时网络太拥挤,或是一些其他原因,让主机受到了一点影响,这里的10就是最多试10次的意思。

        check_command                   check-host-alive  #指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义。

        notification_period             workhours      #主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义,下面会陆续讲到。

        notification_interval           120            #在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0  

        notification_options            d,u,r          #定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态,u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。

        contact_groups                  admins         #指定联系人组,这个“admins”在contacts.cfg文件中定义。

        register                        0  

        }  

define service{  

        name                            generic-service   #定义一个服务名称

        active_checks_enabled           1     

        passive_checks_enabled          1      

        parallelize_check                1      

        obsess_over_service             1      

        check_freshness                0  

        notifications_enabled            1                 

        event_handler_enabled           1                   

        flap_detection_enabled           1                    

        failure_prediction_enabled        1                   

        process_perf_data               1                   

        retain_status_information       1                     

        retain_nonstatus_information    1                        

        is_volatile                     0   

        check_period                    24x7      #这里的check_period告诉nagios检查服务的时间段。

        max_check_attempts              3         #nagios对服务的最大检查次数。

        normal_check_interval           10       #此选项是用来设置服务检查时间间隔,也就是说,nagios这一次检查和下一次检查之间所隔的时间,这里是10分钟。

        retry_check_interval            2        #重试检查时间间隔,单位是分钟。

        contact_groups                  admins   #指定联系人组,同上。

        notification_options            w,u,c,r  #这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态,c即criticle,表示紧急状态,r即recover,表示恢复状态。也就是在服务出现警告状态、未知状态、紧急状态和重新恢复后都发送通知给使用者。

        notification_interval           60       #在服务出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你认为,所有的事件只需要一次通知就够了,可以把这里的选项设为0。

        notification_period             24x7     #指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。

         register                        0                       

        }  

(2)resource.cfg文件

 resource.cfg是nagios的变量定义文件,文件内容只有一行:

$USER1$=/usr/local/nagios/libexec  
其中,变量$USER1$指定了安装nagios插件的路径,如果把插件安装在了其它路径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用。

(3)理解Nagios宏及其工作机制

Nagios配置非常灵活,继承和引用是一大特征,另一个重要特征就是可以在命令行的定义里使用宏,通过定义宏,nagios可以灵活的获取主机、服务和其它对象的信息。   
宏的工作机制    
在执行命令之前,nagios将对命令里的每个宏替换成它们应当取得的值。这种宏替换发生在Nagios执行各种类型的宏时候。例如主机和服务的检测、通知、事件处理等。

宏的分类:   
默认宏、按需而成的宏、用户自定制宏等。

默认宏:    
主机IP地址宏    
当在命令定义中使用主机或服务宏时,宏将要执行所用的值指向主机或服务所带有值。看下面这个例子,假定在check_ping命令定义里使用了一个主机对象,例如这样:

define host{  

  host_name               ixdba  

  address   192.168.12.246  

  check_command               check_ping  

  ...  

  }  

define command{  

  command_name    check_ping  

  command_line    /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,90% -c 200.0,60%  

  } 

那么执行这个主机检测命令时展开并最终执行的将是这样的:

/usr/local/nagios/libexec/check_ping -H 192.168.12.246 -w 100.0,90% -c 200.0,60% 

命令参数宏
同样你可以向命令传递参数,这样可以保证命令定义更具通用性。参数指定在对象(象主机或服务)中定义,用一个“!”来分隔,例如这样:

define service{  

  host_name  linuxbox  

  service_description PING  

  check_command              check_ping!200.0,80%!400.0,40%  

  ...  

  } 

在上例中,服务的检测命令中含有两个参数(请参考$ARGn$宏),而$ARG1$宏将是"200.0,80%",同时$ARG2$将是"400.0,40%"(都不带引号)。假定使用之前的主机定义并这样来定义你的check_ping命令:

define command{  

  command_name    check_ping  

  command_line    /usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$  

  } 

那么对于服务的检测命令最终将是这样子的:

/usr/local/nagios/libexec/check_ping -H 192.168.12.246 -w 200.0,80% -c 400.0,40% 

Nagios可用的全部的宏

主机宏   
$HOSTNAME$  主机简称(如"web"),取自于主机定义里的host_name域    
$HOSTADDRESS$  主机地址。取自于主机定义里的address域    
服务宏    
$SERVICESTATE$ 服务状态描述,有w,u,c    
$SERVICEDESC$   对当前服务的描述    
联系人宏    
$CONTACTNAME$   表示联系人,在联系人文件中定义    
通知宏    
$NOTIFICATIONTYPE$    返回下面信息:("PROBLEM", "RECOVERY", "ACKNOWLEDGEMENT", "FLAPPINGSTART", "FLAPPINGSTOP", "FLAPPINGDISABLED", "DOWNTIMESTART", "DOWNTIMEEND", or "DOWNTIMECANCELLED").    
日期/时间宏    
$LONGDATETIME$  当前的日期/时间戳    
文件宏    
$LOGFILE$  日志文件的保存位置。    
$MAINCONFIGFILE$  主配置文件的保存位置。    
其他宏    
$ADMINEMAIL$  全局的管理员EMail地址    
$ARGn$  指向第n个命令传递参数(通知、事件处理、服务检测等)。Nagios支持最多32个参数宏

(4)commands.cfg文件   
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。这里并未列出文件的所有内容,仅仅介绍了配置中用到的一些命令。

#下面是notify-host-by-email命令的定义

define command{  

        command_name    notify-host-by-email    #命令名称,即定义了一个主机异常时发送邮件的命令。

        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$    #命令具体的执行方式,“-H $HOSTADDRESS$” 是定义目标主机的地址,这个地址在hosts.cfg文件中定义了。

        }  

#下面是notify-host-by-email命令的定义

define command{  

        command_name    notify-service-by-email   #命令名称,即定义了一个服务异常时发送邮件的命令

        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$  

        }  

#下面是notify-host-by-email命令的定义

 define command{  

        command_name    check-host-alive   #命令名称,用来检测主机状态。

       command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5     #这里的变量$USER1$在resource.cfg文件中进行定义,即$USER1$=/usr/local/nagios/libexec  

,那么check_ping的完整路径为/usr/local/nagios/libexec/check_ping。 “-w 3000.0,80%”中“-w”说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。“-c 5000.0,100%”中“-c”说明后面的一对值对应的是“CRITICAL”,“100%”是其临界值。“-p 1”说明每次探测发送一个包。

        }  

#下面是notify-host-by-email命令的定义

 define command{  

        command_name    check_ftp  

        command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$    #$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。

        }  

#下面是check_http命令的定义

 define command{  

        command_name    check_http  

        command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$  

        }  

#下面是check_ssh命令的定义

 define command{  

        command_name    check_ssh  

        command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$  

        }  

(5) hosts.cfg文件   
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,一个配置好的实例如下:

define host{  

        use                     linux-server  #引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。

        host_name               web    #主机名

        alias                    ixdba-web  #主机别名

        address                 192.168.12.251  #被监控的主机地址,这个地址可以是ip,也可以是域名。

        }  

?  

 define host{  

        use                     linux-server  

        host_name              mysql  

        alias                    ixdba-mysql  

        address                 192.168.12.237  

        }  

?  

 define hostgroup{      #定义一个主机组

 hostgroup_name  sa-servers        #主机组名称,可以随意指定。

 alias           sa servers    #主机组别名

 members         web,mysql   #主机组成员,其中“web”、“mysql”就是上面定义的两个主机。

 }  

(6) services.cfg文件   
此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务和主机资源,例如监控http服务、ftp服务、主机磁盘空间、主机系统负载等等。

#################  ixdba   web  #####################  

 define service{  

        use                             local-service  #引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。

        host_name                       web  #指定要监控哪个主机上的服务,“web”在hosts.cfg文件中进行了定义。

        service_description             PING  #对监控服务内容的描述,以供维护人员参考。

        check_command                   check_ping!100.0,20%!500.0,60% #指定检查的命令,check_ping命令在commands.cfg中定义,后跟两个参数,命令与参数间用!分割。

        }  

 define service{  

        use                             local-service  

        host_name                       web  

        service_description              SSH  

        check_command                  check_ssh    # check_ssh命令也在commands.cfg中定义。

        }  

 define service{  

        use                             local-service  

        host_name                       web  

        service_description              SSHD  

        check_command                  check_tcp!22  

        }  

(7) contacts.cfg文件   
 contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障,nagios会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者。

define contact{  

        contact_name                    sasystem  #联系人名称

        use                             generic-contact #引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义

        alias                           sa-system  #联系人别名

        email                          ixdba@126.com  #联系人的邮件地址

        }  

define contactgroup {  

      contactgroup_name    admins #联系人组名称

      alias                system administrator group #联系人组描述

      members              sasystem  #联系人组成员,其中“sasystem”就是上面定义的联系人

}  

(8) timeperiods.cfg文件   
此文件只要用于定义监控的时间段,下面是一个配置好的实例:

#下面是定义一个名为24x7的时间段,即监控所有时间段

define timeperiod{  

        timeperiod_name 24x7     

        alias           24 Hours A Day, 7 Days A Week  

        sunday          00:00-24:00  

        monday          00:00-24:00  

        tuesday         00:00-24:00  

        wednesday       00:00-24:00  

        thursday        00:00-24:00  

        friday          00:00-24:00  

        saturday        00:00-24:00  

        }  

#下面是定义一个名为workhours的时间段,即工作时间段。

define timeperiod{  

        timeperiod_name workhours   

        alias           Normal Work Hours  

        monday          09:00-17:00  

        tuesday         09:00-17:00  

        wednesday       09:00-17:00  

        thursday        09:00-17:00  

        friday          09:00-17:00  

        }  

(9) cgi.cfg文件   
此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件了。    
由于nagios的web监控界面验证用户为ixdba,所以只需在cgi.cfg文件中添加此用户的执行权限就可以了,需要修改的配置信息如下:

default_user_name=ixdba 

authorized_for_system_information=nagiosadmin,ixdba  

authorized_for_configuration_information=nagiosadmin,ixdba  

authorized_for_system_commands=ixdba 

authorized_for_all_services=nagiosadmin,ixdba  

authorized_for_all_hosts=nagiosadmin,ixdba  

authorized_for_all_service_commands=nagiosadmin,ixdba  

authorized_for_all_host_commands=nagiosadmin,ixdba 

这里就是我们设置的nagiosadmin用户,如果安装的时候你指定的名字不是nagiosadmin,就要在这里加上

里面有一项是use_ssl_authertication=0

这个改成1的话登陆后就看不到是谁登陆的

nagios相关_sendEmail

当然还有很多选项,比如设置只读用户

nagios相关_sendEmail_02

(10) nagios.cfg文件   
  Nagios.cfg默认的路径为/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置文件,所有的对象配置文件都必须在这个文件中进行定义才能发挥其作用,这里只需将对象配置文件在Nagios.cfg文件中进行引用即可。

log_file=/usr/local/nagios/var/nagios.log  

“log_file”变量用来定义nagios日志文件的路径。

cfg_file=/usr/local/nagios/etc/hosts.cfg  

cfg_file=/usr/local/nagios/etc/services.cfg  

cfg_file=/usr/local/nagios/etc/commands.cfg  

cfg_file=/usr/local/nagios/etc/contacts.cfg  

cfg_file=/usr/local/nagios/etc/timeperiods.cfg  

cfg_file=/usr/local/nagios/etc/templates.cfg  

 “cfg_file”变量用来引用对象配置文件,如果有更多的对象配置文件,在这里依次添加即可。

object_cache_file=/usr/local/nagios/var/objects.cache  

该变量用于指定一个“所有对象配置文件”的副本文件,或者叫对象缓冲文件

resource_file=/usr/local/nagios/etc/resource.cfg  

该变量用于指定nagios资源文件的路径,可以在Nagios.cfg中定义多个资源文件。

status_file=/usr/local/nagios/var/status.dat  

该变量用于定义一个状态文件,此文件用于保存nagios的当前状态、注释和宕机信息等。

status_update_interval=10 

该变量用于定义状态文件(即status.dat)的更新时间间隔,单位是秒,最小更新间隔是1秒。

nagios_user=nagios  

该变量指定了Nagios进程使用哪个用户运行。

nagios_group=nagios  

该变量用于指定Nagios使用哪个用户组运行。

check_external_commands=1 

该变量用于设置是否允许nagios在web监控界面运行cgi命令,也就是是否允许nagios在web界面下执行重启nagios、停止主机/服务检查等操作。“1”为运行,“0”为不允许。

command_check_interval=2 

该变量用于设置nagios对外部命令检测的时间间隔,如果指定了一个数字加一个"s"(如10s),那么外部检测命令的间隔是这个数值以秒为单位的时间间隔。如果没有用"s",那么外部检测命令的间隔是以这个数值的“时间单位”的时间间隔。

注意我这里不能设置这个,否则提示错误了!可能是新版本已经放弃了很多东西!

interval_length=60 

该变量指定了nagios的时间单位,默认值是60秒,也就是1分钟,即在nagios配置中所有的时间单位都是分钟。

http://ixdba.blog.51cto.com/2895551/754561

典型配置

之前已经说过nagios要用起来,就必须修改配置文件,增加要监控的主机和服务才行.在具体做这个动作之前,下面的概念必须要了解.

1)预备知识

Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.通俗的理解:假定我们首先定义了”性别”这个对象,它的值只可能是男,女,人妖等等,然后定义某人为一个对象,例如张三,定义张三的时候有”性别”这个属性,它的值就必须来源了之前定义的性别这个对象,要么是男是女,或者是人妖.

在Nagios里面定义了一些基本的对象,一般用到的有:   

联系人

contact

出了问题像谁报告?一般当然是系统管理员了

监控时间段

timeperiod

7X24小时不间断还是周一至周五,或是自定义的其他时间段

被监控主机

host

所需要监控的服务器,当然可以是监控机自己

监控命令

command

nagios发出的哪个指令来执行某个监控,这也是自己定义的

被监控的服务

service

例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等

另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组呢.

回到上面的例子,定义张三需要之前定义的性别,我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告.

所有这些对象绝对多数都是需要我们手动定义的,这就是nagios的安装显得复杂的地方.其实了解了原理,做一遍之后余下的工作就是复制粘贴了.下面就开始动手.

2)将示例配置文件复制为真实配置文件名

cd /usr/local/nagios/etc

cp cgi.cfg-sample cgi.cfg

cp commands.cfg-sample commands.cfg

cp localhost.cfg-sample localhost.cfg

cp nagios.cfg-sample nagios.cfg

cp resource.cfg-sample resource.cfg

3)修改配置文件

修改nagios的主配置文件nagios.cfg

vi nagios.cfg

注释行 #cfg_file=/usr/local/nagios/etc/localhost.cfg[2],然后把下面几行的注释去掉:   

cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径

cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径

cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径

cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径

cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径

cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径

注释掉就说明不使用这个文件,去掉了注释就是需要使用这个文件.

改check_external_commands=0为check_external_commands=1 .这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作。

把command_check_interval的值从默认的1改成command_check_interval=10s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。

主配置文件要改的基本上就是这些,通过上面的修改,发现/usr/local/nagios/etc并没有文件hosts.cfg等一干文件,怎么办?稍后手动创建它们。

修改CGI脚本控制文件cgi.cfg

vi cgi.cfg

第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值设置成”0”来取消验证,这是一个十分糟糕的想法。接下来修改default_user_name=test ,再后面的修改在下表列出:   

 authorized_for_system_information=nagiosadmin,test 

authorized_for_configuration_information=nagiosadmin,test

authorized_for_system_commands=test //多个用户之间用逗号隔开

authorized_for_all_services=nagiosadmin,test

authorized_for_all_hosts=nagiosadmin,test

authorized_for_all_service_commands=nagiosadmin,test

authorized_for_all_host_commands=nagiosadmin,test

那么上述用户名打那里来的呢?是执行命令 /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。

定义监控时间段,创建配置文件timeperiods.cfg

[root@localhost etc]# vi timeperiods.cfg   

define timeperiod{

timeperiod_name 24x7 //时间段的名称,这个地方不要有空格

alias 24 Hours A Day,7Days A Week

sunday 00:00-24:00

monday 00:00-24:00

tuesday 00:00-24:00

wednesday 00:00-24:00

thursday 00:00-24:00

friday 00:00-24:00

saturday 00:00-24:00

}

定义了一个监控时间段,它的名称是24x7,监控的时间是每天全天24小时

定义联系人,创建配置文件contacts.cfg

[root@localhost etc]# vi contacts.cfg    

define contact{

contact_name test //联系人的名称,这个地方不要有空格

alias sys admin

service_notification_period 24x7

host_notification_period 24x7

service_notification_options w,u,c,r

host_notification_options d,u,r

service_notification_commands notify-by-email

host_notification_commands host-notify-by-email

email yahoon@test.com

pager 1338757xxxx

address1 xxxxx.xyyy@icq.com

address2 555-555-5555

}

创建了一个名为test的联系人,下面列出其中重要的几个选项做说明   

service_notification_period 24x7

服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.

host_notification_period 24x7

主机出了状况通知的时间段, 这个时间段就是上面在timeperiods.cfg中定义的

service_notification_options w,u,c,r

当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.

host_notification_options d,u,r

当主机出现d----—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人

service_notification_commands notify-by-email

服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍

host_notification_commands host-notify-by-email

同上,主机出问题时采用的也是发邮件的方式通知联系人

email yahoon@test.com

很明显,联系的人email地址

pager 1338757xxxx

联系人的手机,如果支持短信的通知的话,这个就很有用了.

alias是联系人别名,address是地址 意义不大.

按照上面的方式简单的复制修改就可以创建多个联系人了.

下面就可以将多个联系人组成一个联系人组,创建文件contactgroups.cfg

[root@localhost etc]# vi contactgroups.cfg   

define contactgroup{

contactgroup_name sagroup

//联系人组的名称,同样不能空格

alias System Administrators //别名

members test

//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔

}

定义被监控主机,创建文件hosts.cfg

[root@localhost etc]# vi hosts.cfg   

define host{

host_name nagios-server

//被监控主机的名称,最好别带空格

alias nagios server

//别名

address 192.168.0.111

//被监控主机的IP地址,我现在暂时先填本机的IP

check_command check-host-alive

//监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活

max_check_attempts 5

//检查失败后重试的次数

check_period 24x7

//检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的

contact_groups sagroup

//联系人组,上面在contactgroups.cfg中定义的sagroup

notification_interval 10

//提醒的间隔,每隔10秒提醒一次

notification_period 24x7

//提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的

notification_options d,u,r

//指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍

}

通过简单的复制修改就可以定义多个主机了.我们在这加上另外两台机器:

名为dbpi的linux主机,ip为192.168.0.111

名为yahoon的xp主机,ip为192.168.0.28

与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg

[root@localhost etc]# vi hostgroups.cfg   

define hostgroup{

hostgroup_name sa-servers //主机组名称

alias sa Servers //别名

members nagios-server 

//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的

}

下面是最关键的了,用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过commands.cfg文件中定义的命令.

例如我们现在有一个监控项目是监控一台机器的web服务是否正常, 我们需要哪些元素呢?最重要的有下面三点:首先是监控哪台机,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人?

 

定义监控的项目,也叫服务,创建services.cfg

[root@localhost etc]# vi services.cfg   

#service definition

define service{

host_name nagios-server

//被监控的主机,hosts.cfg中定义的

service_description check-host-alive

//这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活

check_command check-host-alive

//所用的命令,是commands.cfg中定义的

max_check_attempts 5

normal_check_interval 3

retry_check_interval 2

check_period 24x7

//监控的时间段,是timeperiods.cfg中定义的

notification_interval 10

notification_period 24x7

//通知的时间段, ,是timeperiods.cfg中定义的

notification_options w,u,c,r

//在监控的结果是wucr时通知联系人,具体含义看前文.

contact_groups sagroup

//联系人组,是contactgroups.cfg中定义的

}

可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以加上另外两个监控项目:分别监控yahoon和dbpi是否存活

这样整个的配置过程就结束了.虽然功能很简单,但是已经为以后扩展打下了良好的基础.可以放心的告诉大家,以后的工作基本都是复制粘贴啦!!!

http://yahoon.blog.51cto.com/13184/41430