ELK Stack Nedir? Kurulum ve Kullanım

İlk piyasaya sunulduğundan bu yana çeşitli bileşenlerinin milyonlarca indirilmesiyle ELK Stack dünyanın en popüler log yönetimi platformudur. Buna karşılık, mekânın sahibi Splunk, toplamda 15.000 müşteriyi rapor ediyor. E tabiki bunda en büyük etken ELK Stack’in Open Source bir uygulama yığını olmasıdır. 😊

Peki tam olarak bu ELK nedir ve bu yazılım yığını neden bu kadar ilgi görmektedir. Bu rehberde, ELK bileşenlerine kapsamlı bir şekilde bakacağız.

 

ELK Stack nedir?

 

ELK Stack, bir- iki yıl öncesine kadar, Elastic tarafından geliştirilen, yönetilen ve sürdürülen open source ürünün (Elasticsearch, Logstash ve Kibana) bir koleksiyonuydu. Beats’ın eklenmesi ile, proje dört ayaklı bir hale dönüştü ve Elastic Stack olarak yeniden adlandırılmasına yol açtı.

 

elk-stack-elkb-diagram

ELK Stack Diagram

Elasticsearch, Apache Lucene arama motorunu temel alan açık kaynaklı, tam metinli bir arama ve analiz motorudur.

Logstash, çeşitli giriş kaynaklarından 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.

Kibana, Elasticsearch’ün üstünde çalışan ve kullanıcılara verileri analiz etme ve görselleştirme olanağı sağlayan bir görselleştirme katmanıdır.

Beats, stack’e iletmek üzere farklı veri türlerini toplamak için bilgisayarlara yüklenen ajanlardır.

 

Yukarıda saymış olduğum bileşenler bir araya geldiğinde, en yaygın olarak BT ortamlarını izlemek, sorun gidermek ve güvence altına almak için kullanılır (ancak iş zekâsı ve web analizi gibi ELK Stack için daha birçok kullanım durumu vardır).

Beats ve Logstash veri toplama ve işleme ile ilgilenir, Elasticsearch verileri endeksler ve saklar ve Kibana verileri sorgulamak ve görselleştirmek için bir kullanıcı arayüzü sağlar.

 

ELK Stack, log yönetimi ve analitik alanında her ihtiyacı karşıladığı için popülerdir. Modern uygulamaları ve BT altyapısını izlemek, mühendislerin yüksek düzeyde dağıtılmış, dinamik ve gürültülü ortamları izleme zorluğunun üstesinden gelmelerini sağlayan bir log yönetimi ve analiz çözümü gerektirir. ELK Stack, kullanıcılara birden fazla veri kaynağından veri toplayan ve işleyen, bu verileri veri büyüdükçe ölçeklenebilen tek bir merkezi veri deposunda depolayan ve verileri analiz etmek için bir dizi araç sağlayan güçlü bir platform sağlayarak yardımcı olur.

Log Analizi için ELK Stack Nasıl Kullanılır?

 

Yukarıda bahsettiğim gibi, birlikte ele alındığında, ELK Stack’in farklı bileşenleri günlük yönetimi ve analitiği için basit ama güçlü bir çözüm sunar.

 

ELK Stack’teki çeşitli bileşenler, fazladan konfigürasyon olmadan birbirleriyle güzelce etkileşim kurmak ve oynamak için tasarlanmıştır. Bununla birlikte, yığının tasarımını nasıl yaptığınız ortamınıza ve kullanım durumunuza göre büyük farklılıklar gösterir.

Küçük boyutlu bir geliştirme ortamı için klasik mimari aşağıdaki gibi görünecektir:

 

 

Bununla birlikte, üretimde büyük miktarlarda veri işlemek için inşa edilen daha karmaşık boru hatlarını işlemek için, dayanıklılık (Kafka, RabbitMQ, Redis) ve güvenlik (nginx) için log mimarinize ek bileşenler eklenmesi muhtemeldir:

 

ELK Kurulumu:

ELK Stack, çeşitli yöntemler kullanılarak ve çok çeşitli farklı işletim sistemleri ve ortamlara kurulabilir. ELK, Docker ve Ansible, Puppet ve Chef gibi yapılandırma yönetim sistemleri kullanılarak yerel olarak ya da istenirse bulutta kurulabilir.

Ben bu yazımda Elasticsearch, Logstash, Kibana ve Beats – Linux’a kurmak için bir örnek vereceğim. Kullanacağım Linux dağıtımı ise Ubuntu 18.04 LTS olacaktır.

 

Elasticsearch Kurulumu

Öncelikle, indirilen paketin doğrulanabilmesi için Elastic’in imzalama anahtarını eklemeniz gerekir:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Debian için apt-transport-https paketini kurmanız gerekiyor:

 

sudo apt-get update
sudo apt-get install apt-transport-https

Bir sonraki adım, ilgili repo’yu sisteminize eklemektir:

 

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Tek yapmanız gereken depolarınızı güncellemek ve Elasticsearch’ü kurmaktır:

 

sudo apt-get update
sudo apt-get install elasticsearch

Elasticsearch yapılandırmaları, genel ayarları (örn. node name) ve verilerin saklandığı ağ ayarlarını (ör. Ana bilgisayar ve bağlantı noktası) yapılandırmanıza olanak tanıyan bir yapılandırma dosyası kullanılarak yapılır.

Örneğimiz için, Elasticsearch’ü yerel bir Unix Sunucuya yüklediğimizden, Elasticsearch’ü özel bir IP’ye veya localhost’a bağlamak iyi bir uygulamadır:

sudo nano /etc/elasticsearch/elasticsearch.yml

network.host: "localhost"
http.port:9200

Yukarıda ki şekilde elasticsearch.yml dosyasını düzenledikten sonra elasticsearch servisini çalıştırmalıyız.

sudo service elasticsearch start

Servisin ayağa kalkması biraz zaman alabilir.

Her şeyin beklendiği gibi çalıştığını doğrulamak için curl komutu veya tarayıcınızdan http://localhost:9200 adresine girin ve aşağıdaki çıktıya benzer bir şey görmelisiniz:

 

{
  "name" : "ubuntu",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "LiD7cufSQv-KABfXWGMXVA",
  "version" : {
    "number" : "7.6.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
    "build_date" : "2020-02-29T00:15:25.529771Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"

Logstash Kurulumu

Logstash’ın çalışması için Java 8 veya Java 11 gerekir, bu nedenle Logstash kurulum işlemini şu şekilde başlatacağız:

sudo apt-get install default-jre

Java’nın doğru bir şekilde yüklenmiş olduğunu doğrulayın:

java -version

Aldığımız çıktı aşağıdakine benzer birşey ise devam edebiliriz:

openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode)

Repo’yu daha önceden tanımlamıştık, Logstash’ı yüklemek için tek yapmamız gereken:

sudo apt-get install logstash

Logstash’ı çalıştırmadan önce bir veri hattı yapılandırmanız gerekecektir. Kibana’yı kurup başlattıktan sonra buna geri döneceğiz.

 

Kibana Kurulumu

Daha önce olduğu gibi, Kibana’yı yüklemek için basit bir apt komutu kullanacağız:

sudo apt-get install kibana

Kibana kurulumu bittikten sonra yapılandırma dosyasını açın: /etc/kibana/kibana.yml ve aşağıdaki yapılandırmaların tanımlandığından emin olun:

server.port: 5601
elasticsearch.hosts: "http://localhost:9200"

Bu özel yapılandırmalar Kibana’ya, hangi Elasticsearch’e ve hangi porttan bağlanacağını söyler.

Artık Kibana’yı aşağıdaki komut ile çalıştırabiliriz:

sudo service kibana start

Kibana kurulumu sonrası kontrollerimizi yapalım. Kibana Web Konsolunu http://localhost:5601 ile açın.

Kibana Web Console

Kibana Web Console

Beats Kurulumu

Beats ailesine ait çeşitli nakliyeciler, diğer bileşenleri taktığımız gibi monte edilebilir.

Örnek olarak, Metricbeat’i yükleyelim:

sudo apt-get install metricbeat

Metricbeat’ı başlatmak için:

sudo service metricbeat start

Metricbeat sunucunuzu izlemeye başlar ve Kibana’da tanımlayabileceğiniz bir Elasticsearch dizini oluşturur. Bununla birlikte, bir sonraki adımda, Logstash kullanarak bir veri hattının nasıl kurulacağını açıklayacağız.

 

 

Örnek Log Kayıtları Gönderme

Bu kısımda örnek Apache Web erişim loglarını göndereceğiz. Apache örnek log dosyasını buradan indirebilirsiniz. İndirdiğiniz sıkıştırılmış dosyayı çıkartın ve ELK Stack’in bulunduğu makinaya upload edin. Aşağıdaki conf dosyasında bu log dosyasının yolunu belirteceğiz.

Ardından, /etc/logstash/conf.d/apache-01.conf konumunda yeni bir Logstash yapılandırma dosyası oluşturun:

sudo nano /etc/logstash/conf.d/apache-01.conf

Aşağıdaki Logstash yapılandırmasını girin (indirdiğiniz dosyanın yolunu uygun şekilde değiştirin):

 

input {

file {

path => "/home/ubuntu/apache-daily-access.log"

start_position => "beginning"

sincedb_path => "/dev/null"

}

}

filter {

grok {

match => { "message" => "%{COMBINEDAPACHELOG}" }

}

date {

match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]

}

geoip {

source => "clientip"

}

}

output {

elasticsearch {

hosts => ["localhost:9200"]

}

}

 

Logstash aşağıdaki komut ile çalıştırılır:

sudo service logstash start

Her şey yolunda giderse, Elasticsearch’te paterni şimdi Kibana’da tanımlanabilecek yeni bir Logstash dizini oluşturulacak.

Kibana’da, Management → Kibana Index Patterns’e gidin. Sağ yukarıdaki Create Index Pattern butonuna tıkladıktan sonra dizin deseni olarak “logstash- *” girin ve sonraki adımda

Index Pattern 1

Index Pattern 1

 

Zaman Filtresi alanınız olarak @timestamp öğesini seçin.  Son olarak sağ aşağı köşedeki Create index pattern butonu ile işlemimizi tamamlıyoruz.

 

Index Timestamp

Index Timestamp

 

 

Verilere göz atmak için Kibana’daki Discover sekmesine gidin (varsayılan son 15 dakika yerine bugünün verilerine bakın).

Kibana Discover

Kibana Discover

 

Sizi tebrik ediyorum az önce  İlk ELK veri hattınızı Elasticsearch, Logstash ve Kibana’yı kullanarak kurdunuz.

 

Sistem kapanıp açıldığında servislerin otomatik olarak çalışmasını istiyorsanız:

sudo systemctl enable elasticsearch.service
sudo systemctl enable kibana.service
sudo systemctl enable logstash.service
sudo systemctl enable metricbeat.service

Komutlarını sıraysıyla girmelisiniz.
Resmi Web Sitesi:

https://www.elastic.co/


Abone ol
Bildir
guest
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle