ELK yığını, üç popüler projeden (Elasticsearch, Logstash ve Kibana) oluşan bir yığını tanımlamak için kullanılan bir kısaltmadır. Daha çok bir küme olarak düşünebiliriz. Elastic çok fazla sayıda ürünü bu küme içinde barındırabiliyor. Örnek verirsek filebeat, metricbeat aws, azure, crawler vs. Herkesin bildiği üzere sistem, network, güvenlik ve loglaması konfigüre edilen herhangi bir uygulama sürekli log üretir. Örnek olarak servis başladı durdu crash oldu vs. Fakat bu logları ne kadar sıklıkta kontrol ediyoruz. . Log dosyaları boyut olarak büyür satır satır loglar akmaya başlar bir problem anında ilgili logu bulup tespit etmek vakit alabilir Sıklıkla Elasticsearch olarak anılan ELK yığını, tüm sistem ve uygulamalarınızdaki günlükleri toplayabilmenizi; bu günlükleri analiz edebilmenizi; uygulama ve altyapı izleme, daha hızlı sorun giderme, güvenlik analizleri ve çok daha fazlası için görselleştirmeler oluşturabilmenizi sağlar. Daha önceki yazılarda Elasticsearch ve Kibanadan bahsetmiştik. Logstash ile giriş yapalım
Logstash Nedir ?
Logstash bir veri toplama pipeline aracıdır. Topladığı bu verileri anlamlı hale getirir ve ElasticSearch’ü besler. Bunun yanı sıra topladığı verileri mail adresine, endpoint’e ya da bir başka NoSQL veritabanına gönderebilir. Logstash, çeşitli kaynaklardan veri toplamanıza, bu verileri dönüştürmenize ve istediğiniz hedefe göndermenize olanak tanıyan açık kaynaklı bir veri alma aracıdır. Önceden oluşturulmuş filtreler ve 200’ü aşkın eklenti için destek sunan Logstash, kullanıcıların veri kaynağı veya türü fark etmeksizin verileri kolayca almasına olanak tanır.
Avantajları
- Yapılandırılmamış verileri kolayca yükleyebilirsiniz.
- Önceden oluşturulmuş filtreler ihtiyaçları karşılamaktadır.
- Esnek eklenti mimarisi vardır.
Terminoloji
- İnput : Eventlerin gelmesi, oluşturulmasıdır.
- Filters : Gelen eventlerin üzerinde aksiyonlar, transformasyonlar gerçekleştirirler.
- Output : Eventleri başka bir yere aktarırlar.
Bu kavramlardan bahsettikten sonra Yığını tamamlamış oluyoruz. 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. Bununla birlikte, üretimde büyük miktarlarda veri işlemek için inşa edilen daha karmaşık Pipeline işlemek için, dayanıklılık (Kafka, RabbitMQ, Redis) ve güvenlik (nginx) için log mimarinize ek bileşenler eklenmesi muhtemeldir. 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). 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.
Logstash Nasıl Kurulur ?
Bu yazıda Logstash Linux bir makineye nasıl kurulur ondan bahsedilecektir. Linux olarak Ubuntu 20.04.4 LTS tercih edilmiştir. Kurulumdan önce makine üzerinde herhangi bir engelleme ile karşılaşmamak için firewall disable edilir.
sudo apt install logstash
Örnek olarak MS SQL üzerinde bir tablodaki veriyi alıp Elasticsearch yazacağız. Bunun için öncelikli olarak MS SQL için JDBC driver kuruyoruz. Sonrasında jbdc driver dosyalarını logstash directory atıyoruz.
curl –O https://go.microsoft.com/fwlink/?linkid=2203102
tar -xvf sqljdbc_11.2.0.0_enu.tar.gz
cp /sqljdbc_11.2.0.0_enu /usr/share/logstash/bin
Logstasth konfigürasyon dosyamızı oluşturuyoruz.
sudo vi /etc/logstash/conf.d/sql.conf
sql.conf dosyası örnek içerik;
input {
jdbc {
jdbc_driver_library => “/usr/share/logstash/bin/sqljdbc_11.2.0.0_enu/mssql-jdbc-9.4.1.jre16.jar”
jdbc_driver_class => “com.microsoft.sqlserver.jdbc.SQLServerDriver”
jdbc_connection_string =>”jdbc:sqlserver://x.x.x.x:1433″
jdbc_user => “sql_username”
jdbc_password => “sql_password”
schedule => “* */6 * * *”
statement => “sql_query”
type=>”sql_table”
}
}
output {
elasticsearch {
hosts => [“https://x.x.x.x:9200”]
user => “elastic_username”
password => “elastic_password”
ssl => true
ssl_certificate_verification => false
index => “index-name-%{+YYYY}”
document_id => “%{idx}”
}
}
Son olarak logstash başlatıyoruz.
sudo systemctl start logstash
sudo systemctl enable logstash
Kibana üzerinde index oluşturup ilgili patternleri belirledikten sonra logları monitör edebiliriz.