Lo stack ELK è un acronimo per Elasticsearch, Logstash e Kibana, che offre le seguenti capacità:
- Elasticsearch: un motore di ricerca e analisi scalabile con uno strumento di analisi dei log e un database formato da applicazioni, perfetto per applicazioni guidate dai dati.
- Logstash: uno strumento di elaborazione dei log che raccoglie i log da varie fonti, li analizza e li invia a Elasticsearch per la memorizzazione e l’analisi.
- Kibana: Uno strumento di visualizzazione potente che ti permette di esplorare e analizzare i dati memorizzati in Elasticsearch utilizzando grafici interattivi, grafici e dashboard.
L’Infrastruttura di Elasticsearch
Prima di immergerci nel deploy dello stack ELK, capiamo innanzitutto i componenti critici dell’infrastruttura di Elasticsearch:
- Nodi: elasticsearch viene eseguito su server dedicati chiamati nodi, che operano come binari per compiti di ricerca e analisi.
- Shard: lo spazio del database è logicamente suddiviso in shard, consentendo una maggiore velocità di accesso e distribuzione dei dati.
- Indici: elasticsearch organizza i dati memorizzati in indici, facilitando la gestione efficiente dei dati.
- Configurazione dello stack ELK: avrai bisogno di un cluster Kubernetes per implementare lo stack ELK su Kubernetes. Se ne hai già uno, puoi procedere con la distribuzione. In alternativa, puoi utilizzare il repository GitHub fornito con file Terraform per impostare un cluster Kubernetes.
- Distribuzione di Elasticsearch: utilizzando grafici Helm, possiamo distribuire Elasticsearch in modo efficiente. Modificare il file dei valori per adattarlo alle tue esigenze specifiche, come ad esempio regolare il numero di repliche o attivare/disattivare determinate funzionalità. Scaricali da 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: /
Una volta personalizzati i valori, utilizza il grafico Helm per installare Elasticsearch:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
Nota: Assicurati di aver configurato i driver (EBS o EFS) per i volumi persistenti.
Distribuzione di Kibana
La distribuzione di Kibana è semplice utilizzando grafici Helm. Nel file dei valori, specifica l’URL e la porta del servizio Elasticsearch:
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
Controlla se Kibana è installato correttamente, forwarda la porta del contenitore alla rete locale (sto utilizzando K8s Lens)
Distribuzione di Logstash e Filebeat
Per gestire i log in modo efficace, utilizziamo Logstash e Filebeat. Filebeat raccoglie record da varie fonti e Logstash li elabora e li invia a Elasticsearch.
Distribuisci Logstash
- Clona il repository con i configurazione: logstash-k8s
- Vai a tf-modules/eks/manifests/logstash-k8s
- Modificare il file configmap.yaml
- aggiungere l’host, l’utente e la password di Elasticsearch (puoi prenderli dal “Secrets” di Kubernetes)
- Applicare i template:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
Distribuire Filebeat
- Assicurarsi che la configurazione di Filebeat punti ai file di log corretti sui nodi. Di solito, in EKS, è la cartella /var/log/containers. Per verificarlo, accedi a uno dei nodi e spostati nella directory /var/log/containers; se non ci sono file, prova a cambiare directory.
- Nel caso tutto sia corretto, applicare i template di Kubernetes:
kubectl apply -f filebeat-k8s
Distribuire un’applicazione semplice per verificare come i log vengono trasmessi in Elasticsearch
- Entrare nella cartella eks/manifests dal repository clonato.
- Eseguire il comando:
kubeclt apply -f app -n default
Dopo il completamento dell’installazione, tornare su Kibana e creare un indice di Elasticsearch.
Creazione di un indice:
Crea il modello di indice logstash: logstash-[namespace]*
Ora, dovresti vedere i log dall’applicazione distribuita. Se non è così, effettua alcuni richiesti all’app e prova a risolvere il problema; fare riferimento al video guida nel caso sia necessaria assistenza.
Conclusione
Hai distribuito con successo il ELK Stack su Kubernetes, arricchendo le tue applicazioni con un’analisi dei log robusta e intuizioni guidate dai dati. Elasticsearch, Logstash e Kibana gestiscono in modo integrato grandi flussi di dati e forniscono visualizzazioni significative.
Ora che hai una soluzione di logging robusta, puoi gestire efficacemente i tuoi log e acquisire informazioni preziose. Buona analisi!
Grazie per aver letto questa guida sulla distribuzione del ELK Stack. Sentiti libero di contattarmi se hai domande o se necessiti di ulteriore assistenza. Buon coding!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes