运维百科

Nagios监控系统_监控端(主节点)搭建及配置文件说明

一、代码获取

1、在线下载nagios程序和插件

wget http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz (现在最新版本的插件)
wget
http://ncu.dl.sourceforge.net/project/nagios-cn/sourcecode/zh_CN%203.2.3/nagios-cn-3.2.3.tar.bz2(Nagios主程序目前中文最新版)


二、编译安装

1、用户和组的准备

[root@cloud src]# useradd nagios -s /sbin/nologin  //添加nagios账户,并设置/sbin/nologin

[root@cloud src]# passwd nagios

[root@cloud src]# groupadd nagcmd

[root@cloud src]# usermod -G nagcmd nagios  //加入到组

[root@cloud src]# usermod -G nagcmd apache  //加入到组


2、  开始安装主程序

[root@cloud src]# tar jvxf nagios-cn-3.2.3.tar.bz2

[root@cloud src]# cd nagios-cn-3.2.3

[root@cloud nagios-cn-3.2.3]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagcmd --enable-event-broker --enable-nanosleep --with-perlcache

选项说明:--enable-event-broker:NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理,编译需要指定。

[root@cloud nagios-cn-3.2.3]# make all

[root@cloud nagios-cn-3.2.3]# make install

[root@cloud nagios-cn-3.2.3]# make install-init

[root@cloud nagios-cn-3.2.3]# make install-commandmode

[root@cloud nagios-cn-3.2.3]# make install-config

[root@cloud nagios-cn-3.2.3]# make install-webconf


3、接下来安装插件

[root@cloud src]# tar zxf nagios-plugins-2.1.1.tar.gz

[root@cloud src]# cd nagios-plugins-2.1.1

[root@cloud nagios-plugins-2.1.1]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd

[root@cloud nagios-plugins-2.1.1]# make

[root@cloud nagios-plugins-2.1.1]# make install

[root@cloud nagios-plugins-2.1.1]# chmod 755 /usr/local/nagios


4、  添加访问页面用户nagiosadmin及密码,这里要记住此密码不要忘记了

[root@cloud src]# chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users

[root@cloud src]# /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

接下来启动相关服务

[root@cloud src]# chkconfig --add nagios

[root@cloud src]# chkconfig nagios on

[root@cloud src]# service nagios start

[root@cloud src]# service httpd restart

检查配置文件是否正确

[root@cloud src]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

[经验分享:由于这一串检查的命令很长,应用率也比较高,这里我们可以自定义一个命令来代替这一长串的命令

编辑.bashrc这个文件

[root@cloud src]# vi /root/.bashrc

第8行,空行处新建一行alias 来自定义一个命令来代替,这里我用check

alias check='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'

用source命令在当前bash环境下读取并执行bashrc中的命令

[root@cloud src]# source /root/.bashrc

这样我们自定义的命令就生效了,以后只要输入check就可以检查nagios配置文件是否存在错误了]


禁用 Selinux 和 iptables

Selinux 和 Iptables 是 Linux 系统提供的安全防护机制,主要用来防护 Linux 系统下的服务或应用程序不受外界安全攻击等。一般企业考虑到 Nagios 监控平台的安全可靠性,都会采用硬件的防火墙或其他安全设备来对服务器进行防护。同时此部分不是此平台描述的重点, 这里就不作过多的阐述

[root@cloud ~]# service iptables stop

[root@cloud ~]# setenforce 0


5、Nagios 监控平台访问

到目前为之 Nagios 基本安装成功,若要投入生产环境,还需要安装其他相应的插件及配置,否则是无法提供相应的监控等功能。 通过浏览器,在地址栏输入: http://IPAddress/nagios, 输入用户名及密码即可访问 Naigos 登录界面。

{7L67L0G@0]43Q3{3I6I{BJ.png

三、Nagios 目录与相关配置文件说明

Nagios 安装完成后,/usr/local/nagios/目录下会生成 nagios 相关目录及配置文件,默认的的配置文件在/usr/local/nagios/etc 目录下。关于详细的描述,见下表:

表 1. Nagios 相关目录的名称及用途

目录名称作用
binNagios 可执行程序所在目录
etc
Nagios 配置文件目录
sbinNagios cgi 文件所在目录, 也就是执行外部 命令所需要文件所在的目录
share
Nagios 网页存放路径
libexecNagios 外部插件存放目录
varNagios 日志文件、Lock 等文件所在的目录
var/archivesNagios 日志自动归档目录
var/rw用来存放外部命令文件的目录

表 2. 配置文件的作用概述
配置文件爱你说明
cgi.cfg控制 CGI 访问的配置文件
nagios.cfgNagios 主配置文件
resource.cfg变量定义文件,又称为资源文件,在此文件中定义变量,以便由其他配置文件引用,如$USER1$
objectsobjects 是一个目录,在此目录下有很多配置文件模板,用于定义 Nagios 对象
objects/commands.cfg命令定义配置文件,其中定义的命令可以被其他配置文件引用
objects/contacts.cfg定义联系人和联系人组的配置文件
objects/localhost.cfg定义监控本地主机的配置文件
objects/printer.cfg定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg定义 Nagios 监控时间段的配置文件
objects/windows.cfg监控 Windows 主机的一个配置文件模板,默认没有启用此文件
备注:Nagios 在配置方面非常灵活,默认的配置文件并不是必需的。可以使用这些默认的配置文件,也可以创建自己的配置文件,然后在主配置文件 nagios.cfg 中引用即可。


1、 Nagios 配置文件间的关联

Nagios 的配置过程涉及几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等,从这些定义可以看出,Nagios 的各个配置文件之间是互为关联、彼此引用的。

成功配置一台 Nagios 监控系统,需要掌握每个配置文件之间依赖与被依赖的关系,可从下面四个步骤来入手。

第一步:定义哪些主机、主机组、服务和服务组,

第二步:要定义这个监控要通过什么命令实现,

第三步:要定义监控的时间段,

第四步:要定义主机或服务出现问题时要通知的联系人和 联系人组;强烈建议依据以上顺序对 Nagios 系统进行相关配置。

 

Nagios 配置设定

Nagios 安装成功后,会在/usr/loca/nagios 目下生成相应的主机,服务、命令、模板等配置文件,同时也可看到之前设置的 Nagios 授权目录认证文件 htpasswed.users,而 Object 目录是存放一些配置文件模板,主要用于定义 Nagios 对象。

 

自定义监控目录

默认情况下 nagios.cfg 会启用一些对象配置文件如:comands.cfg、 contacts.cfg localhost.cfg 、contacts.cfg 、windows.cfg 等,为了更好的对 Nagios 平台的管理与日后的维护,这里采用了自定义目录在/usr/local/nagios/etc/目录下创建一个 servers 文件夹,用来保存所管理被监控的对象。同时注释 nagios.cfg 配置文件默认定义的对象配置文件,并在 nagios.cfg 文件增加一行:cfg_dir=/usr/local/nagios/etc/servers 即可。

vim /usr/local/nagios/etc/nagios.cfg

#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg  //#注释掉

cfg_dir=/usr/local/nagios/etc/servers             //增加此行

 

主配置文件声明了监控脚本的存储路径为 ./servers, 默认没有此目录,需要手工创建

nagios 会读取 servers 目录下面后缀为.cfg的全部文件作为配置文件

mkdir /usr/local/nagios/etc/servers

cd /usr/local/nagios/etc/servers

 

1、templates.cfg 文件

默认模板配置文件

#################################  top  #####################################

define contact{

name generic-contact        #联系人名称

service_notification_period 24x7  #当服务出现异常时,发送通知的时间段,时间段是 7x24 小时

host_notification_period 24x7    #当主机出现异常时,发送通知的时间段,时间段是 7x24 小时

service_notification_options w,u,c,r    #这个定义的是“通知可以被发出的情况”。w 即 warning,表示警告状态,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 文件中定义。

}

 

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 对主机的最大检查次数, check_command check-host-alive #指定检查主机状态的命令,其中“check-host-alive”在 commands.cfg 文件中定义。

notification_period workhours     #主机故障时,发送通知的时间范围,其中“workhours”在 timeperiods.cfg 中进行了定义,下面会陆续讲到。

notification_interval 30       #在主机出现异常后,故障一直没有解决,nagios 再次对使用者发出通知的时间。单位是分钟

notification_options d,u,r      #定义主机在什么状态下可以发送通知给使用者,d 即 down,表示宕机状态,u 即 unreachable,表示不可到达状态,r 即 recovery,表示重新恢复状态。

contact_groups admins        #指定联系人组,这个“admins”在 contacts.cfg 文件中定义。

 

define service{

name local-service         #定义一个服务名称

use generic-service          #引用服务 local-service 的属性信息,local-service 主机在 templates.cfg 文件中进行了定义

max_check_attempts 4        #最大检测 4 次,为了确定服务最终状态

normal_check_interval 5       #每 5 分钟检测一次

retry_check_interval 1        #每 1 分钟重新检测服务,最终的状态能被确定

}

 

2、定义监控主机文件

此文件默认情况下不存在,需要手动创建。hosts.cfg  //主要用来指定被监控的主机地址及相关属性信息。

定义主机配置实例:

define host {
    use linux-server

    host_name localhost
    alias localhost
    address 127.0.01
}
........

解释下上面的配置:

use:        引用主机linux-server的属性信息,linux-server主机在templates.cfg 文件中进行了定义。
host_name:     
被监控主机名host_name要在整个nagios中是唯一的

alias:         被监控主机别名

address:        被监控主机 IP 地址

 

3、定义监控的主机组文件

vim /usr/local/nagios/etc/servers/group.cfg   //声明一个监控的主机组,将主机环境中提到的三台主机全部加入监控

定义主机组配置实例:

definehostgroup{

    hostgroup_name  server

    alias        MyServer

    members       localhost

}

解释下上面的配置:

hostgroup_name:       主机组的名称,可随意指定

alias:          主机组别名,可随意指定

members:            主机组成员,多个主机名称之前使用逗号分隔.另外主机名称必须与 define host中host_name一致.

 

4、定义监控主机服务文件

此文件在默认情况下也不存在,需要手动创建。services.cfg   //文件主要用于定义监控的服务和主机资源,例如监控 HTTP 服务、FTP 服务、主机磁盘空间、主机系统负载等。

定义服务配置实例:

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Host Alive

       check_command                   check-host-alive

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Users

       check_command                   check_local_users!20!50

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             CPU

       check_command                   check_local_load!5.0,4.0,3.0!10.0,6.0,4.0

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Disk Root

       check_command                   check_local_disk!20%!10%!/

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Disk Home

       check_command                   check_local_disk!20%!10%!/home

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Zombie Procs

       check_command                   check_local_procs!5!10!Z

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Total Procs

       check_command                   check_local_procs!250!400!RSZDT

       }

define service{

       use                             local-service,srv-pnp

       host_name                       localhost

       service_description             Swap Usage

       check_command                   check_local_swap!20!10

       }

解释下上面的配置:

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

host_name:         指定主机,此服务属于此主机,必须与host主机文件中host_name一致

service_description:   服务描述,可随意指定

check_command:        检查命令参数

 

查看配置文件是否正确

# check     //之前定义的命令别名,确认配置文件没有错误。

重新加载配置文件

# /etc/init.d/nagios reload




本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

3
分享到:

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址