Inviare dati Prometheus a Monitoraggio di Azure usando l'autenticazione ID dei carichi di lavoro di Microsoft Entra (anteprima)
Questo articolo descrive come configurare la scrittura remota per inviare dati dal cluster Prometheus gestito di Monitoraggio di Azure usando l'autenticazione ID dei carichi di lavoro di Microsoft Entra.
Prerequisiti
Le versioni di Prometheus successive alla versione 2.48 sono necessarie per l'autenticazione dell'applicazione Microsoft Entra ID.
Un cluster con flag di funzionalità specifici per OpenID Connessione (OIDC) e un URL dell'autorità di certificazione OIDC:
- Per i cluster gestiti (servizio Azure Kubernetes, il servizio Amazon Elastic Kubernetes e il motore di Google Kubernetes), vedere Cluster gestiti - ID dei carichi di lavoro di Microsoft Entra.
- Per i cluster autogestito, vedere Cluster self-managed - ID dei carichi di lavoro di Microsoft Entra.
Webhook di ammissione di modifica installato. Per altre informazioni, vedere Modifica del webhook di ammissione - ID dei carichi di lavoro di Microsoft Entra.
Prometheus in esecuzione nel cluster. Questo articolo presuppone che il cluster Prometheus sia configurato usando lo stack kube-prometheus, ma è possibile configurare Prometheus usando altri metodi.
Configurare un carico di lavoro per ID dei carichi di lavoro di Microsoft Entra
Il processo per configurare la scrittura remota di Prometheus per un carico di lavoro usando ID dei carichi di lavoro di Microsoft Entra'autenticazione comporta il completamento delle attività seguenti:
- Configurare l'identità del carico di lavoro.
- Creare un'applicazione Microsoft Entra o un'identità gestita assegnata dall'utente e concedere le autorizzazioni.
- Assegnare il ruolo Di pubblicazione metriche di monitoraggio nella regola di raccolta dati dell'area di lavoro all'applicazione.
- Creare o aggiornare l'account del servizio Kubernetes Prometheus.
- Stabilire le credenziali di identità federate tra l'identità e l'emittente dell'account del servizio e l'oggetto.
- Distribuire un contenitore sidecar per configurare la scrittura remota.
Le attività sono descritte nelle sezioni seguenti.
Configurare l'identità del carico di lavoro
Per configurare l'identità del carico di lavoro, esportare le variabili di ambiente seguenti:
# [OPTIONAL] Set this if you're using a Microsoft Entra application
export APPLICATION_NAME="<your application name>"
# [OPTIONAL] Set this only if you're using a user-assigned managed identity
export USER_ASSIGNED_IDENTITY_NAME="<your user-assigned managed identity name>"
# Environment variables for the Kubernetes service account and federated identity credential
export SERVICE_ACCOUNT_NAMESPACE="<namespace of Prometheus pod>"
export SERVICE_ACCOUNT_NAME="<name of service account associated with Prometheus pod>"
export SERVICE_ACCOUNT_ISSUER="<your service account issuer URL>"
Per SERVICE_ACCOUNT_NAME
, verificare se un account del servizio (separato dall'account del servizio predefinito ) è già associato al pod Prometheus. Cercare il valore di serviceaccountName
o serviceAccount
(deprecato) nel spec
pod di Prometheus. Usare questo valore se esistente. Se serviceaccountName
e serviceAccount
non esistono, immettere il nome dell'account del servizio da associare al pod Prometheus.
Creare un'applicazione Microsoft Entra o un'identità gestita assegnata dall'utente e concedere le autorizzazioni
Creare un'applicazione Microsoft Entra o un'identità gestita assegnata dall'utente e concedere l'autorizzazione per pubblicare le metriche nell'area di lavoro di Monitoraggio di Azure:
# create a Microsoft Entra application
az ad sp create-for-rbac --name "${APPLICATION_NAME}"
# create a user-assigned managed identity if you use a user-assigned managed identity for this article
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}"
Assegnare il ruolo di server di pubblicazione delle metriche di monitoraggio nella regola di raccolta dati dell'area di lavoro all'applicazione o all'identità gestita
Per informazioni sull'assegnazione del ruolo, vedere Assegnare il ruolo di server di pubblicazione delle metriche di monitoraggio nella regola di raccolta dati dell'area di lavoro all'identità gestita.
Creare o aggiornare l'account del servizio Kubernetes Prometheus
Spesso viene creato un account del servizio Kubernetes e associato al pod che esegue il contenitore Prometheus. Se si usa lo stack kube-prometheus, il codice crea automaticamente l'account del servizio prometheus-kubeus-prometheus-prometheus.
Se a Prometheus non è associato alcun account del servizio Kubernetes, ad eccezione dell'account del servizio predefinito, creare un nuovo account del servizio specifico per il pod che esegue Prometheus.
Per creare l'account del servizio, eseguire il comando kubectl seguente:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: service account
metadata:
annotations:
azure.workload.identity/client-id: ${APPLICATION_CLIENT_ID:-$USER_ASSIGNED_IDENTITY_CLIENT_ID}
name: ${SERVICE_ACCOUNT_NAME}
namespace: ${SERVICE_ACCOUNT_NAMESPACE}
EOF
Se un account del servizio Kubernetes diverso dall'account del servizio predefinito è associato al pod, aggiungere l'annotazione seguente all'account del servizio:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite
Se l'applicazione Microsoft Entra o l'identità gestita assegnata dall'utente non si trova nello stesso tenant del cluster, aggiungere l'annotazione seguente all'account del servizio:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite
Stabilire le credenziali di identità federate tra l'identità e l'autorità emittente dell'account del servizio e l'oggetto
Creare credenziali federate usando l'interfaccia della riga di comando di Azure.
Identità gestita assegnata dall'utente
az identity federated-credential create \
--name "kubernetes-federated-credential" \
--identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--issuer "${SERVICE_ACCOUNT_ISSUER}" \
--subject "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}"
Applicazione Microsoft Entra
# 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
Distribuire un contenitore sidecar per configurare la scrittura remota
Importante
Il pod Prometheus deve avere l'etichetta seguente: azure.workload.identity/use: "true"
Il contenitore sidecar di scrittura remota richiede i valori di ambiente seguenti:
INGESTION_URL
: endpoint di inserimento delle metriche visualizzato nella pagina Panoramica per l'area di lavoro Monitoraggio di AzureLISTENING_PORT
:8081
(qualsiasi porta è supportata)IDENTITY_TYPE
:workloadIdentity
Copiare il codice YAML seguente e salvarlo in un file. YAML usa la porta 8081 come porta di ascolto. Se si usa una porta diversa, modificare tale valore in YAML.
prometheus: prometheusSpec: externalLabels: cluster: <AKS-CLUSTER-NAME> podMetadata: labels: azure.workload.identity/use: "true" ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always ports: - name: rw-port containerPort: 8081 env: - name: INGESTION_URL value: <INGESTION_URL> - name: LISTENING_PORT value: '8081' - name: IDENTITY_TYPE value: workloadIdentity
Sostituire i valori seguenti in YAML:
Valore Descrizione <CLUSTER-NAME>
Nome del cluster del servizio Azure Kubernetes. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
Versione dell'immagine del contenitore di scrittura remota.<INGESTION-URL>
Valore per Endpoint di inserimento metriche dalla pagina Panoramica per l'area di lavoro monitoraggio di Azure. Usare Helm per applicare il file YAML e aggiornare la configurazione di Prometheus:
# 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>
Verifica e risoluzione dei problemi
Per informazioni sulla verifica e sulla risoluzione dei problemi, vedere Risoluzione dei problemi relativi alla scrittura remota e al servizio gestito di Monitoraggio di Azure per la scrittura remota di Prometheus.
Passaggi successivi
- Raccogliere le metriche Prometheus da un cluster del servizio Azure Kubernetes
- Altre informazioni sul servizio gestito di Monitoraggio di Azure per Prometheus
- Scrittura remota nel servizio gestito di Monitoraggio di Azure per Prometheus
- Inviare dati Prometheus a Monitoraggio di Azure usando l'autenticazione Microsoft Entra
- Inviare dati Prometheus a Monitoraggio di Azure usando l'autenticazione dell'identità gestita
- Inviare dati Prometheus a Monitoraggio di Azure usando l'autenticazione dell'identità gestita dal pod di Microsoft Entra (anteprima)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per