我们都知道军队里,哨兵的角色很重要,敌人来了先把哨兵解决了。猴子,在企业网站
架构里,这个监控系统就相当于哨兵的作用,监控系统非常重要。体检。。
监控系统都需要监控:
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的源
[[email protected] 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死锁,需要删除
[[email protected] ~]# rm -rf /var/run/yum.pid
[[email protected] ~]# yum install ntp -y
[[email protected] ~]# 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 #将这两行加进去
......
[[email protected] ~]# systemctl start ntpd
[[email protected] ~]# systemctl enable ntpd
#默认监听udp123端口
[[email protected] ~]# netstat -lntup |grep 123
创建用户以及相关的组
[[email protected] ~]# useradd -m nagios
[[email protected] ~]# 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.
[[email protected] ~]# groupadd nagcmd
[[email protected] ~]# usermod -a -G nagcmd nagios
[[email protected] ~]# usermod -a -G nagcmd apache
nagios官网 https://assets.nagios.com
#下载nagios服务端软件及插件
[[email protected] ~]# wget?https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.1.tar.gz
[[email protected] ~]# wget?https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
源码编译安装nagios以及相关插件
[[email protected] ~]# tar zxf nagios-4.2.1.tar.gz
[[email protected] ~]# cd nagios-4.2.1
[[email protected] 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.
没有提示任何错误出现以下画面说明配置成功
#接下来安装提示进行编译
[[email protected] nagios-4.2.1]# make all
#编译安装并初始化配置文件
[[email protected] nagios-4.2.1]# make install
[[email protected] nagios-4.2.1]# make install-init
[[email protected] nagios-4.2.1]# make install-config
[[email protected] nagios-4.2.1]# make install-webconf
[[email protected] nagios-4.2.1]# make install-commandmode
[[email protected] nagios-4.2.1]# chkconfig --add nagios
[[email protected] nagios-4.2.1]# chkconfig nagios on
[[email protected] 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界面的密码
[[email protected] 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插件
[[email protected] ~]# tar zxf nagios-plugins-2.1.2.tar.gz
[[email protected] ~]# cd nagios-plugins-2.1.2
[[email protected] nagios-plugins-2.1.2]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[[email protected] nagios-plugins-2.1.2]# make
[[email protected] 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'
[[email protected] nagios-plugins-2.1.2]# ls /usr/local/nagios/libexec/ |wc -l
58 #此处数字意义不大,每个人可能都有区别
设置nagios服务开机自启并启动ngios
启动nagios服务
[[email protected] ~]# systemctl enable nagios
nagios.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nagios on
[[email protected] ~]# 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
[[email protected] ~]# systemctl start nagios
#检查是否启动成功
[[email protected] ~]# 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主配置文件语法是否正确
[[email protected] ~]# /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