监控实例

Operator 可以注入一个 redis_exporter sidecar。exporter 监听 9121 端口,并在 /metrics 提供指标。

配置 exporter

高层 API 会启用 exporter,除非 spec.exporter.disabletrue。请显式设置资源,以获得可预测的调度:

spec:
  exporter:
    disable: false
    resources:
      requests:
        cpu: 50m
        memory: 128Mi
      limits:
        cpu: 100m
        memory: 384Mi

仅在已安装其他监控机制时才禁用它:

kubectl -n default patch valkey valkey-cluster --type=merge \
  -p '{"spec":{"exporter":{"disable":true}}}'

验证 exporter 健康状态

对于 Cluster 架构,实例 Service 会暴露指标端口:

kubectl -n default get service valkey-cluster
kubectl -n default port-forward service/valkey-cluster 9121:9121

在另一个终端中:

curl --fail --silent http://127.0.0.1:9121/metrics | head

对于 Failover 或 Replica,查找名称以 rfr- 开头的 headless 指标 Service,并对其执行 port-forward:

kubectl -n default get service -l buf.red/name=valkey-failover
kubectl -n default port-forward service/rfr-valkey-failover 9121:9121

即使 exporter 被禁用,Failover 指标 Service 仍然存在,因为它也是数据 StatefulSet 的 headless 管理 Service。在将该 Service 视为抓取目标之前,请确认所选 Pods 中实际上包含一个就绪的 exporter 容器,并且 /metrics 有响应。

你也可以直接检查该 sidecar:

kubectl -n default get pods -l buf.red/name=valkey-cluster
kubectl -n default logs <pod-name> -c exporter --tail=200

集成抓取

随 Operator 提供的 ServiceMonitor 选择 Operator 指标。它本身不会抓取 Valkey data-plane Services。创建一个 ServiceMonitorPodMonitor 或等效的抓取配置,使其匹配你环境中的 Services,并在监控系统中验证目标健康状态。

当启用 TLS 和 access control list (ACL) 认证时,Operator 会为 exporter 提供其 ACL identity 和 TLS 文件,而 exporter 则通过 API 从所引用的 Kubernetes Secret 中解析其密码,而不是通过环境变量接收。不要将凭据复制到抓取配置中。 该实现使用 redis_exporter;请针对交付的 exporter 镜像和所选的 Valkey 版本线验证每个必需指标,尤其是 9.1。