Go Redis 监控

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

什么是 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。

查看更多