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 OKE de forma eficaz.
Policies #
Verificar se as seguintes permissões estão devidamente configuradas a nível de tenancy:
ALLOW any-user to manage file-family in tenancy where request.principal.type = 'cluster'
ALLOW any-user to use virtual-network-family in tenancy where request.principal.type = 'cluster'
ALLOW any-user to manage file-family in tenancy where request.principal.type = 'cluster'
ALLOW any-user to use virtual-network-family in tenancy where request.principal.type = 'cluster'
Integração com File System #
Novo File System ou existente #
Obtenha a subnet do endpoint da API do K8s configurada no cluster.
Exemplo:
Crie um novo File System com um Mount Target ou crie um novo Mount Target na mesma subnet do endpoint da API do K8s configurada no cluster.
Exemplo:
File System -> Mount Target: mount-target-metricbeat-doc-tests
Criar um Export Path no Mount target no seguinte formato: #
/oke/<SUA_REGIAO>/<NOME_DO_COMPARTMENT>/<NOME_DO_CLUSTER>
- <SUA_REGIAO>: região do cluster
- <NOME_DO_COMPARTMENT>: nome do compartment em que está o cluster
- <NOME_DO_CLUSTER>: nome do cluster
Exemplo:
Configurar security list na subnet para permitir o File System #
Abrir portas TCP e UDP para 111 e 2048-2050 no Ingress e Egress na mesma subnet do endpoint da API do K8s configurada no cluster.
Exemplo:
Configurar o deployment do metricbeat com a exportação de arquivos pro File System #
Deployment do kube-state-metrics #
Obtenha o template do kube-state-metrics e efetue o deployment:
https://kube-state-metrics-template.s3.amazonaws.com/kube-state-metrics-template.yml
Deployment do Metricbeat #
Obtenha o template do Metricbeat:
Ajustar manualmente os seguintes parâmetros no template:
<ocid1.filesystem.oc1.[region].[id]>:<mountTarget IP>:/oke/<SUA_REGIAO>/<NOME_DO_COMPARTMENT>/<NOME_DO_CLUSTER>
- <ocid1.filesystem.oc1.[region].[id]> -> ID do File System criado ou existente, conforme passo 2.1
- <mountTarget IP> -> IP interno gerado pela criação do Mount Target conforme passo 2.1
- :/oke/<SUA_REGIAO>/<NOME_DO_COMPARTMENT>/<NOME_DO_CLUSTER> -> pasta para exportação configurada no Mount Target conforme passo 2.2.
Esse template já está preparado para criação de objetos no cluster para o funcionamento do Metricbeat:
- Persistent Volume e Persistent Volume Claim – parametrizados anteriormente com o File System para a integração
- ServiceAccount – será usado na execução do serviço do metricbeat;
- ClusterRole – configurações das APIs do k8s e objetos – somente leitura;
- Roles e ClusterRoleBinding – configurações complementares para leitura das APIs do k8s no metricbeat;
- ConfigMaps – parâmetros e configurações de integração do metricbeat com o kubernetes;
- DaemonSet – serviço do metricbeat que coletar as métricas e exportar os arquivos pro File System
OBS: Clusters OKE das versões 1.28 em diante tem o driver fss.csi.oraclecloud.com já disponível para ser usado no deployment do metricbeat.
Implante o Metricbeat e verifique a exportação. #
Siga com o deployment do Metricbeat no cluster após aplicar as configurações. Após o
deploy, é importante conferir se o componente está coletando as métricas e exportando para o export path do File System:
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 export path do File System: #
Abaixo segue um exemplo de verificar os arquivos exportados de dentro de uma Compute instance com mapeamento pra pasta com o export path do File System configurado no passo 2.1.
Podemos ver essas instruções de mapeamento em “Mount commands”:
Acessando e listando os arquivos exportados a partir de uma instância como exemplo:
Exportação de arquivos #
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 bucket não reterá os arquivos por uma semana;
- Se 29 ou mais arquivos foram gerados, sua configuração é adequada;
- Caso o número de arquivos seja menor que 29, aplique a seguinte fórmula:
TAMANHO_ARQUIVO = 10240 / 29 * QUANTIDADE
Por exemplo, se 5 arquivos foram gerados:
TAMANHO_ARQUIVO = 10240 / 29 * 5 = 1765
Portanto, dentro do arquivo metricbeat-deployment-template-eks-s3.yml, configure data -> metricbeat.yml: -> output.file -> rotate_every_kb com valor de 1765 em vez de 10240.