OpenTelemetry (一)

466 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情

引言

现在微服务大行其道而微服务又依托于云原生(Kubernetes),随着一个一个 Pod 的运行,系统的复杂度也逐步增加。或许你正在经历,当你解决一个 bug 时,你需要穿梭于好几个 Pod 实例的日志文件。尤其现在用户对于系统的 SLA 有了更高的要求,那么一旦系统出现问题那么留给我们定位问题、解决问题的时间越来越少,所以系统的可观测性变得越来越重要,通过系统的监测主动发现问题,而不是当用户出现问题,反馈问题时,才被动的发现问题。

而当你决定给你的 SpringBoot 微服务服务添加监控时,那你一定绕不开这几个工具,prometheus + grafana,skywalking,logback,它们对应输出指标、链路和日志,我们也正是通过这些工具,来帮助我们了解应用程序的内部系统状态和运行情况。

需要注意的是要建立系统的可观测性只是将指标采集、日志分词可查询、链路可追踪还是不够的,比如当用户无法登录时,我们通过对采集的这些数据进行关联分析,快速定位、找到根本原因,从而保障系统的可靠性,达到服务的 SLA。

本系列文章会通过对开源可观性平台 Getting Started | OpenTelemetry 的学习使用,逐步揭开系统可观性建设的神秘面纱。

遇事不决跑 Demo

服务的准备和启动

在我们深入的去学习 OpenTelemetry 之前,我们可以先通过 OpenTelemetry Community Demo Application (github.com) 先大致看下 OpenTelemetry 能够做到什么样的效果。

我这里用的是用 docker-compose 的方式来启动,启动前通过以下命令查看版本。docker-compose 的版本需要 v2.0.0+

docker-compose --version

如果版本不够,建议通过 docker desktop 来升级版本和管理内存。

OpenTelemetry 效果介绍

将网上商店应用作为可观测性后端的演示应用程序,通过 OpenTelemetry Collector 从应用的采集到的数据,导出到对应的后台如 promethus,zipkin,Jaeger 等。

Webstore

image-20221205222409662.png

Grafana:Webstore 服务指标采集的展示

image-20221205222538744.png

Feature Flags: 对功能模块(Feature)控制管理

image-20221205223040818.png

Load Generator: 负载展示

image-20221205223138339.png

Jaeger UI: 开源分布式追踪系统

image-20221205223320917.png

image-20221205223351798.png