![](/img/trans.png)
[英]servicemonitor doesnot add to prometheus-operator targets
[英]Custom Prometheus servicemonitor not registering targets
我已經使用 helm chart 在我的 kubernetes 集群上安裝了 Prometheus 操作符。 一切看起來都運行良好,但是我有一個帶有 /metrics 端點的測試應用程序,我想抓取它,但我無法讓它工作。 我已經為應用程序創建了 servicemonitor,我在 Prometheus UI 中看到它正在注冊並添加到配置中,但是沒有顯示任何目標。
這是我的應用程序部署:
apiVersion: v1
kind: Namespace
metadata:
name: api-bootstrap-grape
labels:
name: api-bootstrap-grape
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: role-tokenreview-binding
namespace: api-bootstrap-grape
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: vault-auth
namespace: api-bootstrap-grape
---
apiVersion: v1
kind: Service
metadata:
name: api-bootstrap-grape-service
namespace: api-bootstrap-grape
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
spec:
selector:
app: api-bootstrap-grape-app
ports:
- name: api-bootstrap-grape-http
port: 3000
targetPort: 3000
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-bootstrap-grape-deployment
namespace: api-bootstrap-grape
spec:
selector:
matchLabels:
app: api-bootstrap-grape-app
replicas: 3
template:
metadata:
labels:
app: api-bootstrap-grape-app
annotations:
# Pull in any secrets from vault and specify the rest of the config here
# this ends up in /vault/secrets/env
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/role: 'api-bootstrap-grape-role'
vault.hashicorp.com/agent-inject-secret-env: 'secret/api-bootstrap-grape/config'
vault.hashicorp.com/agent-inject-template-env: |
{{- with secret "secret/api-bootstrap-grape/config" -}}
{{- range $k, $v := .Data -}}
{{ $k }}={{ $v }}
{{ end -}}
{{- end -}}
POSTGRES_HOST=database_host
POSTGRES_PORT=5432
POSTGRES_USER=postgres
USERNAME=appuser
POSTGRES_DB_PROD=product_production
spec:
serviceAccountName: vault-auth
containers:
- name: api-bootstrap-grape-app
image: git.domain.com:4567/dev-toolbox/api-bootstrap-grape:latest
env:
- name: RACK_ENV
value: production
- name: SESSION_COOKIE_DOMAIN
value: api-bootstrap-grape.domain.com
ports:
- containerPort: 3000
imagePullPolicy: Always
imagePullSecrets:
- name: regcred
該應用程序運行良好,我可以確認我可以為它點擊服務並且 /metrics 正確返回。
這是我添加的服務監視器:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: api-bootstrap-grape-servicemonitor
namespace: default
labels:
app: api-bootstrap-grape-app
release: prometheus
spec:
selector:
matchLabels:
app: api-bootstrap-grape-app
endpoints:
- port: api-bootstrap-grape-http
path: "/metrics"
interval: 15s
namespaceSelector:
matchNames:
- api-bootstrap-grape
目前我認為問題可能是這個應用程序在它自己的命名空間中,而普羅米修斯在默認命名空間中。 我已經嘗試將服務監視器部署到默認命名空間和 api-bootstrap-grape 命名空間,但都不起作用。 我不確定我可能還缺少什么。
如果問題是 Prometheus 在默認命名空間中並且它只是在監視它,我怎么能告訴它監視其他命名空間?
編輯:作為測試,我將此應用程序部署到普羅米修斯所在的默認命名空間,看看這是否是問題所在。 我仍然遇到同樣的問題,prometheus 配置得到更新,但沒有注冊目標,所以也許我上面的配置有另一個問題?
我有一個類似的問題,一旦我為我的服務添加標簽,我就能讓它工作。 您的服務沒有標簽,但是如果您添加了您的ServiceMonitor
正在尋找的selector.matchLabels
(因為它的目標是Service
),那么它可能會起作用:
apiVersion: v1
kind: Service
metadata:
name: api-bootstrap-grape-service
namespace: api-bootstrap-grape
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
labels:
app: api-bootstrap-grape-app
spec:
selector:
app: api-bootstrap-grape-app
ports:
- name: api-bootstrap-grape-http
port: 3000
targetPort: 3000
type: LoadBalancer
這是我的問題。 令人困惑的是,它不是針對我的 pod 的selectorLabels
來允許端點工作的。 它只是查看Service
上的標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.