Enviar dados do Prometheus para o Azure Monitor usando a autenticação do Microsoft Entra
Este artigo descreve como configurar a gravação remota para enviar dados de um servidor Prometheus autogerenciado em execução no cluster do Serviço Kubernetes do Azure (AKS) ou no cluster do Kubernetes habilitado para Azure Arc usando a autenticação do Microsoft Entra e um contêiner de carro lateral fornecido pelo Azure Monitor. Observe que você também pode configurar diretamente a gravação remota na configuração do Prometheus para o mesmo.
Nota
Recomendamos que você configure diretamente o Prometheus em execução em seu cluster Kubernetes para gravar remotamente no Espaço de Trabalho do Azure Monitor. Consulte Enviar dados do Prometheus para o Azure Monitor usando a autenticação Microsoft Entra Id 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
- Cluster Kubernetes em execução em uma nuvem diferente ou local
Nota
Para um cluster AKS ou um cluster Kubernetes habilitado para Azure Arc, recomendamos que você use a autenticação de identidade gerenciada. Para obter mais informações, consulte Serviço gerenciado do Azure Monitor para gravação remota Prometheus para identidade gerenciada.
Pré-requisitos
Versões suportadas
- São necessárias versões do Prometheus superiores à v2.48 para a autenticação da aplicação Microsoft Entra ID.
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 o Microsoft Entra ID
O processo para configurar a gravação remota do Prometheus para um aplicativo usando a autenticação do Microsoft Entra envolve a conclusão das seguintes tarefas:
- Registe uma aplicação com o Microsoft Entra ID.
- Obtenha a ID do cliente do aplicativo Microsoft Entra.
- Atribua a função Monitoring Metrics Publisher na regra de coleta de dados do espaço de trabalho ao aplicativo.
- Crie um cofre de chaves do Azure e gere um certificado.
- Adicione um certificado ao aplicativo Microsoft Entra.
- Adicione um driver CSI e armazenamento para o cluster.
- Implante um contêiner sidecar para configurar a gravação remota.
As tarefas são descritas nas seções a seguir.
Registar uma aplicação com o Microsoft Entra ID
Conclua as etapas para registrar um aplicativo com o Microsoft Entra ID e criar uma entidade de serviço.
Obter a ID do cliente do aplicativo Microsoft Entra
- No portal do Azure, vá para o menu ID do Microsoft Entra e selecione Registros de aplicativos.
- Na lista de aplicativos, copie o valor para ID do aplicativo (cliente) para o aplicativo registrado.
Atribuir a função Publicador de Métricas de Monitoramento na regra de coleta de dados do espaço de trabalho ao aplicativo
O aplicativo deve receber a função Monitoring Metrics Publisher na regra de coleta de dados associada ao seu espaço de trabalho do Azure Monitor.
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.
No menu de recursos da regra de coleta de dados, selecione Controle de acesso (IAM).
Selecione Adicionar e, em seguida, selecione Adicionar atribuição de função.
Selecione a função Publicador de Métricas de Monitoramento e selecione Avançar.
Selecione Usuário, grupo ou entidade de serviço e, em seguida, escolha Selecionar membros. Selecione o aplicativo que você criou e, em seguida, escolha Selecionar.
Para concluir a atribuição de função, selecione Rever + atribuir.
Criar um cofre de chaves do Azure e gerar um certificado
- Se ainda não tiver um cofre de chaves do Azure, crie um cofre.
- Crie um certificado usando as orientações em Adicionar um certificado ao Cofre de Chaves.
- Baixe o certificado no formato CER usando as orientações em Exportar um certificado do Cofre da Chave.
Adicionar um certificado ao aplicativo Microsoft Entra
No menu de recursos do seu aplicativo Microsoft Entra, selecione Certificados & segredos.
Na guia Certificados, selecione Carregar certificado e selecione o certificado que você baixou.
Aviso
Os certificados têm uma data de validade. É da responsabilidade do utilizador manter os certificados válidos.
Adicionar um driver CSI e armazenamento para o cluster
Nota
A configuração do driver CSI do Azure Key Vault é apenas uma das maneiras de obter um certificado montado em um pod. O contêiner de gravação remota precisa de um caminho local para um certificado no pod apenas para o <AZURE_CLIENT_CERTIFICATE_PATH>
valor na etapa Implantar um contêiner sidecar para configurar a gravação remota.
Esta etapa é necessária somente se você não ativou o Provedor do Cofre de Chaves do Azure para o Driver CSI do Repositório de Segredos quando criou o cluster.
Para ativar o Azure Key Vault Provider for Secrets Store CSI Driver para seu cluster, execute o seguinte comando da CLI do Azure:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Para dar à identidade acesso ao cofre de chaves, execute estes comandos:
# show client id of the managed identity of the cluster az aks show -g <resource-group> -n <cluster-name> --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId -o tsv # set policy to access keys in your key vault az keyvault set-policy -n <keyvault-name> --key-permissions get --spn <identity-client-id> # set policy to access secrets in your key vault az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <identity-client-id> # set policy to access certs in your key vault az keyvault set-policy -n <keyvault-name> --certificate-permissions get --spn <identity-client-id>
Crie
SecretProviderClass
salvando o seguinte YAML em um arquivo chamado secretproviderclass.yml. Substitua os valores deuserAssignedIdentityID
,keyvaultName
,tenantId
e os objetos a serem recuperados do cofre de chaves. Para obter informações sobre quais valores usar, consulte Fornecer uma identidade para acessar o Provedor do Cofre de Chaves do Azure para o Driver CSI do Repositório de Segredos.# This is a SecretProviderClass example using user-assigned identity to access your key vault apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-kvname-user-msi spec: provider: azure parameters: usePodIdentity: "false" useVMManagedIdentity: "true" # Set to true for using managed identity userAssignedIdentityID: <client-id> # Set the client ID of the user-assigned managed identity to use keyvaultName: <key-vault-name> # Set to the name of your key vault cloudName: "" # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud objects: | array: - | objectName: <name-of-cert> objectType: secret # object types: secret, key, or cert objectFormat: pfx objectEncoding: base64 objectVersion: "" tenantId: <tenant-id> # The tenant ID of the key vault
Aplique
SecretProviderClass
executando o seguinte comando no cluster:kubectl apply -f secretproviderclass.yml
Implantar um contêiner sidecar para configurar a gravação remota
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: externalLabels: cluster: <CLUSTER-NAME> ## Azure Managed Prometheus currently exports some default mixins in Grafana. ## These mixins are compatible with data scraped by Azure Monitor agent on your ## Azure Kubernetes Service cluster. These mixins aren't compatible with Prometheus ## metrics scraped by the Kube Prometheus stack. ## To make these mixins compatible, uncomment the 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 ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' # Additional volumes on the output StatefulSet definition. # Required only for Microsoft Entra ID based auth volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: azure-kvname-user-msi containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always # Required only for Microsoft Entra ID based auth volumeMounts: - name: secrets-store-inline mountPath: /mnt/secrets-store readOnly: true 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: aadApplication - name: AZURE_CLIENT_ID value: '<APP-REGISTRATION-CLIENT-ID>' - name: AZURE_TENANT_ID value: '<TENANT-ID>' - name: AZURE_CLIENT_CERTIFICATE_PATH value: /mnt/secrets-store/<CERT-NAME> - name: CLUSTER value: '<CLUSTER-NAME>'
Substitua os seguintes valores no arquivo YAML:
valor Description <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. <APP-REGISTRATION -CLIENT-ID>
A ID do cliente do seu aplicativo. <TENANT-ID>
A ID do locatário do aplicativo Microsoft Entra. <CERT-NAME>
O nome do certificado. <CLUSTER-NAME>
O nome do cluster no qual o Prometheus está sendo executado. Abra o Azure Cloud Shell e carregue o arquivo YAML.
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
- Recolher métricas do Prometheus a partir de um cluster do AKS
- Saiba mais sobre o serviço gerenciado do Azure Monitor para Prometheus
- Escrita remota no serviço gerenciado do Azure Monitor para Prometheus
- Enviar dados do Prometheus para o Azure Monitor usando a autenticação de identidade gerenciada
- Enviar dados do Prometheus para o Azure Monitor usando a autenticação Microsoft Entra Workload ID (visualização)
- Enviar dados do Prometheus para o Azure Monitor usando a autenticação de identidade gerenciada por pod (visualização) do Microsoft Entra