A pilha ELK é um acrônimo 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 os envia 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 nodes, que atuam como binários para tarefas de pesquisa e análise.
- Shards: o espaço do banco de dados é logicamente dividido em shards, permitindo acessibilidade e distribuição de dados mais rápidas.
- Indices: o elasticsearch organiza os dados armazenados em índices, 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á possui um, pode prosseguir com a implantação. Caso contrário, você pode usar o repositório GitHub fornecido com arquivos Terraform para configurar um cluster Kubernetes.
- Implantação do Elasticsearch: Utilizando gráficos Helm, podemos implantar 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
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, utilize o gráfico Helm para instalar o Elasticsearch:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
Nota: Certifique-se de que configurou os drivers (EBS ou EFS) para volumes persistentes.
Implantação do Kibana
A implantaçã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
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
Verifique se o Kibana está instalado corretamente, faça a porta de encaminhamento da porta do contêiner para a rede local (estou usando o K8s Lens)
Implantação do Logstash e Filebeat
Para gerenciar logs de forma eficaz, utilizamos o Logstash e o Filebeat. O Filebeat coleta registros de várias fontes e o Logstash os processa e envia para o Elasticsearch.
Implante o Logstash
- Clone o repositório com os configs: logstash-k8s
- Mova-se para tf-modules/eks/manifests/logstash-k8s
- Edite o arquivo configmap.yaml
- adicione o host, o usuário e a senha do Elasticsearch (você pode obtê-los do recurso “Secrets” do Kubernetes)
- Aplicar templates:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
Implantar o Filebeat
- 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.
- Caso tudo esteja correto, aplique os templates do Kubernetes:
kubectl apply -f filebeat-k8s
Implante um aplicativo simples para verificar como os logs estão sendo transmitidos para o Elasticsearch
- Entre na pasta eks/manifests do repositório clonado.
- Execute o comando:
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 para este aplicativo e tente solucionar o problema; consulte o guia em 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 de forma integrada com grandes fluxos de dados e fornecem visualizações significativas.
Agora que você tem uma solução de log 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