如何配置Prometheus Helm Chart采集Otel Collector指标并禁用默认Job
解决Prometheus采集Otel指标不显示及禁用默认Kubernetes采集任务问题
一、禁用kubernetes-apiservers等默认采集任务
你可以通过两种方式精准或全局禁用默认采集任务:
方式1:全局禁用所有默认采集任务
如果不需要任何Kubernetes组件的默认采集,直接在values.yaml中添加:
prometheus: prometheusSpec: scrapeConfigSelectorNilUsesHelmValues: false
此配置会让Prometheus仅加载你自定义的采集任务,忽略Chart自带的所有默认scrape配置(包括apiserver、kubelet、coredns等)。
方式2:精准禁用单个默认采集任务
如果只想禁用特定组件(比如仅关闭apiserver采集),在values.yaml中对应组件设置enabled: false:
# 禁用apiserver采集 kubeApiServer: enabled: false # 按需禁用其他组件 kubelet: enabled: false kubeControllerManager: enabled: false coreDns: enabled: false
二、排查extraScrapeConfigs不显示Otel Collector目标的问题
按以下步骤逐一排查:
1. 确认extraScrapeConfigs格式正确
Otel Collector的采集配置需符合Prometheus scrape规则,示例配置如下(注意YAML缩进层级):
extraScrapeConfigs: - job_name: 'otel-collector' scrape_interval: 15s static_configs: - targets: ['otel-collector.<你的命名空间>.svc:8888'] # 替换为实际的Otel Service地址和metrics端口(默认8888)
2. 验证Prometheus已加载自定义配置
进入Prometheus Pod查看配置文件,确认自定义job是否存在:
kubectl exec -n <你的命名空间> <prometheus-pod名称> -- cat /etc/prometheus/prometheus.yml | grep -A 10 'otel-collector'
如果无输出,说明Helm升级未生效,重新执行:
helm upgrade prometheus prometheus-community/prometheus -n <你的命名空间> -f values.yaml
3. 检查Prometheus与Otel Collector的网络连通性
在Prometheus Pod内测试能否访问Otel的metrics端点:
kubectl exec -n <你的命名空间> <prometheus-pod名称> -- curl http://otel-collector.<你的命名空间>.svc:8888/metrics
若返回连接失败,检查:
- Otel Collector的Service是否正常创建
- Service的端口是否与配置中一致
- 是否有网络策略阻止Prometheus访问Otel的端口
4. 查看Prometheus日志定位错误
检查Prometheus日志中是否有采集任务相关的报错:
kubectl logs -n <你的命名空间> <prometheus-pod名称>
常见错误包括目标地址错误、权限不足、metrics端点格式不符合Prometheus规范等,根据日志提示调整配置。
内容的提问来源于stack exchange,提问作者har17bar
相关产品推荐
相关产品推荐

