第 5 章 使用服务 Telemetry 框架的操作功能
您可以使用以下操作功能为 Service Telemetry Framework (STF)提供额外的功能:
5.1. Service Telemetry Framework 中的仪表板
使用第三方应用程序 Grafana 来视觉化数据收集器为各个主机节点收集的系统级别指标。
有关配置数据收集器的更多信息,请参阅 第 4.1 节 “使用 director 为 Service Telemetry Framework 部署 Red Hat OpenStack Platform overcloud”。
您可以使用仪表板来监控云:
- 基础架构仪表板
- 使用基础架构仪表板查看单一节点的指标。从仪表板的左上角选择一个节点。
- Cloud 视图仪表板
使用云视图仪表板查看面板来监控服务资源使用情况、API 统计和云事件。您必须启用 API 健康监控和服务监控,以便为此仪表板提供数据。在 STF 基础配置中默认启用 API 健康监控。更多信息请参阅 第 4.1.2 节 “为 STF 创建基本配置”。
- 有关 API 健康监控的更多信息,请参阅 第 5.8 节 “Red Hat OpenStack Platform API 状态和容器化服务健康状况”。
- 有关 RHOSP 服务监控的更多信息,请参阅 第 5.7 节 “Red Hat OpenStack Platform 服务的资源使用情况”。
- 虚拟机视图仪表板
- 使用虚拟机视图仪表板查看面板来监控虚拟机基础架构使用情况。从仪表板的左上角选择一个云和项目。如果要在此仪表板中启用事件注解,您必须启用事件存储。如需更多信息,请参阅 第 3.2 节 “在 Red Hat OpenShift Container Platform 中创建 ServiceTelemetry 对象”。
- Memcached 视图仪表板
- 使用 memcached 视图仪表板查看面板来监控连接、可用性、系统指标和缓存性能。从仪表板的左上角选择云。
5.1.1. 配置 Grafana 以托管仪表板
Grafana 不包含在默认的 Service Telemetry Framework (STF)部署中,因此您必须从 community-operators CatalogSource 部署 Grafana Operator。如果使用 Service Telemetry Operator 部署 Grafana,它会生成 Grafana 实例,并配置本地 STF 部署的默认数据源。
流程
- 登录到 Red Hat OpenShift Container Platform。
进入
service-telemetry
命名空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc project service-telemetry
$ oc project service-telemetry
使用 community-operators CatalogSource 订阅 Grafana Operator:
警告社区 Operator 是尚未被红帽审查或验证的 Operator。社区 Operator 应谨慎使用,因为其稳定性未知。红帽不支持社区 Operator。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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
验证 Operator 是否已成功启动。在命令输出中,如果
PHASE
列的值为Succeeded
,Operator 可以成功启动:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get csv --selector operators.coreos.com/grafana-operator.service-telemetry
$ 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
要启动 Grafana 实例,请创建或修改
ServiceTelemetry
对象。将graphing.enabled
和graphing.grafana.ingressEnabled
设置为true
。另外,还可将graphing.grafana.baseImage
的值设置为要部署的 Grafana 工作负载容器镜像:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit stf default
$ oc edit stf default apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry ... spec: ... graphing: enabled: true grafana: ingressEnabled: true baseImage: 'registry.redhat.io/rhel8/grafana:7'
验证 Grafana 实例是否已部署:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -l app=grafana
$ oc get pod -l app=grafana NAME READY STATUS RESTARTS AGE grafana-deployment-7fc7848b56-sbkhv 1/1 Running 0 1m
验证 Grafana 数据源是否已正确安装:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get grafanadatasources
$ oc get grafanadatasources NAME AGE default-datasources 20h
验证 Grafana 路由是否存在:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route grafana-route
$ 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 镜像。
流程
确保具有正确的 Grafana 版本:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -l "app=grafana" -ojsonpath='{.items[0].spec.containers[0].image}'
$ oc get pod -l "app=grafana" -ojsonpath='{.items[0].spec.containers[0].image}' docker.io/grafana/grafana:7.3.10
如果正在运行的镜像早于 8.1.0,请修补 ServiceTelemetry 对象以更新镜像。Service Telemetry Operator 更新 Grafana 清单,用于重启 Grafana 部署:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc patch stf/default --type merge -p '{"spec":{"graphing":{"grafana":{"baseImage":"docker.io/grafana/grafana:8.1.5"}}}}'
$ oc patch stf/default --type merge -p '{"spec":{"graphing":{"grafana":{"baseImage":"docker.io/grafana/grafana:8.1.5"}}}}'
验证新 Grafana pod 是否存在,并且
STATUS
的值为Running
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -l "app=grafana"
$ oc get pod -l "app=grafana" NAME READY STATUS RESTARTS AGE grafana-deployment-fb9799b58-j2hj2 1/1 Running 0 10s
验证新实例是否正在运行更新的镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod -l "app=grafana" -ojsonpath='{.items[0].spec.containers[0].image}'
$ 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 中查看示例仪表板。
流程
导入基础架构仪表板:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-dashboard.yaml
$ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-dashboard.yaml grafanadashboard.integreatly.org/rhos-dashboard-1 created
导入云仪表板:
警告在
stf-connectors.yaml
文件中,确保将 collectdvirt
插件参数hostname_format
的值设置为name uuid hostname
,否则云仪表板上的一些面板没有显示任何信息。有关virt
插件的更多信息,请参阅 collectd 插件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-cloud-dashboard.yaml
$ 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
导入云事件仪表板:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-cloudevents-dashboard.yaml
$ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/rhos-cloudevents-dashboard.yaml grafanadashboard.integreatly.org/rhos-cloudevents-dashboard created
导入虚拟机仪表板:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/virtual-machine-view.yaml
$ 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
导入 memcached 仪表板:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/memcached-dashboard.yaml
$ oc apply -f https://raw.githubusercontent.com/infrawatch/dashboards/master/deploy/stf-1/memcached-dashboard.yaml grafanadashboard.integreatly.org/memcached-dashboard-1 created
验证仪表板是否可用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get grafanadashboards
$ 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
检索 Grafana 路由地址:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route grafana-route -ojsonpath='{.spec.host}'
$ oc get route grafana-route -ojsonpath='{.spec.host}' grafana-route-service-telemetry.apps.infra.watch
- 在 Web 浏览器中,进入到 https://<grafana_route_address>。使用您在上一步中获得的值替换 <grafana_route_address>。
- 要查看仪表板,请点 Dashboards 和 Manage。
5.1.4. 检索和设置 Grafana 登录凭证
启用 Grafana 后,您可以使用 openshift 身份验证登录,或者 Grafana Operator 设置的默认用户名和密码。
您可以覆盖 ServiceTelemetry
对象中的凭证,使 Service Telemetry Framework (STF)为 Grafana 设置用户名和密码。
流程
- 登录到 Red Hat OpenShift Container Platform。
进入
service-telemetry
命名空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc project service-telemetry
$ oc project service-telemetry
从 STF 对象检索现有的用户名和密码:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get stf default -o jsonpath="{.spec.graphing.grafana['adminUser','adminPassword']}"
$ oc get stf default -o jsonpath="{.spec.graphing.grafana['adminUser','adminPassword']}"
要通过 ServiceTelemetry 对象修改 Grafana 管理员用户名和密码的默认值,请使用
graphing.grafana.adminUser
和graphing.grafana.adminPassword
参数。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc edit stf default
$ oc edit stf default
等待 grafana pod 使用新凭证重启
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get po -l app=grafana -w
$ oc get po -l app=grafana -w