监控目标
1、对系统不间断实时监控:实际上是对系统不间断的实时监控;
2、实时反馈系统当前状态:实时能看到当前系统的状态———正常、异常、故障;
3、保证服务的可靠性安全性:保证系统、服务、业务正常运行;
4、保证业务持续稳定运行:如果监控做的很完善,即使出现了故障,也能第一时间接收到故障报警,在第一时间处理解决,从而保证业务持续性的稳定运行;
举例:Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。
监控流程
数据采集:Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集;
数据存储:Zabbix存储在MySQL上,也可以存储在其他数据库服务;
数据分析:当我们事后需要复盘分析故障时,Zabbix能给我们提供图形以及时间等相关信息,方面我们确定故障所在;
数据展示:Web界面展示、(移动APP、java_php开发一个Web界面也可以);
监控报警:电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以);
报警处理:当接收到报警,我们需要根据故障的级别进行处理,比如:重要紧急、重要不紧急,等,根据故障的级别,配合相关的人员进行快速处理。
监控指标
监控指标分类:包含硬件监控、系统监控、应用监控、网络监控、流量分析、日志监控、安全监控、API监控、性能监控、业务监控;
1、硬件监控
硬件监控:CPU温度、物理磁盘、虚拟磁盘、主板温度、磁盘阵列
早期我们通过机房巡检的方式,查看硬件设备灯光闪烁情况判断是否故障,这样非常浪费人力;
现在我们可以通过IPMI对硬件详细情况进行监控,并对CPU、内存、磁盘、温度、风扇、电压等设置报警设置报警阈值(自行对监控报警内容编写合理的报警范围) ;
(通过SNMP来进行路由器交换机的监控,服务器的温度以及其它,可以通过IPMI来实现;)
2、系统监控
系统监控指的是对系统资源的使用情况进行监控:
1、CPU:CPU整体使用百分比、用户态使用百分比、内核态使用百分比、每个CPU使用百分比;
2、磁盘:磁盘读/写吞吐(MBps)、磁盘读/写次数(次/s)
3、内存:内存使用量、内存剩余量
4、网络:网卡出/入带宽(kbps)、网卡出/入包量(个/s)、TCP状态监控
5、进程:进程端口监控
如CPU的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘inode使用率。当然这些都是需要配置触发器,因为默认太低会频繁报警;
3、应用监控/服务监控
应用监控指的是监控服务器运行了哪些服务:如Nginx、Docker、PHP、Redis、MySQL、RabbitMQ、Kafka等,相关的服务都需要使用zabbix监控起来;
比如公司用的LNMP架构,Nginx自带Status模块、PHP也有相关的Status、MySQL的话可以通过Percona官方工具来进行监控,Redis这些通过自身的info获取信息进行过滤等,方法都类似,要么服务自带,要么通过脚本来实现想监控的内容,以及报警和图形功能。
4、网络监控
如果是云主机又不是跨机房,那么可以选择不监控网络。当然你说我们是跨机房以及如何如何,推荐使用smokeping来做网络相关的监控,主要是监视网络性能,www服务器性能,DNS查询性能等,使用rrdtool绘图,而且支持分布式,直接从多个agent进行数据的汇总;
5、安全监控
如果是云主机可以考虑使用自带的安全防护,当然也可以使用iptables,如果是硬件,那么推荐使用硬件防火墙WAF,使用云可以购买防DDOS,避免出现故障导致down机一天,如果是系统,那么权限、密码、备份、恢复等基础方案要做好。Web同时也可以使用Nginx+Lua来实现一个Web层面的防火墙。当然也可以使用集成好的OpenResty。
6、Web监控/性能监控
全面监控网页性能,DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等,比如可以使用自带的Web监控来监控页面相关的延迟、js响应时间、下载时间等等。
7、日志监控
如果是Web的话可以使用监控Nginx的50x、40x的错误日志,PHP的ERROR日志。其实这些需求无非是,收集、存储、查询、展示,我们其实可以使用开源的ELKStack来实现。Logstash(收集)、Elasticsearch(存储+搜索)、Kibana(展示)。
8、业务监控
业务监控指的是将我们重要的业务指标进行监控,并设置阈值进行告警通知;
如电商系统为例:每分钟产生多少订单、每分钟注册多少用户、每天有多少活跃用户、每天有多少推广活动、推广活动引入多少用户、推广活动引入多少流量、推广活动引入多少利润等,重要指标都可以加入Zabbix上,然后通过Screen展示;
9、流量分析
平时我们分析日志都是拿awk sed xxx一堆工具来实现。这样对我们统计IP、PV、UV不是很方便,那么可以使用百度统计、Google统计、商业,让开发嵌入代码即可。为了避免隐私也可以使用Piwik来做相关的流量分析。
10、可视化
通过Screen以及引入一些第三方的库来美化界面,同时我们也需要知道,订单量突然增加、突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平来梳理各个系统之间的业务关系。
11、自动化监控
如上我们做了那么多的工作,当然不能是一台一台的来加key实现。可以通过Zabbix的主动模式以及被动模式来实现。当然最好还是通过API来实现。
12、API监控
监控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的请求。可用性、正确性、响应时间为三大重性能指标。
13、性能监控
全面监控网页性能,DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等。Zabbix提供URL监控:Zabbix Web 监控;