1. LOGLARI NEREDE SAKLAYALIM?
Dr. ERTUĞRUL AKBAŞ
eakbas@gmail.com
Kelimeler: Log Yönetimi, RDMS, Vertical DB, Kolon Tabanlı Veri tabanları, NoSQL,
SIEM, İstatistiksel Analiz.
Log Yönetim sistemlerinde logların saklanması ve loglar üzerinde analizlerin yapılması en
kritik işlemlerden biridir.
Bu konuda teknolojik altyapı ne durumdadır ve endüstriyel olarak mevcut ürünler hangi
yöntemi tercih etmektedirler sorusuna aşağıda cevap arayacağız.
Bu konuda 6 yöntem tercih edilmektedir.
1- Özel Yazılım Geliştirme: Ticari ürünlerin bir kısmı kendi saklama ve analiz
sistemlerini kendileri geliştirmektedir. Örnek QRadar [4], Splunk [5], NetIQ Sentinel
[15] ve RSA enVision [16] . IBM QRadar ayrıca postgresql de kullanmaktadır.
2- Big Data için geliştirilen Kolon Tabanlı (Columnar -Vertical DB) teknolojisini
kullananlar. Örnek olarak Solarwinds Log Manager [6], Sonicwall log manager [7],
Blackstratus SIEM Storm [10,11], Sensage (Şimdi Helix oldu) [24] gibi.
3- Mevcut DB lerden türetme. Örnek McAffe Nitrosecurty SIEM ürünü MySQL den
NitroEDB geliştirmiştir. [8,9]
4- NoSQL veritabanı kullanımı özellikle açık kaynak kodlu uygulamalarda görülür.
Burada en bilinen NoSQL DB MongoDB dir. Örnek olarak Graylog2 [12] verilebilir.
Ayrıca Ticari olarak Log Yönetimi ve SIEM çözümünde kullanan olmamakla birlikte
kendi sistem loglarını NoSQL üzerinde tutan pek çok firma mevcuttur.
5- RDMS kullanan sistemler. Örnek olarak Tripwire [13] , Adventnet ürünleri [14]
6- Search engine temelli sistemeler: Örnek Logstash [17], Elasticsearch [18], Kibana
[19], Logly [22]
Eğer teker teker teknolojileri hızlıca değerlendirmek gerekirse:
Özel Yazılımlar:
Özel yazılım geliştirme mevcut çözümün ihtiyaçlarına en uygun şekilde geliştirme
olanaklarını sunacağı için çok avantajlıdır. Burada çıkabilecek sorunlar uyum ve dışarıya port
etmeyle ilgili olabilir.
2. Kolon Tabanlı (Columnar -Vertical DB) :
Vertical DB teknolojileri özellikle Big Data üzerinde istatistiksel analiz için tasarlanmış
sistemlerdir ve yüzlerce sistemde kullanılmaktadır ve çok hızlıdır. [23]
Büyük verilerin analizinde ortaya çıkacak raporlarda her bir verinin tek tek gösterilmesi hiçbir
zaman sağlıklı analiz sağlamaz; bu analiz mantığına ters bir durumdur. Dolayısı ile analiz
temelli bir felsefe ile veri tabanlarının tasarlanması gerekir gerçeğinden yola çıkarak
tasarlanmıştır. Ayrıca daha fazla rapor demek, sorgu miktarının artmasına yol açar. Ad-hoc
sorguların fazla olması da sorgulara daha hızlı cevap verilmesini gerektirir. Özellikle
raporların aggregated veri çekmesi nedeniyle bu konuya odaklanmış sistemler gerekir. Tüm
bir satırı alıp, gerekli olan kolonları ayıklayıp daha sonra aggregation yapmak, performans
açısından sunucuyu gereksiz zorlamaktan öteye gitmez. Gelişmesi içinse daha iyi (daha
pahalı) hardware gereksinimi doğar. Columnar veri tabanlarında ise böyle bir sorun olmaz,
çünkü zaten aggregate edilecek kolonlar kendi içlerinde hesaplanıp sunulur.
Columnar veri tabanları sayesinde veriler birbirine sabit şekilde bağlı olmaktan çıkıp,
kullanılabilir şekilde bağlanmaya başlanmıştır.
Mevcut DB lerden Türetme:
Mevcut DB lerden türetme de performanslı bir yöntemdir. İhtiyaçlar bilindiği için türetme o
yönde yapılır ve sistem bu türetmeden avantaj sağlar.
NoSQL Sistemler:
NoSQL (MongoDB) sistemleri :
Çok büyük verileri saklayabilir,
Sık sık değişen veri yapılarında kullanışlıdır,
Okuma ve yazma performansı SQL sistemlerine göre zaman zaman daha hızlı olabilir
ama Vertical DB lere göre yavaştır [20,21]
ORM teknolojilerini kullanan uygulamalara göre daha hızlıdır
Sistemi yatay olarak genişletebiliriz (Binlerce sunucusu olan bir sistem kurabiliriz )
NoSQL (MongoDB) dezavantajları:
Çok fazla disk alanı ihtiyacı duyar [1]
NoSQL Ram'da çalışmaktadır. Veriler XML veya JSON şeklinde tutulur. NoSQL
Excel'e benzetilebilir. BigTable olarak veriler tutulmaktadır. Çok daha fazla memory
kullanır [2,3] hatta farkında olmadan sistem kaynaklarını bitirebilirsiniz.
Eşzamanlılık problemi. Sistemde aynı anda yazma ve okuma yaparsanız sistem write
lock temelli çalıştığı [2] için bloklanır ve write önceliklidir. Dolayısı ile yüksek
hızlarda yazma için ya çok ciddi server yatırımları yapmanız gerekir ya da sorgular
yavaşlar veya log kaybı olur.
3. İlişkisel veritabanı yönetim sistemlerindeki işlem hareketleri (transaction) kavramı
NoSQL veritabanı sistemlerinde bulunmadığı için veri kaybı söz konusu
olabilmektedir.
NoSQL sistemi bir problemle karşılaştığında güncelleme ve yedekleme sistemine
güvenemeyiz. Bu da hızlı olmasının getirdiği bir sıkıntıdır.
RDMS Sistemler:
Çok büyük veriler için uygun değildir. Ya çok ciddi donanım yatırımı gerektirir ya da
yüksek EPS değerlerine çıkamaz.
Search Engine Temelli Sistemeler:
Log aramada avantajlıdırlar ama bir SIEM çözümü ihtiyacını yapısal olarak
karşılayamazlar. Tasarımları arama yapmak üzeredir istatistiksel fonksiyonlar eksiktir.
Veri analizi amaçlı değillerdir.
Sonuç
Burada yapılan projelerden edinilen tecrübeler, sistemlerin tasarım felsefelerine ve endüstriyel
uygulamalara bakarak:
Logları analiz amaçlı kullanacaksanız Columnar Database iyi bir seçenek iken tek-tek veriye
ulaşacaksanız NoSQL veritabanları daha iyi sonuç verecektir.
Değişik veri tabanlarını karşılaştırmalı bir şekilde incelediğimiz bir yazıyı burada tekrar
paylaşabiliriz.
http://www.slideshare.net/anetertugrul/log-ynetimi-ve-arama-hz
REFERANSLAR
1- http://www.databaseskill.com/3802357/
2- http://halls-of-valhalla.org/beta/articles/the-pros-and-cons-of-mongodb,45/
3- http://docs.mongodb.org/manual/faq/diagnostics/
4- http://www-03.ibm.com/certify/tests/objC2150-195.shtml
5- http://answers.splunk.com/answers/6467/what-is-splunk-database-engine
6- http://knowledgebase.solarwinds.com/kb/questions/4426/5.5+Software+Release+Note
s
7- https://www.infobright.com/index.php/case-study/sonicwall-faster-queries-ad-hoc-
reporting/#.U9zBoWPcPSU
8- http://enterprise-dw.blogspot.com.tr/2010/04/external-mysql-storage-engines-for-
data.html
9- https://kc.mcafee.com/corporate/index?page=content&id=KB74219