read old apache access logs

Fluentd ile Apache Loglarının MongoDB’de Saklanması

Merhaba

Fluentd, Linux sunuculardan log toplama ve parse etme konusunda oldukça başarılı bir açık kaynak kodlu yazılım. Bir çalışmada ihtiyacım olması neticesiyle tanıştığım fluentd, kendi yapısına parse modulleri ile bir çok log türü için hizmet verebilmekte. Ayrıca custom parse regex tanımlamalarıda yapılabiliyor.  En güçlü özelliği için servis olarak çalışıp parse edilen logları Postgresql, MongoDB, Hadoop gibi veri tabanı sistemlerinde saklayabilmekte.

Fluent Kurulum Öncesi

Linux’te bazı ayarlamaların yapılması gerekmektedir.

/etc/security/limits.conf dosyasının sonuna aşağıdaki satırları yazınız.

ve Kernel parametrelerinin düzenlenmesi için aşağıdaki komutları yazınız.

Son olarak log zamanlarının doğru olması için ntp servisini kurunuz ve açılışta çalışması için konfigüre ediniz.

Fluent Kurulum

CentOS üzerine kurulum için basit bir shell betiği bulunmaktadır.

Bu script ile kurulum otomatik olarak tamamlanacaktır. Kurulum tamamlandığında ise aşağıdaki komut ile servisi çalıştırabilirsiniz.

Şu anda fluent kurulumu tamamlanmış bulunmaktadır. Şimdi ise fluentd ayarlarının yapılıp logların mongoDB sunucusuna aktarılması gerçekleştirilmelidir.

MongoDB Centos Kurulumu

MongoDB’nin CentOS üzerine kurulumu için aşağıdaki satırları,  /etc/yum.repos.d/mongodb.repo dosyası oluşturultan sonra içine yazılmalıdır.

Ardından aşağıdaki komut ile kurulum tamamlanmalıdır.

Fluent Konfigürasyonu

CentOS’ta default apache log dosyası /var/log/httpd/access_log olarak tanımlıdır. Bu dosyadaki her değişikliğin parse edilerek JSON objesi olarak mongoDB veri tabanı sistemine aktarılması için aşağıdaki konfigürasyonu /etc/td-agent/td-agent.conf dosyasına kayıt ediniz.

Okumak istenilen log dosyasına aşağıda yetkiler verilmelidir.

Ardından servis yeniden başlatıldığında fluentd, parse ettiği apache loglarını 10 saniyede bir mongodb’ye aktaracaktır.