如何为EKS集群中Prometheus社区Helm部署的实例新增Targets
Prometheus 新增Targets操作步骤(基于prometheus-community Helm Chart)
以下操作适配EKS集群内通过社区Helm Chart部署的带Prometheus Operator的Prometheus实例:
方式一:通过ServiceMonitor/PodMonitor CRD新增Targets(K8s内部服务推荐)
社区Prometheus Helm Chart默认集成Prometheus Operator,会自动识别带指定标签的ServiceMonitor/PodMonitor自定义资源,无需手动修改Prometheus核心配置:
- 第一步:先确认Prometheus实例匹配的CRD标签,执行命令:
kubectl get prometheus -n <你的Prometheus所在命名空间> -o yaml
找到serviceMonitorSelector和podMonitorSelector字段下的标签,默认一般为release: <你的Prometheus Helm发布名称> - 第二步:编写对应CRD配置文件,以抓取Service后端指标的ServiceMonitor为例:
如果要抓取无Service关联的Pod,可将kind改为PodMonitor,spec.selector直接匹配Pod的标签即可。apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: 自定义任务名称 namespace: 目标服务所在命名空间 labels: release: <上一步查到的release标签值> # 必须和Prometheus的selector匹配 spec: selector: matchLabels: <你的目标Service的标签键值对> # 用于匹配要抓取的Service endpoints: - port: <Service暴露指标的端口名> path: /metrics # 非默认指标路径可自行修改 interval: 15s # 自定义抓取间隔 - 第三步:执行
kubectl apply -f <你编写的CRD配置文件名.yaml>,等待1-2分钟Prometheus会自动加载该Target。
提示:如果你的Prometheus配置了
serviceMonitorNamespaceSelector限制了可识别的CRD命名空间,需要将ServiceMonitor/PodMonitor放到允许的命名空间下,或者修改对应selector配置。
方式二:自定义额外抓取配置(适配集群外部服务/特殊场景)
如果要抓取的是集群外部的服务,或者不适合用CRD配置的场景,可以直接修改Helm values添加静态抓取规则:
- 第一步:在你的本地values.yaml配置文件中添加如下内容:
prometheus: prometheusSpec: additionalScrapeConfigs: - job_name: '自定义抓取任务名' static_configs: - targets: ['<目标服务地址>:<指标端口>'] # 示例:['10.0.0.12:9100'] scrape_interval: 15s - 第二步:执行Helm升级命令让配置生效:
helm upgrade <你的Prometheus发布名称> prometheus-community/kube-prometheus-stack -n <Prometheus所在命名空间> -f values.yaml
配置验证
配置生效后访问Prometheus Web UI,进入/targets页面即可看到新添加的抓取任务和运行状态。
内容的提问来源于stack exchange,提问作者Red Bottle
相关产品推荐
相关产品推荐

