【发布时间】:2021-10-28 09:05:14
【问题描述】:
我使用bitnami/keycloak Helm 图表 (https://bitnami.com/stack/keycloak/helm) 安装了 Keycloak。
由于我也在使用 Prometheus-Operator 进行监控,因此我启用了指标端点和服务监控器:
keycloak:
...
metrics:
enabled: true
serviceMonitor:
enabled: true
namespace: monitoring
additionalLabels:
release: my-prom-operator-release
由于我对实际领域指标更感兴趣,我安装了 keycloak-metrics-spi 提供程序 (https://github.com/aerogear/keycloak-metrics-spi),方法是设置一个将其下载到共享卷的 init 容器。
keycloak:
...
extraVolumeMounts:
- name: providers
mountPath: /opt/bitnami/keycloak/providers
extraVolumes:
- name: providers
emptyDir: {}
...
initContainers:
- name: metrics-spi-provider
image: SOME_IMAGE_WITH_WGET_INSTALLED
imagePullPolicy: Always
command:
- sh
args:
- -c
- |
KEYCLOAK_METRICS_SPI_VERSION=2.5.2
wget --no-check-certificate -O /providers/keycloak-metrics-spi-${KEYCLOAK_METRICS_SPI_VERSION}.jar \
https://github.com/aerogear/keycloak-metrics-spi/releases/download/${KEYCLOAK_METRICS_SPI_VERSION}/keycloak-metrics-spi-${KEYCLOAK_METRICS_SPI_VERSION}.jar
chmod +x /providers/keycloak-metrics-spi-${KEYCLOAK_METRICS_SPI_VERSION}.jar
touch /providers/keycloak-metrics-spi-${KEYCLOAK_METRICS_SPI_VERSION}.jar.dodeploy
volumeMounts:
- name: providers
mountPath: /providers
提供程序在常规面向公众 http 端口而不是http-management 端口上启用指标端点,这对我来说不是很好。但我可以在我的反向代理中阻止对它们的外部访问。
我缺少的是对这些端点的某种自动抓取。现在我创建了一个额外的模板,它为我的图表中预定义列表的每个元素创建一个新的服务监视器:
values.yaml
keycloak:
...
metrics:
extraServiceMonitors:
- realmName: master
- realmName: my-realm
servicemonitor-metrics-spi.yaml
{{- range $serviceMonitor := .Values.keycloak.metrics.extraServiceMonitors }}
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ $.Release.Name }}-spi-{{ $serviceMonitor.realmName }}
...
spec:
endpoints:
- port: http
path: /auth/realms/{{ $serviceMonitor.realmName }}/metrics
...
{{- end }}
有没有更好的方法来做到这一点?以便 Prometheus 可以自动检测我的所有领域并抓取它们的端点?
提前致谢!
【问题讨论】:
-
恕我直言,您不需要抓取每个领域指标端点 - 请参阅自述文件:
The endpoint lives under <url>/auth/realms/<realm>/metrics. It will return data for all realms, no matter which realm you use in the URL (you can just default to /auth/realms/master/metrics).所以 mainmaster领域足以监控所有领域。 -
有趣。我多次查看自述文件。应该更仔细地阅读句子。始终将其理解为“这是您从(每个领域)获取数据的端点”。刚刚检查过,是的,master 端点也从我的其他领域返回数据。非常感谢!
标签: keycloak monitoring metrics prometheus-operator