20.4. Exécution de la requête de profilage
Pour exécuter la requête de profilage, vous devez créer une ressource NodeObservabilityRun. La requête de profilage est une opération bloquante qui récupère les données de profilage CRI-O et Kubelet pour une durée de 30 secondes. Une fois la requête de profilage terminée, vous devez récupérer les données de profilage dans le répertoire /run/node-observability du système de fichiers du conteneur. La durée de vie des données est liée au module d'agent par l'intermédiaire du volume emptyDir, de sorte que vous pouvez accéder aux données de profilage lorsque le module d'agent est dans l'état running.
Vous ne pouvez demander qu'une seule requête de profilage à la fois.
Conditions préalables
- Vous avez installé l'opérateur d'observabilité du nœud.
-
Vous avez créé la ressource personnalisée (CR)
NodeObservability. -
Vous avez accès au cluster avec les privilèges
cluster-admin.
Procédure
Créez un fichier de ressources
NodeObservabilityRunnomménodeobservabilityrun.yamlqui contient le texte suivant :apiVersion: nodeobservability.olm.openshift.io/v1alpha2 kind: NodeObservabilityRun metadata: name: nodeobservabilityrun spec: nodeObservabilityRef: name: clusterDéclenchez la requête de profilage en exécutant la ressource
NodeObservabilityRun:$ oc apply -f nodeobservabilityrun.yamlVérifiez l'état du site
NodeObservabilityRunen exécutant la commande suivante :$ oc get nodeobservabilityrun nodeobservabilityrun -o yaml | yq '.status.conditions'Exemple de sortie
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: FinishedLa requête de profilage est terminée lorsque le statut est
Trueet le typeFinished.Récupérez les données de profilage à partir du chemin d'accès au conteneur
/run/node-observabilityen exécutant le script bash suivant :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