Nagios 总结

作者: print("") 分类: 监控 发布时间: 2017-04-21 09:46

Nagios 介绍Nagios监控工具介绍
Nagios 是一款开源的免费网络及服务的监控工具、其功能强大、灵活性能、能有效监控Windows、linux和unix 的主机各种状态信息、交换机、路由器等网络设置、主机端口及URL服务等、根据业务的不同业务故障级别发出告警信息给管理员、当故障恢复时也会发出恢复消息、官放网站地址 http://www.nagios.org Nagios的特点:

  • 监控网络服务(SMTP、POP3、HTTP、TCP、PING等)
  • 监控主机资源(CPU负载、IO状况、虚拟及正式内存及磁盘利用率等)
  • 简单地插件设计模式使得用户可以方便的定制符合自己的服务的检测方法:
  • 并行服务检测机制
  • 具备定义网络分层结构的能力、用parnet 主机定义来表达网络主机之间的关系,这种关机可被用来发现和明晰主机宕机或不可达状态。
  • 当服务或主机问题产生与解决时发出警告发送给联系人(mail/im/sms/sound.)
  • 具备定义时间句柄功能、它可以在主机或服务的事件发生时获取更多问题定位;
  • 可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等:

 
Nagios监控工具原理图 第一部分 nagios服务端安装

管理IP地址 角色 备注
192.168.132.157 Nagios
192.168.132.158 Lamp服务器 被监控的客户端服务器
192.168.132.159 Lamp服务器 被监控的客户端服务器

 
 
[root@mail2 ~]# echo “export LC_ALL=C” >>/etc/profile
[root@mail2 ~]#
[root@mail2 ~]#
[root@mail2 ~]#
[root@mail2 ~]# source /etc/profile
[root@mail2 ~]# echo $LC_ALL
C
[root@mail2 ~]#
同步时间
[root@mail2 ~]# /usr/sbin/ntpdate pool.ntp.org
或者添加一个计划任务
echo ‘*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1’ >>/vary/spool/cron/root
[root@4]# crontab -l
*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
 
[root@mail2 apache]# groupadd nagios
[root@mail2 apache]# useradd -s /sbin/nologin -M nagios -g nagios
[root@mail2 apache]# usermod -a -G nagios apache
[root@mail2 apache]#
安装包的下载地址
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz#_ga=1.23686909.674890907.1491741440 这个是nagios 的主文件包。
 
wget https://nagios-plugins.org/download/nagios-plugins-2.1.4.tar.gz#_ga=1.22584828.674890907.1491741440 安装依赖包 如果是公司内部环境中,直接用yum安装即可,如果非要用编译安装的方式西面会为你详细写入
yum install httpd php* mysql*
yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel 查看nagios 目录的权限
# ll -d /usr/local/nagios/ 5.3 编译安装Nagios
# tar zxvf nagios-4.4.1.tar.gz
# cd nagios-4.4.1
# ./configure –prefix=/usr/local/nagios –with-command-group=nagios # make all # make install # make install-init # make install-commandmode # make install-config # make install-webconfig   ####这个webconfig 是将nagios web 界面的配置文件导入到/etc/httpc/conf.d/nagios.conf中。在这个目录里面有nagios的一个验证密码的格式。和存放位置。如果是编译安装apache需要自己写一个虚拟目录
设置开机自启动
# chkconfig –add nagios
# chkconfig –level 35 nagios on
# chkconfig –list nagios
 
’ 5.4 验证程序是否被正确安装
切换目录到安装路径(这里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 这五个目录,如果存在则可以表明程序被正确的安装到系统了。Nagios 各个目录用途说明如下:

bin Nagios 可执行程序所在目录
etc Nagios 配置文件所在目录
sbin Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录
share Nagios网页文件所在的目录
libexec Nagios 外部插件所在目录
var Nagios 日志文件、lock 等文件所在的目录
var/archives Nagios 日志自动归档目录
var/rw 用来存放外部命令文件的目录

5.5 安装Nagios 插件
# tar zxvf nagios-plugins-2.1.4.tar.gz
# cd nagios-plugins-2.1.4
# ./configure –prefix=/usr/local/nagios
# make && make install 5.6 配置Apache和Php
在上面已经yum安装了apache和PHP现在需要把让apache能解析PHP加入PHP的支持

  1. 配置apache
    找到apache 的配置文件/etc/httpd/conf/httpd.conf
    找到:

User daemon
Group daemon
 
修改为
User nagios
Group nagios
然后找到
<IfModule dir_module>   DirectoryIndex index.html </IfModule>
修改为
<IfModule dir_module>   DirectoryIndex index.html index.php </IfModule>
接着增加如下内容:
AddType application/x-httpd-php .php
 
保存推出后直接启动http在/var/www/html/中添加一个index.php文件
Cat /var/www/html/index.php
<?php
Phpinfo();
?>
后面在浏览器中访问一下。如果访问出现了一个php的一个参数。现在执行下一步操作。
/htpasswd -c /etc/httpd/conf.d/nagios.users liang
输入密码。
输入密码。
这样就在/etc/httpd/conf.d/目录下创建了一个htpasswd 验证文件,当通过http://192.168.132.157/nagios/ 访问时就需要输入用户名和密码了。

  1. 启动apache 服务

# service httpd restart
到这里nagios 的安装也就基本完成了,你可以通过web来访问了。、 编译安装的LAMP的配置方法
Apache 和Php 不是安装nagios 所必须的,但是nagios提供了web监控界面,通过web监控界面可以清晰的看到被监控主机、资源的运行状态,因此,安装一个web服务是很必要的。
需要注意的是,nagios在nagios3.1.x版本以后,配置web监控界面时需要php的支持。这里我们下载的nagios版本为nagios-3.4.3,因此在编译安装完成apache后,还需要编译php模块,这里选取的php版本为php5.4.10。

  1. 安装Apache

# wget http://labs.mop.com/apache-mirror//httpd/httpd-2.2.23.tar.gz
# tar zxvf httpd-2.2.23.tar.gz
# cd httpd-2.2.23
# ./configure –prefix=/usr/local/apache2
# make && make install 若出现错误: 则在编译时入加 –with-included-apr 即可解决。

  1. 安装Php

# wget http://cn2.php.net/distributions/php-5.4.10.tar.gz
# tar zxvf php-5.4.10.tar.gz
# cd php-5.4.10
# ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2/bin/apxs # make && make install
 

  1. 配置apache
    找到apache 的配置文件/usr/local/apache2/conf/httpd.conf
    找到:

User daemon
Group daemon
修改为
User nagios
Group nagios
然后找到
<IfModule dir_module>   DirectoryIndex index.html </IfModule>
修改为
<IfModule dir_module>   DirectoryIndex index.html index.php </IfModule>
接着增加如下内容:
AddType application/x-httpd-php .php
为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf 文件最后添加如下信息:
ScriptAlias /nagios/cgi-bin “/usr/local/nagios/sbin”
<Directory “/usr/local/nagios/sbin”>
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios “/usr/local/nagios/share”
<Directory “/usr/local/nagios/share”>
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName “nagios Access”
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>

  1. 创建apache目录验证文件
  2. 在上面的配置中,指定了目录验证文件htpasswd,下面要创建这个文件:# /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd david
  3. 这样就在/usr/local/nagios/etc 目录下创建了一个htpasswd 验证文件,当通过http://192.168.132.157/nagios/ 访问时就需要输入用户名和密码了。

    1. 查看认证文件的内容

    # cat /usr/local/nagios/etc/htpasswd

    1. 启动apache 服务

    # /usr/local/apache2/bin/apachectl start
    到这里nagios 的安装也就基本完成了,你可以通过web来访问了。

  4. Nagios Server的配置说明首先说明一下Nagios server中的文件说明、
    [root@mail2 nagios]# ll
    bin      ####Nagios可执行文件所在目录
    etc      ####Nagios配置文件
    libexec  ##### Nagios 外部插件所在目录
    sbin     ##### Nagios CGI 文件所在目录、也就是执行外部命令所需文件所在的目录share    ###### Nagios网页文件所在位置
    var      ##### Nagios日志文件所在位置
     
    etc/
    |– cgi.cfg      #####控制CGI访问的配置文件
    |– htpasswd.users  #####apache 访问用户文件
    |– nagios.cfg    #####Ngios主配置文件
    |– objects     ##### objects是一个目录,在此目录下有很多模板
    |   |– commands.cfg   ######命令配置文件、其中定义定义的命令可以被其他配置文件引用
    |   |– contacts.cfg  #####定义联系人和联系人组的配置文件
    |   |– localhost.cfg  #####定义监控本地主机的配置文件
    |   |– printer.cfg     ####定义监控打印机的一个配置文件模板、默认没有启用此文件
    |   |– switch.cfg     ####监控路由器的一个配置文件模板、默认没有被启用
    |   |– templates.cfg  ####定义主机和服务的一个模板配置文件、可以在其他配置中被引用
    |   |– timeperiods.cfg ####定义Nagios监控时间端的配置文件
    |   `– windows.cfg  #####监控windows 主机的一个配置文件模板、默认没有启用此文件
    `– resource.cfg   变量定义文件、又称为资源文件,在此文件定义变量、以便由其他的配置文件引用、如$USER1$
     
    在nagios.cfg 中既可以指定单独包含一个cfg文件、也可以指定包含一个目录、即该目录下所有的cfg文件杜辉包含进来、为了目录结构看起来更清晰和批量部署服务的需要、我们把主配置文件包含的配置文件修改如下:

    配置文件名称 说明
    Commands.cfg 存放命令相关配置(也可以指定commands目录)
    servers.cfg 存放服务相关配置(上百台以上可以指定servers目录)(默认不存在)
    hosts.cfg 存放主机相关配置(上百台以上可以指定hosts目录)(默认不存在)
    Contacts.cfg 存放报警联系人相关配置
    timeperiods.cfg 存放报警周期时间等相关配置
    templates.cfg 模板配置文件

    Nagios就是通过这些.cfg文件做监控的。默认是没有hosts.cfg和services.cfg文件的、但是默认是localhost.cfg,显示说明一下hosts.cfg和servers.cfg两个文件的语法。 3.3 hosts.cfg 中主机定义部分配置参数详解。
    define host {      ##define host 为关键字,意思是定义主机、主机内容用一对大括号括起来
    use                      linux-server     ####定义主机使用的模板、具体参数templates.cfg
    host_name                     197-lkq-1-1      ####主机名称、根据服务功能随意定义
    alias                         197              ####主机别名,同上
    address                       192.168.1.1         ####被监控的IP
    check_command           check-host-alive #####检测主机存活命令
    max_check_attempts       3                ####故障后、最大尝试检测次数
    normal_check_interval    2                 #####正常的检查间隔。默认单位为分钟
    retry_check_interval     2                 ####故障后重试的检查间隔、默认单位分钟
    check_period             24×7             #####检查周期 24×7具体参见timeperiods.cfg
    notification_interval    300              ####故障后、两次报警的通知间隔、默认单位分钟
    notification_period      24×7             #### 一天之内通知的周期、比如全天、还是半天等
    notification_options     d,u,r            #### 主机状态通知、d-down 、u 不可到达、r 恢复
    contact_groups           admins          ####报警到admins用户组
    }   #####这个括号不能丢了。
    3.3.1 hosts.cfg中主机定义部分批量模块化配置
    主机的配置也可以值配置关键选项、多数选项可采取linux-server 模板的默认值然后所有机器统一采用这种默认值,看起来更加简单方便,如下
    #host liang
    define host {
    use            linux-server
    host_name      liang-1
    alias          liang-1
    address        192.168.132.163
    }
    define host {
    use            linux-server
    host_name      liang-2
    alias          liang-2
    address        192.168.132.164
    }
     
     
    3.4 services.cfg 中服务定义部分配置参数详解
    Serves.cfg配置文件的service配置参数详细说明
    define server {    ###define service为关键字、意思是定义一个服务、服务内容用一对大括号起来
    use       generic-service  ####定义该服务使用的模板、具体参用templates.cfg
    host_name  liang_1    ####被监控的主机名
    service_description Current Load    ####报警服务描述
    check_command   check_nrpe!check_load   ####检查服务器的命令。这个很关键、注意被动服务的监控均有check_nrpe调用
    max_check_attempts  2                    ####故障后、最大尝试检测次数
    normal_check_interval    2                 #####正常的检查间隔。默认单位为分钟
    retry_check_interval     2                 ####故障后重试的检查间隔、默认单位分钟
    check_period             24×7             #####检查周期 24×7具体参见timeperiods.cfg
    notification_interval    300              ####故障后、两次报警的通知间隔、默认单位分钟
    notification_period      24×7             #### 一天之内通知的周期、比如全天、还是半天等
    notification_options     w,u,c,r          #### 主机状态通知、d-down 、u 不可到达、r 恢复
    contact_groups           admins           ####报警到admins用户组
    }
     
    3.4.1 磁盘分区监控0【被动监控】
    Define service {
    use                           generic-service
    host_name                a,b,c,b   ### 这里可以指定多台机器、通过逗号隔开
    service_description      Disk Partition
    check_command            check_nrpe!check_disk
    max_check_attempts       8
    normal_check_interval    3
    retry_check_interval     2
    check_period             24×7
    notification_interval    360
    notification_period      24×7
    notification_options     w,u,c,r
    contact_groups           admins  ####硬盘的报警指定的合理些,可值报邮件不报短信了
    process_perf_data        1
    } 这是这两个文件的语法。但是默认的话主配置文件中是没有这两个参数的配置的。需要自己建立这两个文件的参数。现在做一个最简单的监控。 模拟外部监控 首先备份一份objects目录。
    [root@mail2 etc]# cd /usr/local/nagios/etc
    [root@mail2 etc]# cp -a objects/ objects_bak/
    [root@mail2 etc]# cd objects/
    [root@mail2 objects]# cat hosts.cfg
    define host{
    use                     linux-server       #####这个是在templates.cfg中的一个模块块
    host_name               web            ####这是代表这主机,如果有多台。可以用逗号隔开
    alias                   web             ####主机别名
    address                 192.168.132.174      #####主机的IP地址。
    }
     
    define host{
    use                     linux-server    #####这个是在templates.cfg中的一个模块块
    host_name               mysql
    alias                   mysql
    address                 192.168.132.175
    }
     
    define hostgroup{
    hostgroup_name  linux-servers
    alias           Linux Servers
    members         web,mysql
    }
    配置services.cfg 监控服务配置
    [root@mail2 objects]# cat services.cfg
    #######################web ###############
    define service {
    use                     local-service   #####这个是在templates.cfg中的一个模块块
    host_name               web,mysql        ####这是代表这主机,如果有多台。可以用逗号隔开
    service_description     http
    check_command           check_http      ####这个是在/usr/local/nagios/libexec/是命令
    }
     
    define service {
    use                     local-service    #####这个是在templates.cfg中的一个模块块
    host_name               web,mysql         ####这是代表这主机,如果有多台。可以用逗号隔开
    service_description     ssh
    check_command           check_ssh!22         ###check_ssh 后的感叹号代表着空格或者 &一样的意思
    }
     
     
    检查一下语法
    [root@mail2 etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
     
    Nagios Core 3.2.3
    Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
    Copyright (c) 1999-2009 Ethan Galstad
    Last Modified: 10-03-2010
    License: GPL
     
    Website: http://www.nagios.org
    Reading configuration data…
    Read main config file okay…
    Processing object config file ‘/usr/local/nagios/etc/objects/commands.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/objects/contacts.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/objects/timeperiods.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/objects/templates.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/hosts.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/services.cfg’…
    Read object config files okay…
     
    Running pre-flight check on configuration data…
     
    Checking services…
    Checked 8 services.
    Checking hosts…
    Checked 2 hosts.
    Checking host groups…
    Checked 1 host groups.
    Checking service groups…
    Checked 0 service groups.
    Checking contacts…
    Checked 1 contacts.
    Checking contact groups…
    Checked 1 contact groups.
    Checking service escalations…
    Checked 0 service escalations.
    Checking service dependencies…
    Checked 0 service dependencies.
    Checking host escalations…
    Checked 0 host escalations.
    Checking host dependencies…
    Checked 0 host dependencies.
    Checking commands…
    Checked 25 commands.
    Checking time periods…
    Checked 5 time periods.
    Checking for circular paths between hosts…
    Checking for circular host and service dependencies…
    Checking global event handlers…
    Checking obsessive compulsive processor commands…
    Checking misc settings…
     
    Total Warnings: 0  ####如果这个不为0 可以不用理会
    Total Errors:   0  ####如果这个为0 需要解决掉。不然启动不成功
     
    Things look okay – No serious problems were detected during the pre-flight check
    启动一下nagios服务
     
    [root@mail2 etc]# /etc/init.d/nagios restart
    Running configuration check…done.
    Stopping nagios: done.
    Starting nagios:This account is currently not available.
    done.
    添加CGI控制权限
    [root@mail2 etc]# sed -i s#nagiosadmin#liang# cgi.cfg
    [root@mail2 etc]# grep liang cgi.cfg
    default_user_name=liang
    authorized_for_system_information=liang
    authorized_for_configuration_information=liang
    authorized_for_system_commands=liang
    authorized_for_all_services=liang
    authorized_for_all_hosts=liang
    authorized_for_all_service_commands=liang
    authorized_for_all_host_commands=liang
    [root@mail2 etc]#
     
    如果没有添加apache访问用户的权限的话,就再添加一次,上文中我已经添加了一个liang用户现在在演示一下
    [root@mail2 etc]# htpasswd /usr/local/nagios/etc/htpasswd.users liang
    New password:
    Re-type new password:
    Adding password for user liang
    [root@mail2 etc]#

  5. 修改启动脚本的配置
    [root@mail2 objects]# vim /etc/init.d/nagios +177
    #$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    $NagiosBin -v $NagiosCfgFile
    后面在尝试一下检查语法
    [root@mail2 objects]# /etc/init.d/nagios checkconfig
    把定义为空去掉 Nagios 内部监控 首先配置nagios客户端的配置
    yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
    yum install httpd php php-fpm
    service httpd restart
    service php-fpm restart
    [root@mail2 ~]# echo “export LC_ALL=C” >>/etc/profile
    [root@mail2 ~]# source /etc/profile
    [root@mail2 ~]# echo $LC_ALL
    [root@mail2 ~]# /usr/sbin/ntpdate pool.ntp.org
    [root@4 nagios-plugins-2.1.4]# tar zxf nagios-plugins-2.1.4.tar.gz
    [root@4 nagios-plugins-2.1.4]# cd nagios-plugins-2.1.4
    [root@4 nagios-plugins-2.1.4]# ./configure –with-nagios-user=nagios –with-nagios-group=nagios –enable-perl-modules
    [root@4 nagios-plugins-2.1.4]# make && make install
    [root@4 nagios-plugins-2.1.4]# ls /usr/local/nagios/libexec/|wc -l
    60
    tar zxf nrpe-2.12.tar.gz
    cd nrpe-2.12
    ./configure
    make all
    make install-plugin
    make install-daemon
    make install-daemon-config
    cd /usr/local/nagios/etc
    ls
    ###vim nrpe.cfg +79
    allowed_hosts=127.0.0.1 修改成
    allowed_hosts=127.0.0.1,192.168.132.162
    ######客户端启动nrpe
    [root@mail2 etc]#  /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    [root@mail2 etc]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
    NRPE v2.12
    客户端设置开机启动
    echo “/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    ” >>/etc/rc.local
    显示版本表示已经成功了。
    配置一下nrpe.conf
    [root@4 ~]# cat /usr/local/nagios/etc/nrpe.cfg
    199  command[check_users_1]=/usr/local/nagios/libexec/check_users -w 5 -c 10
    200  command[check_load_1]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
    201  command[check_sad5]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
    202  command[check_zombie_procs_1]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
    203  command[check_total_procs_1]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
    204  command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20 -c 10
    保存之后重启
    [root@mail2 etc]#  /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    服务端的配置
    配置主配置文件  添加两行hosts的文件和servers文件的位置路径
    [root@mail2 ~]# vim /usr/local/nagios/etc/nagios.cfg +34
    cfg_file=/usr/local/nagios/etc/hosts.cfg
    cfg_file=/usr/local/nagios/etc/services.cfg
     
    备份一份objects目录。
    [root@mail2 etc]# cd /usr/local/nagios/etc
    [root@mail2 etc]# cp -a objects/ objects_bak/
    [root@mail2 etc]# cd objects/
    [root@mail2 objects]# cat hosts.cfg
    define host{
    use                     linux-server
    host_name               174-lamp-1
    alias                   174-lamp-1
    address                 192.168.132.174
    }
     
    define host{
    use                     linux-server
    host_name               175-lamp-1
    alias                   175-lamp-1
    address                 192.168.132.175
    }
     
    define hostgroup{
    hostgroup_name  linux-servers
    alias           Linux Servers
    members         174-lamp-1,175-lamp-1
    }
     
     
    配置services.cfg 监控服务配置
    [root@mail2 objects]# cat services.cfg
    #######################web ###############
    define service {
    use                     local-service
    host_name               web,mysql
    service_description     SSH
    check_command           check_nrpe!check_users    ###这个是客户端nrpe中的配置的一个参数
    }
     
    define service {
    use                     local-service
    host_name               web,mysql
    service_description     loca
    check_command           check_nrpe!check_load
    }
     
     
    define service {
    use                     local-service
    host_name               web,mysql
    service_description     hda1
    check_command           check_nrpe!check_swap
    }
     
     
    define service {
    use                     local-service
    host_name               web,mysql
    service_description     zombie
    check_command           check_nrpe!check_zombie_procs
    }
     
    #####################mysql###################
     
    添加check_nrpe 的参数
    [root@mail2 etc]# vim objects/commands.cfg
    添加一行nrpe的一个参数
    define command{
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
    }
    检查一下语法
    [root@mail2 etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
     
    Nagios Core 3.2.3
    Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors
    Copyright (c) 1999-2009 Ethan Galstad
    Last Modified: 10-03-2010
    License: GPL
     
    Website: http://www.nagios.org
    Reading configuration data…
    Read main config file okay…
    Processing object config file ‘/usr/local/nagios/etc/objects/commands.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/objects/contacts.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/objects/timeperiods.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/objects/templates.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/hosts.cfg’…
    Processing object config file ‘/usr/local/nagios/etc/services.cfg’…
    Read object config files okay…
     
    Running pre-flight check on configuration data…
     
    Checking services…
    Checked 8 services.
    Checking hosts…
    Checked 2 hosts.
    Checking host groups…
    Checked 1 host groups.
    Checking service groups…
    Checked 0 service groups.
    Checking contacts…
    Checked 1 contacts.
    Checking contact groups…
    Checked 1 contact groups.
    Checking service escalations…
    Checked 0 service escalations.
    Checking service dependencies…
    Checked 0 service dependencies.
    Checking host escalations…
    Checked 0 host escalations.
    Checking host dependencies…
    Checked 0 host dependencies.
    Checking commands…
    Checked 25 commands.
    Checking time periods…
    Checked 5 time periods.
    Checking for circular paths between hosts…
    Checking for circular host and service dependencies…
    Checking global event handlers…
    Checking obsessive compulsive processor commands…
    Checking misc settings…
     
    Total Warnings: 0  ####如果这个不为0 可以不用理会
    Total Errors:   0  ####如果这个为0 需要解决掉。不然启动不成功
     
    Things look okay – No serious problems were detected during the pre-flight check
    启动一下nagios服务
     
    [root@mail2 etc]# /etc/init.d/nagios restart
    Running configuration check…done.
    Stopping nagios: done.
    Starting nagios:This account is currently not available.
    done.
    添加CGI控制权限
    [root@mail2 etc]# sed -i s#nagiosadmin#liang# cgi.cfg
    [root@mail2 etc]# grep liang cgi.cfg
    default_user_name=liang
    authorized_for_system_information=liang
    authorized_for_configuration_information=liang
    authorized_for_system_commands=liang
    authorized_for_all_services=liang
    authorized_for_all_hosts=liang
    authorized_for_all_service_commands=liang
    authorized_for_all_host_commands=liang
    [root@mail2 etc]#
     
    如果没有添加apache访问用户的权限的话,就再添加一次,上文中我已经添加了一个liang用户现在在演示一下
    [root@mail2 etc]# htpasswd /usr/local/nagios/etc/htpasswd.users liang
    New password:
    Re-type new password:
    Adding password for user liang
    [root@mail2 etc]#

Nagios 邮件自动报警
nagios发警告邮件是采用本机的smtp服务,可以查看commands.cfg中关于发邮件的命令的定义,使用本机的mail命令,这就需要开启本机的smtp服务,为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口
现在我们的网络里面有一个邮件服务器,所以要求使用这台现有的邮件服务器,不开启本机的smtp服务,这就需要重新定义命令使用第三方软件sendEmail.
 
1、sendEmail安装
cd /usr/local/src/
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
yum install perl-Net-SSLeay perl-IO-Socket-SSL -y
tar -xvf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56/
cp -ra sendEmail /usr/local/bin/
chmod +x /usr/local/bin/sendEmail
ls -d /usr/local/bin/sendEmail
 
2、测试sendEmail
参数说明:
/usr/local/bin/sendEmail        命令主程序
-f from@163.com                 发件人邮箱
-t to@163.com                   收件人邮箱
-s smtp.163.com                 发件人邮箱的smtp服务器
-u “我是邮件主题”               邮件的标题
-o message-content-type=html      邮件内容的格式,html表示它是html格式
-o message-charset=utf8         邮件内容编码
-xu from@163.com                发件人邮箱的用户名
-xp 123456                      这个是邮件的SMTP密码
-m “我是邮件内容”               邮件的具体内容
 
样例:
/usr/local/bin/sendEmail -f 1249648969@qq.com -t 1249648969@qq.com -s smtp.qq.com -u “zabbxitest” -o message-content-type=html -o message-charset=utf8 -xu 1249648969@qq.com –xp xadldawldasdasda -m “我是邮件内容”
 
如果你不带-m参数的话,就会提示你自行输入
Reading message body from STDIN because the ‘-m’ option was not used.
If you are manually typing in a message:
– First line must be received within 60 seconds.
– End manual input with a CTRL-D on its own line
输入完成后使用CTRL-D来结束
当然我们也可以将一个文件的内容作为邮件的正文发出去的
那么就可以使用: cat 文件名 | /usr/local/bin/sendEmail –f 1249648969@test.com –t 1249648969@qq.com –s smtp.qq.com –u “from nagios” –xu 1249648969@qq.com –xp p#3isoda 有关sendEmail的用法就讲到这里
既然nagios要使用sendEmail来发警告邮件,那么就要修改commands.cfg中关于发邮件的命令的定义,我们现在来修改notify-by-email这个命令,如下(注意其中粗体的部分)
“objects/commands.cfg” 262L, 8131C                               39,0-1        12%
command_name    notify-host-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 1249648969@qq.com -t $CONTACTEMAIL$ -s smtp.qq.com -u “** $NOTIFICATIONTYPE$ alert – $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” -xu 1249648969@qq.com -xp hrfhcoiwxmxnqgafi
}
 
# ‘notify-service-by-email’ command definition
define command{
command_name    notify-service-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 1249648969@qq.com -t 1249648969@qq.com -s smtp.qq.com -u “** $NOTIFICATIONTYPE$ alert – $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” -xu 1249648969@qq.com -xp hrfhcoiwxxnq1afi
}
 
测试一下把一台机器宕掉
  两台已经被我关机了
等待一下邮件的收吧
后台正在已经监控到了一台宕机。稍微等一下。 我在邮件中收到了这链条消息
 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注