• nagios监控


    Nagios运行原理

    Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。

    启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。

    Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。

     在大规模生产环境中,如果需要浏览历史数据,需要结合db

    获取数据的方式:主动发送、NRPE插件、SNMP、NSClient++ 

    Nagios 通过NRPE 来远端管理服务

    1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。

    2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon

    3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)

    4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。

    5. Nagios 依次读取队列中的信息,再把结果显示出来。

    Nagios所需要的软件

    LAP环境,不需要mysql

    nagios-3.5.1.tar.gz                         #Nagios核心文件,Nagios服务文件,不建议用最新,很多插件没做好

    nagios-plugins-2.1.1.tar.gz                #Nagios插件,用于存放脚本和命令

    NSCP-0.5.0                             #也就是Nsclient++,用来监控Windows,分为64位、32位版本

    nrpe-2.15.tar.gz                          #代理服务,用于监控非Nagios服务器的服务器本地私有信息代理

    vautour_style.zip                          #主题包

     

    Nagios监控本服务器

    配置监控之前,我们需要做一系列的准备工作

    (指定主配置文件需要加载的配置文件—定义主机—定义服务 –定义监控命令—检查配置文件—启动Nagios)

     

    1:  原理  数据收集,数据呈现

    2: Nagios主程序,插件包,nrpe

    3:解决依赖(gd-devel)

    4:LAP

    5:创建Nagios 运行用户和组,加入我们的运行组

    6:主程序安装,./configure –with-command-group=nagcmd (make all ,后面所有的的步骤)

    7:  htpasswd 创建 web认证用户 并测试登陆

    8:安装我们的Nagios-plugins插件

     

     

     

    监控任何一台服务器,工作流程是定义主机,定义服务,定义命令

     [root@b objects]# vim /usr/local/nagios/etc/nagios.cfg

    # Definitions for monitoring the local (Linux) host

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

     #在这两行下面添加下面两行

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

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

     [root@b objects]# vim hosts.cfg

    define host{

            use          linux-server            #使用的模板名字

            host_name    b1.cn             #主机名

            address      10.10.10.1             #被监控主机IP地址

    }             

     [root@b objects]# vim service.cfg

    define service{

            use                    local-service

            host_name              b1.cn

            service_description     MySqlSev

            check_command        check_mysql

    }     

     [root@b objects]# vim commands.cfg

    define command{

            command_name    check_mysql

            command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u nagios –p123456 -d nagios

    }

    [root@b objects]# /usr/local/nagios/libexec/check_mysql -H 10.10.10.1 -u nagios  -p123456 -d nagios

    Uptime:1810  Threads:1  Questions:6  Slow queries:0  Opens:15  Flush tables:1  Open tables:8  Queries per second avg:0.3|Connections=4c;;; Open_files=16;;; Open_tables=8;;; Qcache_free_memory=0;;; Qcache_hits=0c;;; Qcache_inserts=0c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=0c;;; Qcache_queries_in_cache=0;;; Queries=6c;;; Questions=6c;;; Table_locks_waited=0c;;; Threads_connected=1;;; Threads_running=1;;; Uptime=1810c;;;

    注意:所有的check_command字段中的所使用的命令,必须在command.cfg中定义好才能使用,而command.cfg中的command_line中使用的命令,必须在/usr/local/Nagios/libexec/目录下存在,安装plugins会生成

    手动检测command.cfg的命令有效性

     

    注意:服务器要安装了mysql客户端软件,然后再重新编译安装下plugins 才会生成check_mysql

     

    Nagios监控外部主机私有信息

    私有信息,包括默认的硬盘使用,进程数目,SWAP分区等等

    私有信息,就是我需要在本机登陆操作登陆的

    非私有,就是可以通过远程的方式

    只有监控私有信息的时候,才调用NRPE这个插件来通信

    nrpe插件

    通过NRPE(一个插件)服务可以添加本地信息的监控,将数据发送到我们的Nagios服务器

    NRPE两部分组成,一部分是监控机check_nrpe,一部分是被监控机的NRPE守护进程

    Nagios 服务器执行check_nrpe 插件并告诉他检查哪个服务,check_nrpe 插件通过SSL 连接方式联系远程服务器上的NRPE守护进程,NRPE守护进程执行相应的插件完成指定的检查,并返回结果。

     

    nrpe原理

    Nrpe是基于SSL的机制,那么我们需要做的事情就是构建SSL环境,所以需要使用NRPE工作的时候,都需要安装SSL,而且服务端和客户端都需要安装nrpe软件,而我们客户端不需要安装NAGIOS服务端

     

    客户端的NRPE安装

           1:安装nagios- plugins插件

           2:安装NRPE( make install-daemon-config  make install-xinetd)

           3:配置我们xinted服务,允许谁来拿数据

           4:启动xinetd

           5:查看端口是否正常启动

     

    解决依赖

    [root@b ~]#  yum install -y openssl openssl-devel

    [root@b1 ~]#  yum install -y openssl openssl-devel

    实验所需设备都需要安装SSL的支持

    服务端安装NRPE

    [root@b Nagios]# tar xvf nrpe-2.15.tar.gz -C /usr/local/src/

    [root@b Nagios]# cd /usr/local/src/nrpe-2.15/

    [root@b nrpe-2.15]# ./configure && make && make install

    [root@b nrpe-2.15]# make install-plugin && make install-daemon     #前者安装插件,后者以守护经常来运行

    [root@b nrpe-2.15]# ls /usr/local/nagios/libexec/  

    /usr/local/nagios/libexec/check_nrpe    #这个命令需要安装nrpe之后才有

    客户端配置

    [root@b objects]# cd /root/Nagios/

    [root@b Nagios]# scp nagios-plugins-2.1.1.tar.gz nrpe-2.15.tar.gz root@10.10.10.71:/root

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

    [root@b1 ~]# groupadd nagcmd

    [root@b1 ~]# usermod -G nagcmd nagios

    [root@b1 ]# yum install -y xinetd

    [root@b1 ~]# tar xvf nagios-plugins-2.1.1.tar.gz -C /usr/local/src/

    [root@b1 ~]# tar xvf nrpe-2.15.tar.gz -C /usr/local/src/

    [root@b1 ~]# cd /usr/local/src/nagios-plugins-2.1.1/

    [root@b1 nagios-plugins-2.1.1]# ./configure && make && make install

    [root@b1 nagios-plugins-2.1.1]# cd ../nrpe-2.15/

    [root@b1 nrpe-2.15]# ./configure && make && make install

    [root@b1 nrpe-2.15]# make install-daemon-config         //这里是客户端,不用make-install-plugin

    [root@b1 nrpe-2.15]# make install-xinetd

    [root@b1 ~]# vim /etc/xinetd.d/nrpe

    # default: on

    # description: NRPE (Nagios Remote Plugin Executor)

    service nrpe

    {

            flags           = REUSE

            socket_type     = stream

            port            =5666

            wait            = no

            user            = nagios

            group           = nagios

            server          =/usr/local/nagios/bin/nrpe

            server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd

            log_on_failure  += USERID

            disable         = no

            only_from       =127.0.0.1 10.10.10.2      # #添加红色 nagios服务器地址, 允许2这台机器来连接自己的nrpe服务,多个IP地址空格分隔

     

    }

    echo "nrpe        5666/tcp        # NRPE" >> /etc/services               //端口注册

    nrpe            5666/tcp                # NRPE

    #/etc/services文件的作用:

    #作用1:xinet.d来启动服务时他就会在/etc/services找相应服务对应的端口来启动服务。找不到对应端口,将不启动服务。

    #作用2: 显示对应端口对应的协议名。

    [root@b1 ~]# systemctl restart xinetd

    [root@b1 ~]# systemctl enable xinetd

    [root@b1 ~]# netstat -antup | grep 5666

    tcp        0      0:::5666                     :::*                LISTEN      68667/xinetd 

     

    客户端nrpe命令

    [root@b1 ~]# vim /usr/local/nagios/etc/nrpe.cfg

    command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 38% -c 35% -p /dev/sda1

    command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 42% -c 43% -p /dev/sda2

    command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

    #-w为警告 -C为告急  sda2中,我们是指占用42%

     [root@b1 ~]# systemctl restart xinetd

    服务端手动测试

    [root@b libexec]# ./check_nrpe -H 10.10.10.1

    NRPE v2.15

    [root@b ~]# /usr/local/nagios/libexec/check_nrpe -H 10.10.10.71 -c check_sda1

    DISK OK - free space: /boot 2700 MB (98% inode=99%);| /boot=38MB;1790;1877;0;2888

    #如果出现以一下错误,说明没有允许10.10.10.2 访问我们的b1服务

    #CHECK_NRPE: Error - Could not complete SSL handshake.

    #我们需要检查/etc/init.d/nrpe 下面的only from中的有无添加10.10.10.2

    定义被监控主机

    [root@b Nagios]# cd /usr/local/nagios/etc/objects/

    [root@b objects]# vim hosts.cfg

    define host{

            use              linux-server

            host_name      b1.cn

            address         10.10.10.1

    }

    #我们现在还是监控的b1,所以信息不用更改

    定义需要监控的服务

     [root@b objects]# vim service.cfg

    define service{

            use                       local-service

            host_name                b1.cn

            service_description         sda2_Partition

            check_command           check_nrpe!check_sda2          

            }

    define service{

            use                       local-service

            host_name                b1.cn

            service_description         Total Processes       

            check_command           check_nrpe!check_total_procs

            }

    define service{

            use                       local-service

            host_name                b1.cn

            service_description         Current Load               

            check_command           check_nrpe!check_load

    }

    #分别是监测分区、进程总数、负载

     

    定义NRPE监控命令

     

    [root@b objects]# vim commands.cfg

    define command{

            command_name    check_nrpe

            command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

            }

    $ARG1$ 表示调用后面的参数。

     

    [root@b objects]# /etc/init.d/nagios restart

     

    总结一下:

    1: 服务端监控(无需NRPE)

    定义主机,定义服务,定义命令,测试命令,启动

    2:有NRPE的监控

    定义主机,定义服务(check_nrpe!check_ping),定义命令(定义的是check_nrpe)

    还有一个定义命令(客户端做  command[check_adfadf]) -w –c

    安装好之后,是依赖于xinetd服务启动的

     

     

  • 相关阅读:
    搭建vue项目脚手架
    vue项目中的iconfont图标下载及配置
    vue-awesome-swiper 轮播图的使用
    IDEA自动生成Mapper和实体文件
    云服务器通过IP如何访问项目
    社保,步入社会的第一步
    Memcached安装与启动
    IDEA提示非法字符,你不懂的UTF-8
    MyEclipse导入eclipse的web项目,将WebRoot切换为WebContent
    Myeclipse2017删除tomcat后,项目全部报错的解决办法
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/11182628.html
Copyright © 2020-2023  润新知