学习目标和内容
无论从事运维行业处于哪一个阶段 , 监控都是最重要的核心工作内容之⼀,说监控是运维的第一核心也不过分,因为系统的稳定运行决定了运维的最高价值,而监控是保证系统稳定的第一步 。
如果真的把监控做到100%到位了,什么样的问题都能即时的发现并预警
Nagios core是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix server与可选组件zabbix agent。
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一
个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒,而"Agios"是"saint"的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工作得非常好。
网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)
可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)
可以通过配置Nagios远程执行插件远程执行脚本
远程监控支持SSH或SSL加通道方式进行监控
简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell、C++、Perl、ruby、Python、PHP、C#等)
包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)可并行服务检查
能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查
当服务或主机出现问题时发出通告,可通过email, pageduty, sms 或任意用户自定义的plugin进行通知
能够自定义事件处理机制重新激活出问题的服务或主机自动日志循环
支持冗余监控包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。
每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。
Nagios可以识别4种状态返回信息,即
0(OK)表示状态正常/绿色 |
---|
1(WARNING)表示出现警告/黄色 |
2(CRITICAL)表示出现非常严重的错误/红色 |
3(UNKNOWN)表示未知错误/深黄色 |
Nagios根据插件返回来的值,来判断监控
对象的状态,并通过web显示出来,以供管理理员及时发现故障。
NSCA : Nagios Service Check Acceptor
NDOUtils:从一个或多个Nagios实例导出当前和历史数据到Mysql数据库
Nagios 通过NRPE 来远端管理服务
监控服务器 Nagios-Server(server) Apache php Nagios-core Nagios-plugins
目标服务器 Nagios-Linux(client) Nagios-plugins nrpe
Server 安装了nagios软件,对监控的数据做处理,并且提供web界面查看和管理。当然也可以对本机自身的信息进行监控。
Client 安装了NRPE等客户端,根据监控机的请求执行监控,然后将结果回传给监控机
可以通过虚拟机的添加硬件光驱的方式,挂载多个光盘,在yum光盘源的配置中使用多个
地址。
Tip:同时使用多个光盘
linux下光盘的挂载使用,注意要提前先创建对应挂载目录,挂载点目录要预先存在
移除base源地址,开启media源
在主机使用前,应该配置好ntp、FQDN、关闭防火墙(iptables、selinux)
shell > yum install wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip openssl-devel
#添加nagios相关权限用户
shell > useradd nagios
shell > groupadd nagcmd
shell > usermod -a -G nagcmd nagios
shell > usermod -a -G nagios,nagcmd apache
#编译安装nagios-core和plugins
shell > tar xvf nagios-4.4.2.tar.gz
shell > tar xvf nagios-plugins-2.2.1.tar.gz
shell > cd nagios-4.4.2/
shell > ./configure --with-command-group=nagcmd --prefix=/usr/local/nagios
shell > make all
shell > make install
shell > make install-init
shell > make install-config
shell > make install-commandmode
shell > make install-webconf
#外部插件所在目录
shell > cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
shell > chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers/
shell > /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
shell > service nagios start
shell > service httpd start
#设置web界面密码
shell > htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
编译插件
shell > cd ../nagios-plugins-2.2.1/
shell > ./configure --with-nagios-user=nagios --with-nagios-group=nagios
shell > make && make install
插件文档地址:http://nagios-plugins.org/doc/man/index.html
Nagios 主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源及对外的服务等。默认的Nagios 配置没有任何监控内容,仅是⼀些模板文件。若要让Nagios提供服务,就必须修改配置文件,增加要监控的主机和服务。
配置文件目录:
①/usr/local/nagios/etc
②/usr/local/nagios/etc/objects
cgi.cfg文件 默认不修改
此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程、关闭nagios通知、停止nagios主机检测等,这时就需要配置cgi.cfg文件了
nagios.cfg文件 改一点
nagios.cfg默认的路径为/usr/local/nagios/etc/nagios.cfg,是nagios的核心配置文件,所有的对象配置文件都必须在这个文件中进行定义才能发挥其作用,这里只需将对象配置文件在Nagios.cfg文件中进行引用即可。
resource.cfg 文件 默认不修改
resource.cfg是nagios的变量量定义文件
其中,变量量$USER1$指定了安装nagios插件的路径,如果把插件安装在了其它路
径,只需在这里进行修改即可。需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用。
/usr/local/nagios/etc/objects下
timeperiods.cfg文件
此文件只要用于定义监控的时间段。
contacts.cfg文件
contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障,nagios会通过指定的通知方式(邮件或者短信)将信息发给这里指定的联系人或者使用者。文件中引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
commands.cfg文件
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。
hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息
services.cfg文件
此文件默认也不存在,需要手动创建,services.cfg文件主要用于定义监控的服务
和主机资源,例如监控http服务、ftp服务、主机磁盘空间、主机系统负载等等。
①定义主机配置文件
shell> vim objects/hosts.cfg
②定义服务检查文件
shell > vim objects/services.cfg
③在主配置文件引入新的配置文件
④检测配置文件语法,并重启nagios服务
shell > /usr/local/nagios/bin/nagios -v
/usr/local/nagios/etc/nagios.cfg
shell > service nagios restart
⑤查看添加的主机效果
简单监控流程图示
以上操作已经对于主机是否存活进行了检测。但是实际情况中需要更多的细项的服务检测。满足实际业务可用稳定性检测。例如:ftp,ssh,http,mysql等对外公开的服务。
shell > vim /usr/local/nagios/etc/objects/services.cfg
shell > /usr/local/nagios/bin/nagios -v
/usr/local/nagios/etc/nagios.cfg
shell > service nagios restart
Tip:增加新的被监控的主机
①在hosts.cfg定义新主机,注意分组
②在services.cfg给新被监控的主机添加监控项(服务)
配置修改之后,注意检查语法问题和重启生效
shell > service nagios checkconfig
shell > service nagios restart
利用NRPE监控远程Linux上的“本地信息”
对于像磁盘容量,cpu负载这样的“本地信息”,Nagios只能监测自己所在的主机,而对其他的机器器则显得有点无能为力。毕竟没得到被控主机的适当权限是不可能得到这些信息的。为了解决这个问题,nagios有这样一个附加组件NRPE,用它就可以完成对Linux 类型主机"本地信息”的监控。
NRPE 工作原理
NRPE 总共由两部分组成:
check_nrpe 插件,位于监控主机上
NRPE daemon,运行在远程的Linux主机上(通常就是被监控机)
当Nagios 需要监控某个远程Linux 主机的服务或者资源情况时:
nagios做处理。
注意:NRPE daemon 需要Nagios 插件安装在远程的Linux主机上,否则,daemon不能做任何的监控。
案例操作步骤:
①在被监控机器安装插件
shell > useradd nagios
shell > passwd nagios
shell > tar xvf nagios-plugins-2.2.1.tar.gz
shell > cd nagios-plugins-2.2.1/
shell > ./configure --prefix=/usr/local/nagios
shell > make && make install
shell > chown nagios.nagios /usr/local/nagios/
shell > chown -R nagios.nagios /usr/local/nagios/libexec/
②安装依赖软件xinetd和nrpe
shell > yum install -y net-snmp
shell > yum install xinetd
shell > tar xvf nrpe-3.2.1.tar.gz
shell > cd nrpe-3.2.1
shell > ./configure
shell > make all
shell > make install-plugin
shell > make install-daemon
shell > make install-config
shell > make install-inetd
③在xinetd下配置nrpe服务并启动
shell > vim /etc/xinetd.d/nrpe
shell > vim /etc/services
shell > service xinetd start
shell > netstat -lntp | grep 5666
Tip:查看check_nrpe命令用法
check_nrpe –H 被监控的主机 -c 要执行的监控命令
注意:-c 后面接的监控命令必须是nrpe.cfg 文件中定义的。也就是NRPE
daemon只运行nrpe.cfg中所定义的命令
查看命令检测语法
shell > vim /usr/local/nagios/etc/nrpe.cfg
以上部分就是命令名称,也就是check_nrpe 的-c 参数可以接的内容,等号 “=” 后面是实际执行的插件程序。也就是说check_users 就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10 的简称。
这5行定义的命令分别是检测登陆用户数,cpu负载,hda1的容量,僵尸进程,总进程数。
④在监控主机上安装nrpe
shell > tar xvf nrpe-3.2.1.tar.gz
shell > cd nrpe-3.2.1
shell > ./configure
shell > make all
shell > make install-plugin
检测连接被检测主机
shell > /usr/local/nagios/libexec/check_nrpe -H 192.168.17.114
在commands.cfg中增加对check_nrpe的定义
shell > vim /usr/local/nagios/etc/objects/commands.cfg
-c 后面带的$ARG1$ 参数是传给nrpe daemon 执行的检测命令,它必须是nrpe.cfg 中所定义的那5条命令中的其中⼀条。在services.cfg 中使用check_nrpe 的时候要用 “!” 带上这个参数。
⑤定义被监控机的监控服务
shell > vim /usr/local/nagios/etc/objects/services.cfg
可以参考定义好的配置文件
⑥重启nagios服务,查看效果
监控是为了发现问题,实际问题没有得到解决。
为了能够及时到了解到监控的信息,warring通知,一般使用短信、邮件、电话、微信的发送到处理人员手中(运维人员、测试人员、开发人员、部门经理、top)
默认nagios报警的定义
①定义接收到邮箱
contacts.cfg
通过查看命令发现发送邮件,实际使用的sendmail命令。故安装软件
②安装sendmail
shell > yum install sendmail
shell > service sendmail start
shell > a+rwx /var/spool/clientmqueue
如果配置后查看日志,遇到以下问题
实际收到的报警邮件信息
实际公司业务环境,会使用更加智能和多元的报警方式。
调用付费的API 发送短信和400电话。