Envío de datos de Prometheus a Azure Monitor mediante la autenticación de id. de carga de trabajo de Microsoft Entra
Artículo
En este artículo se describe cómo configurar la escritura remota para enviar datos del clúster de Prometheus administrado de Azure Monitor mediante la autenticación de id. de carga de trabajo de Microsoft Entra.
Requisitos previos
Las versiones de Prometheus superiores a v2.48 son necesarias para la autenticación de la aplicación de id. de Microsoft Entra.
Prometheus ejecutándose en el clúster. En este artículo, se supone que el clúster de Prometheus está configurado con el uso de la pila kube-prometheus, pero es posible configurar Prometheus con otros métodos.
Configuración de la escritura remota con el id. de carga de trabajo de Microsoft Entra
El proceso para configurar la escritura remota de Prometheus mediante la autenticación del Id. de carga de trabajo de Microsoft Entra implica completar las tareas siguientes:
Habilite OpenID Connect y anote la dirección URL del emisor.
Configure el webhook de admisión de mutación.
Configurar la identidad de la carga de trabajo.
Crear una aplicación de Microsoft Entra o una identidad administrada asignada por el usuario y conceder permisos.
Asignar a la aplicación el rol Publicador de métricas de supervisión en la regla de recopilación de datos del área de trabajo.
Crear o actualizar el pod de Prometheus de la cuenta de servicio de Kubernetes.
Establecer credenciales de identidad federadas entre la identidad y el emisor de la cuenta de servicio y el sujeto.
Implementar un contenedor adicional para configurar la escritura remota.
Las tareas se describen en las secciones siguientes.
Habilitación de OpenID Connect y consulta del emisor
Una vez habilitado, tome nota de la SERVICE_ACCOUNT_ISSUER que es básicamente la dirección URL del emisor de OIDC. Para obtener la dirección URL del emisor de OIDC, ejecute el comando az aks show. Reemplace los valores predeterminados para el nombre del clúster y el nombre del grupo de recursos.
Azure CLI
az aks show --name myAKScluster --resource-group myResourceGroup --query"oidcIssuerProfile.issuerUrl"-o tsv
De manera predeterminada, el emisor tiene establecido usar la dirección URL base https://{region}.oic.prod-aks.azure.com, donde el valor de {region} coincide con la ubicación en la que se implementa el clúster de AKS.
Para configurar la identidad de carga de trabajo, exporte las siguientes variables de entorno:
Bash
# [OPTIONAL] Set this if you're using a Microsoft Entra applicationexport APPLICATION_NAME="<your application name>"# [OPTIONAL] Set this only if you're using a user-assigned managed identityexport USER_ASSIGNED_IDENTITY_NAME="<your user-assigned managed identity name>"# Environment variables for the Kubernetes service account and federated identity credentialexport SERVICE_ACCOUNT_NAMESPACE="<namespace where Prometheus pod is running>"export SERVICE_ACCOUNT_NAME="<name of service account associated with Prometheus pod. See below for more details>"export SERVICE_ACCOUNT_ISSUER="<your service account (or OIDC) issuer URL>"
Para SERVICE_ACCOUNT_NAME, compruebe si una cuenta de servicio (independiente de la cuenta de servicio predeterminada) ya está asociada al pod de Prometheus. Busque el valor de serviceaccountName o serviceAccount (en desuso) en el spec del pod de Prometheus. Use este valor en caso de que exista. Para buscar la cuenta de servicio asociada al pod de Prometheus, ejecute el siguiente comando kubectl:
Bash
kubectl get pods/<Promethuespodname> -o yaml
Si serviceaccountName y serviceAccount no existieran, escriba el nombre de la cuenta de servicio que desee asociar al pod de Prometheus.
Crear una aplicación de Microsoft Entra o una identidad administrada asignada por el usuario y conceder permisos
Crear una aplicación de Microsoft Entra o una identidad administrada asignada por el usuario y conceder permiso para publicar métricas en el área de trabajo de Azure Monitor:
Azure CLI
# create a Microsoft Entra applicationaz ad sp create-for-rbac --name"${APPLICATION_NAME}"# create a user-assigned managed identity if you use a user-assigned managed identity for this articleaz identity create --name"${USER_ASSIGNED_IDENTITY_NAME}"--resource-group"${RESOURCE_GROUP}"
Asignar el rol Publicador de métricas de supervisión en la regla de recopilación de datos del área de trabajo a la aplicación o identidad administrada
Crear o actualizar el pod de Prometheus de la cuenta de servicio de Kubernetes
A menudo, se crea una cuenta de servicio de Kubernetes y se asocia al pod que ejecuta el contenedor de Prometheus. Si usa la pila kube-prometheus, el código creará automáticamente la cuenta de servicio prometheus-kube-prometheus-prometheus.
Si no hubiera ninguna cuenta de servicio de Kubernetes, excepto la cuenta de servicio predeterminada asociada a Prometheus, cree una nueva cuenta de servicio específicamente para el pod que ejecute Prometheus.
Para crear la cuenta de servicio, ejecute el siguiente comando kubectl:
Si una cuenta de servicio de Kubernetes distinta de la cuenta de servicio predeterminada estuviera asociada al pod, agregue la siguiente anotación a la cuenta de servicio:
Bash
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite
Si la aplicación de Microsoft Entra o la identidad administrada asignada por el usuario no estuvieran en el mismo inquilino que el clúster, agregue la siguiente anotación a la cuenta de servicio:
Bash
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite
Establezca credenciales de identidad federadas entre la identidad y el emisor y el sujeto de la cuenta de servicio
Creación de credenciales federadas mediante la CLI de Azure.
# Get the ObjectID of the Microsoft Entra app.
export APPLICATION_OBJECT_ID="$(az ad app show --id ${APPLICATION_CLIENT_ID} --query id -otsv)"
# Add a federated identity credential.
cat <<EOF > params.json
{
"name": "kubernetes-federated-credential",
"issuer": "${SERVICE_ACCOUNT_ISSUER}",
"subject": "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
EOF
az ad app federated-credential create --id ${APPLICATION_OBJECT_ID} --parameters @params.json
Implementación de un contenedor adicional para configurar la escritura remota
Importante
El pod de Prometheus debe tener la etiqueta siguiente: azure.workload.identity/use: "true"
El contenedor sidecar de escritura remota requiere los siguientes valores de entorno:
INGESTION_URL: punto de conexión de ingesta de métricas que se muestra en la página Información general del área de trabajo de Azure Monitor
LISTENING_PORT: 8081 (se admite cualquier puerto)
IDENTITY_TYPE: workloadIdentity
Copie el siguiente código YAML y guárdelo en un archivo. YAML usa el puerto 8081 como puerto de escucha. Si usa un puerto diferente, modifique ese valor en YAML.
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20250214.1 La versión de la imagen de contenedor de escritura remota.
<INGESTION-URL>
El valor del punto de conexión de ingesta de métricas de la página Información general del área de trabajo de Azure Monitor.
Use Helm para aplicar el archivo YAML y actualizar la configuración de Prometheus:
Azure CLI
# set a context to your cluster az aks get-credentials -g<aks-rg-name>-n<aks-cluster-name># use Helm to update your remote write config
helm upgrade -f<YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack-namespace<namespace where Prometheus pod resides>
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Los registros de auditoría y diagnóstico de Microsoft Entra ID proporcionan una vista enriquecida de cómo los usuarios acceden a la solución de Azure. Obtenga información sobre cómo supervisar, solucionar problemas y analizar los datos de inicio de sesión.
Muestre las características de Microsoft Entra ID para modernizar las soluciones de identidad, implementar soluciones híbridas e implementar la gobernanza de identidades.
Aprende a configurar la escritura remota en el servicio gestionado Azure Monitor para Prometheus. Use la autenticación de Microsoft Entra para enviar datos desde un servidor Prometheus autoadministrado que se ejecuta en el clúster de Azure Kubernetes Server (AKS) o en un clúster de Kubernetes habilitado para Azure Arc local o en una nube diferente.
Describe cómo configurar la escritura remota para enviar datos desde Prometheus autoadministrado que se ejecuta en su clúster de AKS o en su clúster de Kubernetes habilitado para Azure Arc
Aprenda a configurar la escritura remota en el servicio administrado para Prometheus de Azure Monitor. Use la autenticación de identidad administrada para enviar datos desde un servidor Prometheus autoadministrado que se ejecute en su clúster de Azure Kubernetes Server (AKS) o en un clúster de Kubernetes habilitado para Azure Arc.
En este artículo, se describen las reglas de recopilación de datos que se necesitan para enviar métricas de Prometheus de un clúster en Azure Monitor a varias áreas de trabajo de Azure Monitor.
Aprenda a configurar la escritura remota para enviar datos desde Prometheus autoadministrado por el usuario a un servicio administrado de Azure Monitor para Prometheus.
Describe cómo integrar las cargas de trabajo de Azure Kubernetes Service con Azure Managed Prometheus y la lista de cargas de trabajo disponibles que están listas para integrarse.