💨 如何了解您的云端正在发生什么 🌥️⚡️
太长不看
太长不看
今天,你将了解开源可观测性的世界。在本指南中,我将探讨以下内容:
-
构建全面的可观测性堆栈:使用流行的开源工具组装端到端解决方案。
-
轻松提取和交付:了解处理跟踪、指标和日志的来龙去脉。
-
主数据关联:掌握将各种类型的可观测性数据关联起来以获得更深入见解的专业知识。
-
利用强大的后端技术栈:实施 Grafana、Prometheus、Tempo 和 Loki 以实现强大的后端管理。
-
掌控自如:利用 Odigos 的各项功能,有效管理您的可观测性环境。
Odigos - 开源分布式追踪
无需编写任何代码,即可同时监控所有应用程序!
该平台是唯一能够跨所有应用程序生成分布式追踪的平台,可简化 OpenTelemetry 的复杂性。
我们真的才刚起步。
你能帮我们点个赞吗?拜托啦?😽
https://github.com/keyval-dev/odigos
理论
如果您是可观测性领域的新手,或者只是对监控和可观测性之间的区别感兴趣,我们建议您观看OpenTelemetry 创建者制作的这段短视频。
简而言之,分布式跟踪、指标和日志,以及将一个信号与另一个信号关联起来的能力,是使用基于微服务的应用程序调试生产问题的最佳实践。
这正是我们将在演示应用程序中实现的目标。
无需学习任何新技术即可实现和享受可观测性。只需一些基本的 Kubernetes 命令,即可轻松上手。
解决方案概述
我们将在 Kubernetes 集群上部署 3 个不同的系统:
- 目标应用——我们将使用基于微服务架构、用 Java 和 Python 编写的应用。(例如,对于使用更多编程语言和更复杂架构的应用,请参考 Odigos入门指南中的示例)
- 可观测性后端——我们将使用以下应用程序来存储和分析我们的可观测性数据:- Grafana:用于数据仪表板和可视化 - Prometheus:用于存储指标数据 - Loki:用于存储日志数据 - Tempo:用于存储分布式追踪数据
- 可观测性控制平面——我们将使用 Odigos 对我们的应用程序进行自动检测(自动提取跟踪、指标和日志)、收集器部署和配置。
先决条件
运行本教程需要以下工具:
- 能够使用 Docker 容器节点运行本地 Kubernetes 集群。
- Kubernetes CLI (kubectl)用于对 Kubernetes 集群运行命令。
创建 Kubernetes 集群
运行以下命令,创建一个新的本地 Kubernetes 集群:
kind create cluster
安装目标应用程序
我们将安装bank-of-athnos的一个分支,bank-of-athnos 是 Google 创建的一个银行应用程序示例。
我们使用一个修改后的版本,其中没有任何检测代码,来演示 Odigos 如何自动从应用程序中收集可观测性数据。
使用以下命令部署应用程序:
kubectl apply -f https://raw.githubusercontent.com/keyval-dev/bank-of-athnos/main/release/kubernetes-manifests.yaml
安装可观测性后端
由于目前还没有一个数据库可以存储跟踪、日志和指标,我们将部署三个不同的数据库,以及 Grafana 作为可视化工具。
以下 Helm Chart 部署了 Tempo(跟踪数据库)、Prometheus(指标数据库)和 Loki(日志数据库),以及一个预配置的 Grafana 实例,这些数据库是数据源。
请按照此链接安装 odigos CLI
利用奥迪戈斯将一切联系起来
现在我们的测试应用程序正在运行,我们的可观测性数据库已经部署完毕并准备接收数据,最后一块拼图是将应用程序的日志、指标和跟踪信息提取并发送到可观测性数据库。
最简单便捷的方法是使用 Odigos——一个用于可观测性数据的控制平台。执行以下命令即可安装 Odigos:
odigos install
命名空间中的所有 pododigos-system运行完毕后,运行以下命令打开 Odigos UI:
odigos ui
然后访问http://localhost:3000进入用户界面。
选择应用程序
选择 Odigos 应该检测哪些应用程序有两种方法:
- 选择退出(推荐):对所有应用进行检测,包括未来部署的每个新应用。用户仍然可以手动标记不应进行检测的应用。
- 选择加入:仅对用户手动选择的应用程序进行集成。
在本教程中,我们建议选择退出模式。
选择目的地
下一步是告诉 Odigos 如何访问我们之前部署的三个数据库。
请添加以下三个目标地址:
速度
- 名称:tempo(您可以选择任何您喜欢的名称)
- URL:http://observability-tempo.observability
普罗米修斯
要添加其他目的地,请从侧边栏选择“目的地”,然后单击“添加新目的地”。
- 名称:普罗米修斯
- URL:http://observability-prometheus-server.observability
洛基
- 姓名:洛基
- URL:http://observability-loki.observability
探索数据
请稍等片刻,Odigos 即可完成所需收集器的部署和目标应用程序的检测。您可以通过运行以下命令来监控进度。
kubectl get pods -w
等待所有 pod 进入Running状态(尤其要注意 transactionservice 应用程序,它的启动时间较慢)。
最后一步是在 Grafana 中探索我们的可观测性数据。现在我们可以查看指标、跟踪记录和日志,并将它们关联起来,从而深入了解应用程序的运行情况。
正在连接到 Grafana
通过运行以下命令将端口转发到您的 Grafana 实例:
kubectl port-forward svc/observability-grafana -n observability 3000:80
- 输入用户名 admin
- 请将以下命令的输出结果输入到密码中:
kubectl get secret -n observability observability-grafana -o jsonpath={.data.admin-password} | base64 --decode
服务图
我们先来看一下微服务应用程序的服务图:
- 从侧边栏转到“探索”页面
- 选择 Tempo 作为数据源
- 选择“服务图”选项卡
- 运行查询
指标
现在我们来看一些指标。点击服务图中的联系人节点,然后选择“请求速率”。
Odigos 还收集了许多其他指标,可以从 Prometheus 数据源轻松查询,请查看此文档以获取完整列表。
痕迹
在服务图表中再次单击联系人应用程序,但这次选择请求直方图。
为了将指标与轨迹关联起来,我们将使用一个名为“示例”的功能。要显示示例:
- 打开选项菜单
- 启用示例
- 请注意,直方图现在添加了绿色菱形。
将鼠标悬停在其中一个添加的点上,然后单击“按速度查询”。此时应显示类似于以下内容的轨迹:
通过此跟踪记录,您可以准确地看到整个请求的每个部分所花费的时间。
深入查看其中一个部分将显示更多信息,例如数据库查询。
日志
要进一步调查特定操作,您只需点击文档图标即可查询相关日志。
点击余额读取器旁边的文档图标即可显示相关日志:
概括
我们已经展示了仅使用开源解决方案提取和传输日志、跟踪和指标是多么容易。
此外,我们还能够在几分钟内从应用程序中生成跟踪、指标和日志。
我们现在还能够关联不同的信号:我们将指标与跟踪信息关联起来,并将跟踪信息与日志关联起来。现在,我们拥有所有必要的数据,可以快速检测并修复目标应用程序中的生产问题。
接下来是什么?
请注意,我们安装的可观测性后端不适合生产环境使用。
对于大量数据,建议将这些数据库持久化到 S3 等云存储,或者使用托管服务。
文章来源:https://dev.to/odigos/how-to-know-whats-going-on-in-your-cloud-dn6







