下面给出一些从网上找来的相关的配置 ,可以参考一下,但并不是全都适用,仅供参考
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 [email protected] \
8. > -t [email protected] \
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 [email protected] \
15. > -t [email protected] \
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 [email protected] \
25. > -t "Robinson cheng <[email protected]>" [email protected] \
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 [email protected] \
32. > -t "Robinson cheng <[email protected]>" \
33. > -cc [email protected] \
34. > -bcc [email protected] \
35. > -u "Test mail " \
36. > -m "This is a test mail"
37.
38. 发送带有附件的邮件
39. robin@SZDB:~> sendEmail -f [email protected] \
40. > -t "Robinson cheng <[email protected]>" \
41. > -cc [email protected] \
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 [email protected] \
49. > -t "Robinson cheng <[email protected]>" \
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 [email protected] \
55. > -t "Robinson cheng <[email protected]>" \
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 [email protected] \
67. > -t "Robinson cheng <[email protected]>" \
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 [email protected] \
77. > -t [email protected] \
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 �Cf [email protected]�Ct [email protected] �Cs mail.test.com �Cu “from nagios” �Cxu nagios �Cxp 123456�Cm 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 [email protected] -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 [email protected] #联系人的邮件地址
}
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的话登陆后就看不到是谁登陆的
当然还有很多选项,比如设置只读用户
(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 �Cc /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 [email protected] pager 1338757xxxx address1 [email protected] 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 [email protected] 很明显,联系的人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