将Grafana引入OpenShift环境
首先
由于OpenShift 4.11中已废弃Grafana用户界面,因此OpenShift环境默认不再存在Grafana。
因此,本文将介绍在OpenShift 4.11及更高版本中安装Grafana的步骤。
❯ oc get deployment -n openshift-monitoring
NAME READY UP-TO-DATE AVAILABLE AGE
cluster-monitoring-operator 1/1 1 1 4h3m
kube-state-metrics 1/1 1 1 3h23m
openshift-state-metrics 1/1 1 1 3h23m
prometheus-adapter 2/2 2 2 3h23m
prometheus-operator 1/1 1 1 3h24m
prometheus-operator-admission-webhook 2/2 2 2 3h50m
telemeter-client 1/1 1 1 3h23m
thanos-querier 2/2 2 2 3h23m

设定步骤
1. 預先準備
1. 创建项目
本次我们将在特定的项目中部署Grafana Operator和Grafana实例。
为此,我们将先创建一个用于部署的项目。
❯ oc new-project grafana
Now using project "grafana" on server "https://xsss.com:6443".
❯ oc project
Using project "grafana" on server "https://xsss.com:6443"
2. 建立Grafana系统
2.1 引入Grafana Operator
首先,我会解释Grafana Operator的安装方法。
打开Openshift Web控制台,从管理员界面的菜单中点击OperatorHub。

在搜索框中输入”Grafana”,然后点击显示的Grafana Operator。

因为这是一个安装选择屏幕,所以选择渠道等。根据以下内容选择并点击安装。

将会显示如下的安装中界面。

在安装完成后,画面将如下所示。

2.2 引入Grafana
我将从这里开始安装Grafana。
打开Openshift Web控制台,从菜单中选择已安装的Operator,然后点击Grafana Operator。

点击创建Grafana实例。

这次我们将使用默认设置创建。
如果您想要更改管理员用户名或密码,请切换到YAML视图,并更改spec.security.admin_user和spec.security.admin_password。

可以看到已经创建了名为 pod(grafana-a-deployment-5bcd5dbd48-k7cfq)、service(grafana-a-service)和service account(grafana-a-sa) 的实体。
❯ oc get pod -n grafana
NAME READY STATUS RESTARTS AGE
grafana-a-deployment-5bcd5dbd48-k7cfq 1/1 Running 0 38s
grafana-operator-controller-manager-c749dd5b-z6pqj 1/1 Running 0 6d2h
❯ oc get service -n grafana
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana-a-service ClusterIP xxx.xx.xx.xxx <none> 3000/TCP 3m13s
grafana-operator-operator-metrics-service ClusterIP xxx.xx.xx.xxx <none> 8443/TCP 10d
❯ oc get sa -n grafana
NAME SECRETS AGE
builder 1 10d
default 1 10d
deployer 1 10d
grafana-a-sa 1 55s
grafana-operator-controller-manager 1 10d
因为我们不创建路线。
❯ oc get route -n grafana
No resources found in grafana namespace.
我将以以下方式自己创建。
❯ oc create route edge --service=grafana-a-service -n grafana
route.route.openshift.io/grafana-a-service created
❯ oc get route -n grafana
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
grafana-a-service grafana-a-service-grafana.apps.xxx.xxx.xxx.xxx.com grafana-a-service grafana edge None
只需给出一个选项,请用中文对以下内容进行释义:
打开 https://grafana-a-service-grafana.apps.xxx.xxx.xxx.xxx.com,如果展示以下界面,则表示成功。
如果保持默认设置,输入以下值即可登录。

登录成功后会显示以下屏幕。

3. Grafana和Prometheus的集成
我会解释如何与默认部署在OpenShift上的Prometheus进行配合。
❯ oc get deployment -n openshift-monitoring
NAME READY UP-TO-DATE AVAILABLE AGE
cluster-monitoring-operator 1/1 1 1 11d
kube-state-metrics 1/1 1 1 11d
openshift-state-metrics 1/1 1 1 11d
prometheus-adapter 2/2 2 2 11d
prometheus-operator 1/1 1 1 11d
prometheus-operator-admission-webhook 2/2 2 2 11d
telemeter-client 1/1 1 1 11d
thanos-querier
给予Grafana服务账号访问权限到Prometheus。
首先,将garana的服务帐户(grafana-a-sa)应用cluster-monitoring-view策略。
❯ oc adm policy add-cluster-role-to-user cluster-monitoring-view -z grafana-a-sa -n grafana
clusterrole.rbac.authorization.k8s.io/cluster-monitoring-view added: "grafana-a-sa"
创建Grafana服务账户(garafana-a-sa)的令牌。
❯ oc sa new-token grafana-a-sa -n grafana
xxxxtokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
创建Grafana数据源3.2
打开 OpenShift Web 控制台,创建 Grafana 数据源的实例。


根据下方的YAML示例,将Token用作HTTP请求的身份验证标头。
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDatasource
metadata:
name: grafanadatasource-sample
namespace: grafana
spec:
datasource:
jsonData:
timeInterval: 5s
tlsSkipVerify: true
httpHeaderName1: 'Authorization'
access: proxy
editable: true
isDefault: true
name: prometheus
secureJsonData:
httpHeaderValue1: 'Bearer xxxxtokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
type: prometheus
url: 'https://thanos-querier.openshift-monitoring.svc.cluster.local:9091'
instanceSelector:
matchLabels:
dashboards: grafana-a
plugins:
- name: grafana-clock-panel
version: 1.3.0
接下来,我们将确认数据源是否已成功注册。


在Grafana上创建一个仪表盘。
使用 Prometheus 的数据,我们尝试创建一个由 OpenShift 提供的仪表盘。
请从这里下载 pod-dashboard.json 文件。
点击左侧菜单中的“仪表盘”,并选择“浏览”。


当屏幕显示以下内容时,请直接点击导入。

如果出现以下画面,则表示成功。
如果命名空间仍然是默认的话,将不会显示,因此请选择openshift-monitoring。

你可以可视化该namespace中存在的Pod资源的状态。

请参考。
- Custom Grafana dashboards for Red Hat OpenShift Container Platform 4