7.3.3. 使用 Prometheus 数据源部署 Grafana

注意

在 OpenShift Container Platform 4.x 上运行 AMQ Streams 时使用此流程。

此流程描述了如何部署为 OpenShift Container Platform 4.x 监控堆栈配置的 Grafana 应用程序。

OpenShift Container Platform 4.x 在 openshift-monitoring 项目中包含一个 Thanos Querier 实例。Thanos Querier 用于聚合平台指标。

要使用所需的平台指标,您的 Grafana 实例需要一个可以连接到 Thanos Querier 的 Prometheus 数据源。要配置此连接,您需要创建一个 Config Map,它将使用令牌验证与 Thanos Querier 一起运行的 oauth-proxy sidecar。datasource.yaml 文件用作 Config Map 的来源。

最后,您要使用作为卷挂载的 Config Map 将 Grafana 应用程序部署到包含 Kafka 集群的项目中。

流程

  1. 获取 Grafana ServiceAccount 的访问令牌:

    oc serviceaccounts get-token grafana-serviceaccount -n MY-PROJECT

    复制要在下一步中使用的访问令牌。

  2. 创建一个包含 Grafana Thanos Querier 配置的 数据源.yaml 文件。

    将访问令牌粘贴到 httpHeaderValue1 属性中,如下所示:

    apiVersion: 1
    
    datasources:
    - name: Prometheus
      type: prometheus
      url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
      access: proxy
      basicAuth: false
      withCredentials: false
      isDefault: true
      jsonData:
        timeInterval: 5s
        tlsSkipVerify: true
        httpHeaderName1: "Authorization"
      secureJsonData:
        httpHeaderValue1: "Bearer ${GRAFANA-ACCESS-TOKEN}" 1
      editable: true
    1
    GRAFANA-ACCESS-TOKEN :Grafana ServiceAccount 的访问令牌值。
  3. datasource.yaml 文件创建一个名 为grafana-config 的 Config Map:

    oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECT
  4. 创建包含 Deployment 和 Service 的 Grafana 应用程序。

    The grafana-config Config Map 被挂载为数据源配置的卷。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: grafana
      labels:
        app: strimzi
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: grafana
      template:
        metadata:
          labels:
            name: grafana
        spec:
          serviceAccountName: grafana-serviceaccount
          containers:
          - name: grafana
            image: grafana/grafana:6.3.0
            ports:
            - name: grafana
              containerPort: 3000
              protocol: TCP
            volumeMounts:
            - name: grafana-data
              mountPath: /var/lib/grafana
            - name: grafana-logs
              mountPath: /var/log/grafana
            - name: grafana-config
              mountPath: /etc/grafana/provisioning/datasources/datasource.yaml
              readOnly: true
              subPath: datasource.yaml
            readinessProbe:
              httpGet:
                path: /api/health
                port: 3000
              initialDelaySeconds: 5
              periodSeconds: 10
            livenessProbe:
              httpGet:
                path: /api/health
                port: 3000
              initialDelaySeconds: 15
              periodSeconds: 20
          volumes:
          - name: grafana-data
            emptyDir: {}
          - name: grafana-logs
            emptyDir: {}
          - name: grafana-config
            configMap:
              name: grafana-config
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
      labels:
        app: strimzi
    spec:
      ports:
      - name: grafana
        port: 3000
        targetPort: 3000
        protocol: TCP
      selector:
        name: grafana
      type: ClusterIP
  5. 将 Grafana 应用程序部署到包含 Kafka 集群的项目中:

    oc apply -f GRAFANA-APPLICATION -n MY-PROJECT

其它资源