Docker Swarm ile ELK Stack Kurulumu ve Loglama

Estimated reading time: 12 minute(s)

Merhaba, bu yazımda biraz ELK Stack’den bahsedip Elasticsearch, Logstash ve Kibana’nın olduğu bir yığın (stack) hazırlayacağız.

ELK Nedir? Ne işe yarar?

ELK Çalışma Mantığı

Yukarıdaki görselde göründüğü gibi, “beats,syslog,clientapp” gibi log kaynaklarının Logstash üzerinde işlenip, Elasticsearch üzerinde tutulması ve sonrasında Kibana ile görsel bir şekilde raporlanmasına ELK Stack diyoruz. Uzun bir cümle oldu şimdi netleştirelim;

Elasticsearch: Logları, verileri saklayan inanılmaz hızlı sorgular çalıştırabilen bir full-text arama motorudur.
Logstash: Logların toplanması ve işlenmesinden mesuldur. Sonrasında logları Elasticsearch’e gönderecek.
Kibana: Elasticsearch veya farklı bir veri kaynağını görsel olarak raporlatan bir araçtır.

ELK Stack ile; projelerimizin, sunucularımızın, veri tabanlarımızın loglarını kolayca raporlayabiliriz.

ELK Stack Kurulumu

Ben uygulamayı Portainer üzerinde yapacağım. Portainer için aşağıdaki yazımı okumanızı tavsiye ederim.

Portainer’ı açıp Stacks menüsüne giriyoruz ve ardından Add stack butonuna tıklıyoruz.

Yığın adını elasticstack olarak verdikten sonra Web editör kısmına aşağıdaki yml dosyasını ekliyoruz.

Eğer Docker’ı Windows bir makinede kullanıyorsanız, logstash volume alanında konfigürasyon dosyalarını bind etmek istediğiniz bir dosya yolu belirtmelisiniz;

- /run/desktop/mnt/host/c/data/logstash:/etc/logstash

Linux bir makinede çalışıyorsanız aşağıdakini yazmanız yeterlidir;

logstash-volume:/etc/logstash

Burada tüm konteynerlerin bağlı olacağı “elasticstack” adında bir network oluşturduk. Ayrıca tüm volume’ları external olarak tanımladık.

Aşağıda göründüğü gibi yığınımız eklenmiş oldu.

Image’ların indirilmesi ve servislerin sağlıklı şekilde çalışması internet ve sistem durumunuza göre biraz zaman alabilir.

Yığınımızda bulunan üç servisimiz, standart 1 adet replika ile sağlıklı şekilde konteyner üretti.

Mevcut durumda konteynerlerimiz aşağıdaki gibi görünmelidir.

Yığınımız ile harici üç volume oluşmuş oldu.

Ve son olarak ağımız aşağıdaki gibi sisteme eklendi.

Elasticsearh aktif hale geldi. http://localhost:9200 adresinden kontrol edebilirsiniz.

Elasticsearch Durum Ekranı

Kibana’ya http://localhost:5601 adresinden giriş yapabilirsiniz. Soldaki butonu kullanarak örnek verilerle uygulamayı incelemeye devam edebilirsiniz. İlk kurulumda size kullanıcı adı ve şifre tanımlaması yaptıracak, bu bilgileri saklayın.

Kibana Karşılama Ekranı

Logstash Konfigürasyon

Logstash için bind ettiğimiz klasöre giriyoruz.

Windows için C:\data\logstash klasörünü belirlemiştik.
Linux için /var/lib/docker/volumes/logstash-volume/_data erişilebilir olacaktır.

İlgili klasörümüze conf.d klasörü oluşturuyoruz.

Artık işlem burada başlıyor. “conf.d” klasörümüz toplayacağımız loglarımızın konfigürasyonlarını içeriyor.

Örnek olarak Syslog logları için bir config dosyası ekleyelim.

Syslog.conf

Bu dosyayı conf.d altına ekledikten sonra Logstash servisimizi yeniden başlatıyoruz.
Input alanına tcp ve udp protokollerinde 5000 portunu dinleme işlemini ekledik.
Filter alanında kısıtlama ve veride yapılacak revizelerimizi gerçekleştiriyoruz.
Output sizinde tahmin ettiğiniz gibi, verinin nereye atılacağını burada belirliyoruz. Biz Elasticsearch için ayarladık. İndex adına “syslog” girdik.

Logstash portumuza bir istekte bulunduğumuzda (http://localhost:5000/) kayıtlarımız Kibana’ya akmaya başlayacak.

Kibanaya giriş yaptıktan (http://localhost:5601) sonra Management menüsünden Indices sekmesi üzerinde Elasticsearch’e gelen indexleri görebiliriz. Logstash’de tanımladığımız syslog indexi başarılı şekilde gelmiş.

Index Management

Indexe tıkladığımızda Mapping sekmesinden, verilerimizin alanlarını ve yapısını görüntüleyebiliriz.

Index Mapping Görüntüleme

Elasticsearch’e gelen indexi kibanaya tanıtmak için bir kalıp oluşturmamız gerekiyor. Kibana->Index Pattern menüsünden ilgili ekrana ulaşabilirsiniz.

Index patterns alanına “syslog*” ifadesini girdiğimizde aşağıda syslog indeximiz belirdi. * koymamızdaki amaç syslog ile başlayan tüm indexlerin bu kalıbımıza dahil olması.

Kalıbımızda ana zaman birimini seçmemiz için, zamanla alakalı alanları Kibana listeliyor. @timestamp alanını seçip devam ediyoruz.

Artık herşey tamam. Menüden Discover ekranına tıkladığınızda verileri listeleyip, filtreleyebilirsiniz.

Umarım faydalı bir yazı olmuştur, okuduğunuz için teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir