Linux监控系统之Nagios

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux监控系统之Nagios相关的知识,希望对你有一定的参考价值。

Linux监控系统之Nagios

Nagios工作原理

Nagios的功能是监控服务和主机,但是其自身并不包括这部分功能,所有的监控、检测功能都是听过各种插件去完成的。在启动Nagios后,它会周期性地去自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回的状态信息都进入队列,Nagios每次都会将从队首读取信息,进行处理后,再将状态结果通过web显示出来。

Nagios模式

被动模式:就如同上图所显示的那样,客户端起nrpe进程,服务端通过check_nrpe插件向客户端发送命令,客户端根据服务端的指示来调用相应的插件,插件可以获取到本机的相关信息,并把获取到的结果发送给服务端。因为需要调用客户端的插件去等带客户端返回的信息,所以叫做被动模式

主动模式:主动模式不需要调用客户端的插件,而是通过自己的插件主动去探测客户端的相关信息。
那么,因为主动模式和被动模式的区别这两种模式所擅长监控的服务也是不同的。

Nagios功能

  • 监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
  • 监控主机资源(处理器负荷、磁盘利用率等);
  • 简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
  • 并行服务检查机制;
  • 具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
  • 当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
  • 可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
  • 自动的日志滚动功能;
  • 可以支持并实现对主机的冗余监控;
  • 可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
  • 可以通过手机查看系统监控信息;
  • 可指定自定义的事件处理控制器

试验环境

角色 IP地址
监控主机 192.168.58.146
被监控主机 192.168.58.149

实验实施

首先我们需要搭建LAMP服务,这个前面已经介绍过,这里就不多加赘述

安装Nagios所需要的依赖包

[[email protected] ~]# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

添加用于管理Nagios的进程用户

[[email protected] ~]# useradd -s /sbin/nologin nagios

创建用于安装Nagios的目录

[[email protected] ~]# mkdir /usr/local/nagios

改变Nagios安装目录的属主和属组

[[email protected] ~]# chown -R nagios.nagios /usr/local/nagios

下面进行编译安装Nagios

[[email protected] ~]# tar xf nagios-4.0.1.tar.gz -C /opt/
#将安装包解压到/opt目录下面
[[email protected] ~]# cd /opt/nagios-4.0.1/
#切换至解压路径下
[[email protected] nagios-4.0.1]# ./configure --prefix=/usr/local/nagios
#配置Nagios安装路径
[[email protected] nagios-4.0.1]# make all
由于nagios分很多单独的文件,所以使用make all来编译所有的的单独的文件
[[email protected] nagios-4.0.1]# make install
#这是编译安装主程序包括CGI和html文件
[[email protected] nagios-4.0.1]# make install-init
#编译安装一些初始化脚本
[[email protected] nagios-4.0.1]# make install-commandmode
#这是为外部命令文件所在的目录安装和配置权限
[[email protected] nagios-4.0.1]# make install-config
#这是安装一些配置的模板文件,主要在/usr/local/nagios/etc目录下面
[[email protected] nagios-4.0.1]# chkconfig --add /etc/rc.d/init.d/nagios
#将nagios添加到chkconfig系统管理中
[[email protected] nagios-4.0.1]# chkconfig --level 35 nagios on
#设置nagios在35级别开启自启动

技术分享图片
这时候我们可以去/usr/local/nagios/目录下查看是否生成相关文件目录

[[email protected] nagios-4.0.1]# ls /usr/local/nagios/
bin  etc  libexec  sbin  share  var

安装nagios-plugins服务

[[email protected] ~]# tar xf nagios-plugins-1.5.tar.gz -C /opt/
[[email protected] ~]# cd /opt/nagios-plugins-1.5
[[email protected] nagios-plugins-1.5]#  ./configure --prefix=/usr/local/nagios
#将它安装到nagios目录下
[[email protected] nagios-plugins-1.5]# make && make install
#编译安装

修改apache服务的配置文件

[[email protected] ~]# vim /etc/httpd.conf  

技术分享图片
技术分享图片
技术分享图片
创建httpd账户验证文件

[[email protected] ~]# htpasswd -c /usr/local/nagios/etc/htpasswd jack
[[email protected] ~]# cat /usr/local/nagios/etc/htpasswd 
jack:$apr1$cTieBr/D$vWomztP4eURmUTxxv1WFv0
#可以看到我们添加的账户以及密码

修改nagios配置文件,配置文件一般在/usr/local/nagios/etc/objects下面

  • templates.cfi文件

主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。

[[email protected] etc]# cd /usr/local/nagios/etc/objects/
[[email protected] objects]# ls
commands.cfg  hosts.cfg      printer.cfg   switch.cfg     timeperiods.cfg
contacts.cfg  localhost.cfg  services.cfg  templates.cfg  windows.cfg
[[email protected] ~]# sed -i ‘contact_groups/s/admins/ts/g‘ /usr/local/nagios/etc/objects/templates.cfg 

技术分享图片

  • resource.cfg文件

resource.cfg是nagios的变量定义文件一般无需更改

  • commands.cfg文件

此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。

  • hosts.cfg文件

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

[[email protected] objects]# vim hosts.cfg 

define host{   
        use                     linux-server#引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
        host_name               Nagios-Linux#主机名
        alias                   Nagios-Linux#主机别名
        address                 192.168.58.149#被监控的主机地址,这个地址可以是ip,也可以是域名。
        }   
#定义一个主机组   
define hostgroup{      
        hostgroup_name          bsmart-servers#主机组名称,可以随意指定。
        alias                   bsmart servers#主机组别名
        members                 Nagios-Linux#主机组成员,其中“Nagios-Linux”就是上面定义的主机。     
        }
  • localhost.cfg文件

用来监控本机 一般无需更改

  • windows.cfg文件

用来监控windows 这里无需使用

  • services.cfg文件

此文件默认也不存在,需要手动创建主要用于定义监控的服务和主机资源。

[[email protected] objects]# vim services.cfg

define service{  
        use                     local-service#引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
        host_name               Nagios-Linux#指定要监控哪个主机上的服务,“Nagios-Linux”在hosts.cfg文件中进行了定义。
        service_description     check-host-alive#对监控服务内容的描述,以供维护人员参考。
        check_command           check-host-alive#指定检查的命令。
        } 
  • contact.cfg文件

contacts.cfg是一个定义联系人和联系人组的配置文件。

[[email protected] objects]# vim contacts.cfg 

define contact{
        contact_name                    jack#联系人的名称,这个地方不要有空格
        use                             generic-contact#引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
        alias                           Nagios Admin
        email                           [email protected]
        }
define contactgroup{
        contactgroup_name       ts#联系人组的名称,同样不能空格
        alias                   Technical Support#联系人组描述
        members                 jack#联系人组成员,其中“jack”就是上面定义的联系人,如果有多个联系人则以逗号相隔
        }
  • cgi.cfg文件

此文件用来控制相关cgi脚本
由于nagios的web监控界面验证用户为jack,所以只需在cgi.cfg文件中添加此用户的执行权限。

[[email protected] objects]# cd ../
[[email protected] etc]# ls
cgi.cfg  htpasswd  nagios.cfg  objects  resource.cfg
[[email protected] etc]# vim cgi.cfg 

在最后加入

default_user_name=jack
authorized_for_system_information=nagiosadmin,jack  
authorized_for_configuration_information=nagiosadmin,jack  
authorized_for_system_commands=jack
authorized_for_all_services=nagiosadmin,jack  
authorized_for_all_hosts=nagiosadmin,jack
authorized_for_all_service_commands=nagiosadmin,jack  
authorized_for_all_host_commands=nagiosadmin,jack
  • nagios.cfg文件

将对象配置文件在Nagios.cfg文件中进行引用

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

command_check_interval=10s  #该变量用于设置nagios对外部命令检测的时间间隔

都配置完了我们可以通过相关命令进行检测。

[[email protected] objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果出现下面回应,说明配置成功。
技术分享图片
最后开启nagios服务

[[email protected] ~]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

重启mysql和httpd服务,进行网页测试访问http://192.168.58.146/nagios

技术分享图片
技术分享图片
技术分享图片

以上是关于Linux监控系统之Nagios的主要内容,如果未能解决你的问题,请参考以下文章

linux系统管理员之自动化检测工具 nagios及其插件配置

搭建基于Nagios的监控系统——之监控远程Linux服务器

监控之--使用NPRE监控Linux主机

运维监控三剑客之Nagios

监控三剑客之Nagios监控服务器

监控三剑客之Nagios监控服务器