- Criação de uma Conta de Armazenamento e Contêiner para exportar arquivos com a coleção de métricas do K8s
- Habilite o complemento de integração no cluster AKS.
- Configure a implantação do Metricbeat com a exportação de arquivos para o Storage Account Container.
- Implante o Metricbeat e verifique a exportação.
- Verifique se os pods do Metricbeat estão em execução.
- Verifique os logs do pod para ver se os eventos de coleta de métricas estão sendo gerados.
- 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:
- Exportação de arquivo
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 #
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:
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.