21|可观测性:如何设计实现一个好用的分布式监控体系?
许文强
你好,我是文强。
“可观测性”是近几年技术圈很火的话题,特别是 OpenCensus 和 OpenTracing 合并成立 OpenTelemetry 后,可观测性的发展速度越来越快,越来越成熟。
OpenTelemetry 主要是解决可观测性数据的获取规范问题,类似消息队列领域的 AMQP 和 OpenMessaging,目的都是打造一个标准化规范。它系统地将可观测性分为指标(Metrics)、日志(Logs)、跟踪(Traces)三个方面。在消息队列领域,可观测性建设主要也是围绕着这三点展开。
今天我们先来聊一聊怎样实现好用的指标和日志模块,以便我们快速定位业务问题出在哪里,下一节讲跟踪(Traces)。
指标需要关注哪几个维度?
从技术上看,指标分为单机维度和集群维度。
单机维度的指标主要分为操作系统、语言虚拟机、应用进程三层。
所以,从排查问题的角度来看,我们需要关注对应的三层指标。
操作系统:IaaS 层指标的 CPU、内存、网卡、硬盘等等。
语言虚拟机:Java 虚拟机的 GC、线程池、堆容量等等。
应用进程:进程中的生产消费各阶段耗时、接口的请求数、进程文件句柄数量等等。
集群维度是多个应用进程(节点)构成的集群维度的一些监控指标,比如集群中的 Topic 总数、分区数、Controller 节点的负载等等。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了如何设计和实现一个高效的分布式监控体系,重点关注了可观测性的发展和指标的记录、暴露方式。首先介绍了监控体系中的关键指标,包括单机维度和集群维度的指标,以及消息队列的关键指标。针对这些指标,详细介绍了如何记录指标,包括Java Metrics、Prometheus Metrics、OpenTelemetry支持的指标类型。接着,讨论了指标的暴露方式,包括自定义TCP/HTTP接口、JMX Service Server、Prometheus标准接口和OpenTelemetry上报。对于Prometheus和OpenTelemetry的指标暴露方式,分别进行了详细的技术讨论。最后,指出了当前主流的指标暴露方案,并对Prometheus和OpenTelemetry的使用进行了比较和建议。文章还总结了消息队列集群的指标关注点、记录指标的库以及指标暴露的方案。整体而言,本文对设计和实现分布式监控体系具有一定的参考价值,尤其适合对监控体系感兴趣的读者。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》,新⼈⾸单¥59
《深入拆解消息队列 47 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 虚竹动态调整日志的级别,也是只能看到调整后的错误信息,调整之前的错误信息看不到了吧?
作者回复: 是的,之前的日志看不到了。 动态调整日志级别主要解决是不重启服务的情况下,可以开启和关闭不同级别的日志输出。可以用在比如服务正在异常,可能重启就恢复了。此时就可以动态开启不同级别的日志来查问题 。
2023-10-12归属地:北京 - takumi老师,为什么接口调用耗时使用Histogram而不是Summary?Summary还可以记录P99 P95这种2023-11-03归属地:上海
收起评论