Search
Close this search box.
View Categories

Como instalar o componente Metricbeat no EKS

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 EKS de forma eficaz.

Criação de um bucket S3 para exportar arquivos com a coleta de métricas do K8s  #

Criar um bucket com as configurações padrão do S3:  #

Exemplo: 

NOTA : Esse bucket armazenará os arquivos exportados e com as métricas de clusters EKS
coletadas pelo componente do metricbeat (configurações dos passos 3 e 4).

Configure as permissões do bucket S3. #

Referência: https://docs.aws.amazon.com/eks/latest/userguide/s3-csi.html#s3-create-iam-policy 

Crie uma IAM policy para obter acesso ao bucket criado anteriormente e efetuar as
operações de filesystem no bucket.

Exemplo da policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "MountpointBucketAccess",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::NOME_DO_BUCKET"
      ]
    },
    {
      "Sid": "MountpointFullObjectAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:AbortMultipartUpload",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::NOME_DO_BUCKET/*"
      ]
    }
  ]
}

Habilitar Add-ons de integração no cluster EKS.  #

Add-on Amazon EBS CSI Driver no cluster #

Exemplo usando o eksctl: 

eksctl create addon \
  --name aws-ebs-csi-driver \
  --cluster <NOME_DO_CLUSTER> \
  --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
  --version 1.30.0 \
  --force \
  --profile=<SEU_PROFILE> 

Criar o service account e vincular com o IAM role para o funcionamento do S3
CSI Driver no cluster #

Referênciahttps://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html

Exemplo usando eksctl:

eksctl create iamserviceaccount \
  --name s3-csi-driver-sa \
  --namespace kube-system \
  --cluster <NOME_DO_CLUSTER> \
  --attach-policy-arn arn:aws:iam::<ID_DA_CONTA>:policy/my-s3-csi-driver-policy \
  --approve \
  --role-name my-s3-csi-driver-role \
  --region <SUA_REGIAO> \
  --role-only \
  --profile=<SEU_PROFILE>

OBS:

  • my-s3-csi-driver-policy: nome dado para a policy anteriormente criada no passo 1.2
  • my-s3-csi-driver-role: um nome inserido no parâmetro –role-name
    obrigatório para que seja criado o service account com o IAM role vinculado e com a policy
    criada no passo 1.2 anexada.

Add-on Mountpoint for Amazon S3 CSI Driver no cluster #

Instale versão v1.5.1 ou superior. Selecione na instalação o IAM role criado anteriormente no passo 2.2.

Exemplo utilizando eksctl:

eksctl create addon \
  --name aws-mountpoint-s3-csi-driver \
  --cluster <NOME_DO_CLUSTER> \
  --service-account-role-arn arn:aws:iam::<ID_DA_CONTA>:role/<NOME_DA_ROLE> \
  --version 1.5.1 \
  --force \
  --profile=<SEU_PROFILE> 

OBS: <NOME_DA_ROLE> criada no passo 2.2

Configure o deployment do Metricbeat com a exportação de arquivos pro bucket S3. #

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:

https://metricbeat-deployment-template-eks-s3.s3.amazonaws.com/metricbeat-deployment-t
emplate-eks-s3.yml

Ajustar manualmente os seguintes parâmetros no template:

  • <REGIAO_DO_BUCKET>: região que está o bucket
  • <NOME_DO_BUCKET>: nome do bucket para a integração e exportação dos arquivos

Ajuste o parâmetro – prefix para: eks/<SUA_REGIAO>/<NOME_DO_CLUSTER/

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
    bucket S3 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
    bucket S3.

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
bucket de integração do S3:

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 bucket de integração do S3:  #

Exemplo: 

  • <NOME_DO_BUCKET> : nome do bucket
  • <NOME_DO_CLUSTER_PREFIX> : nome do cluster, conforme as configurações do prefix no passo 3.2
  • <NOME_DO_NODE> : nome do node em que o pod que exportou a métrica está sendo executado

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.