Obtenha respostas a perguntas frequentes sobre monitorização de integrações e armazenamento de perfis para perfilação de GPU no Azure Kubernetes Service (AKS). Antes de começares, configura o perfil da GPU.
Monitorização de integrações
Como posso ligar a minha própria instância Prometheus ao Inspektor Gadget?
Se executares a tua própria instância Prometheus em vez do serviço gerido Azure Monitor para Prometheus, configura-a para extrair métricas dos pods Inspektor Gadget.
O Inspektor Gadget expõe as suas métricas no seguinte ponto final:
| Setting | Value |
|---|---|
| Namespace | gadget |
| Porto | 2224 |
| Path | /metrics |
Adicione um trabalho de raspagem à sua configuração do Prometheus para descobrir e raspar os pods:
Tip
Para implementações do Prometheus Operator, crie um PodMonitor com o namespace, seletor de etiquetas, porta e caminho de métricas equivalentes.
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__
Verifica a ligação na interface do Prometheus em Status>Targets. A inspektor-gadget tarefa deve mostrar o seu destino como UP.
Como posso visualizar métricas do Inspektor Gadget na minha própria instância do Grafana?
Certifique-se de que a sua instância Prometheus está ligada ao Grafana como fonte de dados. Depois, importe o painel do Inspektor Gadget a partir da seguinte definição JSON:
Armazenamento de perfis
Como posso usar o Armazenamento de Blobs do Azure como backend do Pyroscope?
Por predefinição, a instalação do Pyroscope no artigo sobre a configuração da criação de perfis de GPU armazena os perfis no sistema de ficheiros local. Os dados de perfil são perdidos se o pod for recriado. Para persistir perfis, configure o Pyroscope para usar Armazenamento de Blobs do Azure com ID de carga de trabalho Microsoft Entra.
Exporte as variáveis necessárias:
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"
Criar a conta de armazenamento e o contêiner
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
Crie uma identidade gerida e conceda acesso à conta de armazenamento
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
Ativar a identidade da carga de trabalho e criar credenciais federadas
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
O nome da conta de serviço no campo subject da credencial federada tem de corresponder ao nome da conta de serviço utilizado pela release do Pyroscope Helm. Caso contrário, o Pyroscope não consegue autenticar para o Armazenamento de Blobs do Azure.
Deploy Pyroscope com o backend do Armazenamento de Blobs do Azure
Em vez do comando Helm em Habilitar visualização de perfil com Pyroscope, execute o comando seguinte. Esta configuração utiliza o Armazenamento de Blobs do Azure, cria a conta de serviço e permite a identidade da carga de trabalho no 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
Verifique se o pod está a funcionar:
kubectl get pods -n gadget pyroscope-0
Continue para Connect Pyroscope to Azure Managed Grafana.
Note
As chaves de valor do Helm podem mudar entre versões de gráficos. Para confirmar as chaves disponíveis para a sua versão, execute helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0.