Log Verileri Yönetimi — Graylog
Uygulamalar, ağlar, işletim sistemleri ve kullanıcılar aracılığıyla çok büyük miktarda veri (data) üretiliyor ve önemli kısmı saklanıyor. Bu verilerin belli bir anlam ifade etmesi ve sonuç göstermesi şirketler için güvenlik, daha iyi kullanıcı deneyimi, sistem monitoring ile performans, anlık problem tespiti ve uyarılar (troubleshooting and alerts) gibi konularda oldukça önemli. Peki bu veriler nasıl saklanıyor? Veri kayıtlarından sonuç elde edilmesi sürecinde hangi araçlar kullanılıyor?
Herkese merhaba. Bu yazımda Log Monitoring kavramından ve Log Management System olan Graylog’dan bahsedip Docker Compose ile çalıştırılmasını göstereceğim. Keyifli okumalar :)
Konular
- Log Verileri
- Log Files
- Log Monitoring’in Faydaları
- Graylog (Centralized Log Management System)
- Docker Compose
- Docker Compose İle Graylog Kurulumu
Log Verileri
Log verileri, işletim sistemleri, uygulamalar ve ağlar gibi çeşitli bilgi teknolojisi sistemlerinde gerçekleşen olayları kaydetmek ve izlemek amacıyla tutulur. Bu kayıtlar, sistemdeki olayların, hataların, uyarıların ve diğer önemli durumların belgelenmesini sağlar.
Log Files
Computer-generated data files
Log dosyaları, log verilerini içeren dosyalardır. Bu dosyalar genellikle belirli bir formatta ve yapıda düzenlenir. Tarih ve saat, olay tipi, kullanıcı etkileşimi, hata kodları gibi bilgiler içerir.
Log’lar; uygulamalar, işletim sistemleri ve ağlar üzerinde performans sorunlarıyla karşılaşılan durumları tanımlamak ve analiz etmek için kritik öneme sahiptir. Log files, event’lerin ayrıntılı kaydını tutar ve böylece sorunların temel nedeninin belirlenmesine yardımcı olur.
Log’lar birden çok kaynaktan toplanır ve türlerine göre ayrı dosyalarda tutulur. Veriler log tiplerine göre toplanır. En yaygın tipler şu şekildedir:
- Uygulama Log’ları
- Sistem Log’ları
- Güvenlik Log’ları
Uygulama Log’ları
Bir yazılım veya uygulamanın çalışması sırasında ortaya çıkan olayları ve bilgileri tutan kayıtlardır. Bu log’lar genellikle uygulamanın durumu, performansı, kullanıcı etkileşimleri, hata mesajları gibi bilgileri içerir.
- Uygulama performansıyla ilgili bilgiler, kullanıcı tarafından tetiklenen işlemin gerçekleşme süresi, response detayları gibi log kayıtları bu türe örnek gösterilebilir.
Sistem Log’ları
İşletim sistemi düzeyinde meydana gelen olayları, hataları ve sistem durumunu gösteren kayıtlardır. Bu log’lar genellikle sistem yöneticileri tarafından takip edilir.
- Bilgisayarın açılış süreci ile ilgili bilgiler, örneğin başlatılma sırasında hangi sürücülerin yüklendiği, işletim sistemi seviyesindeki hatalar, sistem için kaynak kullanım log’ları (CPU, bellek, disk kullanımının izlenmesi) şeklindeki log’lar bu türe örnek verilebilir.
Güvenlik Log’ları:
Sistemdeki güvenlik olaylarını belgeleyen ve güvenlik açıklarını tespit etmeye yönelik bilgileri içeren kayıtlardır. Bu loglar, güvenlik tehditlerini izlemek ve önlemek için kullanılır.
- Yetkilendirme (Authorization) Logları: Kullanıcıların sisteme giriş yapma veya belirli kaynaklara erişme girişimlerini kaydeder. Örneğin, bir kullanıcının başarılı veya başarısız giriş denemeleri log olarak tutulur.
- Güvenlik İhlali Log’ları: Potansiyel güvenlik ihlallerini içerir. Örneğin, bir saldırı girişimi algılandığında kaydedilen bilgiler bu türdeki log’lardır.
- Güvenlik Politikası Log’ları: Bu log’lar ile şirket veya kurumda güvenlik politikalarına uyulup uyulmadığı takip edilir. Belirli bir kritik dosyaya erişim izni alınmadan yapılan bir girişimin log kaydını örnek olarak söyleyebiliriz.
Bu log türleri, sistem, güvenlik yöneticilerine ve developer’lara sistemlerin, uygulamaların ve ağların durumu hakkında bilgiler sağlar. Bu kayıtların düzenli olarak izlenmesi, hata tespiti, performans iyileştirmeleri ve güvenlik önlemleri için önemli bir araçtır.
Log Monitoring’in Faydaları
Log monitoring, sistem ve uygulama log’larını sürekli olarak izleme ve değerlendirme sürecidir. Bu süreç, potansiyel sorunları tespit etmek ve hızlı bir şekilde müdahale etmek için kullanılır.
Log takip sistemi ile bir saldırı girişimi algıladığında, bir uygulama anormal şekilde yavaşladığında veya beklenmedik sonuçlar ortaya çıktığında güvenlik veya yazılım ekibi uyarılır. Böylece ilgili ekip tarafından sorunun çözülmesi için gerekli aksiyon alınabilir. Log kayıtlarının tutulmasının bazı önemli faydalarını şu şekilde listeleyebiliriz:
1.Performans İzleme: Sistem performansını değerlendirmek ve iyileştirmek için log kayıtları kullanılır. Bu, sistemdeki yavaşlamaları, aşırı yüklenmeleri veya kaynak tüketimini belirlemek için önemlidir.
2.Debugging: Log kayıtları, bir sistemde meydana gelen hataları belirleme ve giderme sürecinde önemli bir araçtır. Developer’lar, log’ları inceleyerek uygulamalardaki hataları tespit edebilir ve düzeltebilirler.
3.Event Logging: Sistemde meydana gelen önemli olaylar, değişiklikler ve güncellemeler log kayıtları aracılığıyla saklanabilir. Bu durum, sistem yöneticilerine ve developer’lara olayları takip etme ve anlama konusunda yardımcı olur.
4.Güvenlik: Log kayıtları, güvenlik olaylarını izlemek ve tespit etmek için kullanılır. Saldırı girişimleri, yetki ihlalleri ve diğer güvenlik tehditleri, log’lar ile izlenebilir ve bu sayede güvenlik ekibi zamanında müdahalede bulunabilir.
5.Sorun Giderme (Proactive Troubleshooting): Akıllı log yönetim sistemleri, bir sorunu tespit etme ve çözme sürecinde gereken zamanı en aza indirmek için gerçek zamanlı uyarılar (alerts, notifications) sağlar. Sağladıkları veri analitiği ve görselleştirme araçları ile büyük miktardaki log verilerini kolayca analiz eder, böylece olayları izleme ve sorunun kaynağını gerçek zamanlı olarak belirleme konusunda yardımcı olur.
Graylog (Centralized Log Management System)
Merkezi log yönetim sistemleri (centralized log management systems) çeşitli kaynaklardan gelen log verilerini toplar, depolar, analiz eder ve izler.
Graylog, bu sistemler (CLMS) arasında yer alan açık kaynaklı bir platformdur. Log verilerini merkezi bir konumda toplar, kullanıcı arayüzünden erişilebilir hale getirir. Böylece, büyük ölçekli ağlarda, uygulamalarda veya karmaşık sistemlerde oluşan log verileri etkili bir şekilde yönetilebilir.
Graylog’un sunduğu analiz ve görselleştirme araçları ile log verileri izlenebilir. Gerçek zamanlı uyarılar (alerts, notifications) sayesinde sistem yöneticileri, developer’lar belirlenen kritik durumları hemen fark edebilir ve müdahale edebilir. Genel olarak hata tespiti, performans izleme, güvenlik analizi gibi konularda log yönetimi için kullanılır.
Docker Compose
Docker Compose, Docker tarafından sağlanan bir araçtır ve multi-container yapıdaki uygulamalarda container’ları koordine etmek için kullanılır. Compose için root directory’de YAML dosyası oluşturulur:
Proje bir başkası tarafından clone’landıktan sonra compose file sayesinde başlatılır ve böylece çok kolay şekilde contribution’a açık hale gelir.
Bu dosyada belirtilen konfigürasyonlara göre hangi servislerin tanımlandığı, farklı servislerin nasıl başlatılacağı, hangi portların açılacağı, hangi bağımlılıkların yükleneceği gibi ayarlar tek bir yerde yönetilir.
Docker Compose İle Graylog Kurulumu
Graylog installation için Docker kullanacağız. Docker’ın min v20.10.10.
versiyonu gerekli. En son versiyonun yüklü olması daha iyi olacaktır. Kurulum için Docker Documentation’ı takip edebilirsiniz.
Graylog Kurulumu İçin Docker Compose Konfigürasyonu
Docker Compose ile oluşturduğumuz bu YAML dosyası Graylog server’ı çalıştırmamız için gerekli olan çoklu container’lar için ayarları tek bir dosyada config edip tanımlamamızı ve başlatmamızı sağlıyor.
Burada volume’ları, servisleri, network’leri tanımlıyoruz.
1.Volumes: Conteiner’lar arasında veri paylaşımını sağlamak için kullanılan depolama birimleridir. Bir servis tarafından oluşturulan verilerin diğer servislerle paylaşılmasını sağlar.
2.Services: Her servis, genellikle bir container’ı temsil eder. Graylog’un çalışması için bu Docker Compose dosyasında tanımlanan üç servis/container önemlidir.
- Mongo: Graylog, konfigürasyon bilgilerini MongoDB üzerinde depolar.
mongo
servisi, bu MongoDB veritabanını başlatır ve Graylog'un config bilgilerini saklamak için kullanılır. - Opensearch: Graylog’un log verileri Opensearch’te tutulur.
opensearch
servisi, Graylog'un logları burada depolayabilmesi için bir Opensearch (Elasticsearch tabanlı) veritabanı başlatır. Graylog'un Opensearch ile iletişim kurabilmesi için gerekli olan bağlantı noktalarını sağlar. - Graylog: Ana Graylog uygulamasıdır.
graylog
servisi, kullanıcıların tarayıcı tüzerinden log’ları gözlemleyebileceği ve analiz edebileceği bir arayüz sunar. Ayrıca, bu servis Graylog'un config ayarlarını sağlar, MongoDB ve Opensearch ile bağlantılıdır.
Bu servislerin birlikte çalışması, bir Log Management System olan Graylog’un doğru şekilde kullanılmasını sağlar.
3.Networks: networks
bölümü, Docker Compose dosyasında tanımlanan ağları belirtir. Ağlar, Docker container’larının birbirleriyle ve host sistemleriyle iletişim kurmasını sağlar.
Docker Compose ile ilgili daha fazla bilgiye Docker Docks resmi dökümantasyonundan ulaşabilirsiniz.
YAML Dosyasının Çalıştırılması
Graylog’un çalışması için gerekli konfigürasyon ayarlarını yazdıktan sonra terminalde directory’ye locate olup docker-compose up
komutuyla container’ları pull edip çalıştırabiliriz. Container’lar çalıştıkan sonra Docker Desktop’a gelip detayları görürüz.
Container’ların çalıştığını gördükten sonra localhost:9000'de Graylog server’ın ayağa kalktığını görürüz.
Graylog Password
YAML dosyasında GRAYL0G_ROOT_PASSWORD_SHA2
ile Graylog şifresini belirliyoruz. Burada SHA-256 hash ile verilen string admin
şifresine karşılık geliyor. Şu komut ile kendi şifreniz için SHA-256 hash şifresini üretip dosyada bu alana yazabilirsiniz.
echo -n YourPassword | shasum -a 256
Bu komut ile YourPassword
olarak girdiğiniz değer için .yml dosyasında password için kullanılacak SHA-256 hash şifresi üretilir.
Graylog için log yönetim arayüzüne bu şekilde ulaşılır. Bir sonraki yazımda Graylog sisteminin kullanılmasına değineceğim.