Uptrace 与 Redis 企业版

要从您的数据库和其他集群组件收集、查看和监控指标数据,您可以使用OpenTelemetry Collector将Uptrace连接到您的Redis Enterprise集群。

Uptrace 是一个 开源 APM 工具,支持分布式追踪、指标和日志。您可以使用它来监控应用程序并设置自动警报以接收通知。

Uptrace 使用 OpenTelemetry 从软件应用程序(如 Redis)收集和导出遥测数据。OpenTelemetry 是一个开源的观测性框架,旨在为所有类型的观测性信号(如跟踪、指标和日志)提供单一标准。

使用OpenTelemetry Collector,您可以接收、处理并将遥测数据导出到任何OpenTelemetry后端。您还可以使用Collector抓取Redis提供的Prometheus指标,然后将这些指标导出到Uptrace。

您可以使用Uptrace来:

  • 收集并显示admin console中不可用的数据指标。
  • 使用由Uptrace社区维护的预建仪表板模板。
  • 设置自动警报并通过电子邮件、Slack、Telegram 等接收通知。
  • 使用OpenTelemetry tracing监控您的应用程序性能和日志。

安装Collector和Uptrace

因为安装OpenTelemetry Collector和Uptrace可能需要一些时间,你可以使用docker-compose示例,该示例还附带Redis Enterprise集群。

下载Docker示例后,您可以在启动Docker容器之前编辑uptrace/example/redis-enterprise目录中的以下配置文件:

  • otel-collector.yaml - 配置 OpenTelemetry Collector 容器中的 /etc/otelcol-contrib/config.yaml
  • uptrace.yml - 在Uptrace容器中配置/etc/uptrace/uptrace.yml

你也可以使用以下指南从头开始安装OpenTelemetry和Uptrace:

安装Uptrace后,您可以在http://localhost:14318/访问Uptrace UI。

抓取Prometheus指标

Redis Enterprise 集群在 http://localhost:8070/ 上暴露了一个 Prometheus 抓取端点。你可以通过将以下行添加到 OpenTelemetry Collector 配置中来抓取该端点:

# /etc/otelcol-contrib/config.yaml

prometheus_simple/cluster1:
  collection_interval: 10s
  endpoint: "localhost:8070" # Redis Cluster endpoint
  metrics_path: "/"
  tls:
    insecure: false
    insecure_skip_verify: true
    min_version: "1.0"

接下来,您可以使用OpenTelemetry协议(OTLP)将收集的指标导出到Uptrace:

# /etc/otelcol-contrib/config.yaml

receivers:
  otlp:
    protocols:
      grpc:
      http:

exporters:
  otlp/uptrace:
    # Uptrace is accepting metrics on this port
    endpoint: localhost:14317
    headers: { "uptrace-dsn": "http://project1_secret_token@localhost:14317/1" }
    tls: { insecure: true }

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp/uptrace]
    metrics:
      receivers: [otlp, prometheus_simple/cluster1]
      processors: [batch]
      exporters: [otlp/uptrace]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp/uptrace]

不要忘记重新启动收集器,然后检查日志以查找任何错误:

docker-compose logs otel-collector

# or

sudo journalctl -u otelcol-contrib -f

你也可以在这里查看完整的OpenTelemetry Collector配置here

查看指标

当指标开始到达Uptrace时,您应该在指标选项卡中看到几个仪表板。总的来说,Uptrace应该为Redis企业指标创建3个仪表板:

  • "Redis: 节点" 仪表板显示集群节点的列表。您可以选择一个节点以查看其指标。

  • "Redis: 数据库" 显示所有集群节点中的 Redis 数据库列表。要查找特定数据库,您可以使用过滤器或按列对表格进行排序。

  • "Redis: 分片" 包含所有集群节点中的分片列表。您可以过滤或排序分片,并选择一个分片以获取更多详细信息。

监控指标

要开始监控指标,您需要使用Uptrace UI创建指标监控器:

  • 打开“警报” -> “监视器”。
  • 点击“创建监控” -> “创建指标监控”。

例如,以下监控器使用group by node表达式在单个Redis分片宕机时创建警报:

monitors:
  - name: Redis shard is down
    metrics:
      - redis_up as $redis_up
    query:
      - group by cluster # monitor each cluster,
      - group by bdb # each database,
      - group by node # and each shard
      - $redis_up
    min_allowed_value: 1
    # shard should be down for 5 minutes to trigger an alert
    for_duration: 5m

您还可以使用更复杂的表达式创建查询。

例如,以下监控器在键空间命中率低于75%或内存碎片过高时创建警报:

monitors:
  - name: Redis read hit rate < 75%
    metrics:
      - redis_keyspace_read_hits as $hits
      - redis_keyspace_read_misses as $misses
    query:
      - group by cluster
      - group by bdb
      - group by node
      - $hits / ($hits + $misses) as hit_rate
    min_allowed_value: 0.75
    for_duration: 5m

  - name: Memory fragmentation is too high
    metrics:
      - redis_used_memory as $mem_used
      - redis_mem_fragmentation_ratio as $fragmentation
    query:
      - group by cluster
      - group by bdb
      - group by node
      - where $mem_used > 32mb
      - $fragmentation
    max_allowed_value: 3
    for_duration: 5m

你可以了解更多关于查询语言的信息这里

RATE THIS PAGE
Back to top ↑