如何建立完善的监控体系?
如果给你一个项目,让你去搭建监控系统,你会如何做呢?
首先,我们知道监控分3部分:
1.数据的获取
2.整理数据
3.数据展示
其次,我们要明白监控的目的
1.可以发现异常。这个是监控系统存在的意义,我们必须保证监控系统可以发现异常,不然一切都没有用意义。
2.快速发现问题。优秀的监控系统必须有很强的时效性,监控和报警的响应速度直接影响故障的恢复速度
3.问题快速定位。优秀的监控系统可以快速定位出问题的根源,找到根因。
4.可以评估影响面。我们可以从监控系统,快速评估出问题的影响面。
所以,首先就要进行数据的获取。我们可以从业务角度添加监控。
1.信息整合,收集所有的监控和入口。监控的数据都是来自不同的渠道或者团队,所以我们要对这些信息进行整理汇总。
2.构建可视化监控大盘。确定每个大盘的相关指标。
3.进一步细化关键指标,把监控拆分到各个子领域。
4.理清业务核心链路,找出业务请求的主干和支流。在关键上下游节点增加监控。
5.统一添加基础指标。
6.关键信息的提取、汇总和初步判断。我们可以从功能层面、服务层面、基础设施层面3个层面进行信息汇总
功能层面:监控上传下载功能,记录当前流量、同环比、故障开始时间以及累计损失。这能够帮助我们对故障影响做出初步的判断。
服务调用层面:汇总和分析服务调用失败的情况,以便快速定位问题。
基础设施层面:识别故障机器,并分析这些主机是否存在共同特征,比如是否位于同一网络段,从而帮助我们确定故障的根源。
7.优化监控报警。为了避免疲劳报警和信息爆炸,我们需要优化监控报警。怎么去优化报警呢?1.报警分级。2.报警信息合并。3.调整报警阈值。4.报警规则优化。5.报警响应流程
报警分级:根据监控的重要性,把报警分成不同的级别。
报警信息合并:把相同或相似的报警信息进行合并,以减少重复报警,
调整报警阈值:合理设置报警阈值,可以避免因小幅度波动而频繁触发报警。
报警规则优化:定期审查和优化报警规则,确保它们仍然符合当前的业务需求和系统状态。
报警响应流程:我们应该建立有效的报警响应流程,确保团队能够及时、有效地处理报警。比如设置上升机制,问题可以层层升级。
我们可以把涉及的监控按照不同的板块进行划分,大致分为:
业务板块:业务相关的所有指标监控。这个可以做分层监控,1.各个服务的监控。2.由各个业务汇聚成的业务大盘,它可以实时直观地帮助我们去判断当前业务的整体情况。
上下游板块:服务之间、服务与数据库之间、服务与网关、服务与nginx之间等。形成一个网络拓扑图,我们可以从这个拓扑图快速找到问题所在。
基础设施板块:业务部署的机房、网络等相关监控。
变更板块:所有业务变更以及变更状态的相关监控
其他板块:后续需要新增的板块。
本文是参考了百园老师的课程,然后结合自己实际工作经验撰写的,在这里先谢谢百园老师的课程,如果有侵权请联系删除。
参考:https://time.geekbang.org/column/article/793316