Compartilhar via


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

Importante

Este artigo descreve como configurar a gravação remota no serviço gerenciado do Azure Monitor para Prometheus, usando autenticação por identidade gerenciada e um contêiner sidecar fornecido pelo Azure Monitor. Você pode usar a gravação remota com identidade gerenciada sem usar um sidecar, seguindo as diretrizes em Conectar o Prometheus autogerenciado ao serviço gerenciado do Azure Monitor para Prometheus.

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

Observação

Se você estiver usando a identidade gerenciada atribuída pelo usuário, recomendamos que você configure diretamente o Prometheus em execução no seu cluster do Kubernetes para gravação remota no Workspace 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 sidecar do Azure Monitor.

Configurações de cluster

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

  • Cluster do Serviço de Kubernetes do Azure
  • Cluster do Azure Arc habilitado para Kubernetes

Pré-requisitos

Versões suportadas

Versões do Prometheus superiores à v2.45 são necessárias para autenticação de identidade gerenciada.

  • Versões do Prometheus maiores que a v2.45 são necessárias para autenticação de identidade gerenciada atribuída pelo usuário.
  • Versões do Prometheus acima da v2.48 são necessárias para a autenticação de aplicativo do Microsoft Entra ID.
  • As versões do Prometheus v3.50 ou superior são necessárias para autenticação de identidade gerenciada atribuída pelo sistema.

Workspace do Azure Monitor

Esse artigo aborda o envio de métricas do Prometheus para um workspace do Azure Monitor. Para criar um workspace do Azure Monitor, confira Gerenciar um workspace do Azure Monitor.

Permissões

Permissões de administrador do cluster ou recurso são necessárias para realizar as etapas neste artigo.

Configurar um aplicativo para identidade gerenciada

O processo de configuração da gravação remota do Prometheus para um aplicativo usando a autenticação por identidade gerenciada consiste nas seguintes etapas:

  1. Obter o nome do grupo de recursos do nó do AKS
  2. Obter a ID do cliente da identidade gerenciada atribuída pelo usuário.
  3. Atribuir à identidade gerenciada a função de Publicador de Métricas de Monitoramento na regra de coleta de dados do workspace.
  4. Dê ao cluster acesso à identidade gerenciada.
  5. Implantar 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ó do AKS

O grupo de recursos de nó do cluster do AKS inclui recursos necessários para outras etapas deste processo. Esse grupo de recursos tem o nome MC_<RESOURCE-GROUP>_<CLUSTER-NAME>_<REGION>. Você pode encontrar o nome do grupo de recursos através do menu Grupos de recursos no portal do Azure.

Captura de tela que mostra uma lista de grupos de recursos.

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

Você precisa obter a ID do cliente da identidade que pretende usar. Copie essa ID para utilizá-la posteriormente no processo.

Ao invés de criar sua própria ID de cliente, você pode usar uma das identidades criadas pelo AKS. Para saber mais sobre as identidades, confira Usar identidade gerenciada no Serviço de Kubernetes do Azure.

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

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

Selecione a identidade gerenciada <CLUSTER-NAME>-agentpool. Na página de Visão geral, copie o valor da 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.

Atribuir à identidade gerenciada a função de Publicador de Métricas de Monitoramento na regra de coleta de dados do workspace

A identidade gerenciada precisar ter a função Publicador de Métricas de Monitoramento na regra de coleta de dados que está associada ao workspace do Azure Monitor.

  1. No menu de recursos do seu workspace do Azure Monitor, selecione Visão geral. Para a Regra de coleta de dados, selecione o link.

    Captura de tela que mostra a regra de coleta de dados associada com um workspace do Azure Monitor.

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

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

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

  4. Escolha a função Publicador de Métricas de Monitoramento e, em seguida, selecione Próximo.

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

  5. Selecione Identidade gerenciada e escolha Selecionar membros. Selecione a assinatura que contém a identidade atribuída pelo usuário e, em seguida, selecione Identidade gerenciada atribuída pelo usuário. Escolha a identidade atribuída pelo usuário que deseja usar e, em seguida, clique em Selecionar.

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

  6. Para finalizar a atribuição de função, clique em Revisar + atribuir.

Conceder ao cluster do AKS acesso à identidade gerenciada

Este passo não é necessário se você estiver usando uma identidade do AKS. Uma identidade do AKS já tem acesso ao cluster.

Importante

Para realizar os passos desta seção, você deve ter permissões de propriedade ou de administração de acesso de usuários no cluster.

  1. Identifique os conjuntos de dimensionamento de máquinas virtuais no grupo de recursos do nó do cluster do AKS.

    Captura de tela que mostra conjuntos de dimensionamento de máquinas virtuais no grupo de recursos do nó.

  2. Para cada conjunto de dimensionamento de máquinas virtuais, execute o comando a seguir na CLI do Azure:

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

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

  1. Copie o YAML a seguir e salve-o em um arquivo. O YAML utiliza a porta 8081 como porta de escuta. Se você estiver usando uma porta diferente, modifique-a 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 valores a seguir no YAML:

    Valor Descrição
    <AKS-CLUSTER-NAME> O nome do cluster do AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20251030.1
    Essa é a versão da imagem de contêiner de gravação remota.
    <INGESTION-URL> O valor do Ponto de extremidade da ingestão de métricas na página de Visão geral do workspace do Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> O valor da ID do cliente na página de Visão geral da identidade gerenciada.
    <CLUSTER-NAME> Nome do cluster no qual o Prometheus está em execução.

    Importante

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

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

  3. Abra o Azure Cloud Shell e carregue um arquivo YAML.

  4. Use o Helm para aplicar o arquivo YAML e atualizar a 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 solução de problemas

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

Próximas etapas

Verificar se a gravação remota está funcionando corretamente

Use os seguintes métodos para verificar se os dados do Prometheus estão sendo enviados ao workspace do Azure Monitor.

Comandos do kubectl

Use o comando a seguir para ver logs do contêiner sidecar. Os dados de gravação remota estarão fluindo se a saída tiver um valor diferente de zero para avgBytesPerRequest e avgRequestDuration.

kubectl logs <Prometheus-Pod-Name> <Azure-Monitor-Side-Car-Container-Name> --namespace <namespace-where-Prometheus-is-running>
# example: kubectl logs prometheus-prometheus-kube-prometheus-prometheus-0 prom-remotewrite --namespace monitoring

A saída desse comando tem o seguinte formato:

time="2022-11-02T21:32:59Z" level=info msg="Metric packets published in last 1 minute" avgBytesPerRequest=19713 avgRequestDurationInSec=0.023 failedPublishing=0 successfullyPublished=122

Explorador de métricas do Azure Monitor com PromQL

Para verificar se as métricas estão fluindo para o espaço de trabalho do Azure Monitor, selecione Métricas no espaço de trabalho do Azure Monitor no portal do Azure. Use o gerenciador de métricas para consultar as métricas que você está esperando do ambiente autogerenciado do Prometheus. Para obter mais informações, confira Gerenciador de métricas.

Gerenciador do Prometheus no Espaço de Trabalho do Azure Monitor

O Prometheus Explorer fornece uma maneira conveniente de interagir com as métricas do Prometheus dentro do seu ambiente do Azure, aumentando a eficiência do monitoramento e da solução de problemas. Para usar o Prometheus Explorer, acesse o espaço de trabalho do Azure Monitor no portal do Azure e selecione Prometheus Explorer para consultar as métricas que você está esperando do ambiente autogerenciado do Prometheus. Para obter mais informações, confira Prometheus Explorer.

Grafana

Use consultas PromQL no Grafana e verifique se os resultados retornam os dados esperados. Para obter mais informações sobre como configurar o Grafana para o serviço gerenciado do Azure para Prometheus, confira Usar o serviço gerenciado do Azure Monitor para Prometheus como fonte de dados para o Grafana usando a identidade do sistema gerenciada

Solucionar problemas de escrita remota

Se os dados remotos não estiverem aparecendo no seu espaço de trabalho do Azure Monitor, confira Solucionar problemas de gravação remota para obter informações sobre problemas e soluções mais comuns.