Spring Boot&ELK 3 — Kibana

İlkay Günel
turkcell
Published in
4 min readSep 19, 2023

Merhabalar.

Spring Boot & ELK 1 yazısında Spring Boot projemizi ElasticSearch’e bağlamıştık ve veri saklamıştık. Spring Boot & ELK 2 yazısında da Logstash’e değinmiştik. Spring Boot&ELK yazılarımızın 3. ve son yazısında Kibana konusunu ele alacağız.

Öncelikle Kibana’nın ne olduğu ile yazımıza başlayalım.

Kibana Nedir?

Biz verileri topladık ve üzerinde arama yapabilmek üzere ElasticSearch’e kaydettik. Ardından Logstash ile bunların daha anlamlı hale gelmesini sağladık. Kibana da işte bu daha anlamlı hale gelmiş verileri görsel bir şekilde kullanmayı sağlayan araçtır. Yani aslında ElasticSearch ve Logstash’in bir UI katmanı yok iken Kibana’nın kendisi doğrudan bir UI katmanıdır.

Docker İle Kibana’nın Ayaklandırılması

Önceki 2 yazıda olduğu gibi bu yazıda da Docker kullanacağız ve Kibana’yı da Docker üzerinde koşturacağız.

Kibana’yı Docker üzerinde koşturmak için şu 2 komutu kullanabiliriz:

Kibana Pull&Run Command

docker pull docker.elastic.co/kibana/kibana:8.8.1
docker run --name kibana --network=elastic-network -p 5601:5601 -e "xpack.security.enabled=false" -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" -e "INTERACTIVESETUP_ENABLED=false" -e "ssl_certificate_verification=false" docker.elastic.co/kibana/kibana:8.8.1
  • docker pull komutu ile 8.9.0 versiyonlu Kibana Docker image’ını lokalimize çekmiş oluyoruz.
  • docker run komutu ile az önce lokalimize çektiğimiz Kibana Docker image’ını koşturmuş oluyoruz. –name parametresi çalışacak image’ın Docker üstünde hangi isimle çalışacağını belirtiyor, istediğinizi verebilirsiniz. –network parametresi Kibana’nın hangi Docker network’de çalışacağını bildiriyor, önceki yazıdan da hatırlarsanız Logstash’i de bir network altında çalıştırmıştık. İkisi aynı network’de olmalı. -p parametresi Kibana image’ının çalışacağı port bilgisini temsil ediyor. -e ile lokalimizde çalışması için gerekli parametreleri geçtik.

Yukarıdaki komutlar sağlıklı bir şekilde çalıştıktan sonra http://localhost:5601/app/home#/ adresine gittiğimizde bizi Kibana’nın ana sayfası karşılıyor olacak. Şimdi artık Kibana ile ElasticSearch’ü birbirine bağlama zamanı 😊

İlk olarak ana sayfadaki Stack Management linkine tıklıyoruz.

Ardından açılan sayfada sol menüden Index Management’a tıklıyoruz ve gelen sayfada üçüncü sıradaki Index Templates’e tıklıyoruz. Ve devamında da Create Template’e tıklıyoruz. Gelen Sayfada

  • name kısmında tanımlayıcı bir ifade girip Next butonuna tıklıyoruz. Ben test-index-template şeklinde bir ifade giriyorum.
  • Index Pattern kısmında ElasticSearch’de kullandığımız index’in ismini gireceğiz. Logstash test isminde bir index’e gönderiyordu, o yüzden buraya test yazıyoruz.
  • Data Stream seçeneğini ben açıp devam ettim, bu seçeneğin doğrudan bir Data Stream oluşturmasını bekliyordum ancak olmadı. Bu seçeneğin tam olarak ne işe yaradığını şu an çözemedim, çözebilirsem eğer bu yazıyı güncelleyeceğim.
  • Diğer alanları es geçip Next diyebiliriz ve devamında açılan tüm sayfaları next next geçip en sondaki Review Template kısmında da Create Template diyebiliriz.

Şimdi index tanımını yaptık ancak elimizde henüz veri yok, Spring Boot uygulamamız Logstash üzerinden bir şeyler göndermedi. Bunun için http://localhost:8181/driver/Rubens adresine bir HTTP GET isteği gönderdim ve Kibana’da sol menüde yer alan Data Views’a tıkladım. Karşıma elimde veri olduğunu söyleyen ve Data View oluşturmamı söyleyen bir ekran geldi.

Bu ekrandaki Create data view butonuna tıklıyorum. Açılan ekranda

  • name kısmına tanımlayıcı bir ifade giriyoruz. Ben buraya test-data-view girdim.
  • Index Pattern kısmına az önce template tanımında girdiğimiz test bilgisini giriyorum. Zaten sağ kısımda girebileceğimiz index pattern’leri de listeliyor.
  • Timestamp Field alanını da olduğu gibi bırakıyorum.
  • Son olarak Save data view to Kibana butonuna tıklıyoruz.

Şimdi tekrar ana sayfaya dönüyoruz. Sol üstteki Elastic simgesine tıklayıp da dönebiliriz ya da http://localhost:5601/app/home#/ adresi ile direkt gidebiliriz. Sonrasında gelen Ana Sayfa’daki Analytics kısmına tıklıyoruz.

Bir sonraki gelen sayfada da Discover kısmına tıklıyoruz.

Şimdi gelen ekranda zaten tek bir Data View’ımız olduğu için test-data-view direkt seçili gelecek. Burada “Filter your data using KQL Syntax” yazan kısımda bizim Spring Boot loglarımızı filtreleyebiliriz.

Şimdi bu kısma message: *Rubens* yazalım ve aratalım.

Gördüğünüz gibi Spring Boot uygulamasından atılan log buraya gelmiş. Altta Document kısmında Rubens ile aratma logunu sarı işaretli olarak görebiliyoruz.

Bu yazıda anlatacaklarım da bu kadar arkadaşlar. Elasticsearch’de Logstash üzerinden kaydedilen logları Kibana üzerinden görsel bir şekilde okumayı öğrendik bu yazı ile.

Başka bir yazıda görüşene kadar hoşçakalın.

NOT: Lokalimde ElasticSearch’ü çalıştırmak için kullandığım komutum:

docker run -p 9200:9200 --name=elasticsearch --network=elastic-network -e "discovery.type=single-node" -e "http.cors.enabled=true" -e "http.cors.allow-origin=/.*/" -e "network.host=0.0.0.0" -e "http.port=9200" -e "xpack.security.enabled=false" -e "ssl_verification_mode=none" elasticsearch:8.8.1

--

--