🚀 Linux ve Windows sunucularda yeni müşterilere özel %20 indirim! Kod: ILK20  |  Hemen sipariş ver →
database Veritabanı Yönetimi

ClickHouse ile Sunucu Log Depolama ve Analizi: Hızlı ve Ölçeklenebilir Çözüm

ClickHouse, büyük hacimli sunucu loglarını depolamak ve anlık analiz etmek için ideal bir sütun tabanlı veritabanıdır. Bu makalede, kurulum, tablo tasarımı ve sorgulama ipuçlarını bulacaksınız.

person
Editör
(Güncellendi: 28 Tem 2026) schedule 4 dk okuma visibility 21 görüntülenme

Sunucu logları, sistem yöneticileri için altın değerinde bilgiler taşır. Ancak bu logların birikmesi, geleneksel veritabanlarının başa çıkamayacağı boyutlara ulaşabilir. İşte bu noktada ClickHouse devreye giriyor: sütun bazlı mimarisi sayesinde hem yüksek sıkıştırma hem de inanılmaz sorgu hızları sunuyor. HostingServer.com.tr olarak, hosting ortamlarında log yönetimini ciddiye alıyor ve ClickHouse'u bu alanda en güçlü araçlardan biri olarak görüyoruz.

Neden ClickHouse?

ClickHouse, verileri satır bazlı değil, sütun bazlı depolar. Bu, özellikle log analizi gibi birçok satır üzerinde belirli sütunların sorgulandığı senaryolarda devrim yaratır. Örneğin, Apache erişim loglarını düşünün: 100 milyon satırlık bir tabloda sadece IP adreslerini ve HTTP durum kodlarını sıralamak istiyorsunuz. Geleneksel bir MySQL veritabanı bu işlemi dakikalarla ölçerken, ClickHouse saniyeler içinde cevap verir. Üstelik lz4 veya zstd sıkıştırma algoritmalarıyla depolama alanını 5 ila 10 kata kadar azaltabilirsiniz. Biz denemelerimizde, 50 GB'lık ham Apache logunu ClickHouse'ta yalnızca 3 GB'a sıkıştırdık.

Bir diğer avantajı ise gerçek zamanlı sorgulama yeteneği. Loglarınızı sürekli olarak ClickHouse'a besleyebilir ve saniyeler içinde panolarınızda görebilirsiniz. Örneğin, bir DDoS saldırısı anında IP bazlı istek sayılarını anlık olarak izlemek mümkün. Ayrıca, SQL benzeri bir sorgu dili kullandığından, mevcut bilgilerinizi kolayca aktarabilirsiniz.

Loglar İçin Tablo Tasarımı

ClickHouse'da log depolamak için en yaygın yöntem, MergeTree ailesi tablolar kullanmaktır. Bir Apache erişim logu tablosu şöyle tanımlanabilir:

CREATE TABLE apache_logs ( timestamp DateTime, ip String, method String, url String, status UInt16, bytes UInt32, user_agent String ) ENGINE = MergeTree() ORDER BY (timestamp, ip);

Burada ORDER BY kısmı çok önemli. ClickHouse, verileri bu anahtara göre sıralar ve sorguları bu sıraya göre optimize eder. Örneğin, 'belirli bir zaman aralığındaki IP'ler' sorgusu çok hızlı çalışır. Ayrıca PARTITION BY ile verileri günlük veya aylık bölümlere ayırabilir, eski logları kolayca temizleyebilirsiniz. Örneğin:

ENGINE = MergeTree() PARTITION BY toYYYYMM(timestamp) ORDER BY (timestamp, ip);

Bu yapı, her ayı ayrı bir bölümde tutar ve gerektiğinde 'DROP PARTITION' ile eski verileri saniyeler içinde silebilirsiniz.

Veri Besleme ve Pratik İpuçları

Logları ClickHouse'a aktarmak için birkaç yöntem var. En yaygını, FileBeat veya Vector gibi araçlarla veriyi toplayıp HTTP API üzerinden göndermek. Ancak doğrudan dosyadan da yükleyebilirsiniz:

cat access.log | clickhouse-client --query="INSERT INTO apache_logs FORMAT TabSeparated"

Burada format olarak TabSeparated veya JSONEachRow kullanabilirsiniz. Dikkat edilmesi gereken bir nokta: ClickHouse, yazma işlemlerini batch halinde yapmanızı önerir. Tek tek satır eklemek yerine, saniyede birkaç bin satırı toplu olarak ekleyin. Aksi takdirde performans düşebilir.

İpucu: Eğer log sütunlarınız çok sayıdaysa, Materialized View ile özet tablolar oluşturun. Örneğin, saatlik IP sayıları için ayrı bir tablo tutmak, sorguları 50 kat hızlandırabilir.

Analiz Örnekleri

ClickHouse ile yapabileceğiniz analizler sınırsız. İşte birkaç örnek sorgu:

  1. En çok istek yapan IP'ler: SELECT ip, count() AS cnt FROM apache_logs WHERE timestamp > now() - INTERVAL 1 HOUR GROUP BY ip ORDER BY cnt DESC LIMIT 10;
  2. HTTP 404 hatalarının zaman dağılımı: SELECT toStartOfHour(timestamp) AS hour, count() FROM apache_logs WHERE status = 404 GROUP BY hour ORDER BY hour;
  3. En popüler sayfalar: SELECT url, sum(bytes) AS total_bytes FROM apache_logs WHERE method = 'GET' GROUP BY url ORDER BY total_bytes DESC LIMIT 20;

Bu sorguların tamamı, 100 milyon satırlık bir tabloda bile saniyeler içinde döner. Hatta bir projemizde, 2 milyar satırlık log verisi üzerinde haftalık raporları 3 saniyenin altında alabildik.

ClickHouse'u Hosting Ortamında Kullanmak

HostingServer.com.tr olarak, müşterilerimize ClickHouse'u önerirken mutlaka bellek ve CPU planlaması yapmalarını tavsiye ediyoruz. ClickHouse, RAM'den oldukça faydalanır; özellikle büyük veri kümelerinde en az 8-16 GB RAM önerilir. Ayrıca SSD disk kullanımı, yazma ve okuma hızlarını ciddi oranda iyileştirir. Yedekleme için ise clickhouse-backup aracı kullanışlıdır.

Sonuç olarak, ClickHouse sunucu log yönetiminde devrim yaratan bir veritabanı. Eğer hâlâ MySQL veya PostgreSQL ile log analizi yapıyorsanız, geçiş yapmayı düşünmelisiniz. Basit başlayın, birkaç haftalık log verisiyle test edin ve farkı görün. HostingServer.com.tr forumlarında ClickHouse ile ilgili sorularınızı paylaşarak topluluktan da destek alabilirsiniz.

Bu Makaleyi Paylaş

İlgili Yazılar