kubernetes - 自定义 Prometheus servicemonitor 未注册目标
问题描述
我已经使用 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 配置得到更新,但没有注册目标,所以也许我上面的配置有另一个问题?
解决方案
推荐阅读
- mysql - 如何给出一个以上的有子句
- c# - 如何将枚举字符串和值从 XML 模型解析为对象
- php - 引用的可打印 MIME 消息中的 CRLF
- pdf - 如何在 android-Webview 中加载 pdf?
- c# - 智能文件 API 上传文件
- python - 从基于类的表单 UpdateView django 中收集数据以在 views.py 中使用
- angularjs - 如何通过使用浏览器的刷新按钮或 Angular js 中的 CTRL+F5 来防止用户刷新页面的代码
- python - Python:在空格处拆分列表
- vba - 打开新工作簿 Excel 2016 VBA 后功能区无响应
- mysql - Spring Boot 连接到 MySQL 远程数据库