Få svar på vanliga frågor om övervakning av integreringar och profillagring för GPU-profilering på Azure Kubernetes Service (AKS). Innan du börjar konfigurerar du GPU-profilering.
Övervaka integreringar
Hur ansluter jag min egen Prometheus-instans till Inspektor Gadget?
Om du kör en egen Prometheus-instans i stället för den Azure Monitor-hanterade tjänsten för Prometheus, konfigurerar du den för att samla in mått från Inspektor Gadget-poddarna.
Inspektor Gadget exponerar sina mått vid följande slutpunkt:
| Setting | Value |
|---|---|
| Namespace | gadget |
| Hamn | 2224 |
| Path | /metrics |
Lägg till ett skrapjobb i din Prometheus-konfiguration för att upptäcka och skrapa podarna:
Tip
För Prometheus-operatörsdistributioner skapar du en PodMonitor med motsvarande namnområde, etikettväljare, port och måttsökväg.
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__
Kontrollera anslutningen i ditt Prometheus-användargränssnitt under Statusmål>. Jobbet inspektor-gadget bör visa sitt mål som UP.
Hur visualiserar jag Inspektor Gadget-mått i min egen Grafana-instans?
Kontrollera att Prometheus-instansen är ansluten till Grafana som en datakälla. Importera sedan instrumentpanelen Inspektor Gadget från följande JSON-definition:
Profillagring
Hur använder jag Azure Blob Storage som Pyroscope-serverdel?
Som standard lagrar Pyroscope-distributionen i artikeln för GPU-profileringskonfiguration profiler i det lokala filsystemet. Profileringsdata går förlorade om podden återskapas. Om du vill bevara profiler konfigurerar du Pyroscope för att använda Azure Blob Storage med Microsoft Entra Workload ID.
Exportera de variabler som krävs:
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"
Skapa lagringskontot och containern
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
Skapa en hanterad identitet och bevilja åtkomst till lagringskontot
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
Aktivera identitet för arbetsbelastning och skapa federerade autentiseringsuppgifter
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
Namnet på tjänstkontot i det federerade autentiseringsämnet måste matcha namnet på tjänstkontot som används av Pyroscope Helm-versionen. Annars kan Pyroscope inte autentisera sig mot Azure Blob Storage.
Distribuera Pyroscope med Azure Blob Storage som lagringsbackend
Kör följande kommando i stället för Helm-kommandot i Aktivera profilvisualisering med Pyroscope. Den här konfigurationen använder Azure Blob Storage, skapar tjänstkontot och aktiverar arbetsbelastningsidentitet på Pyroscope-podden.
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
Kontrollera att podden körs:
kubectl get pods -n gadget pyroscope-0
Fortsätt med Anslut Pyroscope till Azure Managed Grafana.
Note
Helm-värdenycklar kan ändras mellan diagramversioner. Om du vill bekräfta de tillgängliga nycklarna för din version kör du helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0.