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 带有一个直观的查询构建器、丰富的仪表板、警报规则、通知以及对大多数语言和框架的集成。
Uptrace 可以在一台服务器上处理数十亿个跨度和指标,并允许您以 10 倍的成本降低监控应用程序的成本。
您只需几分钟即可通过访问 云演示 (无需登录)或使用 Docker 在本地运行它。源代码可在 GitHub 上获得。
Prometheus
OpenTelemetry 还可以与 Prometheus 集成,Prometheus 是一个流行的监控和警报系统,用于收集和导出遥测数据。
通过将 OpenTelemetry 与 Prometheus 集成,您可以利用 Prometheus 的强大监控和警报功能,同时受益于 OpenTelemetry 提供的灵活性与标准化。这种集成使您能够收集、存储、可视化和分析来自应用程序和系统的指标,从而获得有关其性能和行为的宝贵见解。
您可以使用 OpenTelemetry Prometheus 导出器 将 OpenTelemetry 指标发送到 Prometheus。
结论
总的来说,监控 SQL 性能对于优化查询执行、提高应用程序响应能力、确保可扩展性、排除故障以及维护数据库环境的安全性和合规性至关重要。它使您能够主动管理和优化 SQL 基础设施,从而带来更好的应用程序性能、高效的资源利用率以及增强的用户满意度。