Kubernetes ELK Stack Kurulumu HELM Chart

Ubuntu 20.04 & Helm Chart

Deniz TÜRKMEN
6 min readDec 9, 2022

Merhabalar,

Bu yazımda Helm chart ile Kubernetes Clusterımıza ELK kurulumunu inceliycez

ElasticSearch: Adından da anlaşılacağı gibi içerik arama, veri analizi ve veri sorgulama işlemlerinde özellikle performans kabiliyetleri, güçlü ve esnek olmasından dolayı tercih ettiği bir search engine’dir. ElasticSearch, java dili ile geliştirilmiş, “Lucene” altyapısı üzerine oturtulmuş open-source bir arama motorudur.

Logstash: Kaynaklardan veri toplayan, farklı dönüşümler ve geliştirmeler gerçekleştiren ve ardından verileri desteklenen çeşitli çıkış hedeflerine gönderen bir log toplayıcıdır. Kısaca, Toplanan verilerin düzenlenip, anlamlı hale gelebilmesini sağlayan araçtır. Birçok farklı kanallardan konuşabilme yeteneği vardır. (Rest service , tcp , udp vs). Uygulamanız ve ElasticSearch arasında adeta bir köprü görevi gören bir yazılımdır. Konfigürasyon dosyası 3’e ayrılır. Input, Filter ve Output dur.

FileBeat: Veri iletme platformudur. Tek amacı loglarınızı hedeflediğiniz yere değişimsiz taşınmasını sağlamasıdır. Sisteme ek yükte bulunmadan agent görevi gören yüzlerce veya binlerce makinadan Logstash veya Elasticsearch’e veri gönderimini sağlayan ‘Beat’leri içerir.

Kibana: Elasticsearch’ün üstünde çalışır. Kullanıcılara verileri analiz etme ve görselleştirme olanağı sağlayan bir monitor aracıdır. ElasticSearch’e bağlanarak, buradaki datayı anlık olarak izlemeye, incelemeye, sorgular yapmaya ve içeriğe göre grafikler çıkarmamısı sağlar.

Helm: Helm, Kubernetes için bir paket yöneticisidir. Yani , Kubernetes üzerine uygulamaların kurulmasını, yönetilmesini ve konfigürasyonlarının yapılmasına yardımcı olur . Helm “Chart” adı verilen Kubernetes kaynakları için genel bir format ve klasör yapısı sağlar ve bu kaynakların depolanabilmesi ve paylaşılabilmesi için bir public bir repository sağlar.

İlk olarak Helm kurulumu yapalım. Aşağıdaki linkten işletim sistemimize göre kurulum yapabilirsiniz.

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3chmod 700 get_helm.sh./get_helm.shhelm version

Elk Stackimizi minikube ortamımızdaki kubernetes clusterında gerçekleştircez. Eğer minikube sisteminizde yüklü değil ise aşağıdaki linkten yükleyebilirsiniz.

minikube start --cpus=4 --memory=8000

Kibana Ingress olarak dışarı açacağımız için minikube den ingress aktifleştirmemiz gerekiyor.

minikube addons listminikube addons enable ingress

ilk olarak monitoring adında bir tane namespace oluşturuyoruz.

kubectl create ns monitoring

Kurulum yapacağımız ELK-Stach github repository den kurulum yapacağımız makineye indiriyoruz. Aşağıdaki linkten indirebilirsiniz.

git clone https://github.com/elastic/helm-charts.git

ilgili klasöre giderek elasticsearch klasörüne açıyoruz. İlk olarak elasticsearch kurulumu gerçekleştircez.

helm ile kurduğumuz için repositorysinden elastic stack eklememiz gerekiyor.

helm repo add elastic https://helm.elastic.cohelm repo updatehelm repo list

Elasticsearch klasöründe bulunan “values.yml” service düzenleyerek istersek elasticsearch servisini dışarıya açabiliriz. Elasticsearch görmek için values.yml aşağıdaki gibi düzenliyorum.

Elasticsearch deploymentını gerçekleştirmek için,

helm install elasticsearch elastic/elasticsearch -f values.yaml -n monitoringkubectl get pods -n monitoringkubectl logs -f -n monitoring elasticsearch-master-0

Note: Internet hızınıza göre image çektikten sonra loglara bakarak elasticsearh running state geçtiğine bakabilirsiniz.

Service NodePort olarak ayarladğımız için kurulum yaptığınız makinenin ip adresi ve nodeport adresi ile erişebilirsiniz.

kubectl get pods,svc -n monitoring

Tarayıcıdan “192.168.49.2:30200” gittiğimizde,

Elasticsearch çalışıyor. Şimdide logstash kurulumu yapalım.

Note: Aslında kişisel düşüncem logstash ELK stack performans sorununa yol açıyor. Çünkü filebeat aldığımız dataları elasticsearch anlayacağı formata çevirmek için logstash kullanıyoruz. Eğer filebeat aldığımız logları kendi içerisinde formatlama imkanımız bulunuyor. Bu konuyu diğer bir yazımda detaylı şekilde anlatacağım.

helm install logstash elastic/logstash -f values.yaml -n monitoringkubectl get pods -n monitoring

Logstash kurulumuda başarılı. “logstash-values.yml” bilmemiz gerekenler,

  • logstashPipeline: output,input ve filter var. Burada logların 5044 portundan yani filebeat ten geleceğini ve elasticsearch yazacağını tanımlıyoruz. Ayrıca filter ekleyerek logların formatını belirtiyoruz.

Şimdide logları ilgili folderlardan alacağımız Filebeat kurulumuna geçelim.

ilk olarak bir tanesecret oluşturuyoruz.

ve filebeat-values.yaml

kubectl apply -f secret.ymlhelm install filebeat elastic/filebeat -f values.yaml -n monitoringkubectl get pods -n monitoring

Filebeat bilmemiz gerekenler,

  • 36 ile 53 satır daki kodlardır.
  • 39 ile 48 arasındaki kod parçacığında Type ve hangi path logları alcağımız ve ilgili foldera match edeceğimizi söylüyoruz.
  • 49 ile 53 arasındaki kod parçacığında ise ilgili klasördeki logları elasticsearch aktarcağımızı belirliyoruz.

Not: Hangi klasördeki logları monitör etmek istiyorsanız burada Type,path ve match klasörünü tam path(yol) olarak girmeniz gerekiyor. Eğer klasörün içinde birden fazla klasör var ise de Joker Karakter (*) ile ilgili klasörün altındaki tüm logları alabilirsiniz.

Son olarak da kibanayı kurulumunu yaparak ilgili klasörden alddğımız logları kibana da “index” yaratarak monitör edelim.

kubectl apply -f kibana-ingress.yaml

Tarayıcından “web.kibana.com” gittiğimizde,

Buradan, hamburger menüden

Stack Management -> Kibana Index Pattern -> filebeat-* -> create Index

Note: Kibana Index patterns altında kurulumda yaptığımız indexleri hepsi gelmektedir.

Discovery den loglarımıza baktığımızda gelmektedir.

Dilerseniz loglarınıza add filter diyerek istediğiniz filter dahil olan logları görüntüleyebilirsiniz. Örneğin message ile ilgili bir filter eklediğimizde ilgili logları görebiliriz,

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet