杨叔叔 发表于 2018-9-29 13:22:18

RHEL5+apache+mysql+nagios-jasonyong

本文档参考资料:http://blog.sina.com.cn/s/blog_4e424e210100b6vi.html~type=v5_one&label=rela_prevarticle  # uname -a
  Linux station206.example.com 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02EDT 2007 i686 i686 i386 GNU/Linux
  第一件事,把selinux改成默许模式。
  # setenforce 0
  # setenforce 0
  安装nagios参考文档:源代码包中的nagios-***/docs/quickstart-fedora.html
  安装nagios前,需要这些东西支持:
  * Apache
  * GCC compiler
  * GD development libraries
  如果有yum源,可以用下面的指令:
  yum install httpd
  yum install gcc
  yum install glibc glibc-common
  yum install gd gd-devel
  # rpm -qa | grep -E "zlib-|gd-|freetype- |fontconfig-|libxml|libpng-|libjpeg-"
  libjpeg-6b-37
  gd-2.0.33-9.3.fc6
  zlib-1.2.3-3
  libxml2-2.6.26-2.1.2
  libxml2-python-2.6.26-2.1.2
  libpng-1.2.10-7.0.2
  freetype-2.2.1-19.el5
  fontconfig-2.4.1-6.el5
  sysklogd-1.4.1-40.el5
  ##我的系统确认这些包都装上了
  # rpm -ivh httpd-2.2.3-11.el5.i386.rpm
  ## 把apache安装上。
  开始安装nagios:
  下载地址:http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios- 3.0.5.tar.gz
  http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins- 1.4.11.tar.gz
  http://ncu.dl.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
  http://files.nsclient.org/x-0.3.x/NSClient%2B%2B-0.3.6-RC9-Win32.msi
  ## Nagios,Nagios-plugins,nrpe安装在监控服务器上。
  ## nrpe安装在Linux/Unix被监控端。
  ## nsclient++安装在Windows被监控端。
  # useradd nagios
  # echo 123456 | passwd --stdin nagios
  创建nagios用户,密码是123456
  # /usr/sbin/groupadd nagcmd
  # /usr/sbin/usermod -a -G nagcmd nagios
  # /usr/sbin/usermod -a -G nagcmd apache
  ## daemon为运行apache的帐号。
  # tar zxvf nagios-3.0.5.tar.gz
  # cd nagios-3.0.5
  # ./configure --with-command- group=nagcmd
  # make all
  ## 编译主程序和CGI
  # make install
  ## 安装主程序
  # make install-init && make install- commandmode && make install-config
  ## 安装启动脚本 设置目录权限 安装配置文件
  # vim /usr/local/nagios/etc/nagios.cfg
  ## 把配置文件修改成自己喜欢的
  nagios目录功能的简要说明:
  bin    Nagios执行程序所在目录,nagios文件即为主程序
  etc    Nagios配置文件位置
  sbin    Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
  Share    Nagios网页文件所在的目录
  var    Nagios日志文件、spid 等文件所在的目录
  var/archives    日志归档目录
  var/rw    用来存放外部命令文件
  # make install-webconf
  ## 安装一个nagios的apache配置文件
  # htpasswd -c/usr/local/nagios/etc/htpasswd.users nagios
  New password:
  Re-type new password:
  Adding password for user nagios
  ## 添加一个nagios页面的用户
  # service httpd restart
  Stopping httpd:                                          
  Starting httpd:                                          
  ## 重启apache
  ## 现在可以测试了。在浏览器中打开http://192.168.1.206/nagios/
  ## 输入用户名:nagios   密码:123456(上面刚设置的)。
  ## 现在应该可以看到nagios的界面了。
  ## 接下来安装nagios-plugins
  # tar zxvf nagios-plugins-1.4.11.tar.gz
  # cd nagios-plugins-1.4.11
  # ./configure --with-nagios- user=nagios --with-nagios-group=nagios
  # make
  # make install
  # chkconfig --add nagios
  # chkconfig nagios on
  # /usr/local/nagios/bin/nagios-v /usr/local/nagios/etc/nagios.cfg
  ## 校验配置文件是不是有错误
  # service nagios start
  Starting nagios: done.
  # setenforce 0
  ## 试验环境,把selinux改成默许模式。
  ## 如果不改就执行下面的指令吧:
  # chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
  # chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
  ## 如果开启防火墙,应该允许访问apache(一般为80端口)并允许nagios去抓 取被监控机信息(一般nrpe为5666端口)
  ## 在要监控的机器上安装nrpe
  # tar zxvf nrpe-2.12.tar.gz
  # cd nrpe-2.12
  # ./configure
  ## 报错了。。。错误信息如下。
  checking for SSL headers... configure: error: Cannot find ssl headers
  解决办法:
  # yum install openssl-devel
  Installing: keyutils-libs-devel          #########################
  Installing: libsepol-devel               #########################
  Installing: libselinux-devel             #########################
  Installing: e2fsprogs-devel            #########################
  Installing: krb5-devel                   #########################
  Installing: zlib-devel                   #########################
  Installing: openssl-devel                #########################
  # ./configure
  ## 通过了
  # make all
  # make install-plugin
  nagios web界面提示
  It appears as though you do not have permission to view information for any of the services you requested...
  解决方法:
  # vim /usr/local/nagios/etc/cgi.cfg
  use_authentication=1
  ## 改成use_authentication=0
  ## 到被监控机器上
  ## 安装nagios-plugins和nrpe
  ## NRPE总共由两部分组成:
  ## check_nrpe插件,运行在监控主机上。
  ## NRPE daemon,运行在远程的linux主机上(通常就是被监控机)
  # tar zxvf nagios-plugins-1.4.11.tar.gz
  # cd nagios-plugins-1.4.11
  # ./configure
  # make
  # make install
  # chown nagios.nagios/usr/local/nagios/
  # chown -R nagios.nagios/usr/local/nagios/libexec/
  # tar zxvf nrpe-2.12.tar.gz
  # cd nrpe-2.12
  # ./configure
  ## 同样报错checking for SSL headers... configure: error: Cannot findssl headers
  同样解决办法:
  # yum -y install openssl-devel
  # ./configure
  # make all
  # make install-daemon
  ## 安装nrpe的主程序
  # make install-daemon-config
  ## 安装nrpe的配置文件
  # vim /usr/local/nagios/etc/nrpe.cfg
  ## 修改配置文件,允许被哪些服务器监控
  allowed_hosts=127.0.0.1,192.168.1.206
  启动nrpe有两种方法:
  方法一:
  ## 在/etc/services中添加下面行:
  nrpe            5666/tcp      # NRPE
  # yum install xinet
  # vim /etc/xinetd.d/nrpe
  ## 内容如下
  # default: on
  # description: NRPE
  service nrpe
  {
  flags         = REUSE
  socket_type   = stream
  wait            = no
  user            = nagios          ##运行的用户
  server          = /usr/local/nagios/bin/nrpe
  server_args   = -c /usr/local/nagios/etc/nrpe.cfg   --inetd
  log_on_failure+= USERID
  disable         = no               ##默认运行
  only_from       = 192.168.1.206
  }
  # service xinetd restart
  # netstat -an | grep 5666
  tcp      0      0 0.0.0.0:5666                0.0.0.0:*                  LISTEN
  # echo "192.168.1.206" >> /etc/hosts.allow
  ## 为了避免被TCP Wrappers拒绝,要加上这句。
  # chkconfig xinetd on
  方法二:
  # /usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d
  ## 如果被监控端部加-n,监控端也不能加-n,-n意思是不使用ssl。-d 是以独 立的进程运行。
  # netstat -an | grep 5666
  tcp      0      0 0.0.0.0:5666                0.0.0.0:*                  LISTEN
  # echo "/usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local
  # echo "192.168.1.206" >> /etc/hosts.allow
  ## 为了避免被TCP Wrappers拒绝,要加上这句。
  # vim /usr/local/nagios/etc/nrpe.cfg
  # 监控交换分区的使用情况,使用超过20%时为警告状态,超过10%时为严重 状态
  command=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
  # 监控根分区磁盘使用情况
  command=/usr/local/nagios/libexec/check_disk -w 20%-c 10% -p /
  现在可以到监控服务器上测试:
  #/usr/local/nagios/libexec/check_nrpe -H192.168.1.203
  NRPE v2.12
  ## 能够看到版本号,就说明OK(如果被监控服务器运行nrpe时用到了-n,这里 也要有-n参数)
  ## 不然就会报类似CHECK_NRPE: Error - Could not complete SSL handshake. 这样的错误
  测试OK,就可以设置要监控的内容了。
  ## 修改nagios的主配置文件:
  # vim /usr/local/nagios/etc/nagios.cfg
  interval_length=60            ## 间隔时间基准由 60s 改为 1s
  command_check_interval=10         ## 命令检查时间间隔,-1 表示尽 可能频繁的进行检查
  date_format=iso8601             ## 日期格式
  ## 其他的根据自己喜好来改。
  # service nagios restart
  nagios的配置文件:
  /usr/local/nagios/etc/contacts.cfg   ## 用来定义联系人联系人组
  /usr/local/nagios/etc/cgi.cfg      ## 控制cgi访问的配置文件
  /usr/local/nagios/etc/nagios.cfg    ## Nagios主配置文件
  /usr/local/nagios/etc/resource.cfg    ## resource.cfg定义了一些变量 ,以便被其他文件引用,如$USER1$
  /usr/local/nagios/etc/objects      ## objects是一个目录,用于定义 Nagios对象
  /usr/local/nagios/etc/servers      ## 自己创建一个目录存放要监控的服务器的配置文件(需要在nagios.cfg中引用下)
  /usr/local/nagios/etc/objects
  /usr/local/nagios/etc/objects/commands.cfg    ## 命令定义配置文件, 里面定义的命令可以被其他文件引用
  /usr/local/nagios/etc/objects/contacts.cfg    ## 联系人和联系人组配 置文件
  /usr/local/nagios/etc/objects/localhost.cfg    ## 监控本地机器的配置 文件
  /usr/local/nagios/etc/objects/printer.cfg    ## 监控打印机的一个事 例配置文件(默认未启用)
  /usr/local/nagios/etc/objects/switch.cfg    ## 监控路由器的一个事 例配置文件(默认未启用)
  /usr/local/nagios/etc/objects/templates.cfg    ## 模板配置文件,在此 可以定义模板,在其他文件中引用
  /usr/local/nagios/etc/objects/timeperiods.cfg    ## 定义监控时间段的配 置文件
  /usr/local/nagios/etc/objects/windows.cfg    ## 监控Windows的一个事 例配置文件(默认未启用)
  ## /usr/local/nagios/libexec下的脚本命令的使用发法可以通过-h参数查看
  ## 以下配置部分是引用http://blog.sina.com.cn/s/blog_4e424e210100b6vj.html
  主机监控的配置:
  1. define host {
  2. host_name host_name    ; 简短的主机名称。
  3. alias alias    ; 别名,可以更详细的说明主机。
  4. address address    ; IP 地址,也可以写主机名。如果不定义这个值,nagio 将会用 host_name 去寻找主机。
  5. parents host_names    ; 上一节点的名称,也就是指从 nagios 服务器 到被监控主机之间经过的节点,可以是路由器、交换机、主机等等。
  6. hostgroups hostgroup_names    ; 简短的主机组名称。
  7. check_command command_name    ; 检查命令的简短名称,如果此项留空 , nagios 将不会去判断主机是否 alive 。
  8. max_check_attempts 整数    ; 当检查命令的返回值不是 "OK" 时,重 试的次数。
  9. check_interval 数字    ; 循环检查的间隔时间。
  10. active_checks_enabled     ; 是否启用 "active_checks"
  11. passive_checks_enabled     ; 是否启用 "passive_checks" ,及 “被动检查”
  12. check_period timeperiod_name    ; 检测时间段简短名称,这只是个名 称,具体的时间段要写在其他的配置文件中。
  13. obsess_over_host     ; 是否启用主机操作系统探测。
  14. check_freshness     ; 是否启用 freshness 检查。freshness 检 查是对于启用被动检查模式的主机而言的,其作用是定期检查主机报告的状态信 息,如果
  该状态信息已经过期,freshness 将会强制做主机检查。
  15. freshness_threshold 数字   ; fressness 的临界值,单位为秒。 如 果定义为 "0" ,则为自动定义。
  16. event_handler command_name    ; 当主机发生状态改变时,采用的处理 命令的简短的名字(可以在 commands.cfg 中对其定义)
  17. event_handler_enabled     ; 是否启用 event_handler
  18. low_flap_threshold 数字    ; 抖动的下限值。抖动,即在一段时间内 ,主机(或服务)的状态值频繁的发生变化。
  19. high_flap_threshold 数字   ; 抖动的上限值。
  20. flap_detection_enabled     ; 是否启用抖动检查。
  21. process_perf_data     ; 是否启用 processing of performancedata
  22. retain_status_information     ; 程序重启时,是否保持主机状 态相关的信息。
  23. retain_nonstatus_information     ; 程序重启时,是否保持主机 状态无关的信息。
  24. contact_groups contact_groups    ; 联系人组,在此组中的联系人都 会收到主机的提醒信息。
  25. notification_interval 整数    ; 重复发送提醒信息的最短间隔时间。 默认间隔时间是 "60" 分钟。如果这个值设置为 "0" ,将不会发送重复提醒。
  26. notification_period timeperiod_name   ; 发送提醒的时间段。非常重 要的主机(服务)定义为 24x7 ,一般的主机(服务)就定义为上班时间。如果 不在定义
  的时间段内,无论发生什么问题,都不会发送提醒。
  27. notification_options     ; 发送提醒包括的情况: d = 状 态为 DOWN , u = 状态为 UNREACHABLE , r = 状态恢复为 OK , f = flapping
  28. notifications_enabled     ; 是否开启提醒功能。"1" 为开 启,"0" 为禁用。一般,这个选项会在主配置文件 (nagios.cfg) 中定义,效果 相同。
  29. stalking_options     ; 持续状态检测参数,o = 持续的 UP 状 态 , d = 持续的 DOWN 状态 , u = 持续的 UNREACHABLE 状态
  30. }
  配置文件是怎样引用的?
  用nagios主要是监控一台主机的各种信息,包括本机资源以及对外的服务等等.这 些在nagios里面都是被定义为一个个的项目(nagios称之为服务,为了与主机提供 的服务相
  区别,我这里用项目这个词),而实现每个监控项目,则需要通过 commands.cfg文件中定义的命令。
  为了不必重复定义一些项目,Nagios引入了一个模板配置文件(templates.cfg ),将一些共性的属性定义成模板,以便于多次引用。
  我们现在有一个监控项目是监控一台机器的web服务是否正常, 我们需要哪些元 素呢?最重要的有下面三点:首先是监控哪台机器,然后是这个监控要用什么命令 实现,最后就
  是出了问题的时候要通知哪个联系人。
  我们首先应该在commands.cfg中定义监控远程服务和资源的命令,以及如何发送 邮件的命令。大部分监控远程服务和资源的命令的命令通 过/usr/local/nagios/libexec下
  的脚本实现,如ping命令为check_ping。
  --------------------------------------------------------------------- --------------------
  然后我们在contacts.cfg文件中定义联系人和联系人组,在timeperiods.cfg中 定义监控时间段。最后我们在服务器监控配置文件中引用前面定义的元素来监控 服务器状态
  。
  =================================== =================================== ====
  =====
  下面引用配置文件中部分配置做说明:
  vi /usr/local/nagios/etc/resource.cfg
  # 定义$USER1$变量,设置插件路径
  $USER1$=/usr/local/nagios/libexec
  vi /usr/local/nagios/etc/objects/commands.cfg
  # 定义check-host-alive命令
  define command{
  command_name    check-host-alive# 命令名称
  command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w3000.0,80% -c 5000.0,100% -p 5
  }
  # 上面的$USER1$和$HOSTADDRESS$引用自已定义的配置文件。变量不需现定义 才能被引用。
  ###################################################################### ##
  #
  # 2008.11.18 add by Stone
  # NRPE COMMAND
  # 自己定义check_nrpe命令,此命令后接必需接一个参数,用于告诉远程服务器 上的NRPE daemon需要监控的内容,如check_swap参数为监控远程机器的交换分 区。
  ###################################################################### ##
  # 'check_nrpe ' command definition
  define command{
  command_name check_nrpe
  command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  }
  ## $HOSTADDRESS$和$ARG1$是nagios默认定义的宏。
  vi /usr/local/nagios/etc/objects/contacts.cfg
  # 定义联系人
  define contact{
  contact_name                  nagiosadmin             ;Short name of user
  use                           generic-contact         ;Inherit default values from generic-contact template (defined above)
  alias                           Nagios Admin            ; Fullname of user
  email                           test@gmaile.com         ;  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  mysql> grant select,insert,update,delete on *.* to nagios@"%">  Query OK, 0 rows affected (0.00 sec)
  ## 创建用户nagios,密码是nagios,他有select,insert,update,delete的权利
  mysql> create database nagios;
  Query OK, 1 row affected (0.00 sec)
  ## 创建nagios数据库
  # cd db/
  # ./installdb -u root -p ***** -d nagios
  ## 导入数据库表,-d 指定导入到哪个数据库
  # vim /usr/local/nagios/etc/nagios.cfg
  broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/et
  c/ndomod.cfg
  ## 添加上面这行
  # vim /usr/local/nagios/etc/ndo2db.cfg
  ## 编辑ndo2db的配置文件
  # more etc/ndo2db.cfg | grep -v "#" | grep -v "^$"
  ndo2db_user=nagios
  ndo2db_group=nagios
  socket_type=unix
  socket_name=/usr/local/nagios/var/ndo.sock
  tcp_port=5668
  db_servertype=mysql
  db_host=localhost
  db_port=3306
  db_name=nagios
  db_prefix=nagios_            ## 好像是指定以nagios开头的数据表
  db_user=nagios
  db_pass=nagios
  max_timedevents_age=1440
  max_systemcommands_age=10080
  max_servicechecks_age=10080
  max_hostchecks_age=10080
  max_eventhandlers_age=44640
  debug_level=0
  debug_verbosity=1
  debug_file=@localstatedir@/ndo2db.debug
  max_debug_file_size=1000000
  ## 这个是我的
  # /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
  ## 启动ndo2db
  # tail -f /var/log/message
  ndomod: Successfully reconnected to data sink!
  有上面的消息就说明OK
  如何用NDOUtils将多个Nagios实例的性能数据写入一个数据库?
  配置方法类似于上面的单实例单数据库模式,只是在装第二个实例时省去安装DB一步,并需要修改/usr/local/nagios/etc/ndomod.cfg中的实例名。
  实例名默认为instance_name=default,如果有多个实例必需修改成不同的实例名。
  如:instance_name=nagios1
  注意修改/usr/local/nagios/etc/ndo2db.cfg中数据库连接的相关配置。

页: [1]
查看完整版本: RHEL5+apache+mysql+nagios-jasonyong