欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

centos6.8配置Nagios全套

程序员文章站 2022-05-16 20:26:04
...

系统版本:

[aaa@qq.com ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)

环境:

nagios服务端:192.168.93.7
被监控客户端:192.168.93.5


nagios服务端

一、下载并安装所需软件

1、下载包

yum install gcc mysql httpd php gd openssl openssl-devel mysql-server vim wget 

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.7.tar.gz

wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz

ls 可以看到nagios-4.0.7.tar.gz nagios-plugins-2.0.3.tar.gz nrpe-2.14.tar.gz
此处我将三个包下载到/root目录下

yum install wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp

useradd nagios

passwd nagios

groupadd nagcmd

usermod -a -G nagcmd nagios

(nagcmd:x:504:nagios)

安装nagios

tar –xvzf nagios-4.0.7.tar.gz

cd nagios-4.0.7

./configure –with-command-group=nagcmd

可以先./configure –help先看看帮助,应为默认为主是用nagios用户,不需要指定—with-nagios-user或其它什么的。

make all

make install

make install-init

这个安装/etc/rc.d/init.d中的init脚本

make install-commandmode

这个安装和配置权限

目录的外部命令文件

make install-config

这个安装* * /usr/local/nagios/etc配置文件示例

你必须修改这些示例文件之前使用Nagios。

make install-webconf

这个安装Nagios的Apache配置文件

Web界面

cp –R contrib/eventhandlers/ /usr/local/nagios/libexec/

(-R:递归复制目录,即连同目录下的子目录和文件一起复制。)

chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg (检测配置文件是否有错误)

{ [aaa@qq.com libexec]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers/

[aaa@qq.com libexec]# ll

total 4

drwxr-xr-x. 4 nagios nagios 4096 Oct 21 01:16 eventhandlers}

/etc/init.d/nagios start 或者service nagios start

Chkconfig --add nagios

Chkconfig nagios on

Chkconfig httpd on

Service httpd start

二、创建web用户

切换到ngios用户

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

输入密码nagios(密码)

三、安装nagios-plugins

tar –xvzf nagios-plugins-2.0.3.tar.gz

cd nagios-plugins-2.0.3

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

Make

Make install

前面这步做了可以略过,反正要做一次。

Chkconfig nagios on 或者chkconfig –level 35 nagios on

Chkconfig httpd on 或者 chkconfig –level 35 httpd on

四、关闭防火墙和selinux

service iptables stop

Vim /etc/sysconfig/selinux 把selinux改成disabled这个需重启生效。

http://192.168.93.7/nagios/ 这个是nagios地址,要输入用户名和密码的nagiosadmin nagios

*无法开题notifications报错*******************************

Error: Could not open command file ‘/usr/local/nagios/var/rw/nagios.cmd’ for update!

这个主要是apache 用户 没有执行权限 /usr/local/nagios/var/rw/nagios.cmd 造成,

解决方法:

usermod -a -G nagcmd apache

将apache用户添加到nagios用户组,就OK了。

date -s 调整日期时间 clock -w 保存

五、安装NRPE插件。

tar –xvzf nrpe-2.14.tar.gz

cd nrpe-2.14

./configure

make && make install

make install-plugin

把check_nrpe放到/usr/local/nagios/libex下。才能使用check_nrpe。

被监控客户端

准备初始环境

yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

安装nagios插件nagios-plugin

useradd nagios

passwd nagios

wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz

tar –xvzf nagios-plugins-2.0.3.tar.gz

cd nagios-plugins

./configure

make

make install

chown -R nagios:nagios /usr/local/nagios

安装nrpe-2.14

wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz

tar –xvzf nrpe-2.14.tar.gz

cd nrpe-2.14

./configure

make all

安装check_nrpe 这个插件

make install-plugin

监控机需要安装check_nrpe 这个插件,被监控机并不需要,我们在这里安装它只是为了测试目的。

安装deamon

make install-daemon

安装配置文件

make install-daemon-config

现在再查看/usr/local/nagios/目录就会发现有5个目录了

按照安装文档的说明,是将NRPE deamon作为xinetd下的一个服务运行的。在这样的情况下xinetd就必须要先安装好,不过一般系统已经默认安装了。 

 yum install xinetd

chkconfig --add xinetd

chkconfig xinetd on

安装xinted 脚本

make install-xinetd

可以看到创建了这个文件/etc/xinetd.d/nrpe , 编辑该文件

在only_from 后增加监控主机的IP地址,如

 only_from       = 127.0.0.1 192.168.93.7

编辑/etc/services 文件,增加NRPE服务 ,在文件最后 增加一行

 nrpe    5666/tcp   #nrpe

重启xinted 服务

service xinetd restart

查看NRPE 是否已经启动

netstat -an | grep 5666

如果发现5666 端口号被监控,则是起来了。

本地测试

/usr/local/nagios/libexec/check_nrpe -H localhost

成功启动 ,会返回版本号

增加nagios服务端的访问IP
默认只允许本地的访问,需要配置文件,以便服务端也可以访问。

vi /usr/local/nagios/etc/nrpe.cfg

allowed_hosts=127.0.0.1,192.168.93.7(192.168.93.7位nagios服务端ip)

如果NRPE是手动方式启动的,这里需要重启NRPE ,如果是以xinet服务启动的,则不用重启。

手工重启一下 NRPE方法,以xinet服务启动时 ,不用做这一步。

pkill nrpe

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

现在去nagios服务端测试一下 ,192.168.93.5 为被监控机IP

/usr/local/nagios/libexec/check_nrpe -H 192.168.93.5

成功启动 ,会返回版本号

被监控机就配好了。


nagios服务端添加被监控主机

1、 添加HOST

vi  /usr/local/nagios/etc/objects/localhost.cfg

define host{
        use                     linux-server            ; 引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。

        host_name               tomcat01   ;主机名
        alias                   tomcat01-1 ;主机别名
        address                 192.168.93.5  ;被监控的主机地址,这个地址可以是ip,也可以是域名。
        }

2、 增加服务

vi  /usr/local/nagios/etc/objects/localhost.cfg 

可以新建服务,或者 如果服务相同的话, 直接将 新加入的 host那么 用逗号隔开,跟在host_name 的后面就可以。 如

  #---blfb-login start-----------------------------------------------------------
define service{  
        use                     local-service          ;引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
        host_name               blfb-login,blfb-gamesr01  ;这个服务写了两个主机名,说明这两个主机都会检测这个check-host-alive 服务
        service_description     check-host-alive       ;对监控服务内容的描述,以供维护人员参考。
        check_command           check-host-alive       ;指定检查的命令。
        }   
define service{
        use                     local-service
        host_name               blfb-login
        service_description     Current Load
        check_command           check_nrpe!check_load
        }   

define service{
        use                     local-service
        host_name               blfb-login
        service_description     Check Disk vdc1
        check_command           check_nrpe!check_vdc1
        contact_groups          admins,blfb_cp_group 
        }   

define service{
        use                     local-service
        host_name               blfb-login
        service_description     Check Zombie Procs
        check_command           check_nrpe!check_zombie_procs
        }   

#---blfb-login- end--------------------------------------------------------------

3、重启前 检查 配置文件

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

4、 如果没有错误 ,也没有警告, 就可以重启。

service nagios restart

5、 在浏览器查看添加情况
完。

注意:可能check_vdc1 这个命令会提示不存在, 或者 硬盘名不对。 那就需要去 被监控机改一个配置 ,该成自己想要监控的 设备名 如我的是 /dev/vdv1

vi /usr/local/nagios/etc/nrpe.cfg

command[check_vdc1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vdc1

以下是监控的一台私有云控制节点的配置(供大家参考)

define host{
          use          linux-server
          host_name     controller
          alias         controller
          address       192.168.96.61
          check_command check-host-alive
          max_check_attempts 2
          notification_period 24x7
          notification_interval 3600
          notification_options d,u,r        
          }

define service{
        use                             generic-service        
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             SSH
        check_command                   check_ssh
        }

define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             Horizon
        check_command                   check_http! -H 192.168.96.61 -u /horizon/
        }


define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             cinder-api
        check_command                   check_tcp!8776
        }

define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             glance-api
        check_command                   check_tcp!9292
    }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             heat-api
        check_command                   check_tcp!8004
    }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             keystone-public
        check_command                   check_tcp!5000
        }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             keystone-admin
        check_command                   check_tcp!35357
        }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             neutron-api
        check_command                   check_tcp!9696
        }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             nova-api
        check_command                   check_tcp!8774
        }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             ceilometer-api
        check_command                   check_tcp!8777
        }
#define service{
#        use                             generic-service
#        host_name                       controller
#        max_check_attempts 2
#        normal_check_interval 300
#        retry_check_interval 15
#        notification_interval 3600
#        notification_period 24x7
#        notification_options w,u,c,r
#        service_description             murano
#        check_command                   check_tcp!8082
#        }
define service{
        use                             generic-service
        host_name                       controller
        max_check_attempts 2
        normal_check_interval 300
        retry_check_interval 15
        notification_interval 3600
        notification_period 24x7
        notification_options w,u,c,r
        service_description             cloudkitty-api
        check_command                   check_tcp!8889
        }

其他

1、增加验证用户

也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户test:密码为123456

 [aaa@qq.com nagios-plugins-1.4.13]# htpasswd -c /usr/local/nagios/etc/htpasswd test

可以用 which命令查看 htpasswd命令的位置,如果是源码安装的apache这里就写htpasswd的全路径。用户是test,命令结束会提示你输入密码,这里输入123456即可。

查看认证文件的内容

[aaa@qq.com nagios-plugins-1.4.13]# less /usr/local/nagios/etc/htpasswd

到这里nagios的安装也就基本完成了,你可以通过web来访问了.

2、检测定义快捷命令

问题1:新建立文件夹及节点无法生效

解决:修改nagios目录文件,使其目录被检测

vi /usr/local/nagios/etc/nagios.cfg

添加 要检测的目录。

cfg_dir=/usr/local/nagios/etc/cfgs

问题2:《《apache 启动失败 》》 默认安装在/usr/sbin/下,执行apachectl start时候,提示如下错误:

httpd: apr_sockaddr_info_get() failed for shiwei

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

于是上网查了一下,根据前人的经验,问题终于解决了。总结一下,方便以后使用。

原因:这个问题应该是没有在 /etc/httpd/conf/httpd.conf 中设定 ServerName。所以apache会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。

解决办法:

(1)可以设定httpd.conf文件中的 ServerName,如下:ServerName localhost:80

(2)在 /etc/hosts 中填入自己的主机名称 bogon,如下:127.0.0.1 shiwei (用户名称)

问题3 NRPE: Unable to read output

我的解决办法是:修改nagios目录的权限

#chown -R nagios:nagios nagios/

#chmod -R 775 nagios/

问题解决。

3、添加command

command[check_cpu]=/usr/local/nagios/libexec/check_cpu_pct -w $ARG1$ -c $ARG2$

command[check_memory]=/usr/local/nagios/libexec/check_mem -w $ARG1$ -c $ARG2$

将配置文件拷贝到指定目录后,修改所属及访问权限。

command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$

command[check_swap]=/usr/local/nagios/libexec/check_swap -w $ARG1$ -c $ARG2$228

command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$

command[check_io]=/usr/local/nagios/libexec/check_iostat -d $ARG3$ -w $ARG1$ -c $ARG2$

安装sendmail

首先要确保sendmail相关组件的完整安装,我们可以使用如下的命令来完成sendmail的安装:

 # yum install -y sendmail*

然后重新启动sendmail服务:

# service sendmail restart

然后发送测试邮件,验证sendmail的可用性:

# echo "jinwanchiji" | sendmail aaa@qq.com

centos6.8配置Nagios全套

aaa@qq.com objects]# service sendmail restart

Shutting down sendmail:                                    [FAILED]

Starting sendmail:                                        [  OK  ]

Starting sm-client:                                        [  OK  ]

chkconfig sendmail off

chkconfig sendmail off  加速开机时间

重启服务器注意1,开机nrpe 二启动sendmail 三 iptables 设置


Nagios 多用户的一些配置

刚开始我想到在搭nagios的时候,用户验证是用apache来做的,接到这个需求后的第一反应是这个东西可能做不了。但接着一想,不应该啊,nagios本身至少会有一些用户配置的吧,于是乎开始寻找相关资料,基本配置如下:

(1)新增一个apache用户,如fenggong

[aaa@qq.com ~]# htpasswd /usr/local/nagios/etc/htpasswd.users  fenggong

(2)更改cgi.cfg配置

[aaa@qq.com ~]# vi /usr/local/nagios/etc/cgi.cfg

use_authentication=1

如果只允许查看,不允许管理,加上下面配置

authorized_for_read_only=fenggong

authorized_for_all_services=fenggong

authorized_for_all_hosts=fenggong

(3)将userA设为联系人

[aaa@qq.com ~]# vi /usr/local/nagios/etc/objects/contacts.cfg  #添加如下配置

define contact{

contact_name                             fenggong

use                                      generic-contact

alias                                    fg

}

(4)在属于userA的主机、服务配置文件的联系人中加入fenggong

[aaa@qq.com ~]# vi /usr/local/nagios/etc/objects/hosts.cfg

define host {

host_name aaa@qq.com

alias aaa@qq.com

address 10.1.1.22

contacs fg

contact_groups sys_admins

check_command check-host-alive

max_check_attempts 5

notification_interval  3

notification_period 24x7

notification_options d,u,r

}

(5)重启nagios后生效

[aaa@qq.com ~]#  /etc/init.d/nagios restart
相关标签: nagios