Skip to content
🚀 20% OFF for new customers on Linux and Windows servers! Code: ILK20  |  Order Now →
database Datenbankverwaltung

ClickHouse zur Server-Log-Speicherung und -Analyse: Schnelle und skalierbare Lösung

ClickHouse ist eine ideale spaltenbasierte Datenbank zum Speichern und zur Echtzeitanalyse großer Mengen von Server-Logs. In diesem Artikel finden Sie Tipps zur Installation, Tabellendesign und Abfragen.

person
Editör
(Aktualisiert: 10 Sep 2026) schedule 4 Min. Lesezeit visibility 12 Aufrufe

Server-Logs enthalten für Systemadministratoren wertvolle Informationen. Doch die Ansammlung dieser Logs kann Größen erreichen, mit denen traditionelle Datenbanken nicht mehr zurechtkommen. Hier kommt ClickHouse ins Spiel: Dank seiner spaltenbasierten Architektur bietet es sowohl hohe Komprimierung als auch unglaubliche Abfragegeschwindigkeiten. Als HostingServer.com.tr nehmen wir das Log-Management in Hosting-Umgebungen ernst und sehen ClickHouse als eines der leistungsstärksten Werkzeuge in diesem Bereich.

Warum ClickHouse?

ClickHouse speichert Daten nicht zeilen-, sondern spaltenbasiert. Dies revolutioniert Szenarien, in denen viele Zeilen nach bestimmten Spalten abgefragt werden, wie z.B. bei der Log-Analyse. Stellen Sie sich Apache-Zugriffslogs vor: In einer Tabelle mit 100 Millionen Zeilen möchten Sie nur IP-Adressen und HTTP-Statuscodes sortieren. Während eine traditionelle MySQL-Datenbank Minuten benötigt, antwortet ClickHouse in Sekunden. Zudem können Sie mit den Komprimierungsalgorithmen lz4 oder zstd den Speicherplatz um das 5- bis 10-fache reduzieren. In unseren Tests haben wir 50 GB rohe Apache-Logs in ClickHouse auf nur 3 GB komprimiert.

Ein weiterer Vorteil ist die Fähigkeit zur Echtzeitabfrage. Sie können Ihre Logs kontinuierlich in ClickHouse einspeisen und innerhalb von Sekunden in Ihren Dashboards sehen. Beispielsweise ist es möglich, während eines DDoS-Angriffs die IP-basierten Anfragezahlen in Echtzeit zu überwachen. Da ClickHouse eine SQL-ähnliche Abfragesprache verwendet, können Sie Ihr vorhandenes Wissen leicht übertragen.

Tabellendesign für Logs

Die gängigste Methode zum Speichern von Logs in ClickHouse ist die Verwendung von Tabellen der MergeTree-Familie. Eine Tabelle für Apache-Zugriffslogs könnte wie folgt definiert werden:

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);

Der ORDER BY-Teil ist hier sehr wichtig. ClickHouse sortiert die Daten nach diesem Schlüssel und optimiert Abfragen entsprechend. Beispielsweise läuft eine Abfrage nach „IPs in einem bestimmten Zeitraum“ sehr schnell. Zudem können Sie mit PARTITION BY die Daten in tägliche oder monatliche Partitionen aufteilen und alte Logs leicht bereinigen. Beispiel:

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

Diese Struktur hält jeden Monat in einer eigenen Partition und ermöglicht es, bei Bedarf alte Daten mit 'DROP PARTITION' innerhalb von Sekunden zu löschen.

Datenzuführung und praktische Tipps

Es gibt mehrere Methoden, Logs in ClickHouse zu importieren. Die gängigste ist das Sammeln der Daten mit Tools wie FileBeat oder Vector und das Senden über die HTTP-API. Sie können aber auch direkt aus einer Datei laden:

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

Hier können Sie als Format TabSeparated oder JSONEachRow verwenden. Ein wichtiger Punkt: ClickHouse empfiehlt, Schreibvorgänge in Batch-Form durchzuführen. Fügen Sie lieber einige tausend Zeilen pro Sekunde gebündelt hinzu, anstatt einzelne Zeilen einzeln. Andernfalls kann die Leistung leiden.

Tipp: Wenn Sie viele Log-Spalten haben, erstellen Sie mit Materialized Views zusammenfassende Tabellen. Zum Beispiel kann eine separate Tabelle für stündliche IP-Zahlen die Abfragen um das 50-fache beschleunigen.

Analysebeispiele

Die mit ClickHouse möglichen Analysen sind grenzenlos. Hier einige Beispielabfragen:

  1. IPs mit den meisten Anfragen: SELECT ip, count() AS cnt FROM apache_logs WHERE timestamp > now() - INTERVAL 1 HOUR GROUP BY ip ORDER BY cnt DESC LIMIT 10;
  2. Zeitliche Verteilung von HTTP-404-Fehlern: SELECT toStartOfHour(timestamp) AS hour, count() FROM apache_logs WHERE status = 404 GROUP BY hour ORDER BY hour;
  3. Beliebteste Seiten: SELECT url, sum(bytes) AS total_bytes FROM apache_logs WHERE method = 'GET' GROUP BY url ORDER BY total_bytes DESC LIMIT 20;

All diese Abfragen laufen selbst bei einer Tabelle mit 100 Millionen Zeilen in Sekunden. In einem unserer Projekte konnten wir wöchentliche Berichte über 2 Milliarden Logzeilen in unter 3 Sekunden abrufen.

ClickHouse in der Hosting-Umgebung einsetzen

Als HostingServer.com.tr empfehlen wir unseren Kunden, bei der Verwendung von ClickHouse unbedingt die Speicher- und CPU-Planung zu berücksichtigen. ClickHouse profitiert stark von RAM; insbesondere bei großen Datenmengen werden mindestens 8-16 GB RAM empfohlen. Auch die Verwendung von SSDs verbessert die Schreib- und Lesegeschwindigkeiten erheblich. Für Backups ist das Tool clickhouse-backup nützlich.

Zusammenfassend ist ClickHouse eine revolutionäre Datenbank für das Server-Log-Management. Wenn Sie immer noch MySQL oder PostgreSQL für die Log-Analyse verwenden, sollten Sie einen Wechsel in Betracht ziehen. Fangen Sie einfach an, testen Sie mit einigen Wochen Logdaten und sehen Sie den Unterschied. Sie können auch in den Foren von HostingServer.com.tr Fragen zu ClickHouse stellen und Unterstützung von der Community erhalten.

Diesen Artikel teilen

Verwandte Beiträge