Enviar dados do Prometheus para o Azure Monitor usando a autenticação de identidade gerenciada

Este artigo descreve como configurar a gravação remota para enviar dados de um servidor Prometheus autogerenciado em execução em seu cluster do Serviço Kubernetes do Azure (AKS) ou cluster do Kubernetes habilitado para Azure Arc usando a autenticação de identidade gerenciada e um contêiner de carro lateral fornecido pelo Azure Monitor. Você pode usar uma identidade existente criada pelo AKS ou criar a sua própria. Ambas as opções são descritas aqui.

Nota

Se você estiver usando a identidade gerenciada atribuída pelo usuário, recomendamos configurar diretamente o Prometheus em execução no cluster do Kubernetes para gravar remotamente no Espaço de Trabalho do Azure Monitor. Consulte Enviar dados do Prometheus para o Azure Monitor usando a identidade gerenciada atribuída pelo usuário para saber mais. As etapas abaixo usam o contêiner de carro lateral do Azure Monitor.

Configurações de clusters

Este artigo aplica-se às seguintes configurações de cluster:

  • Cluster do Azure Kubernetes Service
  • Cluster do Kubernetes habilitado para Azure Arc

Nota

Para obter informações sobre como configurar a gravação remota para um cluster Kubernetes em execução em uma nuvem diferente ou local, consulte Enviar dados do Prometheus para o Azure Monitor usando a autenticação 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 identidade gerenciada

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

  1. Obtenha o nome do grupo de recursos do nó AKS.
  2. Obtenha a ID do cliente da identidade gerenciada atribuída pelo usuário.
  3. Atribua a função Publicador de Métricas de Monitoramento na regra de coleta de dados do espaço de trabalho à identidade gerenciada.
  4. Dê ao cluster AKS acesso à identidade gerenciada.
  5. Implante um contêiner sidecar para configurar a gravação remota.

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

Obter o nome do grupo de recursos do nó AKS

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.

Captura de ecrã que mostra uma lista de grupos de recursos.

Obter a ID do cliente da identidade gerenciada atribuída pelo usuário

Você deve obter o ID do cliente da identidade que você vai usar. Copie o ID do cliente para usar mais tarde no processo.

Em vez de criar seu próprio ID de cliente, você pode usar uma das identidades criadas pelo AKS. Para saber mais sobre as identidades, consulte Usar uma identidade gerenciada no Serviço Kubernetes do Azure.

Este artigo usa a identidade kubelet. O nome dessa identidade é <AKS-CLUSTER-NAME>-agentpool, e está no grupo de recursos de nó do cluster AKS.

Captura de tela que mostra uma lista de recursos que estão no grupo de recursos do nó.

Selecione a <AKS-CLUSTER-NAME>-agentpool identidade gerenciada. Na página Visão geral, copie o valor para ID do cliente. Para obter mais informações, consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.

Captura de tela que mostra uma ID do cliente em uma página de visão geral de uma identidade gerenciada.

Atribua a função Publicador de Métricas de Monitoramento na regra de coleta de dados do espaço de trabalho à identidade gerenciada

A identidade gerenciada deve receber a função Monitoring Metrics Publisher na regra de coleta de dados associada ao seu espaço de trabalho do Azure Monitor.

  1. No menu de recursos para seu espaço de trabalho do Azure Monitor, selecione Visão geral. Para Regra de coleta de dados, selecione o link.

    Captura de ecrã que mostra a regra de recolha de dados associada a uma área de trabalho do Azure Monitor.

  2. No menu de recursos da regra de coleta de dados, selecione Controle de acesso (IAM).

  3. Selecione Adicionar e, em seguida, selecione Adicionar atribuição de função.

    Captura de tela que mostra a adição de uma atribuição de função em páginas de controle de acesso.

  4. Selecione a função Publicador de Métricas de Monitoramento e selecione Avançar.

    Captura de tela que mostra uma lista de atribuições de função.

  5. Selecione Identidade gerenciada e, em seguida, escolha Selecionar membros. Selecione a subscrição que contém a identidade atribuída pelo utilizador e, em seguida, selecione Identidade gerida atribuída pelo utilizador. Selecione a identidade atribuída pelo usuário que você deseja usar e escolha Selecionar.

    Captura de tela que mostra a seleção de uma identidade gerenciada atribuída pelo usuário.

  6. Para concluir a atribuição de função, selecione Rever + atribuir.

Dê ao cluster AKS acesso à identidade gerenciada

Esta etapa não é necessária se você estiver usando uma identidade AKS. Uma identidade AKS já tem acesso ao cluster.

Importante

Para concluir as etapas nesta seção, você deve ter permissões de proprietário ou administrador de acesso de usuário para o cluster.

  1. Identifique os conjuntos de dimensionamento de máquina virtual no grupo de recursos de nó para seu cluster AKS.

    Captura de tela que mostra conjuntos de dimensionamento de máquina virtual no grupo de recursos de nó.

  2. Para cada conjunto de dimensionamento de máquina virtual, execute o seguinte comando na CLI do Azure:

    az vmss identity assign -g <AKS-NODE-RESOURCE-GROUP> -n <AKS-VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
    

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 a porta no YAML.

    prometheus:
      prometheusSpec:
        externalLabels:
              cluster: <AKS-CLUSTER-NAME>
    
        ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write    
        remoteWrite:
        - url: 'http://localhost:8081/api/v1/write'
      ## Azure Managed Prometheus currently exports some default mixins in Grafana. 
      ## These mixins are compatible with Azure Monitor agent on your Azure Kubernetes Service cluster. 
      ## However, these mixins aren't compatible with Prometheus metrics scraped by the Kube Prometheus stack. 
      ## In order to make these mixins compatible, uncomment remote write relabel configuration below:
    
      ## writeRelabelConfigs:
      ##   - sourceLabels: [metrics_path]
      ##     regex: /metrics/cadvisor
      ##     targetLabel: job
      ##     replacement: cadvisor
      ##     action: replace
      ##   - sourceLabels: [job]
      ##     regex: 'node-exporter'
      ##     targetLabel: job
      ##     replacement: node
      ##     action: replace
        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. Abra o Azure Cloud Shell e carregue o arquivo YAML.

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

    # set 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