Erhalten Sie Antworten auf häufig gestellte Fragen zur Überwachung von Integrationen und Profilspeicher für GPU-Profilerstellung auf Azure Kubernetes Service (AKS). Bevor Sie beginnen, richten Sie die GPU-Profilerstellung ein.
Überwachen von Integrationen
Wie verbinde ich meine eigene Prometheus-Instanz mit dem Inspektor Gadget?
Wenn Sie Ihre eigene Prometheus-Instanz anstelle des verwalteten Azure Monitor-Diensts für Prometheus ausführen, konfigurieren Sie sie so, dass Metriken von den Inspektor Gadget-Pods erfasst werden.
Inspektor Gadget macht seine Metriken am folgenden Endpunkt verfügbar:
| Setting | Wert |
|---|---|
| Namespace | gadget |
| Hafen | 2224 |
| Pfad | /metrics |
Fügen Sie Ihrer Prometheus-Konfiguration einen Scrape-Job hinzu, um die Pods zu erkennen und zu scrapen:
Tip
Erstellen Sie für Bereitstellungen mit dem Prometheus Operator ein PodMonitor mit dem entsprechenden Namespace, Port und Metrikpfad sowie der entsprechenden Bezeichnungsauswahl.
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__
Überprüfen Sie die Verbindung in Ihrer Prometheus-Benutzeroberfläche unter "Statusziele>". Der inspektor-gadget Job sollte als Ziel UP anzeigen.
Wie visualisiere ich Inspektor Gadget-Metriken in meiner eigenen Grafana-Instanz?
Stellen Sie sicher, dass Ihre Prometheus-Instanz als Datenquelle mit Grafana verbunden ist. Importieren Sie dann das Inspektor Gadget-Dashboard aus der folgenden JSON-Definition:
Profilspeicherung
Wie verwende ich Azure Blob Storage als Pyroscope-Back-End?
Standardmäßig speichert die Pyroscope-Bereitstellung im Artikel zur Einrichtung des GPU-Profilings Profile im lokalen Dateisystem. Die Profiling-Daten gehen verloren, wenn der Pod neu erstellt wird. Um Profile beizubehalten, konfigurieren Sie Pyroscope so, dass Azure Blob Storage mit Microsoft Entra Workload ID verwendet werden.
Exportieren Sie die erforderlichen Variablen:
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"
Erstellen des Speicherkontos und Containers
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
Erstellen einer verwalteten Identität und Gewähren des Zugriffs auf das Speicherkonto
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
Aktivieren Sie die Workloadidentität, und erstellen Sie Verbundanmeldeinformationen
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
Der Dienstkontoname im Subjekt der Verbundanmeldeinformationen muss mit dem Dienstkontonamen übereinstimmen, der vom Pyroscope-Helm-Release verwendet wird. Andernfalls kann Sich Pyroscope nicht bei Azure Blob Storage authentifizieren.
Bereitstellen von Pyroscope mit dem Azure Blob Storage-Back-End
Statt des Helm-Befehls in Aktivieren der Profilvisualisierung mit Pyroscope führen Sie den folgenden Befehl aus. Diese Konfiguration verwendet Azure Blob Storage, erstellt das Dienstkonto und ermöglicht die Workload-Identität auf dem Pyroscope-Pod.
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
Überprüfen Sie, ob der Pod läuft:
kubectl get pods -n gadget pyroscope-0
Fahren Sie mit Pyroscope mit Azure Managed Grafana verbinden fort.
Note
Helm-Wertschlüssel können sich zwischen Chart-Versionen ändern. Führen Sie die folgenden Schritte aus helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0, um die verfügbaren Schlüssel für Ihre Version zu bestätigen.