一篇吃透监控系统:主流工具选型及落地场景参考

这篇文章,我将对监控体系的基础知识、原理和架构做一次系统性整理,同时还会对几款最常用的开源监控产品做下介绍,以便大家选型时参考 。内容包括3部分:
 
必知必会的监控基础知识主流监控系统介绍监控系统的选型建议
 
一、必知必会的监控基础知识
 
我们可以理解监控系统就像我们古代打战的哨兵一样,哨兵的角色非常重要,敌人来了,哨兵会第一时间发出预警(吹笛、打鼓、放烟),让守城的战士能够最快的时间处理,应对 。

一篇吃透监控系统:主流工具选型及落地场景参考

文章插图
 
那对于我们应用系统而言,监控系统就像我们第三只眼,如果有应用系统出现问题,我们可以通过监控系统看是哪里出现问题,是redis挂了,还是说服务器内存满了,有监控系统我们可以很轻松、快速的定位问题 。
 
甚至我们可以设置预警,对一些将要出现的问题进行提前预防处理,及时避免问题的发生 。
 
1、监控系统的作用
一篇吃透监控系统:主流工具选型及落地场景参考

文章插图
 
1)帮助定位故障
 
在发生故障时,我们可以通过查看监控系统的各项指标数据,辅助故障分析和定位 。
 
2)预警减少故障率
 
对于即将可能产生的故障能够及时发出预警信息,做好提前预防处理 。
 
3)辅助容量规划
为服务器、中间件以及应用集群的容量规划提供数据支撑 。
4)辅助性能调优
 
JVM垃圾回收次数、接口响应时间、慢SQL等等都可以监控优化 。
 
2、常见的监控对象和指标都有哪些?
一篇吃透监控系统:主流工具选型及落地场景参考

文章插图
 
1)服务器监控
 
CPU使用率、内存使用率、磁盘使用率、磁盘读写的吞吐量、网络出入流量等等 。
 
2)MySQL监控
 
TPS、QPS、数据库连接数、慢SQL、InnoDB缓冲池命中率等等 。
 
3)Redis监控
 
内存使用率、缓存命中率、key值总数、Redis响应请求时间、客户端连接数、持久性指标等等 。
 
4)MQ监控
 
连接数、队列数、生产速率、消费速率、消息堆积量等等 。
 
5)应用监控
 
  • HTTP接口:URL存活、请求量、耗时、异常量 。
  • JVM :GC次数、GC耗时、各个内存区域的大小、当前线程数、死锁线程数 。
  • 线程池:活跃线程数、任务队列大小、任务执行耗时、拒绝任务数 。
3、监控系统的基本流程
一篇吃透监控系统:主流工具选型及落地场景参考

文章插图
 
1)数据采集
 
采集的方式有很多种,包括日志埋点进行采集,JMX标准接口输出监控指标,被监控对象提供REST API进行数据采集(如Hadoop、ES),系统命令行,统一的SDK进行侵入式的埋点和上报等 。
 
2)数据传输
 
将采集的数据以TCP、UDP或者HTTP协议的形式上报给监控系统,有主动Push模式,也有被动Pull模式 。
 
3)数据存储
 
有使用MySQL、Oracle等关系数据库存储的,也有使用时序数据库RRDTool、OpentTSDB、InfluxDB存储的,还有使用HBase存储的 。
 
4)数据展示
 
数据指标的图形化展示 。
 
5)监控告警
 
灵活的告警设置,以及支持邮件、短信、IM等多种通知通道 。
 
二、市面上的一些常见监控系统比较
下面再来认识下主流的开源监控系统,由于篇幅有限,我挑选了3款使用最广泛的监控系统:Zabbix、Open-Falcon、Prometheus,会对它们的架构进行介绍,同时总结下各自的优劣势 。
1、Zabbix介绍
一篇吃透监控系统:主流工具选型及落地场景参考

文章插图
 
Zabbix 1998年诞生,核心组件采用C语言开发,Web端采用php开发 。它属于老牌监控系统中的优秀代表,监控功能很全面,使用也很广泛,差不多有70%左右的互联网公司都曾使用过 Zabbix 作为监控解决方案 。
 
先来了解下Zabbix的架构设计:
一篇吃透监控系统:主流工具选型及落地场景参考

文章插图
 
Zabbix Server
 
【一篇吃透监控系统:主流工具选型及落地场景参考】


推荐阅读