Linux监控系统之Nagios

Linux监控系统之Nagios

Nagios工做原理

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

Nagios模式

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

主动模式:主动模式不须要调用客户端的插件,而是经过本身的插件主动去探测客户端的相关信息。
那么,由于主动模式和被动模式的区别这两种模式所擅长监控的服务也是不一样的。ios

Nagios功能

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

试验环境

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

实验实施

首先咱们须要搭建LAMP服务,这个前面已经介绍过,这里就很少加赘述web

安装Nagios所须要的依赖包sql

[root@localhost ~]# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel

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

[root@localhost ~]# useradd -s /sbin/nologin nagios

建立用于安装Nagios的目录vim

[root@localhost ~]# mkdir /usr/local/nagios

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

[root@localhost ~]# chown -R nagios.nagios /usr/local/nagios

下面进行编译安装Nagios服务器

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

Linux监控系统之Nagios
这时候咱们能够去/usr/local/nagios/目录下查看是否生成相关文件目录网络

[root@localhost nagios-4.0.1]# ls /usr/local/nagios/
bin  etc  libexec  sbin  share  var

安装nagios-plugins服务

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

修改apache服务的配置文件

[root@localhost ~]# vim /etc/httpd.conf

Linux监控系统之Nagios
Linux监控系统之Nagios
Linux监控系统之Nagios
建立httpd帐户验证文件

[root@localhost ~]# htpasswd -c /usr/local/nagios/etc/htpasswd jack
[root@localhost ~]# cat /usr/local/nagios/etc/htpasswd 
jack:$apr1$cTieBr/D$vWomztP4eURmUTxxv1WFv0
#能够看到咱们添加的帐户以及密码

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

  • templates.cfi文件

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

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

Linux监控系统之Nagios

  • resource.cfg文件

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

  • commands.cfg文件

此文件默认是存在的,无需修改便可使用,固然若是有新的命令须要加入时,在此文件进行添加便可。

  • hosts.cfg文件

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

[root@localhost 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文件

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

[root@localhost 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是一个定义联系人和联系人组的配置文件。

[root@localhost objects]# vim contacts.cfg 

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

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

[root@localhost objects]# cd ../
[root@localhost etc]# ls
cgi.cfg  htpasswd  nagios.cfg  objects  resource.cfg
[root@localhost 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对外部命令检测的时间间隔

都配置完了咱们能够经过相关命令进行检测。

[root@promote objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

若是出现下面回应,说明配置成功。
Linux监控系统之Nagios
最后开启nagios服务

[root@localhost ~]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

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

Linux监控系统之Nagios
Linux监控系统之Nagios
Linux监控系统之Nagios