Como Implantar o ELK Stack no Kubernetes

A pilha ELK é uma abreviação para Elasticsearch, Logstash e Kibana, que oferece as seguintes capacidades:

  • Elasticsearch: um mecanismo de pesquisa e análise escalável com uma ferramenta de análise de logs e banco de dados formado por aplicativos, perfeito para aplicativos orientados a dados.
  • Logstash: uma ferramenta de processamento de logs que coleta logs de várias fontes, os analisa e envia-os para o Elasticsearch para armazenamento e análise.
  • Kibana: Uma poderosa ferramenta de visualização que permite explorar e analisar os dados armazenados no Elasticsearch usando gráficos, gráficos e painéis interativos.

A Infraestrutura do Elasticsearch

Antes de mergulharmos na implantação da pilha ELK, vamos primeiro entender os componentes críticos da infraestrutura do Elasticsearch:

  • Nodes: o elasticsearch é executado em servidores dedicados chamados de nodes, que operam como binários para tarefas de pesquisa e análise.
  • Shards: o espaço do banco de dados é logicamente dividido em shards, permitindo uma acessibilidade e distribuição de dados mais rápidas.
  • Indices: o elasticsearch organiza os dados armazenados em indices, facilitando a gestão eficiente de dados.
  • Configurando a pilha ELK: você precisará de um cluster Kubernetes para implantar a pilha ELK no Kubernetes. Se você já tem um, pode prosseguir com a implantação. Caso contrário, você pode usar o repositório do GitHub fornecido com arquivos Terraform para configurar um cluster Kubernetes.
  • Implementação do Elasticsearch: Utilizando gráficos Helm, podemos implementar o Elasticsearch de forma eficiente. Modifique o arquivo de valores para corresponder às suas necessidades específicas, como ajustar o número de réplicas ou ativar/desativar determinadas funcionalidades. Faça o download deles a partir do Artifactory Hub.

values-elasticsearch.yaml

YAML

clusterName: "itsyndicateblog"
replicas: 1 
minimumMasterNodes: 1 
createCert: true
secret:
  enabled: true
  password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
  requests:
    cpu: "200m"
    memory: "500Mi"
  limits:
    cpu: "300m"
    memory: "1Gi"
ingress:
  enabled: false # enable ingress only if you need external access to elasticsearch cluster
  hosts:
    - host: elastic.itsyndicate.org
      paths:
        - path: /

Após personalizar os valores, use o gráfico Helm para instalar o Elasticsearch:

Shell

helm install elasticsearch -f elasticsearch-values.yaml <chart-name>

Nota: Certifique-se de que configurou os drivers (EBS ou EFS) para volumes persistentes.

Implementação do Kibana

A implementação do Kibana é simples usando gráficos Helm. No arquivo de valores, especifique a URL e a porta do serviço Elasticsearch:

values-kibana.yaml

YAML

elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
  host: "https://elasticsearch-master:9200"
Shell

helm install kibana -f kibana-values.yaml <chart-name>

Verifique se o Kibana está instalado corretamente, faça o encaminhamento de porta do contêiner para a rede local (estou usando o K8s Lens)

Implementação do Logstash e Filebeat

Para gerenciar logs de forma eficaz, usamos o Logstash e o Filebeat. O Filebeat coleta registros de várias fontes e o Logstash os processa e envia para o Elasticsearch.

Implementar Logstash

  1. Clone o repositório com os configs: logstash-k8s
  2. Mova-se para tf-modules/eks/manifests/logstash-k8s
  3. Edite o arquivo configmap.yaml
    1. adicione o host, o usuário e a senha do Elasticsearch (você pode obtê-los do recurso “Secrets” do Kubernetes)
  4. Aplicar templates:
Shell

kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS

Implantar o Filebeat

  1. Certifique-se de que a configuração do Filebeat aponta para os arquivos de log corretos em seus nós. Geralmente, no EKS, é a pasta /var/log/containers. Para verificar isso, faça login em um de seus nós e vá para o diretório /var/log/containers; se não houver arquivos, tente alterar o diretório.
  2. Caso tudo esteja correto, aplique os templates do Kubernetes:
Shell

kubectl apply -f filebeat-k8s

Implante um aplicativo simples para verificar como os logs estão sendo transmitidos para o Elasticsearch

  1. Entre no diretório eks/manifests a partir do repositório clonado.
  2. Execute o comando:
Shell

kubeclt apply -f app -n default

Após a conclusão da instalação, volte ao Kibana e crie um índice do Elasticsearch.

Criando um índice:

Crie o padrão de índice logstash: logstash-[namespace]* 

Agora, você deve ver os logs do aplicativo implantado. Se não, faça algumas solicitações a este aplicativo e tente solucionar o problema; consulte o guia de vídeo caso seja necessária ajuda.

Conclusão

Você conseguiu implantar o ELK Stack no Kubernetes, capacitando suas aplicações com análise de logs robusta e insights orientados por dados. O Elasticsearch, Logstash e Kibana lidam perfeitamente com fluxos de dados grandes e fornecem visualizações significativas.

Agora que você tem uma solução de registro de logs robusta, pode gerenciar seus logs de forma eficiente e obter insights valiosos. Boa análise!

Obrigado por ler este guia sobre a implantação do ELK Stack. Sinta-se à vontade para entrar em contato se tiver alguma dúvida ou precisar de assistência adicional. Boa codificação!

Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes