16.4. プロファイリングクエリーの実行
プロファイリングクエリーを実行するには、NodeObservabilityRun
リソースを作成する必要があります。プロファイリングクエリーは、CRI-O および Kubelet プロファイリングデータを 30 秒間フェッチするブロッキング操作です。プロファイリングクエリーが完了したら、コンテナーファイルシステムの /run/node-observability
ディレクトリー内のプロファイリングデータを取得する必要があります。データの有効期間は、emptyDir
ボリュームを介してエージェント Pod にバインドされるため、エージェント Pod が running
の状態にある間にプロファイリングデータにアクセスできます。
一度にリクエストできるプロファイリングクエリーは 1 つだけです。
前提条件
- 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