Uzyskaj odpowiedzi na często zadawane pytania dotyczące monitorowania integracji i magazynu profilów na potrzeby profilowania procesora GPU w Azure Kubernetes Service (AKS). Przed rozpoczęciem skonfiguruj profilowanie procesora GPU.
Monitorowanie integracji
Jak podłączyć własną instancję Prometheusa do Inspektor Gadget?
Jeśli uruchamiasz własną instancję Prometheusa zamiast usługi Azure Monitor Managed Service for Prometheus, skonfiguruj ją tak, aby zbierała metryki z podów Inspektor Gadget.
Inspektor Gadżet uwidacznia swoje metryki w następującym punkcie końcowym:
| Setting | Value |
|---|---|
| Namespace | gadget |
| Port | 2224 |
| Path | /metrics |
Dodaj zadanie scrapowania do konfiguracji Prometheusa, aby wykrywać pody i pobierać z nich metryki:
Tip
W przypadku wdrożeń operatora Prometheus utwórz obiekt PodMonitor z równoważną przestrzenią nazw, selektorem etykiet, portem i ścieżką metryk.
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__
Sprawdź połączenie w interfejsie użytkownika Prometheus w sekcji Status>. Zadanie inspektor-gadget powinno wyświetlać cel jako UP.
Jak mogę wizualizować metryki Inspektor Gadget w mojej własnej instancji Grafany?
Upewnij się, że instancja Prometheusa jest połączona z Grafaną jako źródło danych. Następnie zaimportuj panel Inspektor Gadget na podstawie następującej definicji JSON:
Magazyn profilów
Jak używać Azure Blob Storage jako zaplecza Pyroskopu?
Domyślnie wdrożenie Pyroscope opisane w artykule o konfiguracji profilowania GPU przechowuje profile w lokalnym systemie plików. W przypadku ponownego utworzenia zasobnika dane profilowania zostaną utracone. Aby utrwalać profile, skonfiguruj narzędzie Pyroscope do używania Azure Blob Storage z Tożsamość obciążeń Microsoft Entra.
Wyeksportuj wymagane zmienne:
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"
Tworzenie konta magazynu i kontenera
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
Tworzenie tożsamości zarządzanej i udzielanie dostępu do konta magazynowania
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
Włącz tożsamość obciążenia roboczego i utwórz poświadczenia federacyjne
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
Nazwa konta usługi w temacie poświadczeń federacyjnych musi być zgodna z nazwą konta usługi używaną przez wydanie programu Helm Pyroscope. W przeciwnym razie Pyroscope nie może uwierzytelnić się w Azure Blob Storage.
Wdrażanie piroskopu przy użyciu zaplecza Azure Blob Storage
Zamiast polecenia Helm w sekcji Włącz wizualizację profili za pomocą Pyroscope, uruchom następujące polecenie. Ta konfiguracja korzysta z usługi Azure Blob Storage, tworzy konto usługi i włącza tożsamość obciążeń dla poda 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
Sprawdź, czy zasobnik jest uruchomiony:
kubectl get pods -n gadget pyroscope-0
Kontynuuj, wybierając Połącz Pyroscope z Azure Managed Grafana.
Uwaga / Notatka
Klucze wartości programu Helm mogą zmieniać się między wersjami wykresu. Aby potwierdzić dostępne klucze dla używanej wersji, uruchom polecenie helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0.