
Redis Exporter
本页内容
介绍
以下快速入门提供了 Redis Exporter 的设置说明以及预配置的 Dashboard、告警规则和记录规则。完成本快速入门中的步骤后,您将完成以下操作
设置并配置 Redis Exporter 以收集 Redis 指标,例如 Redis 正常运行时间、每秒执行的命令数、内存使用率等。`redis info` 命令中的大部分项目都会被导出。Redis Exporter 会将这些指标以 Prometheus 风格暴露出来。
配置 Prometheus 抓取 Redis Exporter 指标,并可选择性地将其发送到 Grafana Cloud。
设置一套预配置和精选的记录规则,用于缓存频繁的 Prometheus 查询。
导入 Grafana Dashboard 以可视化您的指标数据。
设置 Prometheus 告警规则,以便对您的指标数据进行告警。
指标使用量
默认情况下,此 exporter 大约发布 190 个 Prometheus 时序。要查看此 exporter 默认发送的指标列表,请此处下载样本指标抓取结果。
请注意,根据其配置,Redis Exporter 可能会收集和发布比此默认集更多的指标。要了解有关配置 Redis Exporter 和切换其采集器的更多信息,请参阅 Redis Exporter 的 GitHub 仓库。
除了调整 Redis Exporter 的设置外,您还可以通过丢弃不需要存储在 Prometheus 或 Grafana Cloud 中的时序来减少指标使用量。要了解如何执行此操作,请参阅 Grafana Cloud 文档中的通过 Relabeling 减少 Prometheus 指标使用量。
Grafana Cloud 的 Redis Exporter 集成
如果您使用 Grafana Cloud,您可以通过安装 Redis Exporter 集成来跳过本指南中的所有步骤,该集成旨在帮助您通过几个命令和点击即可快速入门。免费注册。
要了解如何使用 Redis Exporter 集成设置 Redis Exporter,请参阅 Grafana Cloud 文档中的Redis Exporter 集成。
本页内容
Redis Exporter 快速入门
在本指南中,您将学习如何设置和配置 Redis Exporter,以收集 Redis 指标,例如 Redis 正常运行时间、每秒执行的命令数和内存使用率,并将其作为 Prometheus 风格的指标暴露。然后,您将配置 Prometheus 来抓取 Redis 指标,并可选择性地将其发送到 Grafana Cloud。最后,您将设置一套预配置和精选的记录规则、Grafana Dashboard 和告警规则。在本指南结束时,您将拥有可用于可视化 Redis 指标的 Dashboard 以及一套预配置的告警。
如果您使用Grafana Cloud,Redis 集成可以帮助您快速入门。Redis 集成将 Redis Exporter 嵌入到 Grafana Cloud Agent 中,并自动配置告警规则和 Dashboard,因此您无需执行本指南中的步骤。要了解如何使用 Redis 集成设置 Redis Exporter,请参阅 Grafana Cloud 文档中的Redis 集成。
先决条件
在开始之前,您应该具备以下条件
- 一个 Redis Server,并且 Redis Exporter 可以连接到其 6379 端口。如果您尚未安装 Redis,请参阅其下载页面。
- 一台与 Redis Exporter 版本兼容的 Linux 机器。要查看可用版本列表,请参阅版本发布。
- 在您的环境中或直接在机器上运行的 Prometheus。要了解如何安装 Prometheus,请参阅 Prometheus 文档中的安装。
- 在您的环境中或直接在机器上运行的 Grafana。要了解如何安装 Grafana,请参阅 Grafana 文档中的安装 Grafana。
- (可选)一个 Grafana Cloud 帐户。Grafana Cloud 托管 Grafana 和基于 Mimir 的 Prometheus 指标 endpoint。您仍然需要使用在您环境中安装的 Prometheus 或 Grafana Cloud Agent 来抓取指标。要了解有关 Grafana Cloud 的更多信息,请参阅Grafana Cloud。
步骤 1:设置 Redis Exporter
在此步骤中,您将在机器上设置 Redis exporter,以收集 Redis 指标并以 Prometheus 格式暴露。本指南使用带有 Redis Server v6.2.1 的 Ubuntu 20.04 系统。具体步骤可能因您的操作系统和 Redis 版本而略有不同。
首先,登录到您的机器并下载相关的 Redis Exporter 二进制文件。本指南使用 linux-amd64
二进制文件,但您应该选择与您系统操作系统和架构相对应的文件
wget https://github.com/oliver006/redis_exporter/releases/download/v1.18.0/redis_exporter-v1.18.0.linux-amd64.tar.gz
将 v1.18.0
替换为您想要安装的版本。本指南可能会过时,因此最好查看 Redis Exporter 版本发布页面以获取最新的稳定版本。
解压 tarball 并 cd
进入目录
tar xvfz redis_exporter-v1.18.0.linux-amd64.tar.gz
cd redis_exporter-v1.18.0.linux-amd64
运行 Redis Exporter 时,您需要指定 Redis Server 的运行地址。这可能与您的设置不同,默认情况下 Redis Exporter 会连接到 localhost,但可以通过使用 -redis.addr
标志来设置地址。
最后,运行 exporter
./redis_exporter -redis.addr redis://:6379
INFO[0000] Redis Metrics Exporter v1.18.0 build date: 2021-03-11-03:26:58 sha1: d0597c841d2c9fa30ce8b6ded6251d1994822e27 Go: go1.16.1 GOOS: linux GOARCH: amd64
INFO[0000] Providing metrics at :9121/metrics
如果您看到以上输出,则表示您已成功运行 Redis Exporter。
Redis Exporter 在 9121 端口以 Prometheus 格式发布 Redis 指标。您可以使用 curl
进行测试。您需要打开一个新的 SSH 会话或将 Redis Exporter 进程放到后台才能使用 curl
。
curl https://:9121/metrics
. . .
redis_cluster_connections 0
# HELP redis_cluster_enabled cluster_enabled metric
# TYPE redis_cluster_enabled gauge
redis_cluster_enabled 0
# HELP redis_commands_duration_seconds_total Total amount of time in seconds spent per command
# TYPE redis_commands_duration_seconds_total counter
redis_commands_duration_seconds_total{cmd="client"} 1.7e-05
redis_commands_duration_seconds_total{cmd="command"} 0.000443
redis_commands_duration_seconds_total{cmd="config"} 0.000178
redis_commands_duration_seconds_total{cmd="info"} 8.1e-05
redis_commands_duration_seconds_total{cmd="latency"} 8e-06
redis_commands_duration_seconds_total{cmd="set"} 1.7e-05
redis_commands_duration_seconds_total{cmd="slowlog"} 1.4e-05
# HELP redis_commands_processed_total commands_processed_total metric
# TYPE redis_commands_processed_total counter
redis_commands_processed_total 10
如果您看到以上输出,则表示您已准备好开始使用 Prometheus 抓取 Redis 指标。
为了避免从命令行运行和管理 Redis Exporter,您可以创建一个 systemd
服务。要了解如何执行此操作,请参阅创建 systemd 服务来管理 agent。将 agent 二进制文件的路径替换为 Redis Exporter 的路径。
Redis Exporter 提供以下功能
- Redis 认证
- TLS 配置
- 仅限 Redis 的指标
等等。要了解这些功能的更多信息,请参阅Redis Exporter GitHub 仓库。
步骤 2:使用 Prometheus 抓取 Redis Exporter
Redis Exporter 现在已在您的机器上启动并运行,您可以配置 Prometheus 抓取作业来收集和存储 Redis Exporter 指标。
将以下抓取作业配置添加到您的 prometheus.yml
配置文件中的 scrape_configs
部分
- job_name: redis
static_configs:
- targets: ['redis_exporter_machine_IP_address:9121']
将 redis_exporter_machine_IP_address
替换为运行 Redis Exporter 的机器的 IP 地址。如果您在同一台机器上运行 Prometheus,则此处应为 localhost
。要了解有关配置 Prometheus 的更多信息,请参阅 Prometheus 文档中的配置。
如果您没有 prometheus.yml
配置文件,请使用您喜欢的文本编辑器创建一个简单的文件。打开您首选的文本编辑器并粘贴以下 Prometheus 配置
global:
scrape_interval: 15s
scrape_configs:
- job_name: redis
static_configs:
- targets: ['redis_exporter_machine_IP_address:9121']
此配置指示 Prometheus 每 15 秒抓取所有作业。唯一配置的抓取作业名为 redis-exporter
,并定义了一个 redis_exporter_machine_IP_address:9121
目标。默认情况下,Prometheus 将使用 HTTP 抓取 /metrics
endpoint。
保存并关闭文件。然后您可以使用以下命令通过该文件运行 Prometheus
./prometheus --config.file=./prometheus.yml
将指标发送到 Grafana Cloud
要将 Redis Exporter 指标从 Prometheus 发送到 Grafana Cloud,请在您的 prometheus.yml
配置文件中配置 remote_write
参数。要了解更多信息,请参阅 Grafana Cloud 文档中的指标 — Prometheus。要了解有关 remote_write
参数的更多信息,请参阅 Prometheus 文档中的remote_write
。
步骤 3:配置记录规则
使用记录规则,您可以预先计算和缓存频繁查询的指标。例如,如果 Dashboard 面板使用计算量大的查询(例如 rate()
),您可以创建一个记录规则,该规则以较低的固定间隔运行,并将高计算量查询的结果保存在新的时序中。这避免了每次 Dashboard 刷新时都抓取和计算数据。要了解有关 Prometheus 记录规则的更多信息,请参阅 Prometheus 文档中的记录规则。
注意:您应该在本指南中加载 Dashboard 之前加载以下记录规则。
Dashboard 查询和告警规则使用记录规则来减少 Prometheus 或 Grafana Cloud Metrics Server 的负载,具体取决于您评估规则的位置。
您可以在此处获取记录规则 YAML 文件。
此记录规则 YAML 文件是使用 Redis Exporter mixin 生成的。
将记录规则加载到 Prometheus
要将记录规则加载到 Prometheus,请将以下内容添加到您的 prometheus.yml
配置文件中
rule_files:
- "redis_exporter_recording_rules.yml"
请务必将 redis_exporter_recording_rules.yml
替换为您的 Redis Exporter 记录规则 YAML 文件的路径。
将记录规则加载到 Grafana Cloud
要了解如何将记录规则加载到 Grafana Cloud,请参阅使用 cortextool 的 Prometheus 和 Loki 规则。
步骤 4:配置 Dashboard
本快速入门包含以下 Dashboard
- 用于 Prometheus Redis Exporter 的 Redis Dashboard
要了解如何将这些 Dashboard 导入 Grafana,请参阅 Grafana 文档中的导入 Dashboard。
注意:这些 Dashboard 查询可能依赖于上一步中定义的记录规则。请务必在导入 Dashboard 之前导入这些规则。
您可以在此处获取 Dashboard。
步骤 5:配置告警
通过 Prometheus 告警规则,您可以定义当 PromQL 表达式超出某个阈值或在一段时间内满足指定条件时触发的告警。例如,您可以定义一个 HighRequestLatency
告警,当请求延迟指标在一段时间内大于某个阈值时触发。一旦告警条件被触发,告警将进入 Pending
状态。在满足 for
参数定义的时间段条件后,告警将进入 Firing
状态。您可以使用像 Alertmanager 这样的工具配置触发告警的路由和通知。Alertmanager 也内置于 Grafana Cloud 中。
您可以在此处获取告警规则 YAML 文件。
将告警规则加载到 Prometheus
要将告警规则加载到 Prometheus,请将以下内容添加到您的 prometheus.yml
配置文件中
rule_files:
- "redis_exporter_alerting_rules.yml"
请务必将 redis_exporter_alerting_rules.yml
替换为您的 Redis 告警规则 YAML 文件的路径。
将告警规则加载到 Grafana Cloud
要了解如何将告警规则加载到 Grafana Cloud,请参阅使用 cortextool 的 Prometheus 和 Loki 规则。
结论
在本快速入门中,您在 Linux 机器上安装并运行了 Redis Exporter。然后,您配置了 Prometheus 来抓取 Redis Exporter 暴露的 Redis 指标。您将记录规则和告警规则加载到 Prometheus 中,最后导入 Grafana Dashboard 以可视化您的 Redis 指标。
如果您使用 Grafana Cloud,您可以通过安装带有 Grafana Cloud Agent 的 Redis 集成来跳过本指南中的所有步骤。此集成将预配置的 Redis Exporter 嵌入到 agent 中,并自动配置 Grafana Dashboard 以及 Prometheus 告警和记录规则,因此您无需手动导入它们。要了解如何设置 Redis 集成,请参阅Grafana Cloud 集成。
Dashboard、记录规则和告警规则是使用 Redis Exporter Mixin 生成的。Mixin 是由主题专家精心策划和设计的 Dashboard、记录规则和告警的可重用模板。要了解更多信息,请参阅Redis Mixin 仓库。
本页内容
注意:您应该在本指南中加载 Dashboard 之前加载以下记录规则。Dashboard 查询使用记录规则来减少 Prometheus 或 Grafana Cloud Metrics Server 的负载,具体取决于您评估规则的位置。
本快速入门包含以下记录规则
redis_memory_fragmentation_ratio
groups:
- name: redis_rules
rules:
- expr: redis_memory_used_rss_bytes / redis_memory_used_bytes
record: redis_memory_fragmentation_ratio
此记录规则 YAML 文件是使用 Redis Exporter mixin 生成的。
本页内容
注意:这些 Dashboard 可能依赖于上一个标签页中的记录规则。请务必在导入 Dashboard 之前导入这些规则。
Redis Dashboard
此 Dashboard 包括以下指标的面板
- 每秒命令数
- 每秒命令延迟
- 每实例命中率
- 总内存使用量
- 每实例内存碎片率
- 每秒每实例键驱逐数
- 已连接/被阻止的客户端数
- 每 DB 总项数
- 即将过期与非即将过期的键
- 每实例连接的从节点数
- 自上次主节点连接以来的时间
您可以使用以下 Dashboard ID 直接导入 Dashboard:763
您可以在此处获取 Dashboard JSON。
此 Dashboard 是使用 Redis Exporter mixin 生成的。
本页内容
本快速入门包含以下告警规则
RedisDown
Redis 实例已宕机
RedisOutOfMemory
Redis 内存不足
RedisTooManyConnections
Redis 的连接客户端数超过 X
下载以下告警规则 YAML 文件groups:
- name: redis
rules:
- alert: RedisDown
annotations:
description: |-
Redis instance is down
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Redis down (instance {{ $labels.instance }})
expr: redis_up == 0
for: 5m
labels:
severity: critical
- alert: RedisOutOfMemory
annotations:
description: |-
Redis is running out of memory (> 90%)
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Redis out of memory (instance {{ $labels.instance }})
expr: redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90
for: 5m
labels:
severity: warning
- alert: RedisTooManyConnections
annotations:
description: |-
Redis instance has too many connections
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Redis too many connections (instance {{ $labels.instance }})
expr: redis_connected_clients > 100
for: 5m
labels:
severity: warning
此告警规则 YAML 文件是使用 Redis Exporter mixin 生成的。
本页内容
Grafana Cloud 提供了一系列不断增加的集成,可帮助您在几分钟内快速搭建可观测性 Stack。Redis 集成内置于 Grafana Cloud Agent 中,它暴露和抓取关键的 Redis 指标,并将它们推送到 Grafana Cloud。该 agent 将使用嵌入式 Redis Exporter 抓取指标,而 Grafana Cloud 将自动配置量身定制的 Grafana Dashboard 和告警,以便可视化和处理这些数据。
要了解更多信息,请查阅Grafana Cloud 文档。
工作原理
配置、安装、连接和维护 Prometheus 监控组件通常需要大量的领域知识。从设置到 Dashboard 和告警可能需要相当长的时间。作为 Grafana 的创建者以及 Prometheus 和 Cortex 的核心贡献者,我们构建了简单的集成来抽象掉其中一部分工作,以便快速入门。工作原理
- 免费注册(或登录)一个 Grafana Cloud 帐户。
- 选择您想要观测的目标(一个不断扩展的目录)。
- 运行一行命令即可安装 Grafana Agent。该 agent 嵌入并预配置 Exporter 以暴露默认指标,并将它们推送到 Grafana Cloud 指标后端。
- 瞧!您将看到量身定制的 Grafana Dashboard,并将受益于合理的默认告警设置。
正在寻找不同的 Exporter 或集成?请查阅我们不断增长的流行组件集成库,例如 MySQL、Postgres、Redis、Memcached 等。