线上监控怎么做?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线上监控怎么做?相关的知识,希望对你有一定的参考价值。

监控,是一个生产服务必不可少的组成部分,少了监控的产品,无异于在互联网上“裸奔”。在一个产品正式上线之前,就应该做好相关的监控规划工作。 关于监控,就有一些我们经常被忽略的陷阱和值得思量的好方向。SRE成长记经查阅资料梳理了一下,一起来看看吧!

监控的陷阱

1. 对监控工具盲目崇拜

监控不是一个单一的问题,而是涉及多方面的复杂问题。市面上各种监控工具五花八门,所有的工具都能满足自己的实际需求。要在众多工具中找到最适合自己的监控工具和方式,如果使用多种工具,尽量使用最小工具集。 同时,在有条件的团队,可根据需要,研发自己量身打造的专用工具。

2. 监控岗位化

监控不是一份工作,而是一种技能,团队中每一位成员都需要在一定程度上掌握这项技能。 可观测性团队(构建自服务监控工具,并将其作为服务提供给给其他团队)负责创建并维护监控工具,但不应该负责监控某个具体的应用程序、配置告警信息等。 公司监控的责任不能完全推给一个人来承担。

3. 为了“有监控”而监控

监控系统应该是有效的,不能为了证明自己有监控而部署监控系统。无效的监控系统可能会比没有监控还糟糕。 哪些是无效的监控系统? 1)虽然做了监控,如系统负载、CPU、内存等,但是服务还是在不知道什么时候、什么原因的情况下停止了运行; 2)习惯性地忽略告警信息,因为它们多数时候是误报或者无需处理; 3)每隔5分钟或者更短的时间就要检查系统的指标; 4)没有存储历史指标数据; 5)虽然做了监控,但是无人看得懂;

4. 把监控当拐杖

虽然监控对于提醒你注意问题非常有用,但是别忘了更重要的是解决问题。 如果发现自己面对的是一个问题层出的服务,相比层层添加更多的监控来说,更应该做的是提升服务的代码质量、服务稳定和弹性。 更多的监控无法修复有效的系统,也不会改善现有的情形。

5. 监控缺乏自动化

监控配置应该尽量做成自动化,减少配置监控项的繁琐。 如果服务在每次扩容后,都需要花费大量的时间在监控配置上,可能就不会有太多精力去思考怎么监控更多的东西。

监控的建议

1. 可组合监控可能比一体化监控效率更好、更灵活

可组合监控:使用多个专门的工具,并且将它们松散地组合在一起,形成一个监控平台,每个工具各司其职。如果随着业务的发展,某个工具不再满足需求,可以替换掉这个工具,而非替换整个平台。 一个监控系统一般包含这些方面: 数据采集:采集监控指标、日志等数据,数据采集组件采集数据一般有2种方式——推送(如zabbix主动模式)或拉取(如zabbix被动模式、Prometheus等); 数据存储:将采集到的数据存储到数据库中,如influxdb等; 可视化:将监控数据以可视化的图标等方式展示出来,如grafana等; 分析和报告:根据监控数据,对应用的可用性、容量等进行分析和报告,如SLA; 告警:发送问题告警信息给系统管理员;

2. 从用户角度监控能产生更高效的可见性

如果当你收到一份重要的告警,你需要跟相关同事确认这个告警信息是否影响到用户使用,那么你应该考虑在用户端加设置监控告警。 添加监控的最佳地点首先是用户与应用程序交互的点。用户不会关心应用程序实现的细节,而会关心应用程序是否可用,首先要从他们的角度看问题。 运行监控最有效的事情之一就是监控HTTP响应码,这些监控虽然不会告诉你出了什么问题,但是会告诉你问题出现了,并且正在影响用户。

3. 尽可能购买工具,而不是自己构建工具

相比购买工具,组建公司自由的可观测性团队的人力成本、工具的专业性而言,可能购买工具是个更好的选择。购买专业的监控工具,你可以节省出更多时间去关注自身服务建设。

4. 不断持续改善监控

监控不是一层不变,随着业务、程序架构的变迁和更迭,监控也应持续改善适应新的需求。

以上是关于线上监控怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

线上监控怎么做?

React Native如何做线上错误与性能监控

监控维度与指标

Dubbo项目线上案例解析

用jmeter编写脚本做实时线上监控

用jmeter编写脚本做实时线上监控