Krijg antwoorden op veelgestelde vragen over het bewaken van integraties en profielopslag voor GPU-profilering op Azure Kubernetes Service (AKS). Voordat u begint, stelt u GPU-profilering in.
Bewakingsintegraties
Hoe kan ik mijn eigen Prometheus-exemplaar verbinden met Inspektor Gadget?
Als u een eigen Prometheus-instantie gebruikt in plaats van de door Azure Monitor beheerde service voor Prometheus, configureer deze dan om metrische gegevens op te halen van de Inspektor Gadget-pods.
Inspektor Gadget toont de metrische gegevens op het volgende eindpunt:
| Setting | Value |
|---|---|
| Namespace | gadget |
| Port | 2224 |
| Path | /metrics |
Voeg een scrape-taak toe aan uw Prometheus-configuratie om de pods te detecteren en te scrapen:
Tip
Voor Prometheus Operator-implementaties maakt u een PodMonitor aan met dezelfde naamruimte, labelselector, poort en metrisch pad.
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__
Controleer de verbinding in uw Prometheus-gebruikersinterface onder Statusdoelen>. De inspektor-gadget taak moet het doel ervan weergeven als UP.
Hoe visualiseer ik metrische gegevens van Inspektor Gadget in mijn eigen Grafana-exemplaar?
Zorg ervoor dat uw Prometheus-exemplaar als gegevensbron is verbonden met Grafana. Importeer vervolgens het Dashboard Inspektor Gadget uit de volgende JSON-definitie:
Profielopslag
Hoe gebruik ik Azure Blob Storage als de Pyroscope-back-end?
Standaard slaat de Pyroscope-implementatie in het installatieartikel voor GPU-profilering profielen op in het lokale bestandssysteem. Profileringsgegevens gaan verloren als de pod opnieuw wordt gemaakt. Als u profielen wilt behouden, configureert u Pyroscope voor het gebruik van Azure Blob Storage met Microsoft Entra Workload-id.
Exporteer de vereiste variabelen:
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"
Het opslagaccount en de container maken
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
Een beheerde identiteit maken en toegang verlenen tot het opslagaccount
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
Workloadidentiteit inschakelen en federatieve referenties maken
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
De naam van het serviceaccount in het subject van de federatieve referentiegegevens moet overeenkomen met de naam van het serviceaccount die wordt gebruikt door de Helm-release van Pyroscope. Anders kan Pyroscope niet worden geverifieerd bij Azure Blob Storage.
Pyroscope implementeren met de Azure Blob Storage back-end
Voer in plaats van de Helm-opdracht in Profielvisualisatie inschakelen met Pyroscope de volgende opdracht uit. Deze configuratie maakt gebruik van Azure Blob Storage, maakt het serviceaccount en maakt workloadidentiteit mogelijk op de 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
Controleer of de pod draait:
kubectl get pods -n gadget pyroscope-0
Ga verder met Pyroscope verbinden met Azure Managed Grafana.
Opmerking
Helm-waardesleutels kunnen veranderen tussen grafiekversies. Voer uit helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0om de beschikbare sleutels voor uw versie te bevestigen.