• nagios监控


    nagios监控

    了解nagios

    Nagios对系统的监控是使用nrpe客户端来调用/usr/local/nagios/libexec目录下的脚本,然后将获取的数据返回给nagiox,那些脚本会返回不同的状态值。Nagios会根据这些状态值来判断服务状态是否状态以及是否需要告警。
    0 :表示没有异常
    1;WARNING表示会触发WANRING报警
    2:表示紧急状态
    3,:表示未知。
    Nagios监控的服务;http,pop3,smtp,ping mysql
    监控的主机资源:磁盘空间利用率,内存利用率,CPU负载等。

    工作原理

    Nagios通常由一个主程序(nagios).一个插件程序(nagios-plugins)和四个可选的ADDON(nrpe,nsca,nsclient++和ndoutils)组成。Nagios的监控工作都是通过插件实现的。因此,nagios和nagios-plugins是服务器端所必须的组件。而这四个ADDON中,nrpe用来监控在远端远程Linux主机上执行的脚本插件以实现对这些主机资源的监控;nsca用来让被监控的远程linux主机主动将监控信号消息发送给nagios服务器;nsclient++则用来监控windows主机。

    监控流程

    (1),nagios运行check_nrpe插件。我们要在nagios配合文件中告诉他要检测什么;
    (2)check_nrpe插件会通过ssl连接到远程到远程的nrpe daemon
    (3)Nrpe daemon会运行相应的nagios插件来检查本地资源或服务
    Nrpe daemon会将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理
    注意: nrpe daemon 需要nagios插件安装在远程被监控的linux 主机上,否则,daemon不能做任何的监控。别外他们之间的通信是加密的ssl,所以在编辑安装的时候要加上选项./configure --enable-ssl --with -ssl-lib=/lib/否则也会出错。

    服务端的配置

    编译所需的软件包

    yum install httpd gcc  gd-devel perl-ExtUtils-Embed.x86_64 -y
    yum install mysql-devel openssl-devel -y
    

    nagios软件的安装

    tar jxf nagios-cn-3.2.3.tar.bz2
    cd nagios-cn-3.2.3
    ./configure –enable-embedded-perl
    make all
    make install    ####make install用来安装nagios的主程序
    Make install-init    ###通过make install-init命令可以在/etc/rc.d/inidt.d 目录下创建nagios启动脚本
    Make install-commandmode   ##通过该命令来配置目录权限
    Make install-confign   ##make install-config用来安装nagios示例配置文件的路径是/usr/lcoal/nagios/etc
    make install-webconf
    

    Nagios安装完成以后,目录对应的功能说明如下
    bin;可执行的程序所在目录
    etc: 配置文件所在目录
    libexec :外部插件所在目录
    share:网页文件所在目录

    插件的配置

    tar zxf nagios-plugins-1.4.15.tar.gz

    cd nagios-plugins-1.4.15
    ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap –
    enable-perl-modules
    Make all
    make install    ####make install用来安装nagios的主程序
    

    nagios用户的建立

    useradd -M -d /usr/local/nagios nagios
    usermod -G nagios apeche
    
    

    配置好以上步骤好,可以登陆页面172.25.15.34/nagios查看发现会让你输入用户名和密码
    输入密码和用户就可以看到nagios的管理页面,此时看到的界面没有任何的监控个信息。(/etc/init.d/nagios start)

    配置本机监控

    [root@server2 objects]# pwd
    /usr/local/nagios/etc/objects
    cp localhost.cfg  hosts.cfg -p
    cp localhost.cfg services.cfg -p   
    

    对hosts.cfg 编辑。只留下host 把services部分删掉

     define host{
            use                     linux-server
            host_name               Manager
            alias                   Manager
            #parents                        MainSwitch
            address                 172.25.15.34
            icon_image              server.gif
            statusmap_image         server.gd2
            2d_coords               500,200
            3d_coords               500,200,100
            }
    define hostgroup{
            hostgroup_name  linux-servers ; The name of the hostgroup    #主机组并不是必须的,这是配合 nagios 的监控页面的显示
            alias           Linux Servers ; Long name of the group
            members         *     ; Comma separated list of hosts that belong to this group
            }
    
    

    对services.cfg编辑,把host部分删掉

    define servicegroup{
            servicegroup_name 系统负荷检查
            alias 负荷检查
            members Manager,进程总数,Manager,登录用户数,Manager,根分区,Manager,交换>空间利用率
            }
    使用命令
    /usr/local/nagios/bin/nagios  -v /usr/local/nagios/etc/nagios.cfg 检查配置是否有误
    

    配置远程数据库的监控

    给远程主机安装数据库
    yum install mysql-server -y
    mysql 主机上运行有 mysql 服务,在其上创建监控检测帐户

    mysql> create database nagdb;
    mysql> grant select on nagdb.* to nagdb@'172.25.15.2';
    mysql> flush privileges;
    

    在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务
    /usr/local/nagios/libexec/check_mysql -H 172.25.15.2 -u nagdb -d nagdb
    在 nagios 主机上添加对 mysql 服务监控的定义

    Vim /usr/lcoal/nagios/etc/nagios.cfg
    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
    cfg_file=/usr/local/nagios/etc/objects/services.cfg
    #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg  ###把这行注释调
    
    Vim hosts.cfg
    define host{
            use                     linux-server
            host_name               huihui4.example.com
            alias                   mysql
            parents                 Manager
            address                 172.25.15.2
            icon_image              server.gif
            statusmap_image         server.gd2
            2d_coords               400,200
            3d_coords               400,200,100
            }
    Vim services.cfg
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       huihui4.example.com
            service_description             MYSQL
            check_command                   check_mysql!nagios!redhat!nagdb
            notifications_enabled           0
                }
    
    
                      
    Vim commands.cfg
    define command{
            command_name    check_mysql
            command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d  $ARG3$
    

    检测无误后重起服务,测试

    /etc/init.d/nagios restart
    /usr/loca/nagios/libexec/check_mysql  -H 172.25.15.2 -u nagios -p redhat -d nagdb
    

    配置其他客户机被监控

    服务端
    配置文件nagios.cfg中添加一下目录

    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg   ###上述步骤中我们已经做过了
    cfg_file=/usr/local/nagios/etc/objects/services.cfg
    

    配置nrpe
    下载nrpe软件包并解压
    ./configure 编辑
    Make all 安装
    Make install-plugin
    可以先检测一下在整合

    usr/local/nagios/libexec/check_nrpe -H 172.25.15.2
    usr/local/nagios/libexec/check_nrpe -H 172.25.15.2 -c check_users
    

    编辑文件

    Vim commands.cfg
    define command{
            command_name    check_nrpe
            command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
            }
    
    Vim services.cfg
    define service{
            use                             local-service        ; Name of service template to use
            host_name                       huihui4.example.com
            service_description             根分区
            check_command                   check_nrpe!check_disk
            }
    
    define service{
            use                             local-service         ; Name of service template to use
            host_name                       huihui4.example.com
            service_description             登录用户数
            check_command                   check_nrpe!check_users
       
            }
    

    注意:check_nrpe!check_users --check_nrpe传送的参数check_users到远程主机上执行的命令,此命令在远程主机配置文件中/usr/local/nagios/etc/nrpe.cfg中有定义
    如果你定义了check_swap注意查看被监控机配置文件中nrpe.cfg是否有定义
    重起服务/etc/init.d/nagios restart

    被监控端

    安装相应的软件包

     yum install gcc -y
     yum install openssl-devel -y   ###用于配合ssl加密
     yum install xinetd.x86_64 -y
    

    安装nrpe服务使之能够通信

    useradd nagios  ###建立nagios用户否则编辑的时候会有错误
     tar zxf nrpe-2.15.tar.gz 
    cd nagios-plugins-2.0.3
    ./configure 
    make install-plugin
    make install-daemon
    make install-daemon-config
    

    配置nrpe信息

    [root@huihui4 xinetd.d]# pwd
    /etc/xinetd.d
    [root@huihui4 xinetd.d]# vim nrpe 
    only_from       = 172.25.15.34  ###只允许172.25.15.34连接
    vim /etc/services 
    nrpe            5666/tcp   ####添加端口
    ;
    [root@huihui4 etc]# pwd
    /usr/local/nagios/etc
    [root@huihui4 etc]# vim nrpe.cfg 
    command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
    command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
    command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d ###检测nrpe文件是否正确
    /etc/init.d/xinetd start
    netstat -an | grep 5666 是否监听5666用于nrpe通信的端口
    

    报错以后]
    可以以邮件或微信进行报警

    [root@server2 objects]# pwd
    /usr/local/nagios/etc/objects
    [root@server2 objects]# vim contacts.cfg 
     email                           1799720288@qq.com  ###报警以后传送给谁。
    

    记得在邮箱把nagios@server2.example.com添加到白名单
    切换到nagios用户给1799220288用户发邮件测试一下
    [root@server2 objects]# su - nagios
    -bash-4.1$ mail 1799220288@qq.com
    Subject: ll
    ll
    .
    EOT
    监控时间和次数可以在下面文件中设置

    root@server2 objects]# pwd
    /usr/local/nagios/etc/objects
    [root@server2 objects]# vim templates.cfg 
    

    把数据库关闭进行测试看是否会报警

    nagios微信报警系统的设置

    下载微信公众平台的私有接口

    yum install -y git
    git clone https://github.com/lealife/WeiXin-Private-API
    

    修改微信公众平台私有接口代码,以配合 nagios 报

    cp -r WeiXin-Private-API /usr/local/nagios/libexec/weixin
    chown -R nagios.nagios  /usr/local/nagios/libexec/weixin
    cd /usr/local/nagios/libexec/weixin
    

    修改 config.php 文件:

    $G_CONFIG["weiXin"] = array(
    'account' => '微信公众平台登录帐号',
    

    填写你注册的微信订阅号的帐号和密码
    'password' => '微信公众平台登录密码',

    修改 test.php 文件,只保留如下几行即可:

    <?php
    require "config.php";
    require "include/WeiXin.php";
    $weiXin = new WeiXin($G_CONFIG['weiXin']);
    $testFakeId = "$argv[1]"; #微信好友 ID 号,这里通过 nagios 传入
    $msg = `cat /tmp/nagiosmsg; #要发送的报警信息,由 nagios 传入
    print_r($weiXin->send($testFakeId, "$msg")); #给微信好友发送信息
    

    可以先测试一下

    整合nagios和微信公共平台私有接口
    增加微信报警选项: templates.cfg

    修改 /usr/local/nagios/etc/objects/templates.cfg
    在 define contact{...} 部分,将以下两行:
    service_notification_commands notify-service-by-email
    host_notification_commands notify-host-by-email
    改为:service_notification_commands notify-service-by-email,service-notify-by-weixin
    host_notification_commands notify-host-by-email,host-notify-by-weixin
    

    增加调用命令: commands.cfg
    修改 /usr/local/nagios/etc/objects/commands.cfg
    在该文件的最后增加以下部分:

    define command{
            command_name    notify-host-by-weixin
            command_line /usr/bin/printf  "***** Nagios *****
    
    Notification Type: $NOTIFICATIONTYPE$
    Host: $HOSTNAME$
    State: $HOSTSTATE$
    Address:$HOSTADDRESS$
    Info: $HOSTOUTPUT$
    
    Date/Time: $LONGDATETIME$
    " > /tmp/nagiosmsg && /usr/bin/php /usr/local/nagios/weixin/test.php $CONTACTPAGER$ &> /dev/null
    }
    
    define command{
     command_name notify-service-by-weixin
      command_line /usr/bin/printf  "***** Nagios *****
    
    Notification Type:$NOTIFICATIONTYPE$
    
    Service: $SERVICEDESC$
    Host: $HOSTALIAS$
    Address:$HOSTADDRESS$
    State: $SERVICESTATE$
    
    Date/Time: $LONGDATETIME$
    
    Additional Info:
    
    $SERVICEOUTPUT$
    " > /tmp/nagiosmsg && /usr/bin/php /usr/local/nagios/weixin/test.php $CONTACTPAGER$ &> /dev/null
    }
    

    修改联系人选项: contact.cfg
    修改 /usr/local/nagios/etc/objects/contact.cfg
    在 define contact{...} 部分增加如下一行
    pager 2680049531 ###好友ID
    4)重载nagios配置
    /etc/init.d/nagios restart

  • 相关阅读:
    论文摘记 2017.4.6-4.9
    P4 PI库安装
    Markdown中的表格
    Easy install ryu
    《重构网络-SDN架构与实现》阅读随笔
    解决Github Desktop Repo publish 失败问题
    解决 "OperationalError: (sqlite3.OperationalError) no such table: ..."问题
    初始化 Flask 虚拟环境 命令
    Flask: socket.error: [Errno 48] Address already in use 问题
    【转】TCP端口号记录
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5694918.html
Copyright © 2020-2023  润新知