用普罗米修斯刮掉jenkins的度量



我是Prometheus的新手,所以我不确定我做错了什么,但这些是我的服务和服务监视器的定义。

apiVersion: v1
kind: Service
metadata:
name: jenkins
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '8080'
prometheus.io/path: '/prometheus'
labels:
app.kubernetes.io/instance: jenkins
app.kubernetes.io/component: jenkins
spec:
type: ClusterIP
ports:
- port: 8080
targetPort: 8080
selector:
app: jenkins
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: jenkins
labels:
app.kubernetes.io/instance: jenkins
app.kubernetes.io/component: jenkins
release: prometheus
spec:
endpoints:
- interval: 10s
path: /prometheus/
port: "8080"
jobLabel: app.kubernetes.io/instance
selector:
matchLabels:
app.kubernetes.io/component: jenkins
app.kubernetes.io/instance: jenkins

但是我的Jenkins没有出现在Prometheus UI的目标列表下。它出现在Service Discovery下,这使我相信操作员通过release: prometheus标签正确地拾取了它。

我已经在jenkins上安装了prometheus plugin,当我卷曲https://<JENKINS_URL>/prometheus/时,我能够查看指标

我想弄清楚的是为什么Jenkins没有出现在targets列表下。

是否有关于如何做到这一点的适当文档,或者谁可以成功实现这个共享任何指针?

没有比阅读代码本身更好的文档了。

您需要注意ServiceMonitor的自定义资源定义中的这一行。

port:
description: Name of the service port this endpoint refers to.
Mutually exclusive with targetPort.
type: string

基本上,您创建了一个名为"8080"的服务端口的serviceMonitor。

endpoints:
- interval: 10s
path: /prometheus/
port: "8080"

但是您定义了一个未命名的服务,它的端口号是8080。

spec:
type: ClusterIP
ports:
- port: 8080
targetPort: 8080

你现在看到不匹配了吗?

你需要的在serviceMonitor

中使用targetPort: 8080和targetPort或者,使用port: "web"在serviceMonitor中,同时将你的服务命名为"web"。

ServiceMonitor:

endpoints:
- interval: 10s
path: /prometheus/
port: "web"

服务:

spec:
type: ClusterIP
ports:
- name: "web"
port: 8080
targetPort: 8080

你需要添加注解到你的pod:)

annotations:
prometheus.io/path: /prometheus
prometheus.io/port: '8080'
prometheus.io/scrape: 'true'

相关内容

  • 没有找到相关文章

最新更新