第 5 章 使用 Service Telemetry Framework 的操作功能

您可以使用以下操作功能为 Service Telemetry Framework (STF)提供额外的功能:

5.1. Service Telemetry Framework 中的仪表板

使用第三方应用程序 Grafana 来视觉化数据收集器为各个主机节点收集的系统级指标。

有关配置数据收集器的更多信息,请参阅 第 4.1 节 “使用 director 为 Service Telemetry Framework 部署 Red Hat OpenStack Platform overcloud”

您可以使用仪表板来监控云:

基础架构仪表板
使用基础架构仪表板查看单个节点的指标。从控制面板的左上角选择一个节点。
Cloud view 仪表板

使用云视图仪表板查看面板,以监控服务资源使用情况、API 统计和云事件。您必须启用 API 健康监控和服务监控,以便为此仪表板提供数据。在 STF 基础配置中默认启用 API 健康监控。更多信息请参阅 第 4.1.3 节 “为 STF 创建基本配置”

虚拟机视图仪表板
使用虚拟机视图仪表板查看面板,以监控虚拟机基础架构使用情况。从控制面板的左上角选择云和项目。如果要在此仪表板上启用事件注解,则必须启用事件存储。如需更多信息,请参阅 第 3.2 节 “在 Red Hat OpenShift Container Platform 中创建 ServiceTelemetry 对象”
Memcached view 仪表板
使用 memcached 视图仪表板查看面板,以监控连接、可用性、系统指标和缓存性能。从控制面板的左上角选择云。

5.1.1. 配置 Grafana 以托管仪表板

Grafana 不包含在默认的 Service Telemetry Framework (STF)部署中,因此您必须从 community-operators CatalogSource 部署 Grafana Operator。如果使用 Service Telemetry Operator 部署 Grafana,它会生成 Grafana 实例,并配置本地 STF 部署的默认数据源。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入 service-telemetry 命名空间:

    $ oc project service-telemetry
  3. 使用 community-operators CatalogSource 订阅 Grafana Operator:

    警告

    社区 Operator 是尚未被红帽审查或验证的 Operator。社区 Operator 应谨慎使用,因为其稳定性未知。红帽不支持社区 Operator。

    了解更多有关红帽的第三方软件支持政策

    $ oc apply -f - <<EOF
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: grafana-operator
      namespace: service-telemetry
    spec:
      channel: v4
      installPlanApproval: Automatic
      name: grafana-operator
      source: community-operators
      sourceNamespace: openshift-marketplace
    EOF
  4. 验证 Operator 是否已成功启动。在命令输出中,如果 PHASE 列的值是 Succeeded,Operator 会成功启动:

    $ oc get csv --selector operators.coreos.com/grafana-operator.service-telemetry
    
    NAME                       DISPLAY            VERSION   REPLACES                   PHASE
    grafana-operator.v4.10.1   Grafana Operator   4.10.1    grafana-operator.v4.10.0   Succeeded
  5. 要启动 Grafana 实例,请创建或修改 ServiceTelemetry 对象。将 graphing.enabledgraphing.grafana.ingressEnabled 设置为 true。另外,还可将 graphing.grafana.baseImage 的值设置为要部署的 Grafana 工作负载容器镜像:

    $ oc edit stf default
    
    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    ...
    spec:
      ...
      graphing:
        enabled: true
        grafana:
          ingressEnabled: true
          baseImage: 'registry.redhat.io/rhel8/grafana:7'
  6. 验证 Grafana 实例是否已部署:

    $ oc get pod -l app=grafana
    
    NAME                                  READY   STATUS    RESTARTS   AGE
    grafana-deployment-7fc7848b56-sbkhv   1/1     Running   0          1m
  7. 验证 Grafana 数据源是否已正确安装:

    $ oc get grafanadatasources
    
    NAME                    AGE
    default-datasources     20h
  8. 验证 Grafana 路由是否存在:

    $ oc get route grafana-route
    
    NAME            HOST/PORT                                          PATH   SERVICES          PORT   TERMINATION   WILDCARD
    grafana-route   grafana-route-service-telemetry.apps.infra.watch          grafana-service   3000   edge          None

5.1.2. 覆盖默认的 Grafana 容器镜像

Service Telemetry Framework (STF)中的仪表板需要仅在 Grafana 版本 8.1.0 及更高版本中提供的功能。默认情况下,Service Telemetry Operator 会安装兼容版本。您可以使用 graphing.grafana.baseImage 指定到镜像 registry 的镜像路径来覆盖基本 Grafana 镜像。

流程

  1. 确保具有正确的 Grafana 版本:

    $ oc get pod -l "app=grafana" -ojsonpath='{.items[0].spec.containers[0].image}'
    docker.io/grafana/grafana:7.3.10
  2. 如果运行的镜像早于 8.1.0,请修补 ServiceTelemetry 对象以更新该镜像。Service Telemetry Operator 更新 Grafana 清单,它会重启 Grafana 部署:

    $ oc patch stf/default --type merge -p '{"spec":{"graphing":{"grafana":{"baseImage":"docker.io/grafana/grafana:8.1.5"}}}}'
  3. 验证新 Grafana pod 是否存在,并且 STATUS 的值为 Running

    $ oc get pod -l "app=grafana"
    NAME                                 READY     STATUS    RESTARTS   AGE
    grafana-deployment-fb9799b58-j2hj2   1/1       Running   0          10s
  4. 验证新实例是否正在运行更新的镜像:

    $ oc get pod -l "app=grafana" -ojsonpath='{.items[0].spec.containers[0].image}'
    docker.io/grafana/grafana:8.1.0

5.1.3. 导入仪表板

Grafana Operator 可以通过创建 GrafanaDashboard 对象来导入和管理仪表板。您可以在 https://github.com/infrawatch/dashboards 查看示例仪表板。

流程

  1. 导入基础架构仪表板:

    $ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-dashboard.yaml
    
    grafanadashboard.integreatly.org/rhos-dashboard-1 created
  2. 导入云仪表板:

    警告

    stf-connectors.yaml 文件中,确保将 collectd virt 插件参数 hostname_format 的值设置为 name uuid hostname,否则云仪表板上的一些面板没有显示任何信息。有关 virt 插件的更多信息,请参阅 collectd 插件

    $ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-cloud-dashboard.yaml
    
    grafanadashboard.integreatly.org/rhos-cloud-dashboard-1 created
  3. 导入云事件仪表板:

    $ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-cloudevents-dashboard.yaml
    
    grafanadashboard.integreatly.org/rhos-cloudevents-dashboard created
  4. 导入虚拟机仪表板:

    $ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/virtual-machine-view.yaml
    
    grafanadashboard.integreatly.org/virtual-machine-view-1 configured
  5. 导入 memcached 仪表板:

    $ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/memcached-dashboard.yaml
    
    grafanadashboard.integreatly.org/memcached-dashboard-1 created
  6. 验证仪表板是否可用:

    $ oc get grafanadashboards
    
    NAME                         AGE
    memcached-dashboard-1        7s
    rhos-cloud-dashboard-1       23s
    rhos-cloudevents-dashboard   18s
    rhos-dashboard-1             29s
    virtual-machine-view-1       13s
  7. 检索 Grafana 路由地址:

    $ oc get route grafana-route -ojsonpath='{.spec.host}'
    
    grafana-route-service-telemetry.apps.infra.watch
  8. 在 Web 浏览器中,进入到 https://<grafana_route_address>。使用您在上一步中获得的值替换 <grafana_route_address>
  9. 要查看仪表板,请点 DashboardsManage

5.1.4. 检索和设置 Grafana 登录凭证

启用 Grafana 时,您可以使用 openshift 身份验证登录,或者 Grafana Operator 设置的默认用户名和密码。

您可以覆盖 ServiceTelemetry 对象中的凭证,使 Service Telemetry Framework (STF)设置 Grafana 的用户名和密码。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入 service-telemetry 命名空间:

    $ oc project service-telemetry
  3. 从 STF 对象检索现有的用户名和密码:

    $ oc get stf default -o jsonpath="{.spec.graphing.grafana['adminUser','adminPassword']}"
  4. 要通过 ServiceTelemetry 对象修改 Grafana 管理员用户名和密码的默认值,请使用 graphing.grafana.adminUsergraphing.grafana.adminPassword 参数。

    $ oc edit stf default
  5. 等待 grafana pod 使用新凭证重启

    $ oc get po -l app=grafana -w