首页 > 其他分享 >如何设计实现一个好用的分布式监控体系?

如何设计实现一个好用的分布式监控体系?

时间:2023-09-26 23:56:12浏览次数:40  
标签:节点 指标 耗时 集群 监控 维度 日志 好用 分布式

dg-publish: true
title: 可观测性:如何设计实现一个好用的分布式监控体系?
createTime: 2023-09-25 23:35
tags:
  - kafka

可观测性:如何设计实现一个好用的分布式监控体系?

怎样实现好用的指标和日志模块,以便我们快速定位业务问题出在哪里

指标需要关注哪几个维度?

从技术上看,指标分为单机维度和集群维度。

单机维度

集群维度

多个应用进程(节点)构成的集群维度的一些监控指标,比如集群中的 Topic 总数、分区数、Controller 节点的负载等等。

消息队列有哪些关键指标

所有的消息队列有通用的核心指标,主要有五类:集群(Cluster)、节点(Node/Broker)、主题(Topic)、分区 / 队列(Partiton/Queue)、消费分组 / 订阅(Group/Subscription)。

集群

集群指标主要是集群资源数量相关的,比如主题数量、分区数量、节点数量等集群维度的信息,这类信息的影响在于数量。如果某些资源数量过大,有可能影响集群的稳定。

几乎所有的消息队列产品,在主题或分区数量太多的情况下,都会出现性能下降或者不稳定问题。比如,RabbitMQ 的每个节点需要同步缓存全量 Queue 数据,如果 Queue 太多,会导致单机负载变高。Kafka 的分区过多,会加大 Controller 的压力。Pulsar 的分区太多,会对 ZooKeeper 造成压力等等。

节点

节点指标一般包含节点的生产消费的吞吐量、耗时、消息数,接口的请求数、错误码、耗时,JVM FullGC、YongGC 的次数,节点的 TCP 连接数等等。

节点相关的指标,都是我们需要重点关注的指标。因为消息队列主打高吞吐、低延时,所以耗时和吞吐量是业务最直接感知的指标。比如出现报错时,接口维度的错误码统计就需要重点关注。比如客户端出现耗时高,首先就需要观察各个节点的生产消费的耗时;然后观察是否发生 GC、接口调用次数、连接是否有异常;最后关注 IaaS 层指标,如 CPU、内存、网卡等指标是否有异常,不管在什么时候,IaaS 指标和 Java 虚拟机相关的指标都是非常重要的。

主题和分区

主题指标一般是主题维度的吞吐量、消息条数、生产和消费耗时数据。当业务反馈只有某些主题异常时,这些指标可以用来定位问题。

消费分组和订阅

消费分组 / 订阅的指标一般是消费速度、未消费的消息数量(堆积数)。平时用来观察消费的情况,比如消费速度是否跟得上、是否有堆积等等。或者当消费出现异常的时候,我们可以通过这个指标用来判断消费速度是否有问题,然后结合主题和分区维度的指标,最终确认问题。

如何记录指标?

  • 生产消息数量,应该是一个累加的值。
  • 生产的流量,也是一个累加的值。
  • 接口调用耗时,应该是一个分布的值。
  • 生产连接数,应该是一个可加可减的值。
  • 进程启动状态,应该是一个瞬时值。

主流的指标库

Java Metrics 提供了五种指标类型。

Gauge:提供返回一个变量的瞬时值 / 当前值,可以用来定义指标的当前状态的瞬时值,比如当前集群是否限流。
Counter:是一种特殊的 Gauge 度量,它提供一个获取可增可减的时刻量,比如线程池的空余容量。
Meter:用来测量事件发生的频率,也可以统计最近 1 分钟、5 分钟和 15 分钟的频率,比如接口请求的频率。
Histogram:常用来统计数据的分布,比如最小值、最大值、平均值和中值,还可以进行百分比的分布统计,例如 TP75、TP90 和 TP99 等,接口请求的耗时分布。
Timer:可以理解为 Meter+Histogram 的合体,需要同时使用 Histograms 和 Meters 功能时,就可以用 Timers。

Prometheus Metrics 提供了四种指标类型。

Gauge:记录可增可减的时刻量。
Counter:是一个只增不减的计数器。
Histogram:直方图,在一段时间范围内对数据进行采样,最后将数据展示为直方图。
Summary:概要,反映百分位值,例如某 RPC 接口,95% 的请求耗时低于 100ms,99% 的请求耗时低于 200ms。

生产消息数量、生产的流量、生产连接数是累加值,可以用 Counter 表示;接口调用耗时是分布值,可以用 Histogram 表示;进程启动状态是瞬时值,可以用 Gauge 表示。

怎样打印日志?

保证日志内容完整,携带我们需要排查的所有信息。

但是我们可以参考一下 OpenTelemetry Logs 推荐的标准规范内容,看看日志一般要包含哪些内容。因为 OpenTelemetry Logs 的格式是经过社区各个大厂的人员不断讨论出来的,有比较好的参考意义。另外日志的打印,我也建议你使用 OpenTelemetryLogs 组件,它的内容很齐全,集成起来也方便。

动态调整日志级别

我们修改日志级别是需要重启应用的,或者需要经过特殊的配置,才能实现日志级别的动态修改。所以,为避免在出问题时需要重启进、程调整日志级别,我们需要在应用中配置可动态修改的日志级别(具体如何配置,资料很多,比如使用 SpringBoot 的同学可以根据文档《在 Spring Boot 应用程序中动态修改 Logger 日志级别》配置可动态修改的日志级别)。

地址

此文章为9月day25 学习笔记,内容来源于极客时间《https://time.geekbang.org/column/article/684749》

标签:节点,指标,耗时,集群,监控,维度,日志,好用,分布式
From: https://www.cnblogs.com/wzqshb/p/17729221.html

相关文章

  • 如何实现简单的分布式链路功能?
    为什么需要链路跟踪为什么需要链路跟踪?微服务环境下,服务之间相互调用,可能存在A->B->C->D->C这种复杂的服务交互,那么需要一种方法可以将一次请求链路完整记录下来,否则排查问题不好下手、请求日志也无法完整串起来。如何实现链路跟踪假设我们从用户请求接口开始,每次请求需要有......
  • Hadoop是什么? Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并
    Hadoop是什么?Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并行处理任务,支持大规模数据存储和处理。Hadoop的核心组件包括分布式文件系统HDFS和分布式计算框架MapReduce,它们使得Hadoop可以在廉价的硬件上并行地处理大量数据。Hadoop还包括很多相关的项目和子......
  • Zabbix配置监控
    1.zabbix添加主机监控给zabbix-server机器安装上agent进程,改配置,启动即可1.目标机器安装zabbix-agentrpm-ivhhttps://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm#友情提醒,先做好时间同步!!ntpdate-untp.aliyu......
  • 推荐一些好用的软件卸载工具~~
    我们在电脑上运行软件安装包时,安装程序会生成一些程序、注册表项等文件,用以支持软件的正常运行。但是,在卸载软件时,一些软件的卸载程序卸载不干净,并不能完全清除安装和使用中产生的文件。可能会导致产生卸载残留、垃圾文件堆积,拖累电脑系统、再次安装软件时安装失败。今天给大家介绍......
  • 视频融合平台EasyCVR如何使用视频监控系统搭建森林防火与人车管理系统解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 视频融合平台EasyCVR如何使用视频监控系统搭建电商货物可视化追溯解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 分布式操作系统是操作系统的终极形态吗?​
    昨天一位网友私信我,提出一个问题:“Laxcus分布式操作系统会不会是操作系统发展的终极形态?”。今天觉得有必要把这件事说一说,所以就忙里偷闲写下这篇文章。咱们先说结论:是也不是,需要具体情况具体分析。操作系统发展到今天,基本分为两种:面向个人工作的操作系统,和面向企业业务的操作系统......
  • POWERBI_1分钟学会_连续上升或下降指标监控
    一:数据源模拟数据为三款奶茶销量的日销售数据源,日期是23.8.24-23.8.31。A产品为连续7天,日环比下降,B产品为连续3天,日环比下降,C产品为连续2天,日环比下降。二:建立基础度量值首先,我们建立两个基础度量值,计算我们的产品销量和日环比。产品销量=CALCULATE(SUM('数据源'[销量]))......
  • 云原生周刊:K8s 的 13 个最佳开源监控工具
    开源项目推荐SilverSurfer该项目旨在检查Kubernetes对象的API版本兼容性,并为其提供迁移路径,以便为集群升级做好准备。ActionsRunnerControllerActionsRunnerController(ARC)是一个Kubernetes操作器,可为GitHubActions编排和扩展自托管运行器。使用ARC,您可以......
  • 视频汇聚/安防监控平台EasyCVR指定到新的硬盘进行存储录像,如何自动挂载该磁盘?
    TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,包括对人、车、......