Docker ile Elastic Stack Kurulumu

Mertcan Gürcan
Kod Gemisi
Published in
3 min readMay 11, 2018

--

ELK Stack olarak da bilinen Elastic Stack ailesi Elasticsearch, Logstash ve Kibana araçlarının bir araya gelip bize ortamımızda log toplama, arama ve analiz yapmamızı sağlayan bir araç setidir.

Kısaca bahsetmek gerekirse Elasticsearch; belli bir veri seti içersinden içerik sorgulama ve detaylı analiz yapma olanakları sunan, hızlı ve ölçeklenebilir yapısıyla öne çıkan Lucene alt yapısı üzerine kurulmuş, search-engine rolünü üstlenen açık kaynaklı yazılımdır.

Logstash ise sunucu tarafında yürütülen süreçlerin log yönetiminde kullanılan ve alınan logların indekslenmesi için elasticsearch çözümünü kullandığımız bir log yönetim aracıdır.

Kibana data visualation olarak adlandırılan verilerin görsel olarak sunumuyla ilgilenen, JSON tipinde verileri çeşitli grafiklere ya da görsel analizlere dönüştürmemizi sağlayan bir veri görselleştirme platformudur.

Gelin beraber Docker ile nasıl Elastic Stack kurulduğunu inceleyelim.

Kuracağımız Elastic Stack’i docker compose file ile ayağa kaldırıp nasıl sonuç alacağımızı göreceğiz.

Öncelikle çalışacağımız dizine elastichsearch dizini ekleyip altında bir elasticsearch.yml dosyası açıyoruz.

mkdir elasticsearch; vim elasticsearch/elasticsearch.yml

Kolaylıkla anlaşılacağı üzere ilk iki tanım, dinleyeceğimiz cluster’ın adı ve herhangi bir IP’ den bilgi alabilmesi için 0.0.0.0 olarak ayarlandı. Single-node konfigurasyonunu bootstrap checklerden kaçınmak için ekliyoruz. Xpack security opsiyonunu kapatıp login olmadan elasticsearch’e ulaşmamızı sağlayacak.

mkdir kibana; vim kibana/kibana.yml

Oluşturacağımız Stack’de sunucunun adını hostunu ve Kibana’nın Elasticsearch’e ulaşması için url’ini yazdıktan sonra logstash için de küçük bir konfigurasyon dosyası oluşturuyoruz.

mkdir logstash; vim logstash/logstash.conf

Bu dosya içine Logstash’in iletişim kuracağı tcp portu ve üzerinde arama yapacapı search-engine’i output ifadesine url olarak ekliyoruz. Bu konfigurasyonları hazırladıktan sonra docker-compose.yml dosyasımızı oluşturmaya başlayabiliriz.

Hazırladğımız docker-compose.yml dosyası elasticsearch, logstash ve kibana olmak üzere üç servisten oluşmaktadır. İlk çalışacak servisimiz elasticsearch olacağından kibana ve logstash servislerinin altına depend_on ifadesiyle elasticsearch’ü yazdık; böylelikle elasticsearch servisi başlamadan diğer servisler başlamayacak. Her servis için oluşturduğumuz konfigurasyon dosyalarını docker volume olarak servisler ile bağlıyoruz. ES_JAVA_OPTS değişkeni servisler hazır olduğunda Java’ya ayrılmış heap bölümünü temsil eder; varsayılan olarak bu değişkeni kullanmazsak 1 gb heap size Java için ayrılır. Kullanılacak olan portları sunmak için ise elasticsearch için 9200 ve 9300 portlarını host tarafında aynı olacak şekilde düzenliyoruz. 9200 portu başka bir dil ile RESTful api üzerinden iletişim kurabilmek için 9300 portu ise cluster içindeki node’lar arasında iletişim kurmak için gereklidir. Logstash ve Kibana için 5000 ve 5061 portlarını dışarı sunduktan sonra docker-compose.yml dosyamız hazır hale gelmiş bulunuyor.

docker-compose up -d

komutuyla ayarladığımız servisleri çalıştırıyoruz. Her servisin kendi terminal çıktısını, çalıştırdığımız docker compose komutuyla birlikte ekranda görmek istersek “-d ” parametresini kaldırmamız yeterli olacaktır. Ayrıca hangi servislerin çalıştığını daha net görebilmek için:

docker ps 

komutunu kullanabiliriz.

Servislerimiz ayarlanan portlar üzerinden birbirleriyle haberleşiyor olacak. Kibana web arayüzüne ulaşmak için:

http://localhost:5601

url’ini girmemiz yeterlidir. Kurduğumuz stack içinde herhangi bir veri seti ya da uygulama olmadığı için Kibana bizden index pattern değişkenini filtrelemek için istiyor olacak.

Elastic Stack (eski adıyla ELK Stack) artık kullanıma hazır bulunuyor. İstediğimiz uygulama ile iletişim haline geçip filtreleme yapmak için “index pattern” değişkenini belirlememiz yeterli olacaktır.

--

--