我用的是this prometheus chart。文件上说
为了让prometheus抓取pod,你必须在pod中添加注解,如下所示:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /metrics
prometheus.io/port: "8080"
所以我创建了这样一个服务
apiVersion: v1
kind: Service
metadata:
name: nodejs-client-service
labels:
app: nodejs-client-app
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /metrics
prometheus.io/port: "5000"
spec:
type: LoadBalancer
selector:
app: nodejs-client-app
ports:
- protocol: TCP
name: http
port: 80
targetPort: 5000
但我的服务不会出现在普罗米修斯的目标上。我错过了什么?
3条答案
按热度按时间vktxenjb1#
我在
stable/prometheus-operator
图表中遇到了同样的问题。我尝试将上面的注解添加到pod和服务中,但都不起作用。对我来说,解决方案是添加一个ServiceMonitor对象。添加后,Prometheus动态发现了我的服务:
Fig 1: target list
Fig 2: dynamically added scrape_config
解决方案示例
这个命令解决了这个问题:
kubectl apply -f service-monitor.yml
在这里,我的pod和服务被标注为名称
eztype
,并在指定路径下的端口8282上公开度量。为了完整起见,这里是我的服务定义的相关部分:值得注意的是,ServiceMonitor对象用于Prometheus图表本身:
cngwdvgl2#
你必须在pod中添加注解。非服务
moiiocjp3#
要使用pod的注解,您需要将作业'kubernetes-pods'添加到prometheus scrape config https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus-kubernetes.yml#L257
示例: