zoukankan      html  css  js  c++  java
  • linux Nagios监控

    监控目标
    监控目标主机分为四个部分
    硬件资源
    操作系统
    数据库
    应用软件

    监控目的:
    进行服务器性能调整前,知道调整什么,系统瓶颈在什么地方
    被一部分必须同时监控,内容包括吞吐量,反应时间,使用率等

    监控命令:
    进程监控
    ps
    top
    存储监控
    free
    swapon -s
    df -h
    网络监控
    ifconfig
    netstat
    ping
    traceroute
    性能监控
    常用的性能监控命令
    uptime cpu负载
    mpastat 查看cpu状态
    vmstat 查看内存状态
    iostat 查看硬盘状态
    netstat 查看网络状态
    sar 查看以上四类信息

    ——————————————————————————————————————————————————————————————————

    监控服务
    Nagios
    是一款用来监视系统和网络的开源应用软件,可以在linux或unix操作系统上运行
    利用众多的插件实现对本机和远端服务的监控,当监控对象出现异常,nagios就会及时给管理人员告警
    可以自定义shell脚本进行监控
    监控主机资源和网络服务,通过web页面来监控对象状态

    Nagios服务运行时,自动调用监控插件目录下的插件对指定服务器的资源做监控
    在调用插件时,管理员可以配置,调用监控插件对资源做监控的值,

    值分两种,一种警告值(数字,百分比),一种是错误值(数字,百分百)
    如果监控对象的使用率小于警告值就是正常状态,显示ok
    如果监控对象的使用率大于警告值且小于错误值,显示warning
    监控对象的使用率大于错误值,是错误状态,显示crtual

    Cacti
    一套基于php,mysql,snmp,rrdtool开发的网络流量监测图形分析工具
    cacti通过snmpget获取数据,使用rrdtool绘画图形,最后通过web方式呈现出来
    cacti三层架构
    数据采集层:通过snmp或自定义脚本进行数据采集
    数据存储层:通过cacti模板等数据存放至mysql中
    数据展现层:通过web方式呈现出来

    Nagios与Cacti区别
    Nagios:故障分析比较好,报警机制比较好
    Cacti:流量与图形展现比较好

    ————————————————————————————————————————————————————————————————————

    搭建监控服务器
    配置思路
    1.定义监控命令:
    [root@zhuji1 objects]# vim commands.cfg
    define command{
    command_name (命令名)
    command_line (设置使用的插件)
    }
    2.在监控服务器的配置文件里调用定义的监控命令:
    [root@zhuji1 objects]# vim localhost.cfg
    define service{
    use (监控资源使用的模板)
    host_name (监控的主机名)
    service_description (监控的描述信息)
    check_command (监控命令)
    }

    3.验证nagios配置格式:
    /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    4.重启监控服务:
    /etc/init.d/nagios restart
    5.访问监控页面,查看监控信息

    实例:
    在zhuji1服务器上部署nagios监控服务

    安装环境:
    [root@zhuji1 ~]# groupadd nagcmd(nagios的配置文件里只有这个用户组才有权限)
    [root@zhuji1 ~]# useradd nagios(添加用户)
    [root@zhuji1 ~]# usermod -G nagcmd nagios(放入组)
    [root@zhuji1 ~]# yum -y install gcc gcc-c++(源码包安装,安装编译工具)
    [root@zhuji1 ~]# yum -y install httpd(监控通过web页面查看,所以要安装httpd)
    [root@zhuji1 ~]# echo hail hydra > /var/www/html/index.html(测试页面)
    [root@zhuji1 ~]# yum -y install php(页面是php写的,安装php以解析页面)
    [root@zhuji1 ~]# vim /var/www/html/test.php(测试页面)
    <?php
    echo "hail hydra";
    ?>
    [root@zhuji1 ~]# yum -y install elinks(命令行访问工具)
    安装Nagios
    [root@zhuji1 ~]# unzip nagios.zip
    [root@zhuji1 ~]# cd nagios
    [root@zhuji1 nagios]# ls
    nagios-3.2.1.tar.gz nrpe-2.12.tar.gz
    nagios-plugins-1.4.14.tar.gz ntop-3.3.7.tar.gz
    [root@zhuji1 nagios]# tar -xf nagios-3.2.1.tar.gz
    [root@zhuji1 nagios-3.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd --with-command-user=nagios --with-command-group=nagcmd(可以使用这个软件的用户,用户组)
    type 'make all' to compile the main program and CGIs.(提示执行make all)
    [root@zhuji1 nagios-3.2.1]# make all(执行后会提示下一步)
    make install(安装)
    make install-init(安装初始化启动脚本)
    make install-commandmode(修改访问权限)
    make install-config(安装配置文件的列子文件)
    make install-webconf(安装网页配置文件)
    [root@zhuji1 nagios-3.2.1]# make install
    [root@zhuji1 nagios-3.2.1]# make install-init
    [root@zhuji1 nagios-3.2.1]# make install-commandmode
    [root@zhuji1 nagios-3.2.1]# make install-config
    [root@zhuji1 nagios-3.2.1]# make install-webconf
    [root@zhuji1 ~]# ls /usr/local/nagios/(安装目录)
    bin etc libexec sbin share var
    安装Nagios监控插件
    [root@zhuji1 nagios]# tar -xf nagios-plugins-1.4.14.tar.gz
    [root@zhuji1 nagios-plugins-1.4.14]# ./configure
    [root@zhuji1 nagios-plugins-1.4.14]# make
    [root@zhuji1 nagios-plugins-1.4.14]# make install
    [root@zhuji1 ~]# ls /usr/local/nagios/libexec/check_*(插件目录)
    启动Nagios监控服务:(默认不用作任何配置,Nagios服务默认监控本机)
    [root@zhuji1 ~]# /etc/rc.d/init.d/nagios start
    [root@zhuji1 ~]# vim /etc/httpd/conf.d/nagios.conf(打开配置文件)
    39 AuthUserFile /usr/local/nagios/etc/htpasswd.users(用户认证的目录)
    [root@zhuji1 etc]# vim cgi.cfg(根据这里面的用户信息,创建用户)
    authorized_for_system_information=nagiosadmin(看系统认证信息的名)
    ...... .......... ........... .....
    [root@zhuji1 ~]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin(创建用户)
    New password: 密码
    Re-type new password: 确认密码
    访问Nagios监控服务的web页面,查看监控信息
    [root@zhuji1 ~]# /etc/init.d/httpd restart
    [root@zhuji1 ~]# firefox http://192.168.4.1/nagios
    默认监控的资源
    Current Load:cpu负载
    Current Users:登陆的用户数
    HTTP:网站服务
    PING:是否在线
    Root Partition:系统根分区使用量
    SSH:远程服务
    Swap Usage:交换分区的使用情况
    Total Processes:总进程数

    nagios服务配置文件说明
    [root@zhuji1 ~]# cd /usr/local/nagios/etc/
    [root@zhuji1 etc]# ls
    cgi.cfg(定义访问cgi文件的用户名) htpasswd.users nagios.cfg(nagios服务的主配置文件) objects resource.cfg(定义nagios服务使用的变量)
    [root@zhuji1 objects]# ls
    commands.cfg(定义监控命令) localhost.cfg(监控本机的配置文件) switch.cfg timeperiods.cfg(定义监控时间模板)
    contacts.cfg(定义接收报警邮件的邮箱地址) printer.cfg templates.cfg(定义监控模板) windows.cfg

    监控插件的使用
    [root@zhuji1 ~]# cd /usr/local/nagios/libexec/
    监控用户:
    [root@zhuji1 libexec]# ./check_users
    格式:check_users -w <users> -c <users>
    选项:
    -w:警告值,登陆用户大于这个值
    -c:严重错误,大于这个数错误
    [root@zhuji1 libexec]# ./check_users -w 3 -c 5(用户登陆数大于3,小于5警告,)
    USERS OK - 2 users currently logged in |users=2;3;5;0
    [root@zhuji1 libexec]# ./check_users -w 1 -c 1(用户登陆数大于1,错误)
    USERS CRITICAL - 2 users currently logged in |users=2;1;1;0

    监控磁盘:
    [root@zhuji1 libexec]# ./check_disk
    格式:
    check_disk -w limit -c limit [-W limit] [-K limit] {-p path | -x device}
    [-C] [-E] [-e] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ]
    [-t timeout] [-u unit] [-v] [-X type]
    选项:
    -w:警告值,登陆用户大于这个值
    -c:严重错误,大于这个数错误
    -p:指定磁盘
    示例:
    [root@zhuji1 libexec]# ./check_disk -w 10% -c 5% -p /tmp
    DISK OK - free space: / 43784 MB (96% inode=98%);| /=1568MB;43007;45396;0;47786

    监控进程:
    [root@zhuji1 libexec]# ./check_procs
    格式:
    check_procs -w <range> -c <range> [-m metric] [-s state] [-p ppid]
    [-u user] [-r rss] [-z vsz] [-P %cpu] [-a argument-array]
    [-C command] [-t timeout] [-v]
    选项:
    -w:警告值,登陆用户大于这个值
    -c:严重错误,大于这个数错误
    --metric:要监控的进程名
    示例:
    [root@zhuji1 libexec]# ./check_procs -w 10 -c 20 --metric=CPU
    CPU WARNING: 1 warn out of 101 processes

    监控http:
    [root@zhuji1 libexec]# ./check_http
    格式:
    check_http -H <vhost> | -I <IP-address> [-u <uri>] [-p <port>]
    选项:
    -H:监控的主机
    -I:监控的ip地址
    -p:监控的端口
    -u:监控的url地址
    -w:警告值,登陆用户大于这个值
    -c:严重错误,大于这个数错误
    实例:
    [root@zhuji1 libexec]# ./check_http -H 192.168.4.1 -p 21
    拒绝连接(没开21端口)
    HTTP CRITICAL - Unable to open TCP socket


    配置监控本机
    [root@zhuji1 ~]# cd /usr/local/nagios/etc/objects/
    localhost.cfg(监控本机的配置文件)
    [root@zhuji1 objects]# vim localhost.cfg
    define host{
    use linux-server(监控模板名)
    host_name localhost(定义主机名)
    alias localhost(主机的描述信息,别名)
    address 127.0.0.1(指定被监控机器的ip地址)
    }
    define service{
    use local-service(监控资源使用的模板)
    host_name localhost(监控的主机名)
    service_description Swap Usage(监控的描述信息)
    check_command check_local_swap!20!10(监控命令)
    }

    自定义监控资源 commands.cfg
    [root@zhuji1 ~]# cd /usr/local/nagios/etc/objects/
    [root@zhuji1 objects]# vim commands.cfg
    define command{
    command_name check_http(命令名)
    command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$(设置使用的插件)
    }


    实例:
    自定义监控本机资源,监控本机的boot分区,监控本机的ftp服务的状态,不监控交换分区
    [root@zhuji1 objects]# vim localhost.cfg
    define service{
    use local-service
    host_name localhost
    service_description ftp
    check_command check_local_ftp
    }

    define service{
    use local-service
    host_name localhost
    service_description boot
    check_command check_local_boot
    }
    [root@zhuji1 objects]# vim commands.cfg
    define command{
    command_name check_local_boot
    command_line $USER1$/check_disk -w 60 -c 20 -p /boot
    }

    define command{
    command_name check_local_ftp
    command_line $USER1$/check_ftp -H localhost
    }

    [root@zhuji1 objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg(验证nagios配置格式)
    [root@zhuji1 objects]# /etc/init.d/nagios restart(重启监控服务)
    [root@zhuji1 objects]# firefox http://192.168.4.1/nagios(访问测试)

    配置监控报警
    [root@zhuji1 objects]# vim contacts.cfg
    email nagios@localhost
    anonymouslanan@qq.com
    [root@zhuji1 objects]# mail -u nagios(查看邮件)
    Heirloom Mail version 12.4 7/29/08. Type ? for help.
    "/var/mail/nagios": 1 message 1 new
    >N 1 nagios@zhuji1.locald Thu Sep 14 15:26 31/869 "** PROBLEM Service Ale"
    & 1
    Message 1:
    From nagios@zhuji1.localdomain Thu Sep 14 15:26:30 2017
    Return-Path: <nagios@zhuji1.localdomain>
    X-Original-To: nagios@localhost
    Delivered-To: nagios@localhost.localdomain
    Date: Thu, 14 Sep 2017 15:26:30 +0800
    To: nagios@localhost.localdomain
    Subject: ** PROBLEM Service Alert: localhost/ftp is CRITICAL **
    User-Agent: Heirloom mailx 12.4 7/29/08
    Content-Type: text/plain; charset=utf-8
    From: nagios@zhuji1.localdomain
    Status: R

    ***** Nagios *****

    实例:监控远端(192.168.4.2)服务器的ftp服务和http服务
    [root@zhuji1 etc]# vim nagios.cfg
    cfg_file=/usr/local/nagios/etc/objects/192.168.4.2.cfg(创建新的监控)
    [root@zhuji1 etc]# vim /usr/local/nagios/etc/objects/192.168.4.2.cfg(写入配置)
    define host {
    use linux-server(监控模板)
    host_name server2(被监控名主机,随便写)
    alias this my server(被监控主机标识)
    address 192.168.4.2(被监控主机ip地址)
    }

    define service {(监控的服务)
    use local-service
    host_name server2
    service_description ftp(监控的服务名)
    check_command check_2_ftp(监控命令)
    }

    define service {(监控的服务)
    use local-service
    host_name server2
    service_description httpd(监控的服务名)
    check_command check_2_httpd(监控命令)
    }
    [root@zhuji1 etc]# vim /usr/local/nagios/etc/objects/commands.cfg
    define command{
    command_name check_2_ftp
    command_line $USER1$/check_ftp -H 192.168.4.2
    }

    define command{
    command_name check_2_httpd
    command_line $USER1$/check_httpd -H 192.168.4.2
    [root@zhuji1 objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    [root@zhuji1 objects]# /etc/init.d/nagios restart


    实例:配置监控远端服务器上的私有数据(登陆用户数量 引导分区使用量 进程数量)

    被监控端配置(zhuji2:192.168.4.2)
    安装监控插件
    [root@zhuji2 ~]# tar -xf nagios-plugins-1.4.14.tar.gz
    [root@zhuji2 nagios-plugins-1.4.14]# ./configure
    [root@zhuji2 nagios-plugins-1.4.14]# make
    [root@zhuji2 nagios-plugins-1.4.14]# make install(默认就安装在/usr/local/nagios目录下)
    [root@zhuji2 ~]# /usr/local/nagios/libexec/check_users -w 3 -c 5(测试运行插件)
    USERS OK - 2 users currently logged in |users=2;3;5;0
    [root@zhuji2 ~]# /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /boot
    DISK OK - free space: /boot 415 MB (92% inode=99%);| /boot=35MB;380;428;0;476
    运行nrpe服务
    [root@zhuji2 ~]# tar -xf nrpe-2.12.tar.gz
    [root@zhuji2 nrpe-2.12]# useradd nagios
    [root@zhuji2 nrpe-2.12]# groupadd nagcmd
    [root@zhuji2 nrpe-2.12]# usermod -G nagios nagios
    [root@zhuji2 nrpe-2.12]# yum -y install openssl-devel(安装加密传输)
    [root@zhuji2 nrpe-2.12]# ./configure
    [root@zhuji2 nrpe-2.12]# make
    [root@zhuji2 nrpe-2.12]# make install
    [root@zhuji2 nrpe-2.12]# make install-plugin(安装插件,这插件专门用来连接的)
    [root@zhuji2 nrpe-2.12]# make install-daemon
    [root@zhuji2 nrpe-2.12]# make install-daemon-config(此服务的配置文件)
    [root@zhuji2 nrpe-2.12]# make install-xinetd
    [root@zhuji2 nrpe-2.12]# yum -y install xinetd(这个服务需要xinetd叫醒nrpe)
    [root@zhuji2 nrpe-2.12]# vim /etc/xinetd.d/nrpe (nrpe的主配置文件)
    only_from = 127.0.0.1 192.168.4.1(监控服务器的ip地址)
    [root@zhuji2 nrpe-2.12]# vim /etc/services(添加端口)
    nrpe 5666/tcp #nrpe
    [root@zhuji2 ~]# /etc/init.d/xinetd restart
    修改nrp服务的配置文件nrpe.cfg,定义监控命令
    [root@zhuji2 ~]# vim /usr/local/nagios/etc/nrpe.cfg
    command[命令名]=使用的插件
    command[check_2_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
    command[check_2_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30, 25,20


    监控端配置(zhuji1:192.168.4.1)
    定义监控命令
    [root@zhuji1 nagios]# tar -xf nrpe-2.12.tar.gz
    [root@zhuji1 nagios]# yum -y install openssl-devel
    [root@zhuji1 nrpe-2.12]# ./configure
    [root@zhuji1 nrpe-2.12]# make all
    [root@zhuji1 nrpe-2.12]# make install-plugin(安装插件)
    使用插件连接被监控主机的nrpe服务并测试定义的监控命令
    [root@zhuji1 nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 192.168.4.2 -c check_2_users(调用zhuji2的监控命令)
    USERS OK - 2 users currently logged in |users=2;5;10;0
    [root@zhuji1 nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 192.168.4.2 -c check_2_boot
    DISK OK - free space: /boot 415 MB (92% inode=99%);| /boot=35MB;380;428;0;476
    定义监控命令
    [root@zhuji1 ~]# vim /usr/local/nagios/etc/objects/commands.cfg
    define command{
    command_name check_2_users
    command_line $USER1$/check_nrpe -H 192.168.4.2 -c check_2_users
    }

    define command{
    command_name check_2_boot
    command_line $USER1$/check_nrpe -H 192.168.4.2 -c check_2_boot
    }

    define command{
    command_name check_2_process
    command_line $USER1$/check_nrpe -H 192.168.4.2 -c check_2_procs
    }

    define command{
    command_name check_2_zombieprocess
    command_line $USER1$/check_nrpe -H 192.168.4.2 -c check_2_zombie_procs
    }
    [root@zhuji1 objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    [root@zhuji1 objects]# /etc/init.d/nagios restart

  • 相关阅读:
    centos ftp搭建
    python_模块
    python_如何建立包
    python_类
    python_递归
    python_函数
    python_字典
    python_条件、循环语句
    python_中文乱码问题
    Viola–Jones object detection framework--Rapid Object Detection using a Boosted Cascade of Simple Features中文翻译 及 matlab实现(见文末链接)
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7527826.html
Copyright © 2011-2022 走看看