微服务的可观测性

微服务是是一个大型的分布式系统,服务之间相互依赖支撑系统功能。同时对微服务系统的监控也是微服务体系的重要组成分。对微服务系统的监控主要分为三大部分,Trace追踪,Metrics指标,Log日志。

这三大部分几乎记录了微服务的前部信息,通过这些信息就可以了解系统的状态。为实现记录这些信息,诞生了众多微服务的组件,完成各个功能。

  • trace:链路追踪是一种技术,用于跟踪和监视分布式系统中请求的传播路径和服务之间的调用关系。在微服务架构中,一个应用程序通常由多个微服务组成,它们分布在不同的服务器上,相互之间通过网络进行通信。
    链路追踪的主要目的是帮助开发人员和运维团队理解和监视分布式系统中请求的传播路径,以及每个服务处理请求所花费的时间。
    实现原理是,跟踪器(Tracer): 负责记录请求的传播路径和服务之间的调用关系,以及每个服务处理请求所花费的时间。Span: 代表一个请求的一部分操作或事件,包括操作名称、开始时间、结束时间、标签和日志等信息。每个服务处理请求时会创建一个或多个 Span。上下文传播(Context Propagation): 用于在服务之间传递跟踪信息,以确保每个请求的完整链路信息都能被收集和记录。

链路追踪的主要实现框架有opentracing,opentelemetry等。可视化UI工具有Jaeger,Zipkin
不论使用何种框架,链路追踪都包括代码埋点、数据存储和查询展示三部分,前两部分都是代码入侵的。jaeger和zipkin等链路追踪框架提供了一整套的埋点,存储,查询的方案,但是框架都是私有性不兼容,因此使用兼容性好的opentraing,otel的SDK使用统一的规范添加埋点与存储数据,将数据暴露到指定端口即可,可视化UI工具从接口获取数据。

  • metrics:微服务指标监控是一种用于监视和评估微服务架构中各个服务的性能、可用性和健康状况的技术。在微服务架构中,一个应用程序通常由多个微服务组成,它们分布在不同的服务器上,并通过网络进行通信。微服务指标监控旨在收集、存储和分析与这些服务相关的各种性能指标,以便了解系统的整体运行情况,并及时发现和解决潜在的问题。
    实现原理:性能指标(Performance Metrics),包括服务的响应时间、请求处理速率、CPU利用率、内存使用量、网络流量等指标;可用性指标(Availability Metrics):,包括服务的可用性、错误率、故障率等指标;资源利用率指标(Resource Utilization Metrics), 包括服务器的 CPU、内存、磁盘和网络等资源的利用率;警报和通知(Alerting and Notification):,根据预先定义的阈值和规则,对监控数据进行实时分析,并在发现异常或超出阈值时触发警报和通知。

指标监控的框架有prometheus,Zabbix等。可视化工具有Garafana,Prometheus UI。
指标监控通常没有代码入侵,只需要实现配置类即可。

  • log:在分布式系统中,众多服务分散部署的服务器上,要想快速方便的实现查找、分析和归档等功能是十分棘手的,日志系统就是将各个不同的服务器上面的日志收集在一起,方便快速查找到相应的日志。常见的日志系统ELK(ElasticSearch,Logstash、Kibana(ui)这三个组件构成),另外还有很多日志采集框架,这里推荐loki+Grafana的轻量级框架。

OpenTelemetry为了实现其可观测性有三大体系:Trace追踪,Metrics指标,Log日志。

Trace用于链路追踪,跟踪服务的调用过程帮助快速定位出现的问题。

Metrics用于了解系统的资源利用情况,包括 CPU、内存、磁盘空间等,实现资源合理分化。

日志用于记录了系统运行时的各种信息,包括错误、异常、警告等。通过分析日志,可以快速定位系统出现的故障和问题。

这三个指标也是OpenTelemetry的三大体系。otel的不用体系采集不用信息,但是otel本身不提供可视化工具,而是提供Exporter最为三方工具的api。

常见的Trace的实现方案otel + jaeger,otel采集数据,jaeger显示数据;Metrics的实现方案promethus + grafana ; 日志的实现方案Loki + grafana。

openTelemetry
Jaeger

promethus

grafana

loki

相关推荐
程序员-Benothing8 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
m0_646429978 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
亚川楼宇自控系统数据中心厂家8 小时前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
小白学大数据8 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
茵Cindy8 小时前
AI+HR智能体架构如何落地?从入口到生态底座的工程实现
人工智能·架构·ai+hr
迪康Defender8 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
骇客野人9 小时前
微服务多级缓存架构设计
缓存·微服务·架构
闻哥9 小时前
分布式任务调度框架:XXL-Job / ElasticJob / DolphinScheduler / SchedulerX 架构对比与选型
分布式·架构·wpf
天远API10 小时前
零信任架构实战:基于天远风控经营异常预警构建自动化供应商店铺巡检网关
人工智能·架构·自动化·dubbo
AI行业应用研究10 小时前
会务信息载体的演进:纸质、PDF 与结构化数据源的分发成本与版本一致性
大数据·人工智能·安全·小程序·架构·pdf