[英]Prometheus not scraping additional scrapes
我正在使用 stable/prometheus-operator chart 部署 prometheus。 它安装在monitoring
命名空间中。 在default
命名空间中,我有一个名为my-pod
其中包含三个副本。 这个 pod 在端口 9009 上输出指标(我已经通过执行 k port-forward 并验证显示在 localhost:9009 中的指标来验证这一点)。 我希望 prometheus-operator 抓取这些指标。 所以我将下面的配置添加到values.yaml
prometheus:
prometheusSpec:
additionalScrapeConfigs:
- job_name: 'my-pod-job'
scrape_interval: 15s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- default
relabel_configs:
- source_labels: [__meta_kubernetes_pod_name]
action: keep
regex: 'my-pod'
然后我使用以下命令安装 prometheus:
helm upgrade --install prometheus stable/prometheus-operator \
--set kubeEtcd.enabled=false \
--set kubeControllerManager.enabled=false \
--set kubeScheduler.enabled=false \
--set prometheusOperator.createCustomResource=true \
--set grafana.smtp.existingSecret=smtp-secret \
--set kubelet.serviceMonitor.https=true \
--set kubelet.enabled=true \
-f values.yaml --namespace monitoring
但是,当我去/service-discover
我看到
my-pod-job (0/40 active targets)
题
如何配置 prometheus 使其从在默认命名空间中运行的 pod 中抓取指标并在端口 9009 上吐出指标?
要告诉 prometheus 抓取 Pod,请添加以下注释:
...
template:
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '9009'
正如@gears 已经提到的,如果您想从特定 pod 或服务中抓取指标,则必须对其应用 prometheus 抓取注释。 例如:
...
spec:
replicas: 1
template:
metadata:
annotations:
prometheus.io/path: <path_to_scrape>
prometheus.io/port: "80"
prometheus.io/scrape: "true"
...
但是,如前所述:
prometheus operator 不支持基于注解的服务发现,使用serviceMonitor CRD 代替它,因为它提供了更多的配置选项。
现在,如果我理解正确, ServiceMonitor
对象应该创建在与应用程序所在的命名空间相同的命名空间中。您需要确保serviceMonitorNamespaceSelector
选择该命名空间,并且 Prometheus 服务器具有访问 Service/Endpoints/Pod 的适当权限该命名空间中的对象。
如果这有帮助,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.