Partilhar via


Enviar dados do Prometheus para o Azure Monitor usando a autenticação de identidade gerenciada por pod (visualização) do Microsoft Entra

Este artigo descreve como configurar a escrita remota para o serviço gerenciado do Azure Monitor para Prometheus usando a autenticação de identidade gerenciada por pod (visualização) do Microsoft Entra.

Nota

O contêiner de sidecar de gravação remota descrito neste artigo deve ser configurado somente usando as etapas a seguir e somente se o cluster do Serviço Kubernetes do Azure (AKS) já tiver um pod do Microsoft Entra habilitado. As identidades gerenciadas por pod do Microsoft Entra foram preteridas para serem substituídas pela ID de carga de trabalho do Microsoft Entra. Recomendamos que você use a autenticação de ID de carga de trabalho do Microsoft Entra.

Pré-requisitos

Versões suportadas

São necessárias versões do Prometheus superiores à v2.45 para a autenticação de identidade gerida.

Espaço de trabalho do Azure Monitor

Este artigo aborda o envio de métricas do Prometheus para um espaço de trabalho do Azure Monitor. Para criar um espaço de trabalho de monitor do Azure, consulte Gerenciar um espaço de trabalho do Azure Monitor.

Permissões

As permissões de administrador para o cluster ou recurso são necessárias para concluir as etapas neste artigo.

Configurar um aplicativo para a identidade gerenciada pelo pod do Microsoft Entra

O processo para configurar a gravação remota do Prometheus para um aplicativo usando a autenticação de identidade gerenciada por pod do Microsoft Entra envolve a conclusão das seguintes tarefas:

  1. Registre uma identidade gerenciada atribuída pelo usuário com o Microsoft Entra ID.
  2. Atribua as funções de Operador de Identidade Gerenciada e Colaborador de Máquina Virtual à identidade gerenciada.
  3. Atribua a função Publicador de Métricas de Monitoramento à identidade gerenciada atribuída pelo usuário.
  4. Crie uma associação de identidade do Azure.
  5. Adicione o rótulo de aadpodidbinding à cápsula de Prometheus.
  6. Implante um contêiner sidecar para configurar a gravação remota.

As tarefas são descritas nas seções a seguir.

Registrar uma identidade gerenciada com o Microsoft Entra ID

Crie uma identidade gerenciada atribuída pelo usuário ou registre uma identidade gerenciada atribuída pelo usuário existente.

Para obter informações sobre como criar uma identidade gerenciada, consulte Configurar a gravação remota para o serviço gerenciado do Azure Monitor para Prometheus usando a autenticação de identidade gerenciada.

Atribua as funções de Operador de Identidade Gerenciada e Colaborador de Máquina Virtual à identidade gerenciada

az role assignment create --role "Managed Identity Operator" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 
          
az role assignment create --role "Virtual Machine Contributor" --assignee <managed identity clientID> --scope <Node ResourceGroup Id> 

O grupo de recursos de nó do cluster AKS contém recursos que você usa em outras etapas desse processo. Este grupo de recursos tem o nome MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Você pode encontrar o nome do grupo de recursos usando o menu Grupos de recursos no portal do Azure.

Atribua a função de Editor de Métricas de Monitoramento à identidade gerenciada

az role assignment create --role "Monitoring Metrics Publisher" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 

Criar uma associação de identidade do Azure

A identidade gerenciada atribuída pelo usuário requer uma associação de identidade para que a identidade seja usada como uma identidade gerenciada por pod.

Copie o seguinte YAML para o arquivo aadpodidentitybinding.yaml :


apiVersion: "aadpodidentity.k8s.io/v1" 

kind: AzureIdentityBinding 
metadata: 
name: demo1-azure-identity-binding 
spec: 
AzureIdentity: “<AzureIdentityName>” 
Selector: “<AzureIdentityBindingSelector>” 

Execute o seguinte comando:

kubectl create -f aadpodidentitybinding.yaml 

Adicionar o rótulo de aadpodidbinding à cápsula de Prometheus

O aadpodidbinding rótulo deve ser adicionado ao pod Prometheus para que a identidade gerenciada pelo pod entre em vigor. Você pode adicionar o rótulo atualizando o arquivo deployment.yaml ou injetando rótulos ao implantar o contêiner do sidecar, conforme descrito na próxima seção.

Implantar um contêiner sidecar para configurar a gravação remota

  1. Copie o seguinte YAML e salve-o em um arquivo. O YAML usa a porta 8081 como porta de escuta. Se você usar uma porta diferente, modifique esse valor no YAML.

    prometheus: 
      prometheusSpec: 
        podMetadata: 
          labels: 
            aadpodidbinding: <AzureIdentityBindingSelector> 
        externalLabels: 
          cluster: <AKS-CLUSTER-NAME> 
        remoteWrite: 
        - url: 'http://localhost:8081/api/v1/write' 
        containers: 
        - name: prom-remotewrite 
          image: <CONTAINER-IMAGE-VERSION> 
          imagePullPolicy: Always 
          ports: 
            - name: rw-port 
          containerPort: 8081 
          livenessProbe: 
            httpGet: 
              path: /health
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
          readinessProbe: 
             httpGet: 
              path: /ready
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
        env: 
          - name: INGESTION_URL 
            value: <INGESTION_URL> 
          - name: LISTENING_PORT 
            value: '8081' 
          - name: IDENTITY_TYPE 
            value: userAssigned 
          - name: AZURE_CLIENT_ID 
            value: <MANAGED-IDENTITY-CLIENT-ID> 
          # Optional parameter 
          - name: CLUSTER 
            value: <CLUSTER-NAME>         
    
  2. Substitua os seguintes valores no YAML:

    valor Description
    <AKS-CLUSTER-NAME> O nome do seu cluster AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    A versão da imagem do contêiner de gravação remota.
    <INGESTION-URL> O valor do ponto de extremidade de ingestão de métricas na página Visão geral do espaço de trabalho do Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> O valor para ID do Cliente na página Visão geral da identidade gerenciada.
    <CLUSTER-NAME> Nome do cluster em que o Prometheus está sendo executado.

    Importante

    Para a nuvem do Azure Government, adicione as env seguintes variáveis de ambiente na seção do arquivo YAML:

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Use o Helm para aplicar o arquivo YAML e atualizar sua configuração do Prometheus:

    # set the 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ção e resolução de problemas

Para obter informações sobre verificação e solução de problemas, consulte Solução de problemas de gravação remota e Serviço gerenciado do Azure Monitor para gravação remota Prometheus.

Próximos passos