zoukankan      html  css  js  c++  java
  • nagios的简单配置实践

    我们都知道军队里,哨兵的角色很重要,敌人来了先把哨兵解决了。猴子,在企业网站

    架构里,这个监控系统就相当于哨兵的作用,监控系统非常重要。体检。。

    监控系统都需要监控:

    1、本地资源:负载uptime, CPU(top,sar), 磁盘(df-h),内存(free swap ),lO(iostat), RAID
    级别,CPU温度,passwd文件的变化,本地所有文件指纹识别监控。。

    2、网络服务:端口,web(URL),DB, ping 丢包,进程数,IDC 网络流量。。

    3、其他设备:路由器、交换机端口流量,监控光衰,打印机,WINDOWS等。。

    4、业务数据:用户登录失败次数,用户登录网站次数,输入验证码失败的次数,某个
    API接口流量并发,电商网站订单,支付交易的数量。。

    5、监控软件本身仅仅是一个平台,我们想监控的内容,理论上只要在服务器命令行可以
    获取到就可以被监控软件监控。

    nagios(难够死)监控工具介绍与优势

    Nagios是一款开源的网络及服务的监控工具,其功能强大,灵活性强。

    能有效监控Windows、Linux和Unikx等系统的主机各种状态信息,交换机、路由器等网络设备,

    主机端口及URL服务等。

    根据不同业务故障级别发出告警信息(邮件、微信、短信、语音报警、飞信、MSN)给管理员,当故障

    恢复时也会发出恢复消息给管理员。

    官方网站地址:http://www.nagios.org

    官方快速安装说明:http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html

    Nagios的特点:

    01)监控网络服务(SMTP、 POP3、 HTTP、TCP、 PING等);

    02)监控主机资源(CPU、 负载、IO状况,虚拟及正式内存及磁盘利用率等);

    03)简单地插件设计模式使得用户可以方便定制符合自己的服务的检测方法:

    04)并行服务检查机制;.

    05)具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种
    关系可被用来发现和明晰主机宕机或不可达状态。

    06)当服务或主机问题产生与解决后将告警发送给联系人(mail/ im/ sms/sound/语音);。

    07)具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位;。

    08)自动的日志回滚;。

    09)可以支持并实现对主机的冗余监控(支持分布式监控);

    10)可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等。

    缺点:有好多模块构成的

    nagios的家族成员构成

    nagios监控一般由一个主程序(nagios-->黑帮老大),一个插件程序(Nagios-plugins)和一些可选的附加程序(nrpe、nsclient++、nsca、ndoutils)等

    nagios只是一个监控平台,其余的监控工作都是由插件(nagios-plugins,也可以自己编写来实现),因此,nagios主程序和nagios-plugins插件都是nagios服务端必须安装的程序组件,nagios-plugins一般也要安装于被监控端,几个附加程序描述如下:

    1、NRPE:半被动模式

    存在位置:NRPE软件工作存在于被控端,操作系统为linux系统

    NRPE作用: 用于在被监控的远程Linux/Unix主机上执行脚本插件获取数据回传给服务器端,以实现对这些主机资源的监控。

    存在形式:守护进程(agent)模式,开启的端口5666。。
    主要用于监控本地资源:负载uptime, CPU(top,sar), 磁盘(df -hi), 内存(free swap ),

    lO(iostat),RAID 级别,CPU 温度,passwd 文件的变化,本地所有文件指纹识别监控。。

    2.NSClient++:半被动模式

    存在位置:用于被监控端为windows系统的服务器。

    作用:功能相当于linux下的NRPE。

    用于监控Windows主机时,安装在Windows主机上的组件。

    3.nDOUtils: (不推荐用)

    为什么不推荐使用数据库?因为nagios默认在磁盘上,效率高;放在数据库的好处:检索方便。

    存在位置: NDOUtils 工作于nagios服务器端。

    作用:用于将Nagios的配置信息和各event产生的数据存入数据库以实现对这些数据的检索和处理。

    4 NSCA:纯被动模式的监控

    位置:NSCA需要同时安装在nagios的服务器端和客户端(被监控端)。

    作用:用于让被监控的远程Linux/Unix主机主动将监控到的信息发送给Nagios服务器(在分布式监控集群模式中要用到,300 台服务器以内,可以不用)。

    分布式监控NSCA外部构件简介

    分布式监控NSCA外部构件简介:为完成从远程主机主动提交强制检测结果,于是就开发了NSCA外部构件。该外部构件包括两部分,第一部分是客户端程序(send_nsca),运行于远程主机上并负责将强制检测结果送到指定的Nagios服务端,另一部分是NSCA守护进程(nsca),它既可以独立地运行于守护服务也可以注册到inetd里作为-一个inetd客户程序来提供监听联接。从客户端收到服务检测结果信息之后,守护进程将结果提交给在中心服务器的Nagios,方式是通过在外部命令文件里插入一条PROCESS_ SVC_ CHECK RESULT 命令,之后跟上检测结果。在Nagios服务端下一-次处理外部命令时将会找到这条由分布式服务器送来的强制检测信息并处理它。|

    1.NRPE原理图

    2.NSclient++运行原理图

    3.NDOUtils运行原理图

    4.nsca分布式监控运行原理(500+)

    5.nagios监控工具综合系统简单原理图

    Nagios服务端的安装

    实验环境:

    nagios------------>10.0.0.7 Nagios监控服务器

    nagios-server1-->10.0.0.8 LAMP服务器 被监控的客户端服务器

    nagios-server2-->10.0.0.9 LNMP服务器 被监控的客户端服务器

    配置yum源
    #三台服务器均执行
    rm -f /etc/yum.repos.d/*
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    

    环境准备

    #安装基础编译环境软件10.0.0.7服务端安装
    #1.关闭防火墙firewalld
    systemctl disable firewalld
    systemctl stop firewalld
    
    #2.关闭selinux
    sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
    
    #3.调整单个进程最大能打开文件的数量
    			echo '* - nofile 65535' >> /etc/security/limits.conf
    #4.配置php的源
    [root@nagios yum.repos.d]# cat /etc/yum.repos.d/php.repo
    [webtatic-php]
    name = php Repository
    baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
    gpgcheck = 0
    
    #5.安装基础软件包
    yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
    
    yum install gcc glibc glibc-common unzip gd gd-devel –y
    
    yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
    
    #6.解决perl编译问题
    echo "export LC_ALL=C" >> /etc/profile
    
    #7.解决时间同步问题
    #此处上述安装会产生pid死锁,需要删除
    [root@nagios ~]# rm -rf /var/run/yum.pid  
    [root@nagios ~]# yum install ntp -y
    [root@nagios ~]#  vim /etc/ntp.conf 
    ......
    server 0.centos.pool.ntp.org iburst
    server 1.centos.pool.ntp.org iburst
    server 2.centos.pool.ntp.org iburst
    server 3.centos.pool.ntp.org iburst
    server ntp1.aliyun.com     #将这两行加进去
    server time.nist.gov       #将这两行加进去
    ......
    [root@nagios ~]# systemctl start ntpd
    [root@nagios ~]# systemctl enable ntpd
    #默认监听udp123端口
    [root@nagios ~]# netstat -lntup |grep 123
    

    创建用户以及相关的组

    [root@nagios ~]# useradd -m nagios
    [root@nagios ~]# passwd nagios
    Changing password for user nagios.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@nagios ~]# groupadd nagcmd
    [root@nagios ~]# usermod -a -G nagcmd nagios
    [root@nagios ~]# usermod -a -G nagcmd apache
    

    nagios官网 https://assets.nagios.com

    #下载nagios服务端软件及插件
    [root@nagios ~]# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.1.tar.gz
    [root@nagios ~]# wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
    

    源码编译安装nagios以及相关插件

    [root@nagios ~]# tar zxf nagios-4.2.1.tar.gz
    [root@nagios ~]# cd nagios-4.2.1
    [root@nagios nagios-4.2.1]#  ./configure --prefix=/usr/local/nagios
    ......
    Review the options above for accuracy.  If they look okay,
    type 'make all' to compile the main program and CGIs.
    没有提示任何错误出现以下画面说明配置成功
    
    #接下来安装提示进行编译
    [root@nagios nagios-4.2.1]# make all
    
    #编译安装并初始化配置文件
    
    [root@nagios nagios-4.2.1]# make install
    [root@nagios nagios-4.2.1]# make install-init
    [root@nagios nagios-4.2.1]# make install-config
    [root@nagios nagios-4.2.1]# make install-webconf
    [root@nagios nagios-4.2.1]# make install-commandmode
    [root@nagios nagios-4.2.1]# chkconfig --add nagios
    [root@nagios nagios-4.2.1]# chkconfig nagios on
    [root@nagios nagios-4.2.1]# make install-commandmode
    

    配置邮件联系人信息

    配置文件在目录 /usr/local/nagios/etc 下;

    通过这些基础配置信息可以直接启动 Nagios

    现在唯一需要更改的是联系人信息,可以编辑 /usr/local/nagios/etc/objects/contacts.cfg ,

    将联系人邮件地址换成你自己的。

    若系统中需通过安装sedmail来发送邮件(此处博主没有自己配置)
    yum install sendmail sendmail-cf -y
    

    为nagios创建登录web界面的密码

    [root@nagios nagios-4.2.1]# htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
    New password: 
    Re-type new password: 
    Adding password for user admin
    #此处密码博主统一设置为admin
    

    编译安装nagios插件

    [root@nagios ~]# tar zxf nagios-plugins-2.1.2.tar.gz
    [root@nagios ~]# cd nagios-plugins-2.1.2
    [root@nagios nagios-plugins-2.1.2]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
    [root@nagios nagios-plugins-2.1.2]# make
    [root@nagios nagios-plugins-2.1.2]# make install
    ......
    make[1]: Leaving directory `/root/nagios-plugins-2.1.2/po'
    make[1]: Entering directory `/root/nagios-plugins-2.1.2'
    make[2]: Entering directory `/root/nagios-plugins-2.1.2'
    make[2]: Nothing to be done for `install-exec-am'.
    make[2]: Nothing to be done for `install-data-am'.
    make[2]: Leaving directory `/root/nagios-plugins-2.1.2'
    make[1]: Leaving directory `/root/nagios-plugins-2.1.2'
    [root@nagios nagios-plugins-2.1.2]# ls /usr/local/nagios/libexec/ |wc -l
    58     #此处数字意义不大,每个人可能都有区别
    

    设置nagios服务开机自启并启动ngios

    启动nagios服务
    [root@nagios ~]# systemctl enable nagios
    nagios.service is not a native service, redirecting to /sbin/chkconfig.
    Executing /sbin/chkconfig nagios on
    [root@nagios ~]# chkconfig --list |grep nagios
    
    Note: This output shows SysV services only and does not include native
          systemd services. SysV configuration data might be overridden by native
          systemd configuration.
    
          If you want to list systemd services use 'systemctl list-unit-files'.
          To see services enabled on particular target use
          'systemctl list-dependencies [target]'.
    
    nagios         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
    [root@nagios ~]# systemctl start nagios
    
    #检查是否启动成功
    [root@nagios ~]# ps -ef |grep nagios
    nagios    48521      1  0 21:59 ?        00:00:00 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
    nagios    48523  48521  0 21:59 ?        00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
    nagios    48524  48521  0 21:59 ?        00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
    nagios    48525  48521  0 21:59 ?        00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
    nagios    48526  48521  0 21:59 ?        00:00:00 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
    nagios    48527  48521  0 21:59 ?        00:00:00 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
    root      48551  10236  0 22:01 pts/0    00:00:00 grep --color=auto nagios
    

    检查nagios主配置文件语法是否正确

    [root@nagios ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    ......
    Checking misc settings...
    
    Total Warnings: 0
    Total Errors:   0
    
    Things look okay - No serious problems were detected during the pre-flight check
    
    接下来在浏览器输入 http://服务器ip地址/nagios
    用户名和密码为第五步用htpasswd设置的,
  • 相关阅读:
    *关于如何获取指定表的指定字段的数据类型的方法
    *检查表是否存在
    *用Sql添加删除字段,判断字段是否存在的方法
    *MSSQL三个关键系统表
    *系统表的应用
    VC++ ADO编程入门简介
    int i=0; i=i++ System.out.Println(i)
    Microsoft Visual C++ 6.0 关联源代码
    VC ADO接口详解
    程序员每年该做的事
  • 原文地址:https://www.cnblogs.com/wangyongqiang/p/12241881.html
Copyright © 2011-2022 走看看