Obtenga respuestas a las preguntas más frecuentes sobre la supervisión de integraciones y el almacenamiento de perfiles para la generación de perfiles de GPU en Azure Kubernetes Service (AKS). Antes de empezar, configure la generación de perfiles de GPU.
Integraciones de monitorización
¿Cómo puedo conectar mi propia instancia de Prometheus a Inspektor Gadget?
Si ejecutas tu propia instancia de Prometheus en lugar del servicio administrado de Azure Monitor para Prometheus, configúrala para recopilar métricas de los pods de Inspektor Gadget.
Inspektor Gadget expone sus métricas en el siguiente punto de conexión:
| Setting | Value |
|---|---|
| Namespace | gadget |
| Puerto | 2224 |
| Ruta | /metrics |
Añade una tarea de recopilación a tu configuración de Prometheus para detectar y recopilar datos de los pods:
Tip
Para las implementaciones de Prometheus Operator, cree un PodMonitor con el espacio de nombres equivalente, el selector de etiquetas, el puerto y la ruta de métricas correspondientes.
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__
Compruebe la conexión en la interfaz de usuario de Prometheus en Estado>Objetivos. La inspektor-gadget tarea debe mostrar su destino como UP.
¿Cómo se visualizan las métricas de Inspektor Gadget en mi propia instancia de Grafana?
Asegúrese de que la instancia de Prometheus esté conectada a Grafana como origen de datos. A continuación, importe el panel Inspektor Gadget desde la siguiente definición JSON:
Almacenamiento de perfiles
¿Cómo uso Azure Blob Storage como back-end de Pyroscope?
De forma predeterminada, la implementación de Pyroscope en el artículo configuración de generación de perfiles de GPU almacena perfiles en el sistema de archivos local. Los datos de generación de perfiles se pierden si se vuelve a crear el pod. Para conservar perfiles, configure Pyroscope para usar Azure Blob Storage con Id. de carga de trabajo de Microsoft Entra.
Exporte las variables necesarias:
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"
Creación de una cuenta de almacenamiento y un contenedor
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
Creación de una identidad administrada y concesión de acceso a la cuenta de almacenamiento
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
Habilite la identidad de carga de trabajo y cree credenciales 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
El nombre de la cuenta de servicio en el sujeto de las credenciales federadas debe coincidir con el nombre de la cuenta de servicio utilizada por la versión de Helm de Pyroscope. De lo contrario, Pyroscope no se puede autenticar en Azure Blob Storage.
Implementación de Pyroscope con el back-end de Azure Blob Storage
En lugar del comando de Helm en Habilitar visualización de perfiles con Pyroscope, ejecute el siguiente comando. Esta configuración usa Azure Blob Storage, crea la cuenta de servicio y habilita la identidad de carga de trabajo en el 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
Comprueba que el pod se está ejecutando:
kubectl get pods -n gadget pyroscope-0
Continúe con Conectar pyroscopio a Azure Managed Grafana.
Note
Las claves de valor de Helm pueden cambiar entre las versiones del gráfico. Para confirmar las claves disponibles para la versión, ejecute helm show values oci://ghcr.io/grafana/helm-charts/pyroscope --version 1.15.0.