您好,我正在尝试将内置 OpenShift(v4.8) prometheus 数据源添加到本地 grafana 服务器。我已经使用用户名和密码进行了基本身份验证,现在我也启用了跳过 tls 验证。我仍然收到此错误
普罗米修斯 URL =
https://prometheus-k8s-openshift-monitoring.apps.xxxx.xxxx.xxxx.com
这是grafana日志
logger=tsdb.prometheus t=2022-04-12T17:35:23.47+0530 lvl=eror msg="Instant query failed" query=1+1 err="client_error: client error: 403"
logger=context t=2022-04-12T17:35:23.47+0530 lvl=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=10.100.95.27 time_ms=36 size=65 referer=https://grafana.xxxx.xxxx.com/datasources/edit/6TjZwT87k
您无法使用基本身份验证对 OpenShift prometheus 实例进行身份验证。您需要使用不记名令牌进行身份验证,例如一个从
oc whoami -t
获得:
curl -H "Authorization: Bearer $(oc whoami -t)" -k https://prometheus-k8s-openshift-monitoring.apps.xxxx.xxxx.xxxx.com/
或者来自具有适当权限的
ServiceAccount
:
secret=$(oc -n openshift-monitoring get sa prometheus-k8s -o jsonpath='{.secrets[1].name}')
token=$(oc -n openshift-monitoring get secret $secret -o jsonpath='{.data.token}' | base64 -d)
curl -H "Authorization: Bearer $token" -k https://prometheus-k8s-openshift-monitoring.apps.xxxx.xxxx.xxxx.com/
openshift 使用 grafana 的运算符,运算符扩展了它的 api 并为您提供了一些新的对象来使用。其中一个自定义资源定义 (CRD) 是 GrafanaDatasource。
[openshift 用户界面][1]
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDatasource
metadata:
name: cluster-prometheus
namespace: grafana
spec:
datasource:
access: proxy
editable: true
secureJsonData:
httpHeaderValue1: Bearer c29tZXRva2VudGhhdGhhc3Blcm1pc3Npb24K
name: prometheus
url: 'https://thanos-querier.openshift-monitoring.svc.cluster.local:9091'
jsonData:
httpHeaderName1: Authorization
timeInterval: 5s
tlsSkipVerify: true
basicAuth: true
isDefault: true
type: prometheus
instanceSelector:
matchLabels:
dashboards: grafana
[1]: https://i.stack.imgur.com/v8K2x.png