Bun 性能监控

什么是 OpenTelemetry?

Bun 依赖 OpenTelemetry 使用 OpenTelemetry 追踪在新窗口中打开OpenTelemetry 指标在新窗口中打开 来监控数据库性能和错误。

OpenTelemetry 旨在与语言和框架无关,支持多种编程语言和框架。它提供特定于语言的软件开发工具包 (SDK),使将遥测收集集成到用不同语言编写的应用程序中变得更加容易。

OpenTelemetry 还提供导出器和集成,以将遥测数据发送到各种 OpenTelemetry 后端在新窗口中打开 系统和可观察性平台,包括 Prometheus、Grafana、Jaeger、Zipkin、Elasticsearch 等流行工具。

通过使用 OpenTelemetry,开发人员可以采用标准化的可观察性方法,使跨分布式系统不同组件收集和分析遥测数据变得更加容易。它有助于改进故障排除、性能优化和应用程序监控,提供有关其行为和性能的宝贵见解。

OpenTelemetry 仪器

Bun 带有一个名为 bunotel在新窗口中打开 的 OpenTelemetry 仪器,它作为单独的模块分发

go get github.com/uptrace/bun/extra/bunotel

要对 Bun 数据库进行仪器化,您需要添加 bunotel 提供的钩子

import "github.com/uptrace/bun/extra/bunotel"

db := bun.NewDB(sqldb, dialect)
db.AddQueryHook(bunotel.NewQueryHook(bunotel.WithDBName("mydb")))

要使跟踪正常工作,您必须在执行查询时使用活动的 跨度上下文在新窗口中打开,例如

ctx := req.Context()
err := db.NewSelect().Scan(ctx)

Uptrace

Uptrace 是一个用于 OpenTelemetry 的 开源 APM在新窗口中打开,它支持分布式跟踪、指标和日志。您可以使用它来监控应用程序并排除故障。

Uptrace Overview

Uptrace 带有一个直观的查询构建器、丰富的仪表板、警报规则、通知以及对大多数语言和框架的集成。

Uptrace 可以在一台服务器上处理数十亿个跨度和指标,并允许您以 10 倍的成本降低监控应用程序的成本。

您只需几分钟即可通过访问 云演示在新窗口中打开 (无需登录)或使用 Docker在新窗口中打开 在本地运行它。源代码可在 GitHub在新窗口中打开 上获得。

Prometheus

OpenTelemetry 还可以与 Prometheus 集成,Prometheus 是一个流行的监控和警报系统,用于收集和导出遥测数据。

通过将 OpenTelemetry 与 Prometheus 集成,您可以利用 Prometheus 的强大监控和警报功能,同时受益于 OpenTelemetry 提供的灵活性与标准化。这种集成使您能够收集、存储、可视化和分析来自应用程序和系统的指标,从而获得有关其性能和行为的宝贵见解。

您可以使用 OpenTelemetry Prometheus 导出器在新窗口中打开 将 OpenTelemetry 指标发送到 Prometheus。

结论

总的来说,监控 SQL 性能对于优化查询执行、提高应用程序响应能力、确保可扩展性、排除故障以及维护数据库环境的安全性和合规性至关重要。它使您能够主动管理和优化 SQL 基础设施,从而带来更好的应用程序性能、高效的资源利用率以及增强的用户满意度。