Obtenez des réponses aux questions fréquemment posées sur la surveillance des intégrations et du stockage de profils pour le profilage GPU sur Azure Kubernetes Service (AKS). Avant de commencer, configurez le profilage GPU.
Supervision des intégrations
Comment connecter mon propre instance Prometheus à Inspektor Gadget ?
Si vous exécutez votre propre instance de Prometheus au lieu du service managé Azure Monitor pour Prometheus, configurez-la pour collecter les métriques des pods d’Inspektor Gadget.
Inspektor Gadget expose ses métriques au point de terminaison suivant :
| Setting | Value |
|---|---|
| Namespace | gadget |
| Port | 2224 |
| Path | /metrics |
Ajoutez une tâche de collecte à votre configuration Prometheus pour détecter les pods et en collecter les métriques :
Tip
Pour les déploiements avec Prometheus Operator, créez un PodMonitor avec l’espace de noms, le sélecteur d’étiquettes, le port et le chemin des métriques équivalents.
scrape_configs:
- job_name: "inspektor-gadget"
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- gadget
relabel_configs:
# Only keep pods with the k8s-app=gadget label.
- source_labels: [__meta_kubernetes_pod_label_k8s_app]
action: keep
regex: gadget
# Set the metrics path.
- target_label: __metrics_path__
replacement: /metrics
# Set the metrics port.
- source_labels: [__address__]
action: replace
regex: ([^:]+)(?::\d+)?
replacement: $1:2224
target_label: __address__
Vérifiez la connexion dans l’interface utilisateur de Prometheus sous Status>. La inspektor-gadget tâche doit afficher sa cible sur UP.
Comment visualiser les métriques Inspektor Gadget dans ma propre instance Grafana ?
Vérifiez que votre instance Prometheus est connectée à Grafana en tant que source de données. Ensuite, importez le tableau de bord Inspektor Gadget à partir de la définition JSON suivante :
Stockage de profil
Comment utiliser Stockage Blob Azure comme back-end Pyroscope ?
Par défaut, le déploiement de Pyroscope dans l’article de configuration du profilage GPU stocke les profils sur le système de fichiers local. Les données de profilage sont perdues si le pod est recréé. Pour conserver des profils, configurez Pyroscope pour utiliser Stockage Blob Azure avec ID de charge de travail Microsoft Entra.
Exportez les variables requises :
export RESOURCE_GROUP="<your-resource-group>"
export AKS_CLUSTER="<your-aks-cluster-name>"
export LOCATION="<your-aks-cluster-location>"
export BLOB_STORAGE_NAME="<your-storage-account-name>"
export BLOB_STORAGE_CONTAINER="pyroscope-blob-storage"
export PYROSCOPE_IDENTITY="pyroscope-id"
export PYROSCOPE_SERVICE_ACCOUNT="pyroscope-sa"
export PYROSCOPE_FEDERATED_CREDS="pyroscope-federated-creds"
Créer le compte de stockage et le conteneur
az storage account create \
--name "$BLOB_STORAGE_NAME" \
--resource-group "$RESOURCE_GROUP" \
--location "$LOCATION" \
--sku Standard_ZRS \
--kind StorageV2 \
--min-tls-version TLS1_2 \
--allow-blob-public-access false \
--output none
az storage container create \
--name "$BLOB_STORAGE_CONTAINER" \
--account-name "$BLOB_STORAGE_NAME" \
--auth-mode login \
--output none
Créer une identité managée et accorder l’accès au compte de stockage
az identity create \
--name "$PYROSCOPE_IDENTITY" \
--resource-group "$RESOURCE_GROUP" \
--location "$LOCATION" \
--output none
IDENTITY_CLIENT_ID=$(az identity show \
--name "$PYROSCOPE_IDENTITY" \
--resource-group "$RESOURCE_GROUP" \
--query 'clientId' \
--output tsv)
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
# Restrict the role assignment scope to the storage account.
STORAGE_SCOPE="/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Storage/storageAccounts/${BLOB_STORAGE_NAME}"
az role assignment create \
--assignee "$IDENTITY_CLIENT_ID" \
--role "Storage Blob Data Contributor" \
--scope "$STORAGE_SCOPE" \
--output none
Activer l’identité de la charge de travail et créer des informations d’identification fédérées
az aks update \
--name "$AKS_CLUSTER" \
--resource-group "$RESOURCE_GROUP" \
--enable-oidc-issuer \
--enable-workload-identity \
--output none
OIDC_ISSUER=$(az aks show \
--name "$AKS_CLUSTER" \
--resource-group "$RESOURCE_GROUP" \
--query 'oidcIssuerProfile.issuerUrl' \
--output tsv)
az identity federated-credential create \
--name "$PYROSCOPE_FEDERATED_CREDS" \
--identity-name "$PYROSCOPE_IDENTITY" \
--resource-group "$RESOURCE_GROUP" \
--issuer "$OIDC_ISSUER" \
--subject "system:serviceaccount:gadget:${PYROSCOPE_SERVICE_ACCOUNT}" \
--audiences "api://AzureADTokenExchange" \
--output none
Important
Le nom du compte de service dans le sujet de l’identifiant fédéré doit correspondre au nom du compte de service utilisé par le déploiement Helm de Pyroscope. Sinon, Pyroscope ne peut pas s'authentifier auprès de Stockage Blob Azure.
Déployer Pyroscope avec le back-end Stockage Blob Azure
Au lieu de la commande Helm dans Activer la visualisation de profil avec Pyroscope, exécutez la commande suivante. Cette configuration utilise Stockage Blob Azure, crée le compte de service et active l’identité de charge de travail sur le pod Pyroscope.
helm install pyroscope -n gadget \
oci://ghcr.io/grafana/helm-charts/pyroscope \
--version 1.15.0 \
--set pyroscope.image.repository=grafana/pyroscope \
--set-string pyroscope.image.tag=1.15.0 \
--set pyroscope.replicaCount=1 \
--set pyroscope.structuredConfig.self_profiling.disable_push=true \
--set pyroscope.structuredConfig.storage.backend=azure \
--set-string pyroscope.structuredConfig.storage.azure.account_name="$BLOB_STORAGE_NAME" \
--set-string pyroscope.structuredConfig.storage.azure.container_name="$BLOB_STORAGE_CONTAINER" \
--set pyroscope.serviceAccount.create=true \
--set-string pyroscope.serviceAccount.name="$PYROSCOPE_SERVICE_ACCOUNT" \
--set-string pyroscope.serviceAccount.annotations."azure\.workload\.identity/client-id"="$IDENTITY_CLIENT_ID" \
--set-string pyroscope.podLabels."azure\.workload\.identity/use"=true \
--set pyroscope.service.type=LoadBalancer \
--set pyroscope.service.port=4040 \
--set-string pyroscope.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-internal"=true \
--set-string pyroscope.service.annotations."service\.beta\.kubernetes\.io/azure-pls-create"=true \
--set-string pyroscope.service.annotations."service\.beta\.kubernetes\.io/azure-pls-name"=pyroscope-pls \
--set-string pyroscope.service.annotations."service\.beta\.kubernetes\.io/azure-pls-proxy-protocol"=false \
--set-string pyroscope.service.annotations."service\.beta\.kubernetes\.io/azure-pls-visibility"='*' \
--set alloy.enabled=false \
--set minio.enabled=false
Vérifiez que le pod est en cours d’exécution :
kubectl get pods -n gadget pyroscope-0
Continuez avec Connecter Pyroscope à Azure Managed Grafana.
Note
Les clés de valeur Helm peuvent changer entre les versions du graphique. Pour confirmer les clés disponibles pour votre version, exécutez helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0.