16.4. 프로파일링 쿼리 실행
프로파일링 쿼리를 실행하려면 NodeObservabilityRun
리소스를 생성해야 합니다. 프로파일링 쿼리는 30초 동안 CRI-O 및 Kubelet 프로파일링 데이터를 가져오는 차단 작업입니다. 프로파일링 쿼리가 완료되면 컨테이너 파일 시스템 /run/node-observability
디렉터리 내에서 프로파일링 데이터를 검색해야 합니다. 데이터의 수명은 emptyDir
볼륨을 통해 에이전트 Pod에 바인딩되므로 에이전트 Pod가 running
상태인 동안 프로파일링 데이터에 액세스할 수 있습니다.
중요
언제든지 하나의 프로파일링 쿼리만 요청할 수 있습니다.
사전 요구 사항
- 노드 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