《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证
文章目录
OpenShift预制的Grafana权限限制
我们知道,在OpenShift 4 中已经内置了Prometheus和Grafana,可以在控制台的“仪表盘”中直接使用,它们的相关资源都运行在openshift-monitoring项目中。但是为了能保持监控环境始终可以正常运行,OpenShift只为内置的Grafana提供了只读(下图的Viewer)权限,即便使用OpenShift集群管理员也不能修改集群内置的Grafana配置,例如导入定制的Dashboard。
为了能够对Dashboard进行定制,我们需要安装使用项目级定制的Grafana环境。本文档通过Operator部署项目级的Grafana,并将OpenShift集群预制的Prometheus作为数据源(其实也可在同一项目中安装项目级Prometheus,并作为其数据源)显示数据。
用Operator安装Grafana
安装Operator
- 创建一个新的项目my-grafana。
$ oc new-project my-grafana
- 在OperatorHub中找到“Grafana Operator”,然后将这个Operator安装到my-grafana项目中。
- 进入已经安装好的“Grafana Operator”,然后点击下图中Grafana下面的“Create Instance”。
创建Grafana实例
- 在“创建Grafana”页面中切换到“YAML 视图”,提供以下YAML配置后点击“创建”按钮。说明:配置中root/mypasswords是这个Grafana实例的登录用户和密码。
apiVersion: integreatly.org/v1alpha1
kind: Grafana
metadata:
name: my-grafana
namespace: my-grafana
spec:
config:
auth:
disable_signout_menu: true
auth.anonymous:
enabled: true
log:
level: warn
mode: console
security:
admin_password: mypassword
admin_user: root
ingress:
enabled: true
dashboardLabelSelector:
- matchExpressions:
- key: app
operator: In
values:
- grafana
- 查看my-grafana实例的Resources。
配置Grafana的Datasource
- 为my-grafana项目资源提供cluster-monitoring-view的权限。
$ oc adm policy add-cluster-role-to-user cluster-monitoring-view -z grafana-serviceaccount
clusterrole.rbac.authorization.k8s.io/cluster-monitoring-view added: "grafana-serviceaccount"
- 获取grafana-serviceaccount的TOKEN。
$ oc serviceaccounts get-token grafana-serviceaccount
eyJhbGciOiJSUzI1NiIsImtpZCI6ImdKWHBwemQ2dWcteGlUT2txWGpfV2lTQ2dOdWJIRVpaQThVd0h3ZnRhMHcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJteS1ncmFmYW5hIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImdyYWZhbmEtc2VydmljZWFjY291bnQtdG9rZW4tNXdnZjIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZ3JhZmFuYS1zZXJ2aWNlYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjM1NDgzMWI0LTBiMTAtNDQ0Mi1hNWM1LWEzMzZjOTdhZDA3ZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpteS1ncmFmYW5hOmdyYWZhbmEtc2VydmljZWFjY291bnQifQ.oOHbUBdvNsUzIHb-ZEeKbDw1alt1LY6Hu1DN0kd6XxavT7P-U2AUQEricKXSTzerpL8EuDlFANf5pwGcAkiploLvpWlTa39Q_NC0oqgV7sE2W9RRkPL1DGOya7Dfks-uRLKJqYKgnWTOifxwuYyi0ckKYAAI_uTyIPaDwQL8goWNMHOmjCEzySdJi2sEfwYDqXSz_s9aKztNL0u0yJufIF9pA9WN_i2qGmOl_shdBJeG-MEn3fJ6xueKEx4fyteY-NNNfIyP7VkwE7mIBMZGo2uWRNfTJk6KtO8ZkLHOTyjtG5KQYnzdaCoD1WM_dMeGwFXuofHYLE7rJD_f7puehg
- 在已经安装好的“Grafana Operator”中点击“Grafana Data Source”的“创建实例”。
- 切换到“YAML 视图”后提供以下YAML配置,然后点击“创建”按钮。其中url的内容是openshift-monitoring项目中名为thanos-querier的Service的内部访问地址。注意:需要用(2)获得的TOKEN字符串替换YAML中的“${TOKEN}”。
apiVersion: integreatly.org/v1alpha1
kind: GrafanaDataSource
metadata:
name: prometheus-grafanadatasource
namespace: my-grafana
spec:
datasources:
- access: proxy
editable: true
isDefault: true
jsonData:
httpHeaderName1: 'Authorization'
timeInterval: 5s
tlsSkipVerify: true
name: Prometheus
secureJsonData:
httpHeaderValue1: 'Bearer ${TOKEN}'
type: prometheus
url: 'https://thanos-querier.openshift-monitoring.svc.cluster.local:9091'
name: prometheus-grafanadatasource.yaml
访问定制的Grafana
- 查看my-grafana项目的资源。
$ oc get all -n my-grafana
NAME READY STATUS RESTARTS AGE
pod/grafana-deployment-86d9df47b5-qmrd6 1/1 Running 0 10h
pod/grafana-operator-849678798c-4cxj5 1/1 Running 0 10h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/grafana-operator-metrics ClusterIP 172.30.254.168 <none> 8080/TCP 12h
service/grafana-service ClusterIP 172.30.209.136 <none> 3000/TCP 12h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/grafana-deployment 1/1 1 1 12h
deployment.apps/grafana-operator 1/1 1 1 12h
NAME DESIRED CURRENT READY AGE
replicaset.apps/grafana-deployment-67cc4b5c65 0 0 0 12h
replicaset.apps/grafana-deployment-86d9df47b5 1 1 1 11h
replicaset.apps/grafana-deployment-f6cb7866 0 0 0 12h
replicaset.apps/grafana-operator-849678798c 1 1 1 12h
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
route.route.openshift.io/grafana-route grafana-route-my-grafana.apps.cluster-pek-c1e6.pek-c1e6.sandbox900.opentlc.com grafana-service 3000 edge None
$ oc get grafanadatasource -n my-grafana
NAME AGE
prometheus-grafanadatasource 11h
$ oc get grafana -n my-grafana
NAME AGE
my-grafana 11h
此时“my-grafana”项目的“开发者”视图中如下图:
2. 用浏览器打开上一步查到的grafana-route对应的Route地址。
3. 在界面左下方点击“Sign In”图标,然后用root/mypassword登录Grafana。
4. 查看Grafana的控制台,确认比OpenShift内置的Grafana控制台有更多的功能图标。
5. 在左下方的登录用户Preferences界面中确认该用户有Admin的权限。
6. 有了权限后,我们就可以点击左侧“+”图标"Create Dashboard"或“Import Dashboard”了。
7. 当"Create Dashboard"的时候,可点击“Add new pannel”。在下图“Edit Pannel”界面中的Query区域里的Metrics可以选择需要监控的指标,或对指标使用查询条件 。
7. 最后点击上图的Apply就可将Pannel保存 。
参考
https://www.redhat.com/zh/blog/custom-grafana-dashboards-red-hat-openshift-container-platform-4
https://access.redhat.com/solutions/4543031
https://www.techbeatly.com/2020/03/install-grafana-operator-on-openshift-container-platform-4.html#.X2F6XzOAQ88
https://developer.ibm.com/recipes/tutorials/monitoring-with-prometheus-and-grafana-in-redhat-openshift-4-3/
https://github.com/GandhiCloudLab/prometheus-grafana-openshift-430