De ELK-stack is een afkorting voor Elasticsearch, Logstash en Kibana, en biedt de volgende mogelijkheden:
- Elasticsearch: een schaalbare zoek- en analyse-engine met een loganalysegereedschap en een toepassingsgebaseerde database, perfect voor data-driven toepassingen.
- Logstash: een logverwerkingsgereedschap dat logs van verschillende bronnen verzamelt, ze parseert en naar Elasticsearch stuurt voor opslag en analyse.
- Kibana: Een krachtig visualisatiegereedschap waarmee u gegevens die in Elasticsearch zijn opgeslagen, kunt verkennen en analyseren met behulp van interactieve grafieken, grafieken en dashboards.
De infrastructuur van Elasticsearch
Voordat we ons in het implementeren van de ELK-stack duiken, laten we eerst de belangrijkste componenten van de infrastructuur van Elasticsearch begrijpen:
- Knooppunten: Elasticsearch draait op toegewezen servers, genoemd knooppunten, die werken als binaire bestanden voor zoek- en analyse taken.
- Shards: de databasespace wordt logisch verdeeld in shards, waardoor snellere gegevensbeschikbaarheid en distributie mogelijk is.
- Indices: Elasticsearch organiseert de opgeslagen gegevens in indices, waardoor efficiënte gegevensbeheer mogelijk is.
- Configureren van de ELK-stack: u heeft een Kubernetes-cluster nodig om de ELK-stack op Kubernetes te implementeren. Als u er al een hebt, kunt u doorgaan met de implementatie. Anders kunt u het meegeleverde GitHub-repository met Terraform-bestanden gebruiken om een Kubernetes-cluster op te zetten.
- Implementatie van Elasticsearch: Door gebruik te maken van Helm charts, kunnen we Elasticsearch efficiënt implementeren. Pas het waardenbestand aan om aan uw specifieke vereisten te voldoen, zoals het aanpassen van het aantal replicas of het inschakelen/uitschakelen van bepaalde functies. Download deze van 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: /
Nadat u de waarden hebt aangepast, gebruikt u de Helm chart om Elasticsearch te installeren:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
Opmerking: Zorg ervoor dat u de drivers (EBS of EFS) voor permanente volumes hebt geconfigureerd.
Implementatie van Kibana
De implementatie van Kibana is rechttoe rechtaan met behulp van Helm charts. In het waardenbestand specificeert u de URL en poort van de Elasticsearch-service:
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
Controleer of Kibana correct is geïnstalleerd, forward de poort van de container naar het lokale netwerk (ik gebruik K8s Lens)
Implementatie van Logstash en Filebeat
Voor het effectief beheren van logs gebruiken we Logstash en Filebeat. Filebeat verzamelt records van verschillende bronnen en Logstash verwerkt en stuurt ze naar Elasticsearch.
Implementeer Logstash
- Kloon de repository met configuraties: logstash-k8s
- Ga naar tf-modules/eks/manifests/logstash-k8s
- Bewerk het configmap.yaml-bestand
- Voeg de elasticsearch-host, gebruiker en wachtwoord toe (deze kun je halen uit de “Secrets” Kubernetes-resource)
- Pas sjablonen toe:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
Draai Filebeat
- Zorg ervoor dat Filebeat’s configuratie naar de juiste logbestanden op je knooppunten verwijst. Meestal is dit in EKS de /var/log/containers map. Om dit te controleren, log in op een van je knooppunten en navigeer naar de /var/log/containers directory; als er geen bestanden zijn, probeer de directory te wijzigen.
- Als alles correct is, pas Kubernetes-sjablonen toe:
kubectl apply -f filebeat-k8s
Draai een eenvoudig toepassingsvoorbeeld om te controleren hoe logs worden doorgestuurd naar Elasticsearch
- Navigeer naar de eks/manifests map van de gekloonde repository.
- Voer de volgende opdracht uit:
kubeclt apply -f app -n default
Nadat de installatie is voltooid, bezoek opnieuw Kibana en maak een elasticsearch-index aan.
Het aanmaken van een index:
Maak een logstash-indexpatroon aan: logstash-[namespace]*
Nu zou je logs moeten zien van de geïmplementeerde toepassing. Zo niet, voer wat aanvragen uit naar deze app en probeer het probleem op te lossen; raadpleeg de videogids indien hulp nodig is.
Conclusie
Je hebt de ELK Stack succesvol geïmplementeerd op Kubernetes, waardoor je applicaties worden voorzien van robuuste loganalyse en inzichten die op data zijn gebaseerd. Elasticsearch, Logstash en Kibana verwerken grote gegevensstromen naadloos en bieden betekenisvolle visualisaties.
Nu je een robuust logbestandoplossings hebt, kun je je logs efficiënt beheren en waardevolle inzichten verkrijgen. Veel plezier met het analyseren!
Bedankt voor het lezen van deze handleiding over het implementeren van de ELK Stack. Aarzel niet om contact op te nemen als je vragen hebt of verdere assistentie nodig hebt. Veel plezier met coderen!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes