【Rust日报】2023-06-20 使用Quickwit、Jaeger和Grafana监控您的Rust应用程序

使用Quickwit、Jaeger和Grafana监控您的Rust应用程序

你可能已经看过了Lucas Palmieri的博客文章Are we observable yet? An introduction to Rust telemetry。如果你还没有看过,我们建议阅读一下,因为它提供了一个全面的介绍,介绍了如何处理 Rust 代码中的日志。

然而,仅仅记录日志可能是不够的,特别是在分布式架构中。在 Quickwit 中,我们经常使用跟踪来理解性能瓶颈并提高速度。当我们遇到 Quickwit 的搜索响应缓慢时,我们经常会问自己:是什么导致了减速?是网络相关的问题,磁盘 I/O 还是过多的 CPU 使用?

在本博客文章中,我们将展示如何为 Rust 应用程序进行测量,并生成跟踪数据,从 DevOps 视角利用它们。我们的目标将是双重的:

  • 使用广泛认可的 Jaeger UI 分析跟踪,以获取有关应用程序行为的见解。

  • 从这些跟踪数据中派生 RED(速率、错误和持续时间)指标,并在 Grafana 中监视它们。如果您想进一步了解,我们建议参考以下资源:Weaveworks 的 RED 方法和 Google SRE 书籍中有关监控分布式系统的部分。

现在,让我们深入介绍步骤,其中我们将涵盖以下关键方面:

  • 为使用 Actix 构建的简单 Web API 进行测量。

  • 将您的跟踪和指标数据推送到 Quickwit。

  • 在 Jaeger UI 中检测、诊断和解决问题。

  • 在 Grafana 中监视您的应用程序的 RED 指标(速率、错误、持续时间)。

在深入了解之前,请确保您的系统上已安装并正确运行以下软件:

  • Rust 1.68+

  • Docker

  • 如果您仍在运行旧版本的 Docker,则需要安装 docker-compose

构建并测量 Rust 应用

我们将使用 Actix Web 框架创建一个基本的 Rust 应用程序。这个应用程序是一个包含单个端点的 Web API。它将从受欢迎的 JSONPlaceholder 公共 Web API 获取帖子及其评论,并将它们显示为 JSON。为了更好地了解我们的应用程序生命周期并可能优化它,我们将确保测量以下例程:

  • 从 /posts 获取帖子。

  • 获取每个帖子的评论 /posts/1/comments

创建一个名为 rust-app-tracing 的新目录。在终端中切换到该目录,并运行以下命令初始化一个新的 Rust 项目。

cargo new web-api

让我们还要确保在 web-api/Cargo.toml 文件中拥有所需的依赖项。

  • actix-web:用于在 Rust 中构建 Web 应用程序的快速 Web 框架。

  • actix-web-opentelemetryactix-web 框架的 open-telemetry 扩展。

  • opentelemetry:Rust 的核心 open-telemetry SDK,包括跟踪和指标。

  • opentelemetry-otlp:提供各种 open-telemetry 导出器的 crate。

  • reqwest:提供一个直观的 API 来进行 HTTP 请求。

  • tokio:为我们的应用程序提供异步运行时。

Web API 应用程序代码

首先,让我们通过创建一个名为 telemetry.rs 的文件来配置应用程序跟踪,我们将在其中处理所有跟踪配置。

// telemetry.rs

...

const SERVICE_NAME: &'static str = "quickwit-jaeger-demo";

pub fn init_telemetry(exporter_endpoint: &str) {
    // Create a gRPC exporter
    let exporter = opentelem
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值