监控设计步骤
首先,你要分析系统的架构。在知道架构中使用的组件之后,再针对每个组件进行监控。
其次,监控要有层次,要有步骤。先全局,后定向定量分析。
最后,通过分析全局、定向、分层的监控数据做分析,再根据分析的结果决定下一步要收集 什么信息,然后找到完整的证据链。
这才是监控应该有的步骤,才能体现监控的价值。
监控技术图谱
架构图
做性能监控之前,先画一个最简单的架构图,看一下架构中 各有什么组件,各有什么服务,将这些列下来,再找对应的监控手段和方式,
需要监控的有:
1、服务器操作系统
2、nginx
3、redis
4、mysql
5、代码层级
6、测试结果
7、tomcat
监控设计
1. 我们要对整个架构做分层。
2. 在每一个层级上列出要监控的计数器。 寻找相应的监控工具,实现对这些计数器的监控。如果一个工具做不到,在定位过程中 考虑补充工具。
3. 要做到对每层都不遗漏。
识别出每个监控的节点和层级,再对应到架构
最适合的监控方式是什么样的呢?那就是成本最低,监控范围最大,效率最快。
不建议一开始就把代码级的监控给加进来
监控思路
全局监控设计
测试前就要有全局监控。
OS层
看linux架构图
常用的计数器
DB层(mysql为例)
定向监控
出现问题的时候,才用定向监控,定位问题的原因。
OS 层之定向监控细化 1
看到 CPU 消耗得多,那么你就得按照下面这张图细化思路
流程图
OS 层之定向监控细化 2
当你看到 OS 全局监控图中的 Network 中的 Total 总流量比较大时,就要有这样的分析思 路(从右向左看):
DB 层之定向监控细化 1
DB 层之定向监控细化 2
锁数据,平均时间为 754ms
分析产生锁的 SQL,看 SQL 的 Profiling 信息,再根据信息找下一步原因,最终给出解决 方案。
监控工具
如果要选择的话,肯定是用 Prometheus + Exporter 的思路会好一点。于是我们这样实现 全局的监控。
OS、DB、nginx、REDIS都能用 Prometheus + Exporter方式监控
tomcat
如果是微服务架构,则需要监控服务状态,cluster,pod,微服务链路。
不管你的架构有多么复杂,组件有多少,这样的监控逻辑都是一定要有的。适 合的工具要用,并且尽量多用,但工具还远远替代不了分析的思维逻辑。没有判断的能力,再强悍的工具也只是个花架子。
总结
对架构中的组件进行了分析之后,通过全局— 定向的思路列出要看的计数器,再通过相应的监控工具去实现,拿到要分析的数据。 这就完成了要做的监控设计和具体实施。 至于你是用什么工具去实现的,这并不重要,因为拿到监控数据,可供分析证据链最重要
本文来自高楼老师课程笔记。