监控知识体系
监控目标
1
2
3
4
5
6
7
8* 对系统不间断实时监控
实际上是对系统不间断的实时监控
* 实时反馈系统当前状态
我们监控某个硬件,或者某个系统,都是需要能实时看到当前系统的状态,是正常,异常,或者故障
* 保证服务可靠性安全性
我们监控的目的就是要保证系统,服务,业务正常运行
* 保证业务持续稳定运行
如果我们的监控做得很完善,即使出现故障,能第一时间接收到故障报警,在第一时间处理解决,从而保证业务持续性的稳定运行监控方法
1
2
3
4
5
6
7
8* 了解监控对象
我们要监控的对象你是否了解呢?比如CPU到底是如何工作的?
* 性能基准指标
我们要监控这个东西的什么属性?比如CPU的使用率,负载,用户态,内核态,上下文切换
* 报警阈值定义
怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高,用户态,内核态分别跑多少算高?
* 故障处理流程
收到了故障报警,那么我们怎么处理呢?有什么更高效的处理流程吗?监控核心
1
2
3
4
5
6
7
8* 发现问题
当系统发生故障报警,我们会收到故障报警的信息
* 定位问题
故障邮件一般都会写某某主机故障,具体故障的内容,我们需要对报警内容进行分析,比如一台服务器连不上:我们就需要考虑是网络问题,还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因
* 解决问题
当然我们了解到故障的原因后,就需要通过故障解决的优先级去解决该故障
* 总结问题
当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现监控工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25* 老牌监控
* MRTG
MRTG是一套可用来绘制网络流量图的软件
* Grnglia
Grnglia一个跨平台的,可扩展的,高性能的分布式监控系统,如集群和网格
* Cacti
Cacti是一套基于PHP,MySQL,SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据使用RRDtool绘图,但使用者无须了解RRDtool复杂的参数
* Nagios
Nagios是一个企业级监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机状态以及服务,同时提供异常告警通知功能等
* Smokeping
Smokeping主要用于监视网络性能,包括常规的ping,www服务器性能,DNS查询性能,SSH性能等
* OpenTSDB
OpenTSDB用Hbase存储所有时序的数据,来构建一个分布式,可伸缩的时间序列数据库
* 王牌监控
* Zabbix
Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警
* open-falcon
open-falcon的目标是做最开放,最好用的互联网企业级监控产品
* OWL
OWL是TalkingData公司推出的一款开源分布式监控系统
* LEPUS天兔
LEPUS天兔转用于监控数据库
* 三方监控
* 监控宝
* 听云监控流程
1
2
3
4
5
6
7
8
9
10
11
121.数据采集
Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集
2.数据存储
Zabbix存储在MySQL上,也可以存储在其他数据库服务
3.数据分析
当我们事后需要复盘分析故障时,zabbix能给我们提供图形以及时间等相关信息,方面我们确定故障所在
4.数据展示
web界面展示,(移动APP、java_php开发一个web界面也可以)
5.监控报警
电话报警、邮件报警、微信报警、短信报警、报警升级机制等
6.报警处理
当接收到报警,我们需要根据故障的级别进行处理,比如:重要紧急,重要不紧急等.根据故障的级别,配合相关的人员进行快速处理监控指标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54* 硬件监控(Zabbix IPMI Interface)
* CPU温度
* 物理磁盘
* 虚拟磁盘
* 主板温度
* 磁盘阵列
* 系统监控(Zabbix Agent Interface)
* CPU
* CPU整体百分比
* 用户态使用百分比
* 内核态使用百分比
* 每个CPU使用情况
* 磁盘
* 磁盘读/写吞吐(MBps)
* 磁盘读/写次数(次/s)
* 内存
* 内存使用量
* 内存剩余量
* 网络
* 网卡出/入带宽(kbps)
* 网卡出/入包量(个/s)
* 进程
* 进程端口监听
* 应用监控(Zabbix Agent UserParameter)
* LVS、Haproxy、Docker、Nginx、PHP、Memcached、Redis、MySQL、Rabbitmq等
* java监控(Zabbix JMX Interface)
* 网络设备监控(Zabbix SNMP Interface)
* 网络监控
Smokeping是rrdtool的作者Tobi Oetiker的作品,是用Perl写的,主要是监视网络性能,www 服务器性能,dns查询性能等,使用rrdtool绘图,而且支持分布式,直接从多个agent进行数据的汇总
* 流量分析
google出一个叫piwik的开源分析工具
* 日志监控
对于日志监控来说,最见的需求就是收集,存储,查询,展示,开源社区正好有相对应的开源项目:logstash(收集) + elasticsearch(存储+搜索) + kibana(展示)
* 安全监控
三方厂商提供全面的漏洞库,涵盖服务,后门,数据库,配置检测,CGI,SMTP等多种类型
全面检测主机,Web应用漏洞自主挖掘和行业共享相结合第一时间更新0day漏洞,杜绝最新安全隐患
* API监控
监控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的请求
可用性、正确性、响应时间为三大重性能指标
* 性能监控
全面监控网页性能,DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等
zabbix提供URL监控:Zabbix Web 监控
* 业务监控
以电商为例:
* 每分钟产生多少订单
* 每分钟注册多少用户
* 每天有多少活跃用户
* 每天有多少推广活动
* 推广活动引入多少用户
* 推广活动引入多少流量
* 推广活动引入多少利润
* 今天商品打包出库多少
* 今天退货商品有多少
* 等等监控报警
1
2
3
4
5* 电话
* 短信
* 微信
* 邮箱
* 任意报警处理
1
2
3
4* 故障自愈
* 故障级别
* 业务划分
* 人员划分面试监控
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
231.硬件监控
通过SNMP来进行路由器交换机的监控(这些可以跟一些厂商沟通来了解如何做),服务器的温度以及其他,可以通过IPMI来实现.
2.系统监控
如CPU的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘inode使用率。当然这些都是需要配置触发器,因为默认太低会频繁报警。
3.服务监控
比如公司用的LNMP架构,nginx自带Status模块、PHP也有相关的Status、MySQL的话可以通过percona官方工具来进行监控。Redis这些通过自身的info获取信息进行过滤等。方法都类似。要么服务自带。要么通过脚本来实现想监控的内容,以及报警和图形功能。
4.网络监控
如果是云主机又不是跨机房,那么可以选择不监控网络。当然你说我们是跨机房以及如何如何。推荐使用smokeping来做网络相关的监控。或者直接交给你们的网络工程师来做,因为术业有专攻。
5.安全监控
如果是云主机可以考虑使用自带的安全防护。当然也可以使用iptables。如果是硬件,那么推荐使用硬件防火墙。使用云可以购买防DDOS,避免出现故障导致down机一天。如果是系统,那么权限、密码、备份、恢复等基础方案要做好。web同时也可以使用Nginx+Lua来实现一个web层面的防火墙。当然也可以使用集成好的openresty。
6.Web监控
web监控的话题其实还是很多。比如可以使用自带的web监控来监控页面相关的延迟、js响应时间、下载时间、等等。这里我推荐使用专业的商业软件,监控宝或听云来实现。毕竟人家全国各地都有机房。(如果本身是多机房那就另说了)
7.日志监控
如果是web的话可以使用监控Nginx的50x、40x的错误日志,PHP的ERROR日志。其实这些需求无非是,收集、存储、查询、展示,我们其实可以使用开源的ELKstack来实现。Logstash(收集)、elasticsearch(存储+搜索)、kibana(展示)
8.业务监控
我们上面做了那么多,其实最终还是保证业务的运行。这样我们做的监控才有意义。所以业务层面这块的监控需要和开发以及总监开会讨论,监控比较重要的业务指标,(需要开会确认)然后通过简单的脚本就可以实现,最后设置触发器即可
9.流量分析
平时我们分析日志都是拿awk sed xxx一堆工具来实现。这样对我们统计ip、pv、uv不是很方便。那么可以使用百度统计、google统计、商业,让开发嵌入代码即可。为了避免隐私也可以使用piwik来做相关的流量分析。
10.可视化
通过screen以及引入一些第三方的库来美化界面,同时我们也需要知道,订单量突然增加、突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平来梳理各个系统之间的业务关系。
11.自动化监控
如上我们做了那么多的工作,当然不能是一台一台的来加key实现。可以通过Zabbix的主动模式以及被动模式来实现。当然最好还是通过API来实现。
12.分布式监控监控链接文章
- 监控体系图
监控系统图 下载 密码:u1wz