Search
Close this search box.
View Categories

Como instalar o componente Metricbeat no AKS

O Metricbeat é um agente leve que coleta e envia métricas de seus sistemas e serviços para o Elasticsearch ou Logstash. Ele oferece informações valiosas sobre a saúde e o desempenho da sua infraestrutura, sendo uma ferramenta essencial para monitoramento e observabilidade. Ao final deste tutorial, você terá o Metricbeat configurado e em funcionamento, permitindo monitorar seus clusters AKS de forma eficaz.

Criação de uma Conta de Armazenamento e Contêiner para exportar arquivos com a coleção de métricas do K8s  #

Crie uma conta de armazenamento no Azure:  #

Exemplo usando o Azure CLI: 

az storage account create -n <NEW_STORAGE_ACCOUNT_NAME> -g <RESOURCE_GROUP_NAME> -l <REGION> --sku Standard_LRS --kind StorageV2 

OBSERVAÇÃO : A configuração “Permitir acesso à chave da conta de armazenamento” deve estar habilitada para que a integração funcione.

Crie um contêiner na conta de armazenamento para integração de arquivos. #

Exemplo usando o Azure CLI: 

az storage container create --name ${STORAGE_ACCOUNT_CONTAINER_NAME} --account-name <NEW_STORAGE_ACCOUNT_NAME> 

Obtenha as credenciais da conta de armazenamento #

Referência :  https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?tabs=azure-cli#regenerate-access-keys 

Obtenha a chave de acesso da conta de armazenamento para configurar a integração com o Metricbeat 

Exemplo usando o Azure CLI: 

az storage account keys list -g <RESOURCE_GROUP_NAME> -n <NEW_STORAGE_ACCOUNT_NAME> --query [1].value 

Neste exemplo, conseguimos obter a primeira chave de acesso ativa para a integração 

Crie o segredo no cluster AKS com as configurações de integração da conta de armazenamento  #

Exemplo usando kubectl: 

kubectl create secret generic <SECRET_NAME> --from-literal 
azurestorageaccountname=<NEW_STORAGE_ACCOUNT_NAME> --from-literal azurestorageaccountkey=<ACCESS_KEY> --type=Opaque 
  • <SECRET_NAME> : Nome do novo segredo que será criado no cluster AKS
  • <NEW_STORAGE_ACCOUNT_NAME> : Configurado na etapa 1.1 
  • <ACCESS_KEY> : Obtido na etapa 1.3

Habilite o complemento de integração no cluster AKS.  #

Driver de interface de armazenamento de contêiner (CSI) de armazenamento de blobs do Azure adicional sem cluster #

Exemplo usando o Azure CLI: 

az aks update --enable-blob-driver -n <CLUSTER_NAME> -g  <RESOURCE_GROUP_NAME> -y 

Configure a implantação do Metricbeat com a exportação de arquivos para o Storage Account Container.  #

Implantação de kube-state-metrics  #

Obtenha o modelo kube-state-metrics e implante-o: 

https://kube-state-metrics-template.s3.amazonaws.com/kube-state-metrics-template.yml

Implantação do metricbeat  #

Obtenha o modelo metricbeat: 

https://metricbeat-deployment-template-aks-blob-csi.s3.amazonaws.com/metricbeat-deployment-template-aks-blob-csi.yml

Ajuste manualmente os seguintes parâmetros no template. Ajuste o parâmetro:

--subdirectory=aks/<RESOURCE_GROUP_NAME>/<YOUR_REGION>/<CLUSTER_NAME>
  • <RESOURCE_GROUP_NAME> : nome do grupo de recursos em que o cluster AKS está <YOUR_REGIAO>: região em que o cluster AKS está 
  • <CLUSTER_NAME> : nome do cluster que o metricbeat coletará e enviará as métricas na integração. 
  • <STORAGE_ACCOUNT_NAME> : Nome da conta de armazenamento configurada na etapa 1.1. 
  • <CONTAINER_NAME_IN_STORAGE_ACCOUNT>: Nome do contêiner configurado na etapa 1.2.

Este modelo já está preparado para criar objetos no cluster para que o metricbeat funcione: 

  • ServiceAccount – será usado ao executar o serviço metricbeat; 
  • ClusterRole – configurações e objetos da API k8s – somente leitura; 
  • Roles e ClusterRoleBinding – configurações complementares para leitura das APIs k8s no metricbeat; 
  • ConfigMaps – parâmetros e configurações para integração do metricbeat com o kubernetes; 
  • DaemonSet – serviço metricbeat que coleta métricas e exporta arquivos para o Storage Account Container. 

Implante o Metricbeat e verifique a exportação.  #

Continue com a implantação do metricbeat no cluster após aplicar as configurações. Após a implantação, é importante verificar se o componente está coletando métricas e exportando-as para o contêiner da conta de armazenamento de integração. 

Verifique se os pods do Metricbeat estão em execução.  #

Exemplo: 

kubectl get pods -n kube-system -o wide 

NOTA : o Metricbeat fará upload de um pod por nó para coletar métricas

Verifique os logs do pod para ver se os eventos de coleta de métricas estão sendo gerados.  #

Exemplo: 

Verifique se, após alguns minutos de execução do pod, os arquivos estão sendo exportados para o contêiner da conta de armazenamento de integração:  #

Exemplo: 

  • <NOME_NOVO_CONTAINER> : nome do container inserido no subdiretório conforme mostrado em 3.2 
  • <NOME_DO_RESOURCE_GROUP> : região inserida no subdiretório conforme mostrado em 3.2
  • <SUA_REGIÃO > : região inserida no subdiretório conforme mostrado em 3.2
  • <NOME_DO_CLUSTER> : nome do cluster configurado na etapa 3.2

Exportação de arquivo  #

Devido às limitações do metricbeat, apenas 1024 arquivos de log são preservados. Para que o sistema funcione corretamente, pelo menos os arquivos dos últimos 7 dias devem ser preservados – recomendamos, no entanto, que sejam mantidos por pelo menos 35 dias. 

Como a configuração disponível é por tamanho e não por tempo, recomendamos o seguinte: 

  • Deixe a configuração padrão (que é 10 MB por arquivo) por 1 dia;
  • Após exatamente 24 horas, verifique o número de arquivos gerados: 
  • Se mais de 145 arquivos foram gerados, informe-nos, pois o Container não reterá os arquivos por uma semana; 
  • Se 29 ou mais foram gerados, sua configuração é adequada;
  • Se for menor que 29, aplique a seguinte fórmula: 
FILE_SIZE = 10240 / 29 * QUANTITY 

Por exemplo, se 5 arquivos foram gerados: 

FILE_SIZE = 10240 / 29 * 5 = 1765 

Portanto, dentro do arquivo metricbeat-deployment-template-aks-blob-csi.yml, configure data -> metricbeat.yml: -> output.file -> rotate_every_kb com valor de 1765 em vez de 10240.