You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GKE中Prometheus Operator采集Memorystore Redis指标配置问题排查

配置问题排查及修复方案

核心问题1:ServiceMonitor标签匹配规则错误

你当前的ServiceMonitor配置的spec.selector.matchLabels为app: redis-ext,但你定义的Service本身没有配置这个标签,导致ServiceMonitor无法匹配到对应的Service,无法生成采集配置。
修复方案二选一:

  • 给Service添加匹配标签,修改后的Service配置如下:
apiVersion: v1
kind: Service
metadata:
  name: redis-external-exporter
  namespace: monitoring
  labels: # 新增匹配标签
    app: redis-ext
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: "9121"
spec:
  ports:
  - name: redis-ext
    port: 9121
    protocol: TCP
    targetPort: 9121
  selector:
    app: redis-exporter
  • 直接修改ServiceMonitor的匹配规则,匹配Service已有的元数据(例如匹配Service的名称)

问题2:命名空间不一致

你的Service部署在monitoring命名空间下,Deployment必须也部署在同一个monitoring命名空间下,否则Service的选择器无法跨命名空间匹配到对应的Pod,会导致Service没有后端端点。
可以执行命令kubectl get endpoints -n monitoring redis-external-exporter验证,正常返回结果中会显示redis_exporter的Pod IP,如果返回空就说明Deployment没有部署在monitoring命名空间。

问题3:Prometheus实例未配置匹配ServiceMonitor的规则

你的ServiceMonitor配置了prometheus-instance: clusterwide标签,需要确认Prometheus CRD实例的spec.serviceMonitorSelector配置了对应匹配规则,示例如下:

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: clusterwide
spec:
  serviceMonitorSelector:
    matchLabels:
      prometheus-instance: clusterwide # 要和ServiceMonitor的标签对应
  # 其余配置省略

如果匹配规则为空或者不匹配,Prometheus不会加载你创建的ServiceMonitor配置。

建议优化项(非必须)

你在Deployment的Pod注解、Service注解中配置的prometheus.io/scrape: "true"等参数,是给Prometheus原生基于注解的服务发现使用的,使用Prometheus Operator的ServiceMonitor时这些注解不会生效,可以直接删除避免配置混淆。

配置修改完成后可以访问Prometheus UI的/targets页面,查看对应的redis采集目标是否正常上线即可。


内容的提问来源于stack exchange,提问作者Zuri Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:36:05