Go Redis中文文档

追踪监控

Preview
  • Go Redis 监控
  • 什么是 OpenTelemetry
  • OpenTelemetry instrumentation
  • Uptrace
  • Prometheus
  • 查看更多

Go Redis 监控

这里介绍如何使用 OpenTelemetry监控go-redis。

[[toc]]

什么是 OpenTelemetry

OpenTelemetry 是一个开源的监控框架,用于 OpenTelemetry tracing 日志、错误等,以及 OpenTelemetry metrics (各种指标)。

Otel 旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题, 提供与三方 vendor 无关的服务。 OpenTelemetry 是一组标准和工具的集合,旨在管理观测类数据, 如 Traces、Metrics、Logs 等 (未来可能有新的观测类数据类型出现)。目前已经是业内的标准。

OpenTelemetry instrumentation

go-redis有一个单独的OpenTelemetry模块工具 redisotel

go get github.com/redis/go-redis/extra/redisotel/v9

下面是使用示例,支持 redis.Client, redis.ClusterClient, redis.Ring

import (
    "github.com/redis/go-redis/v9"
    "github.com/redis/go-redis/extra/redisotel/v9"
)

rdb := redis.NewClient(&redis.Options{...})

// 开启 tracing instrumentation.
if err := redisotel.InstrumentTracing(rdb); err != nil {
	panic(err)
}

// 开启 metrics instrumentation.
if err := redisotel.InstrumentMetrics(rdb); err != nil {
	panic(err)
}

在使用go-redis执行命令时,需要传递 trace context

ctx := req.Context()
val, err := rdb.Get(ctx, "key").Result()

Uptrace

Uptrace 是 开源APM,支持分布式跟踪、指标和日志, 可以使用它来监控应用程序并设置自动警报以通过电子邮件、Slack、Telegram 等接收通知。

你可以使用DEB/RPM包或下载二进制文件来 安装Uptrace

redisotel 为执行的redis命令创建 spans , 在发生错误是记录错误信息,以下是 Uptrace 展示示例:

Redis trace

GitHub 中你可以查看运行示例。

你可以参照 入门指南 开始使用Uptrace。

Prometheus

你还可以使用 OpenTelemetry Prometheus exporter 把 OpenTelemetry 指标发给 Prometheus。

查看更多