Linux监控系统之Nagios

怎甘沉沦 提交于 2020-04-07 00:03:21

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所需要的依赖包

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

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

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

创建用于安装Nagios的目录

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

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

[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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!