???紵 发表于 2019-1-10 10:27:27

Nagios安装部署与 Cacti整合文档

  

  Nagios安装部署与 Cacti整合文档
  

  Nagios 是一款开源的免费网络监视工具,其功能强大,灵活性强。能有效监控Windows、Linux 和
  Unix 的主机状态,交换机路由器等网络设置,打印机等。Nagios 通常由一个主程序(Nagios)、一个
  插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和 NDOUtils)组成。Nagios
  的监控工作都是通过插件实现的,因此,Nagios 和 Nagios-plugins 是服务器端工作所必须的组件。
  而四个ADDON中
  (1)NRPE:用来在监控的远程Linux/Unix 主机上执行脚本插件以实现对这些主机资源的监控
  (2)NSCA:用来让被监控的远程 Linux/Unix 主机主动将监控信息发送给 Nagios 服务器(这在冗余
  监控模式中特别要用到)
  (3)NSClient++:用来监控Windows 主机时安装在Windows 主机上的组件
  (4 )NDOUtils:则用来将Nagios 的配置信息和各event 产生的数据存入数据库,以实现这些数据
  的快速检索和处理这四个ADDON(附件)中,NRPE 和 NSClient++工作于客户端,NDOUtils 工作于服
  务器端,而 NSCA 则需要同时安装在服务器端和客户端
  

  2.文档说明
  

  本文档规范网络监控系统安装流程及安装内容,供运维人员在部署新的运营环境时参考使用。
  

  3.Nagios 的安装
  

  3.1.安装基础支持套件和添加用户
  

  nagios需要一些基础支持套件才能运行,如apache,gcc,glibc,gd库等。
  

  #yum install httpd
  

  #yum install gcc
  

  #yum install glibc glibc-common
  

  #yum install gd gd-devel
  

  #yum install php      nagios3.2.0以后的版本必须安装php,nagios页面访问才正常
  

  #/usr/sbin/useradd -m nagios   添加一个名为nagios的用户用以专门跑nagios
  

  #passwd nagios               设置密码
  

  #/usr/sbin/groupadd nagcmd添加nagcmd用户组,用以通过web页面提交外部控制命令
  

  #/usr/sbin/usermod -a -G nagcmd nagios 将nagios用户加入nagcmd组
  

  #/usr/sbin/usermod -a -G nagcmd apache 将apache用户加入nagcmd组
  

  

  3.2.安装 nagios
  

  #mkdir ~/downloads
  #cd ~/downloads
  #wget http://nchc.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
  #wget http://nchc.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
  #cd ~/downloads
  #tar xzf nagios-3.2.1.tar.gz
  #cd nagios-3.2.1
  #./configure --with-command-group=nagcmd
  #make all
  #make install
  #make install-init
  #make install-config
  #make install-commandmode
  这时 nagios基本已经安装完成,默认安装后的配置文件用于启动 nagios是没有问题的。
  #vim /usr/local/nagios/etc/objects/contacts.cfg
  修改 nagiosadmin这行其中的邮件地址为你的email地址,以将报警邮件发到你的邮箱
  #make install-webconf      安装 nagios 的web 接口
  #htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  

  设置登陆web 界面时 HTTP 验证的账号密码
  #service httpd restart    启动 apache
  

  3.3.安装 nagios-plugins
  

  nagios-plugins 是 nagios 官方提供的一套插件程序,nagios 监控主机的功能其实都是通过执行插件程序来实现的。
  

  

  

  #cd ~/downloads
  

  #tar xzf nagios-plugins-1.4.15.tar.gz
  

  #cd nagios-plugins-1.4.1
  

  #./configure --with-nagios-user=nagios --with-nagios-group=nagios
  

  #make
  

  #make install
  

  

  安装插件,安装后所有插件命令将被安装到/usr/local/nagios/libexec目录下
  

  3.4.安装 nagios-snmp-plugins
  

  nagios-snmp-plugins 是一套用 Perl 编写的通过SNMP 方式监控主机的插件程序。
  

  #cd ~/downloads
  

  #wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz
  

  #tar xzf nagios-snmp-plugins.1.1.1.tgz
  

  #cd nagios_plugins
  

  

  

  配置check_snmp_int.pl 这些插件的使用时需要配置cpan,CPAN 是Comprehensive Perl Archive
  

  Network的缩写.。它是一个巨大的 Perl 软件收藏库,收集了大量有用的 Perl 模块(modules)
  

  及其相关的文件。这里主要是使用 Perl-Net-SNMP 模块。有两种方式安装:
  

  

  

  A )通过CPAN 来安装
  

  #perl -MCPAN -e shell
  

  cpan> install Net::SNMP
  

  

  

  B)手工安装
  

  

  

  首先去官方网站                     .cpan.org 下载以下几个模块
  

  Crypt::DES
  

  Digest::MD5
  

  Digest::SHA1
  

  Digest::HMAC
  

  Net::SNMP
  

  

  

  下载后对于每个模块依次按照下面的方式安装
  

  #tar zxf .tar.gz      表示模块名,具体请按上面提到的模块替换
  

  #cd                         表示模块名,具体请按上面提到的模块替换
  

  #perl Makefile.pl
  

  #make test
  

  #make install
  

  注意:Net::SNMP 模块必须在最后安装。至此 Net::SNMP 手动安装完毕
  

  #./install.sh
  

  执行nagios-snmp-plugins安装脚本,执行之后会将插件命令安装到/usr/local/nagios/libexec下
  

  3.5.其他设置
  

  至此 nagios 基本已经安装完毕,但这时还不能马上启动 nagios,需要以下设置。
  

  #chkconfig --add nagios    将 nagios 添加到服务中
  

  #chkconfig nagios on      设置服务为自启动
  

  #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  

  检测 nagios 的配置是否正确,在后面配置nagios 过程中我们为了检测配置的是否正确需要
  

  不断执行该命令来检查配置文件。
  

  #service nagios start      启动 nagios
  

  

  

  需要注意的是,Centos 默认打开了selinux 并且运行于强制安全模式,这将导致在打开 nagios
  

  的web 界面时会出现 Internet Server Error 的错误。
  

  #getenforce      查看是否运行于强制模式,结果为 1 表示是
  

  #setenforce 0    更改selinux 运行于宽容模式
  

  

  

  但是这个设置重启后就会失效,如需要重启后保持该设置需要修改/etc/sysconfig/selinux,将
  

  其中的SELINUX= enforcing 更改为SELINUX= permissive 并重启系统。当然你也可以改成disable
  

  禁用 selinux。
  

  

  

  也可以不更改selinux 的运行模式,解决办法为:
  

  #chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
  

  #chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
  

  4.nagios 的配置
  

  4.1.nagios目录结构
  

  

  

  nagios目录结构比较清晰,安装后下面一共有bin    etc    libexec    sbin    share    var 几个目录,其中配置文件都存
  

  放在 etc目录下,bin 下存放的是nagios 的相关命令,sbin 下存放的是通过web 方式外部执行的cgi,libexec 存放
  

  的是所有插件,而var 则存放的是 log 和 pid 文件等。而实现监控都是依靠执行插件来实现的。
  

  

  

  要实现监控,需要在 nagios 中定义一个service,在这个service中指定监控对象和监控命令以及报警机制等。Nagios
  

  的配置关系可以按照下图来做说明:
  

  

  

  nagios的配置也比较清晰明了,etc目录下默认有objects目录和一些配置文件,其中objects里放的是主配置文件nagios.cfg包含进去的配置文件。在nagios.cfg中既可以指定单独包含一个cfg,也可以指定一个包含目录,即
  

  该目录下所有的cfg 文件都会包含进来。
  

  4.2.nagios 的配置文件
  

  首先我们配置下主配置文件,为了目录的清晰我们自己建立一些目录来存放相关的配置文件,比如建立commands目录存放命令,建立services目录存放服务,建立hosts目录存放主机,在nagios.cfg 文件中找到cfg_file的部分,下面是一个示例,实际部署的时候可以按照你自己的情况去设置:
  

  

  

  cfg_file=/usr/local/nagios/etc/objects/commands.cfg      包含配置文件,下同
  

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

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

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

  cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
  

  cfg_file=/usr/local/nagios/etc/objects/switch.cfg
  

  cfg_dir=/usr/local/nagios/etc/services包含配置目录,目录下所有 cfg 文件将被包含;下同
  

  cfg_dir=/usr/local/nagios/etc/hosts
  

  cfg_dir=/usr/local/nagios/etc/commands
  

  cfg_dir=/usr/local/nagios/etc/switches
  

  cfg_dir=/usr/local/nagios/etc/routers
  

  nagios.cfg 其他地方可以暂不调整,该文件中具体参数请参考附件中的配置文件中文注释
  

  

  

  这里先说明一下,监控都是依靠插件去完成的,举个例子说明,如我们要监控 192.168.1.200 这台服务器的虚拟
  

  内存,当达到70%的时候状态为警告,达到90%的时候为严重。这个依靠check_snmp_storage.pl 这个插件来完成。
  

  

  

  #/usr/local/nagios/libexec/check_snmp_storage.pl-H192.168.1.200-Cmypublic -2 -m "^Virtual Memory$" -w 70 -c 90
  

  Virtual Memory: 21%used(531MB/2472MB) (source /usr/local/cacti/cacti.sql          导入 mysql 数据库
  

  mysql> grant all privileges on cacti.* to cacti@localhost identified by "cacti";
  

  Query OK, 0 rows affected (0.03 sec)
  

  

  

  添加一个数据库账号cacti密码为 cacti 用以访问 cacti 库
  

  Mysql>flush privileges;      刷新权限信息
  

  

  

  Apache 设置
  

  #vim /etc/http/conf.d/cacti.conf      编辑cacti 站点的配置文件,文件内容如下:
  

  Alias /cacti "/var/www/html/cacti"
  

  

  

  
  

  Options FollowSymLinks MultiViews
  

  AllowOverride None
  

  Order allow,deny
  

  Allow from all
  

  
  

  修改 cacti 的配置文件
  

  #vim /usr/local/wwwroot/cacti/include/config.php
  

  /* load up old style plugins here */
  

  $plugins = array();
  

  $url_path = "/cacti/";
  

  修改其中的数据库连接信息,设置好数据库主机地址,用户,密码信息。
  

  #chmod 777 -R rra    log
  

  

  

  至此安装完成,访问 http://ip/cacti/install 根据提示安装 cacti                                        (ip 换成你对应的主机 ip 地址)
  

  

  

  接下来安装cacti 的插件管理
  

  #cd ~/download/
  

  #wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
  

  #unzip cacti-plugin-0.8.7d-PA-v2.4.zip
  

  #mysql –u root –p cacti /root/sh/nagios_check.log /dev/null 2>&1
  

  7.3.配置飞信机器人报警
  

  7.3.1.   Commands.cfg 配置文件添加如下内容:
  

  

  

  #host-notify-by-sms
  

  define command {
  

  command_name host-notify-by-sms
  

  command_line          /usr/local/nagios/libexec/sms/sendsms.sh                  13800000000         "   **    $NOTIFICATIONTYPE$            Host   Alert:
  

  $HOSTNAME$ is AT: $DATE$ $HOSTSTATE$ ** "
  

  }
  

  

  

  #service-notify-by-sms
  

  define command {
  

  command_name service-notify-by-sms
  

  command_line                      /usr/local/nagios/libexec/sms/sendsms.sh                           13800000000                      "            ***
  

  $NOTIFICATIONTYPE$                  $HOSTNAME$                                     $DATE$            $TIME$             $SERVICEDESC$               is
  

  $SERVICESTATE$ info:$SERVICEOUTPUT$ *** "
  

  }
  

  7.3.2.   Contacts.cfg 配置添加:
  

  

  

  

  

  define contact{
  

  contact_name sms-members
  

  use sms-mail-contact
  

  alias Nagios Admin SMS
  

  email      755792951@139.com
  

  pager      13800000000
  

  }
  

  

  

  define contactgroup{
  

  contactgroup_name    admins
  

  alias Nagios Administrators
  

  members sms-members
  

  }
  

  7.3.3.   Templates.cfg
  

  define contact{
  

  name                                                      sms-contact
  

  service_notification_period          24x7
  

  host_notification_period                24x7
  

  service_notification_options      w,u,c,r,f,s
  

  host_notification_options            d,u,r,f,s
  

  service_notification_commands      notify-service-by-sms
  

  host_notification_commands            notify-host-by-sms
  

  register                                                0
  

  }
  

  

  

  7.3.4.   修改展示页面监控图片大小:      /usr/local/nagios/etc/pnp/config.php
  

  #    vim    /usr/local/nagios/etc/pnp/config.php
  

  $conf['graph_width'] = "500";
  

  $conf['graph_height'] = "100";
  

  这两行是定义监控页面大小比例的。RRDTool graph Image Size
  

  

  

  

  

  

  8.Troubleshooting
  

  

  

  8.1.web 界面修改某个服务时报错
  

  例如对某个服务进行临时安排其执行时间,或者不让它发警告,web 页面上都有这样的设置.但是常
  

  常会有错误信息如下:
  

  Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update!
  

  The permissions on the external command file and/or directory may be incorrect. Read the FAQs on how
  

  to setup proper permissions.
  

  An error occurred while attempting to commit your command for processing.
  

  

  

  关于这部分在 nagios.cfg 中有下面的内容
  

  # EXTERNAL COMMAND FILE
  

  # This is the file that Nagios checks for external command requests.
  

  # It is also where the command CGI will write commands that are submitted
  

  # by users, so it must be writeable by the user that the web server
  

  # is running as (usually 'nobody').Permissions should be set at the
  

  # directory level instead of on the file, as the file is deleted every
  

  # time its contents are processed.
  

  这段话的核心意思是 apache 的运行用户要有对文件写的权限.权限应该设置在目录上,因为每次文件的内容被处理后文
  

  件就会被删掉
  

  

  

  command_file=/usr/local/nagios/var/rw/nagios.cmd
  

  本来将apache2 运行的用户 apache 加到 nagios 组就应该可以了的
  

  但是这个却不行,就将 rw 这个目录及其子文件的权限改了 777,这样就可以了.
  

  8.2.点击 host,service 选项时,结果无法显示
  

  安装 nagios 后,访问页面可以,点击 host,service选项时,都是无法显示。后台日志
  

  报错:
  

   Premature end of script headers: s
  

  tatus.cgi, referer: http://public.ipaddr/nagios/side.php
  

   (13)Permission denied: exec of '/u
  

  sr/local/nagios/sbin/status.cgi' failed, referer: http://public.ipaddr/nagios/side.php
  

  

  

  

  

  解决方法:原因是因为开启了 selinux,getenforce
  

  令 SELinux 处于容许模式
  

  setenforce 0
  

  如果要永久性更变它,需要更改/etc/selinux/config 里的设置并重启系统。
  

  不关闭SELinux 或是永久性变更它的方法是让CGI 模块在 SELinux 下指定强制目标模式:
  

  chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
  

  chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
  

  关闭即可。
  

  8.3.    nagios3.2.0 以后,安装nagios 在访问 http://ip/nagios 时出现如下错
  

  误提示:
  

  

  

  解决方法如下:nagios3.2.0将页面从之前的 html换成了 php,首次安装需要先决条件php
  

  yum install php 即可
  

  8.4.出现pnp 小太阳图标,点击报错如下:
  

  Initalising
  

  Using /usr/local/nagios/share/perfdata/
  

  RRDTool /usr/bin/rrdtool found.
  

  RRDTool /usr/bin/rrdtool is executable
  

  PHP Function proc_open is enabled
  

  PHP Function fpassthru is enabled
  

  PHP Function xml_parser_create is enabled
  

  PHP zlib Support found.
  

  PHP GD Support can’t found.
  

  

  

  解决方法:yum    –y      install      php-gd
  

  # service httpd restart
  

  再次点击小太阳图标时,出现如下页面,则表示正常:
  

  

  

  

  

  

  

  

  8.5.安装 NAGIOS 时发现有StatusMap、AlertHistogram 打不开链接,提示找
  

  不到statusmap.cgi 和 histogram.cgi.
  

  解决办法:
  

  原因一:因为gd-devel 没有安装的问题,造成 NAGIOS 在编译时不生成这 statusmap.cgi
  

  原因二:NAGIOS 在编译在前,gd-devel 安装在后,造成不生成这statusmap.cgi
  

  

  

  8.6.后台 apache日志报错如下:
  

  # tail -f /etc/httpd/logs/error_log
  

   suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
  

   Digest: generating secret for digest authentication ...
  

   Digest: done
  

   Apache/2.2.3 (CentOS) configured -- resuming normal operations
  

   Directory index forbidden by Options directive: /var/                              /html/
  

   Directory index forbidden by Options directive: /var/                              /html/
  

   Directory index forbidden by Options directive: /var/                              /html/
  

  

  

  

  

  监控 http 服务出现响应超时的情况,如下所示:
  

  # /usr/local/nagios/libexec/check_http -I localhost -w 15 -c 20 -t 30
  

  HTTP      WARNING:         HTTP/1.1      403      Forbidden         -   5240       bytes       in   0.003       second      response      time
  

  |time=0.002991s;15.000000;20.000000;0.000000 size=5240B;;;0
  

  

  

  解决方法:
  

  #    echo -n none > /var/            /html/index.html
  

  8.7.进行编译安装 ndoutils-1.4b7 时,报错如下:
  

  #./db/installdb -ucacti -pcacti -d cacti
  

  DBD::mysql::db do failed: Table 'cacti.nagios_dbversion' doesn't exist at ./db/installdb line 51.
  

  

  

  命令使用错误,解决方法如下:
  

  

  

  # ./installdb -ucacti -pcacti -h localhost -d cacti      //加上–h    localhost 参数
  

  DBD::mysql::db do failed: Table 'cacti.nagios_dbversion' doesn't exist at ./installdb line 51.
  

  ** Creating tables for version 1.4b7
  

  Using mysql.sql for installation...
  

  ** Updating table nagios_dbversion
  

  Done!
  

  8.8.安装后,查看/usr/local/nagios/var/nagios.log日志,报错如下:
  

  #tail –f /usr/local/nagios/var/nagios.log
  

  

  

   Error: Could not safely copy module '/usr/local/nagios/bin/ndomod.o'.    The module will not be loaded:
  

  No such file or directory
  

   Auto-save of retention data completed successfully.
  

  

  

  原因为:前面安装 ndoutils-1.4b7,少了一个操作步骤。解决办法如下:
  

  # mv /usr/local/nagios/bin/ndomod-3x.o /usr/local/nagios/bin/ndomod.o    //新添加
  

  

  

  正确的日志如下:
  

  

  

  

  # tail -f /usr/local/nagios/var/nagios.log
  

   Event broker module '/usr/local/nagios/bin/ndomod.o' deinitialized successfully.
  

   Nagios 3.2.1 starting... (PID=13489)
  

   Local time is Tue Feb 22 11:52:15 CST 2011
  

   LOG VERSION: 2.0
  

     ndomod:   NDOMOD   1.4b9(10-27-2009)   Copyright   (c)2009   Nagios   Core   Development   Team   and
  

  Community Contributors
  

   ndomod: Successfully connected to data sink.    0 queued items to flush.
  

   Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.
  

   Auto-save of retention data completed successfully.
  

   Auto-save of retention data completed successfully.
  

   Auto-save of retention data completed successfully.
  

  

  

  8.9.有时开机后,后台报错如下:
  

  # tail -f /usr/local/nagios/var/nagios.log
  

  

  

   ndomod: Still unable to connect to data sink.    23512 items lost, 5000 queued items to flush.
  

   ndomod: Still unable to connect to data sink.    23590 items lost, 5000 queued items to flush.
  

  

  

  以上报错一般是由于ndo2db 没有启动,手动启动即可:
  

  #/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg      启动 ndo2db
  

  

  

  8.10. 访问 npc 插件页面时,主机图标为红色叉号:
  

  解决办法如下:
  

  

  

  #    cp -r /usr/local/nagios/share/images/logos/logo.gif /var/                        /html/cacti/plugins/npc/logo.gif
  

  重新刷新页面即可解决问题。正常页面为:
  

  

  

  

  

  

  

  

  

  

  

  

  8.11. 访问点击小太阳后,报错如下:
  

  

  

  

  

  Hostnane is not set:是 pnp 的提示,pnp 需要以以下方式访问index.php?host=$HOSTNAME$&srv=$SERVICEDESC$或
  

  者 index.php?host=$HOSTNAME;
  

  而通过脚本推送时,变量发生了变化,生成的文件如下:
  

  #define_host
  

  define host {
  

  name            host-pnp
  

  register      0
  

  process_perf_data    1
  

  action_url /nagios/pnp/index.php?host=nagios.com.cn$      这样不正确的
  

  action_url /nagios/pnp/index.php?host=$HOSTNAME$      //这是正确格式
  

  }
  

  #define_service
  

  define service {
  

  name            srv-pnp
  

  register      0
  

  process_perf_data    1
  

  action_url /nagios/pnp/index.php?host=nagios.com.cn$&srv=$    这样是不正确的
  

  action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$    //正确格式
  

  }
  |源自 Treasure 博客:treasure.blog.chinaunix.net | Troubleshooting                                                                           29
  

  

  




页: [1]
查看完整版本: Nagios安装部署与 Cacti整合文档