设为首页 收藏本站
查看: 909|回复: 0

nagios相关

[复制链接]

尚未签到

发表于 2019-1-14 14:21:04 | 显示全部楼层 |阅读模式
  下面给出一些从网上找来的相关的配置 ,可以参考一下,但并不是全都适用,仅供参考
  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 " 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 " \
  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 " \
  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 " \
  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 " \
  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 " \
  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://dingning运维网.blog.运维网.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的话登陆后就看不到是谁登陆的

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

  (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.运维网.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.运维网.com/13184/41430


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-663261-1-1.html 上篇帖子: Nagios網卡流量監控報錯check_traffic.sh 下篇帖子: 监控利器Nagios的替代者Icinga
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表