Prometheus DigitalOcean relabeling问题:instance标签未设为Redis主机名
问题排查与解决
你的配置问题核心在于标签修改的阶段不对:relabel_configs是在Prometheus抓取目标前修改目标标签,但redis_exporter默认会将__param_target的值作为instance标签返回,导致抓取后指标自带的instance标签覆盖了你在relabel阶段设置的内容。
修正后的配置
将修改instance标签的规则移到metric_relabel_configs中(该阶段是在抓取到指标后修改标签,会覆盖exporter自带的instance值):
- job_name: redis metrics_path: /metrics scrape_interval: 60s scrape_timeout: 15s digitalocean_sd_configs: - bearer_token: "{{do_key}}" port: 9121 refresh_interval: 360s relabel_configs: - source_labels: [__address__] target_label: __param_target metric_relabel_configs: - source_labels: [__meta_digitalocean_droplet_name] target_label: instance replacement: $1
额外验证点
- 登录Prometheus的
/targets页面,确认目标的元标签中存在__meta_digitalocean_droplet_name字段,确保DigitalOcean服务发现能正确获取Droplet名称 - 确认redis_exporter与Redis部署在同一台Droplet上,保证
__address__对应的是目标Redis所在主机的IP与端口,服务发现能正确关联到对应Droplet的元数据
内容的提问来源于stack exchange,提问作者Rostyslav Malenko
相关产品推荐
相关产品推荐

