您的位置:首页 > 运维架构 > 网站架构

手动编译安装LAMP架构,并且实现nagios图形化监控(九)

2015-07-31 18:29 645 查看
八、配置Nagios

本来想休息一下再接着写,但是时间不会等人,比我聪明比我更有技术实力的人还在努力,我怎么能懈怠呢。喝杯咖啡,继续。其实这更多的像是我写给自己的笔记,我相信这是一种积累,也是一种努力。

首先,看下nagios有哪些目录:bin、etc、include、libexec、sbin、share、var,其中bin主要是nagios的一些可执行文件,sbin则存放nagios的cgi脚本,include则是nagios的头文件,libexec存放nagios监控插件,share存放一些网页文件,动态生成文件等。var则存放nagios的锁文件,日志文件等等。

其次,我们说下nagios监控的执行过程。首先在nagios.cfg中定义配置文件路径,其次添加配置文件,然后对配置文件进行调用。这些配置文件包括时间配置,命令配置,主机配置,服务配置等。也就是说,nagios的监控系统,需要注意四点:

a.定义监控哪些主机、主机组、服务、服务组

b.定义这个监控要用什么命令实现

c.定义监控的时间段

d.定义主机或者服务出现问题时要通知的联系人和联系人组

接下来就开始真正进行服务监控的实施。

咱们得有个目标吧,先看下下面这张图,就先做成这样吧



1.修改nagios的主配置文件——nagios.cfg

第一处:添加如下三行代码:

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

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

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

第二处:改变检查时间间隔

command_check_interval=10s  一般设置10s就可以了,也可以根据实际情况进行设置。

好了,先保存退出。

注意:最好注释掉cfg_file=/usr/local/nagios/etc/objects/localhost.cfg这行代码,不然后面我们测试的时候,会发现莫名其妙出现很多主机和服务检测。

2.修改 CGI的配置文件——cgi.cfg

首先确认一下,use_authentication=1是否为1,为1表示启用cgi脚本调用验证,最好要启用,这样会安全很多。这里需要添加一下能够调用cgi脚本权限的用户

第一处:启用默认用户名,将#去掉,将guest改为nagios,即:

default_user_name=nagios

第二处:则是给予nagios用户一些调用其他脚本的权限。主要修改的代码行如下,将nagios用户添加进去,注意多用户之间用逗号隔开就可以了。

authorized_for_system_information=nagiosadmin,nagios

authorized_for_configuration_information=nagiosadmin,nagios

authorized_for_system_commands=nagiosadmin,nagios

authorized_for_all_services=nagiosadmin,nagios

authorized_for_all_hosts=nagiosadmin,nagios

authorized_for_all_service_commands=nagiosadmin,nagios

authorized_for_all_host_commands=nagiosadmin,nagios

就是这几个,保存退出吧。

3.查看一下时间模板配置文件——timeperiods.cfg

生成环境经常使用的是24x7的这个,当然你也可以定义自己的时间模板:

define timeperiod{

        timeperiod_name 24x7

        alias           24 Hours A Day, 7 Days A Week

        sunday          00:00-24:00

        monday          00:00-24:00

        tuesday          00:00-24:00

        wednesday        00:00-24:00

        thursday          00:00-24:00

        friday            00:00-24:00

        saturday          00:00-24:00

        }

以后我们调用监控时间就是用24x7这个名字了,所以你要是定义自己所需要的时间段,这个名字要记好,不然是无法调用的。
时间模板暂时不用修改,那接下来我们要定义联系人模板了。

4.联系人模板是存在的,就是contacts.cfg,但是里面没有我们所需的信息,所以我们不妨模仿着自己定义一个,可以在最后添加如下信息

############ Add for Nagios Monitor ##############################################

define contact{

        contact_name                     J_Chen

        alias                           J_Chen_admin

        service_notification_period     24x7

        host_notification_period         24x7

        service_notification_options     w,u,c,r

        host_notification_options       d,u,r

        service_notification_commands   notify-service-by-email

        host_notification_commands       notify-host-by-email

        email                           315688082@qq.com

}

 这样我就定义了一个联系人J_Chen,要是有报警信息就会发送到315688082@qq.com这个邮箱。

下面解释一下各参数的意义:

contact_name    联系人姓名,以后定义服务出现问题联系人的时候,就可以直接调用这个名字了。alias是别名,没有太大意义,更多的用于方便操作。

service_notification_period  服务监控时间段,后面的24x7就是之前timeperiods.cfg里面定义的。

host_notification_period 主机监控时间段,也是24x7,整天不间断监控

service_notification_options 服务监控报警选项,即当出现这四中情况时,发邮件通知联系人。即:w-报警(warning),u-未知(unknown),c-严重(critical),或者r-从异常恢复正常(recovery)

host_notification_options 和上面类似,主机监控报警选项。d-宕机(down),u-不可达(unreachable),r-从故障恢复正常(recovery)。

service_notification_commands  服务出现状况通知命令使用notify-service-by-email(这天命令实在commands.cfg中定义的)

host_notification_commands 和上面的非常类似,不解释了

email
即联系人邮件

如果我们有多个管理员,可以定义多个联系人,然后将这些联系人放到一个组中,然后在监控到故障的时候,直接通知这些组。假如我再创建一个用户tomcat,基本上上面的用户定义一样,改下名字,联系方式就行了。如下:

define contact{

        contact_name                     Tomcat

        alias                           Tomcat_admin

        service_notification_period     24x7

        host_notification_period       24x7

        service_notification_options     w,u,c,r

        host_notification_options       d,u,r

        service_notification_commands   notify-service-by-email

        host_notification_commands       notify-host-by-email

        email                           tomcat@localhost

}

5.定义联系人组Superman(我给联系人组起的名字),联系人组这个文件是不存在的,我们手动创建一下。

# vi /usr/local/nagios/etc/objects/contactgroups.cfg
添加如下内容

define contactgroup{

        contactgroup_name               Superman

        alias                           Super_admin

        members                         J_Chen,Tomcat
(多个联系人之间使用逗号分开就可以了)

}

6.创建监控主机文件hosts.cfg

vi /usr/local/nagios/etc/objects/hosts.cfg
(定义两台主机:一个是nagios服务,另一个监控内部一台测试服务器,地址192.168.1.51)

define host{

        host_name                       nagios-server

        alias                           nagios server

        address                         192.168.1.214

        check_command                   check-host-alive

        max_check_attempts               5

        check_period                     24x7

        contact_groups                   Superman

        notification_interval           300

        notification_period             24x7

        notification_options             d,u,r

}

define host{

        host_name                     51-server

        alias                           51 server

        address                         192.168.1.51

        check_command                   check-host-alive

        max_check_attempts               5

        check_period                     24x7

        contact_groups                   Superman

        notification_interval           300

        notification_period             24x7

        notification_options             d,u,r

}

保存退出。

注意:check-host-alive这个命令是在command.cfg中定义过的。

7.现在定义监控服务services.cfg(先简单定义了两个服务)如下:

# vi /usr/local/nagios/etc/objects/services.cfg

define service{

        host_name                       nagios-server

        service_description             check-host-alive

        check_command                   check-host-alive

        max_check_attempts               5

        normal_check_interval           3

        retry_check_interval             2

        check_period                     24x7

        notification_interval           10

        notification_period             24x7

        notification_options             w,u,c,r

        contact_groups                   Superman

}

define service{

        host_name                       51-server

        service_description             check-host-alive

        check_command                   check-host-alive

        max_check_attempts               5

        normal_check_interval           3

        retry_check_interval             2

        check_period                     24x7

        notification_interval           10

        notification_period             24x7

        notification_options             w,u,c,r

        contact_groups                   Superman

}

注意:这里的host_name就是我们之前在hosts.cfg文件中定义的。

简单的配置到此就结束了,我们先来看一下能不能正常启动。nagios给我们提供了检测脚本,执行如下命令:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
很开心,配置完全正确,如下:



我们重启一下nagios试试看。

[root@centos1 objects]# service nagios restart

Running configuration check...done.

Stopping nagios: .done.

Starting nagios: done.

启动完成,访问一下试试看。

8.使用浏览器访问一下

点击左侧的主机、服务都可以正常显示,正是我们之前定的。





好了,nagios最简单的配置已经完成了。但是有没有发现我们检测的只是本机的服务还有另外一台主机的存活检测,如果仅是这样的话,我直接使用一条ping命令就可以完成。当然了,nagios的强大功能才刚刚开始,它不但可以检测自己的负载量,磁盘使用率,当前登录用户数等等,也可以检测别的主机。简直比木马还木马,下次我们就继续学习nagios的高级监控功能。

下面的学习路线我打算是这样的,下次将高级监控,然后将图形化监控,最后讲nagios插件开发。这样就基本上形成了一个完整的监控体系。今天先到这了,继续努力!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息