Takip et

Ubuntu 14.04’te Rsyslog, Logstash ve Elasticsearch ile Logların Merkezi Olarak Toplanması

# Ubuntu 14.04’te Rsyslog, Logstash ve Elasticsearch ile Log Centralizasyonu

Birden fazla sunucunuz varsa ve sisteminizin sağlıklı çalışıp çalışmadığını anlamak, sorunları hızlıca tespit etmek istiyorsanız, loglarınızı merkezi olarak yönetmeniz şarttır. Dağınık log dosyaları arasında kaybolmak yerine, tek bir noktadan tüm sisteminizin loglarını izleyebilmek hem zaman kazandırır hem de olası sorunlara hızlı müdahale etmenizi sağlar. Bu makalede, Ubuntu 14.04 üzerinde Rsyslog, Logstash ve Elasticsearch kullanarak loglarınızı nasıl merkezi olarak yönetebileceğinizi adım adım açıklayacağız. Bu güçlü üçlüyü kullanarak, loglarınızın analizini kolaylaştıracak ve sisteminizin performansını optimize etmenize yardımcı olacak bir çözüm oluşturacaksız.

Temel Kavramlar: Rsyslog, Logstash ve Elasticsearch

Öncelikle, kullandığımız araçların temel işlevlerini anlayalım:

Rsyslog: Sistem loglarını toplamak ve iletmek için kullanılan bir sistem log yöneticisidir. Ubuntu sistemlerinde varsayılan log yöneticisidir ve diğer sunuculardan gelen logları merkezi bir sunucuya iletmek için mükemmel bir araçtır.

Logstash: Logları farklı kaynaklardan (örneğin, Rsyslog, Apache, Nginx) toplayan, işleyen ve indeksleyen bir araçtır. Log verilerinizi formatlayarak, filtreleyerek ve zenginleştirerek Elasticsearch’e göndermek için kullanılır. Esnekliği ve geniş plugin desteğiyle, log yönetiminizin ihtiyaçlarına göre özelleştirilebilir.

Elasticsearch: Verileri arama ve analiz etme olanağı sağlayan bir arama ve analiz motorudur. Logstash’ten gelen log verilerini indeksler ve hızlı arama ve filtreleme imkanı sunar. Kibana gibi araçlarla görselleştirme yaparak log verilerinizi daha anlamlı bir şekilde inceleyebilirsiniz. Bu üçlü, güçlü bir log yönetim altyapısı oluşturmanıza olanak tanır.

Rsyslog’u Kurma ve Yapılandırma: Nasıl Logları Toplarız?

İlk adımımız, logları toplayacak olan Rsyslog’u yapılandırmak. Ubuntu 14.04’te Rsyslog zaten yüklüdür, ancak merkezi log toplama için konfigürasyon dosyasını düzenlememiz gerekiyor.

/etc/rsyslog.conf dosyasını düzenleyerek, logları belirli bir IP adresine (Elasticsearch sunucusunun IP adresi) göndermek için aşağıdaki satırı ekleyin:

*.* @@<Elasticsearch sunucusunun IP adresi>:5044

5044 portu, Logstash’in dinlediği porttur. Bu satır, tüm logları ( *.* ) belirtilen IP adresine gönderir. Daha seçici olmak isterseniz, belirli logları filtreleyebilirsiniz. Örneğin, sadece auth loglarını göndermek için:

auth,authpriv.* @@<Elasticsearch sunucusunun IP adresi>:5044

Değişiklikleri kaydettikten sonra Rsyslog’u yeniden başlatın:

sudo systemctl restart rsyslog

Öğrenme Yol Haritası:

Yeni Başlayan: Yukarıdaki adımları izleyerek, basit bir log gönderme konfigürasyonu yapabilirsiniz. Sadece tüm logları göndermek ile başlayın ve daha sonra filtrelemeyi deneyebilirsiniz.

Orta: Farklı log seviyelerini (debug, info, warning, error, critical) filtreleyerek, sadece önemli logları merkezi sunucuya göndermeyi deneyin. Ayrıca, farklı log türlerini (sistem, uygulama, web sunucusu vb.) farklı dosyalara yönlendirmeyi deneyebilirsiniz. Bu, loglarınızı daha düzenli hale getirecektir.

İleri Düzey: Rsyslog’un gelişmiş özellikleri (örneğin, TCP/TLS şifreleme, gerekirse log sıkıştırma) kullanarak güvenliği ve performansı artırın. Log gönderme başarısızlığı durumunda, logları yerel olarak kaydetmek için yedekleme mekanizmaları ekleyebilirsiniz.

Logstash’i Kurma ve Yapılandırma: Nasıl Logları İşleriz?

Logstash, logları işleyen ve Elasticsearch’e gönderen önemli bir bileşendir. Logstash’i kurmak için aşağıdaki komutu kullanın:

sudo apt-get update
sudo apt-get install logstash

Logstash’in konfigürasyon dosyasını (/etc/logstash/conf.d/) düzenleyerek, Rsyslog’dan gelen logları işleme ve Elasticsearch’e gönderme talimatlarını vereceğiz. Aşağıdaki örnek konfigürasyon dosyası, Rsyslog’dan gelen logları alır, JSON formatına çevirir ve Elasticsearch’e gönderir:

input {
  tcp {
    port => 5044
    codec => json
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{HOSTNAME:host} %{USER:user} %{GREEDYDATA:message}" }
  }
  date {
    match => ["timestamp", "ISO8601"]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
  }
}

Bu konfigürasyonda, input bölümü TCP port 5044’ü dinler. filter bölümü, log mesajlarını ayrıştırır ve tarih formatını düzeltir. output bölümü, logları Elasticsearch’e gönderir. index parametresi, günlük bazında indeks oluşturur.

Öğrenme Yol Haritası:

Yeni Başlayan: Yukarıdaki basit konfigürasyon dosyasını kullanarak, logları JSON formatına çevirip Elasticsearch’e gönderebilirsiniz.

Orta: Grok filtrelerini kullanarak log mesajlarından daha fazla bilgi (örneğin, hata kodları, kullanıcı kimlikleri) ayıklayın. Logları farklı indekslere (örneğin, uygulama adı veya sunucu adı bazında) yönlendirin.

İleri Düzey: Logstash’in performansını optimize etmek için, filtreleri ve output plugin’lerini inceleyin. Çoklu thread kullanarak ve performans testleri yaparak en uygun konfigürasyonu bulun. Logstash’in farklı plugin’lerini kullanarak log verilerinizi zenginleştirin (örneğin, IP adreslerini coğrafi konumlara çevirin).

Elasticsearch’i Kurma ve Yapılandırma: Nasıl Logları Arar ve Analiz Ederiz?

Elasticsearch, log verilerinizi arama ve analiz etmenizi sağlayan güçlü bir araçtır. Elasticsearch’i kurmak için aşağıdaki komutu kullanın:

sudo apt-get update
sudo apt-get install elasticsearch

Elasticsearch’in varsayılan konfigürasyon dosyası genellikle /etc/elasticsearch/elasticsearch.yml dosyasındadır. Bu dosyayı düzenleyerek, Elasticsearch’in hangi portta dinleyeceğini ve diğer ayarlarını değiştirebilirsiniz.

Elasticsearch’i başlatmak için:

sudo service elasticsearch start

Log verilerinizi görselleştirmek ve analiz etmek için Kibana’yı kullanabilirsiniz. Kibana’yı kurmak için:

sudo apt-get install kibana

Kibana’yı başlatmak için:

sudo service kibana start

Öğrenme Yol Haritası:

Yeni Başlayan: Elasticsearch’i kurup başlattıktan sonra, Kibana’yı kullanarak basit arama sorguları yapmayı öğrenin. Logstash’ten gelen verilerin Elasticsearch’te indekslendiğini doğrulayın.

Orta: Kibana’nın görselleştirme özelliklerini kullanarak log verilerinizi grafikler ve tablolar halinde görselleştirin. Farklı filtreler ve sorgular kullanarak, log verilerinizden anlamlı bilgiler çıkarın.

İleri Düzey: Elasticsearch’in gelişmiş özelliklerini (örneğin, aggregations, scripting) kullanarak karmaşık analizler yapın. Performans sorunlarını tespit etmek ve çözmek için Elasticsearch’in performans metriklerini izleyin. Elasticsearch kümeleri oluşturarak ölçeklenebilirlik sağlayın.

Gerçek Dünya Senaryoları ve Vaka Analizleri

Senaryo 1: Web Sunucusu Loglarının İzlenmesi: Bir e-ticaret sitesi çalıştırıyorsunuz ve aniden sipariş işlemlerinde sorunlar yaşıyorsunuz. Merkezi log sistemi sayesinde, Apache veya Nginx loglarını hızlıca inceleyerek, hatanın kaynağını tespit edebilir ve sorunu çözebilirsiniz.

Senaryo 2: Sistem Hata Loglarının Analizi: Bir sunucunuzda düzenli olarak disk alanı doluluk hataları alıyorsunuz. Sistem loglarını analiz ederek, hangi dosyaların disk alanını tükettiğini belirleyebilir ve gerekli önlemleri alabilirsiniz.

Senaryo 3: Güvenlik Olaylarının İzlenmesi: Sunucularınıza yetkisiz erişim girişimleri tespit etmek için, güvenlik loglarını (auth, authpriv) izleyebilirsiniz. Şüpheli aktiviteleri tespit ederek, güvenlik açıklarını kapatabilir ve sisteminizi koruyabilirsiniz.

Performans Optimizasyonu

Sisteminizin performansını optimize etmek için aşağıdaki ipuçlarını kullanabilirsiniz:

* Logları filtreleyin: Gereksiz logları göndermeyin. Sadece önemli logları merkezi sunucuya göndermek, bant genişliği ve işlemci kaynaklarından tasarruf sağlar.
* Logstash’i optimize edin: Logstash’in konfigürasyonunu inceleyin ve performans sorunlarını tespit edin. Çoklu thread kullanarak ve uygun plugin’leri seçerek performansı artırabilirsiniz.
* Elasticsearch kümeleri oluşturun: Büyük miktarda log verisi işliyorsanız, Elasticsearch kümeleri oluşturarak ölçeklenebilirlik sağlayabilirsiniz.
* İndeks yönetimi: Eski indeksleri silerek disk alanından tasarruf edin. İndeks yönetimi stratejileri belirleyin.

Sonuç

Bu makalede, Ubuntu 14.04 üzerinde Rsyslog, Logstash ve Elasticsearch kullanarak merkezi log yönetimini nasıl kuracağınızı adım adım açıkladık. Bu sistem, loglarınızı tek bir noktadan yönetmenizi, analiz etmenizi ve olası sorunları hızlıca tespit etmenizi sağlar. Ancak, sisteminizin büyüklüğü ve karmaşıklığına bağlı olarak, konfigürasyon ve optimizasyon adımları değişebilir. Bu nedenle, sisteminizin ihtiyaçlarını dikkatlice analiz ederek, en uygun konfigürasyonu belirlemeniz önemlidir. Daha fazla bilgi için [Fatih Soysal’ın bloguna](https://fatihsoysal.com) göz atabilirsiniz.

Sıkça Sorulan Sorular:

1. Ubuntu’nun başka sürümlerinde de bu yapılandırma çalışır mı? Genel olarak evet, ancak bazı küçük değişiklikler gerekebilir. Özellikle rsyslog ve sistemctl komutları farklılık gösterebilir.
2. Logstash’te hangi codec’i kullanmalıyım? JSON codec’i yaygın olarak kullanılır, ancak log verilerinizin formatına bağlı olarak farklı codec’ler de tercih edilebilir.
3. Elasticsearch’in performansını nasıl izlerim? Elasticsearch’in kendi monitoring araçlarını kullanabilir veya external monitoring araçları kullanabilirsiniz.
4. Logları merkezi olarak kaydetmenin güvenlik yönleri nelerdir? Loglarınızı şifreleyerek ve güvenli bir ağ üzerinden göndererek güvenliği sağlayabilirsiniz. Erişim kontrolünü de dikkatlice yapılandırmanız önemlidir.
5. Bu sistem çok büyük loglar için ölçeklenebilir mi? Evet, Elasticsearch kümeleri oluşturarak ve uygun indeks yönetimi stratejileri kullanarak büyük miktarda log verisi için ölçeklenebilirlik sağlayabilirsiniz.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.