使用普罗米修斯抓取詹金斯指标
Scrape jenkins metrics with prometheus
我是 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
,我可以在 curl 时查看指标 https://<JENKINS_URL>/prometheus/
我想弄清楚的是为什么 Jenkins 没有出现在 targets
列表中。
是否有任何适当的文档说明如何进行此操作,或者任何成功实施此操作的人都可以分享任何指示吗?
您需要为广告连播添加注释 :)
annotations:
prometheus.io/path: /prometheus
prometheus.io/port: '8080'
prometheus.io/scrape: 'true'
没有比阅读代码本身更好的文档了。
您需要注意this line in the custom resource definition of 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,
或者,更好的是,在 serviceMonitor 中使用端口:“web”,同时将您的服务命名为“web”。
服务监控器:
endpoints:
- interval: 10s
path: /prometheus/
port: "web"
服务:
spec:
type: ClusterIP
ports:
- name: "web"
port: 8080
targetPort: 8080
我是 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
,我可以在 curl 时查看指标 https://<JENKINS_URL>/prometheus/
我想弄清楚的是为什么 Jenkins 没有出现在 targets
列表中。
是否有任何适当的文档说明如何进行此操作,或者任何成功实施此操作的人都可以分享任何指示吗?
您需要为广告连播添加注释 :)
annotations:
prometheus.io/path: /prometheus
prometheus.io/port: '8080'
prometheus.io/scrape: 'true'
没有比阅读代码本身更好的文档了。
您需要注意this line in the custom resource definition of 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,
或者,更好的是,在 serviceMonitor 中使用端口:“web”,同时将您的服务命名为“web”。
服务监控器:
endpoints:
- interval: 10s
path: /prometheus/
port: "web"
服务:
spec:
type: ClusterIP
ports:
- name: "web"
port: 8080
targetPort: 8080