16.4. 运行性能分析查询
要运行性能分析查询,您必须创建一个 NodeObservabilityRun
资源。分析查询是一个阻止操作,用于在 30 秒内获取 CRI-O 和 Kubelet 分析数据。分析查询完成后,您必须检索容器文件系统 /run/node-observability
目录中的性能分析数据。数据生命周期通过 emptyDir
卷绑定到代理 pod,因此您可以在代理 pod 处于 running
状态时访问性能分析数据。
重要
您可以在任何时间点上请求一个性能分析查询。
先决条件
- 已安装 Node Observability Operator。
-
您已创建了
NodeObservability
自定义资源(CR)。 -
您可以使用
cluster-admin
权限访问集群。
流程
创建名为
nodeobservabilityrun.yaml
的NodeObservabilityRun
资源文件,其中包含以下文本:apiVersion: nodeobservability.olm.openshift.io/v1alpha2 kind: NodeObservabilityRun metadata: name: nodeobservabilityrun spec: nodeObservabilityRef: name: cluster
运行
NodeObservabilityRun
资源来触发性能分析查询:$ oc apply -f nodeobservabilityrun.yaml
运行以下命令,检查
NodeObservabilityRun
的状态:$ oc get nodeobservabilityrun nodeobservabilityrun -o yaml | yq '.status.conditions'
输出示例
conditions: - lastTransitionTime: "2022-07-07T14:57:34Z" message: Ready to start profiling reason: Ready status: "True" type: Ready - lastTransitionTime: "2022-07-07T14:58:10Z" message: Profiling query done reason: Finished status: "True" type: Finished
分析查询在状态变为
True
后完成,类型为Finished
。通过运行以下 bash 脚本,从容器的
/run/node-observability
路径中检索配置集数据:for a in $(oc get nodeobservabilityrun nodeobservabilityrun -o yaml | yq .status.agents[].name); do echo "agent ${a}" mkdir -p "/tmp/${a}" for p in $(oc exec "${a}" -c node-observability-agent -- bash -c "ls /run/node-observability/*.pprof"); do f="$(basename ${p})" echo "copying ${f} to /tmp/${a}/${f}" oc exec "${a}" -c node-observability-agent -- cat "${p}" > "/tmp/${a}/${f}" done done