Elastic Stack ile Spring Boot Uygulamalarında Log Yönetimi

Kaan Alkım
Bilişim Hareketi
Published in
3 min readJan 29, 2020

Günümüzde uygulamalarımızı kodlarken, yazdığımız bir kodun ya da kullanmış olduğumuz bir aracın olması gerektiğinden farklı davranmasını durumunu genelde göz ardı ederiz. Bunun sebebi, her ne olursa olsun, uygulamanın istisnai bir durumda bir hata ya da uyarı vereceği ve sorunu muhakkak log dosyalarında bulunabileceğimizi bilmemizdir. Dolayısıyla geliştiriciler olarak, uygulama geliştirken log dosyalarına oldukça güveniriz. Debug etme, uygulama davranışını gözlemleme; uygulamanın herhangi bir yayın aşamasının önemli parçalarıdır.

Log yönetim uygulamaları, logların incelenmesi süresinde geçirilen büyük zamanı azaltır. Loglara, yönetim uygulamaları sayesinde filtreler ekleme, log dosyalarının içerisinde arama yapabilme gibi özellikler, bizleri loglarla boğuşmaktan kurtarır ve sorunu çözmemiz için zaman kazandırır.

Log Yönetimi Neden Gereklidir ?

  • Log yönetimi uygulamamızın davranışını gözlemlememizi sağlar.
  • Log yönetim araçları sayesinde, log kayıtlarının yazılım konusunda pek fazla bilgisi olmayan kişiler tarafından da gözlemlenebilmesi sağlanır.
  • Logların gerektiği kadar saklanabilmesi ve analiz edilebilmesi için Log yönetim uygulamaları gerekmektedir.
  • Log yönetim uygulamaları sistem yöneticileri için, başarısız giriş denemeleri ya da şüpheli işlemlere özel uyarılar tanımlamalarını sağlar.
Host Makinemdeki Docker Desktop Bilgileri

Hadi başlayalım

Öncelikle GitHub üzerinden projeyi klonlayalım. Yazının geri kalanında bu projeden alıntılar yapacağım.

Veritabanı Yapılandırması

Veritabanını ayağa kaldıran kısım docker-compose.yml içerisindeki db adı servistir. Burada çeşitli ortam değişkenleri kullanılmıştır. Bunları projenin kök dizininde bulunan .env dosyası içerisinden istediğiniz gibi düzenleyebilirsiniz. Ayrıca bu ortam değişkenleri, projenin application.yml dosyası içerisinde de bulunmaktadır, bunlar eğer dışarıdan herhangi bir değişken verilmezse varsayılan değerleri ile çalışmaktadırlar.

application.yml içerisindeki veritabanı ayarları

Elasticsearch Yapılandırması

Elasticksearch, docker-compose.yml içerisindeki elasticsearch servisi ile ayağa kalkmaktadır. Ayrıca proje kök dizini içeriside bulunan containers/elasticsearch klasöründe, single-node ve elastic-search-cluster adları ile ayağa kalkacağını görmekteyiz.

LogStash Yapılandırması

LogStash, docker-compose.yml içerisindeki logstash servisi ile ayağa kalkmaktadır. Ayrıca proje kök dizini içeriside bulunan containers/logstash klasöründe yapılandırma dosyası bulunmaktadır.

Burada dikkat edilmesi gereken husus, input kısmında bulunan log dosyasının yeridir. Bu dosya yolu daha sonra docker-compose.yml içerisinde uygulamanın application.yml dosyasında bulunan logging.file bilgisi ile volume yapılmıştır.

application.yml içerisindeki log dosyasının yolu
LogStash volume bilgileri

Output kısmında ise index bilgisi bulunmaktadır. Bu index bilgisi ile bir sonraki adımda kibana üzerinde yapılandırma yapacağız.

LogStash index bilgisi

Kibana Yapılandırması

Kibana, docker-compose.yml içerisindeki kibana servisi ile ayağa kalkmaktadır. Ayrıca proje kök dizini içeriside bulunan containers/kibana klasöründe yapılandırma dosyası bulunmaktadır. Tüm işlemler bittikten sonra http://localhost:5601 adresine giderek, LogStash ‘in output yapılandırmasında belirttiğimiz index adı ile yeni bir index oluşturarak loglarımızı gözlemleyebiliriz.

dev.to

Kibana üzerinde Log Yönetimi

--

--