Ich hatte eine Testinstanz von Signoz mit dem offiziellen Helm Chart aufgesetzt und nach und nach dann Metriken, Traces und Logs eingebunden. Das ganze lief wunderbar, nur stellte ich fest, dass pro Tag ca. 4gb an Daten dazu kamen, meine erfassten Daten aber weit von dieser Menge entfernt waren.
Nach etwas Recherche stieß ich dann darauf, dass Signoz selbst das Problem ist – es erstellt für sich selbst auch Tracelogs, die diese Datenmengen erzeugen. Man kann nun zum einen einfach die Tracelogs in der Config abschalten, oder ihnen aber eine eigene Retention geben. Das bedeutet, dass die Daten nur für einen bestimmten Zeitraum gespeichert werden, und alles was älter ist, automatisch gelöscht wird.
Um zu prüfen, ob du von dem Problem betroffen bist, schalte dich einfach in eine Shell im Clickhouse Pod und starte den clickhouse-client. Dann führe folgende Queries aus:
SELECT
database,
formatReadableSize(sum(bytes_on_disk)) AS size
FROM system.parts
WHERE active = 1
GROUP BY database
ORDER BY sum(bytes_on_disk) DESC;Damit bekommt man die Größen der jeweiligen Datenbanken angezeigt. Sollte da die “system” Datenbank ziemlich viel Speicher fressen, dann schaut mal mit
SELECT
table,
formatReadableSize(total_bytes) AS size
FROM system.tables
WHERE database = 'system'
ORDER BY total_bytes DESC;nach welche Tabellen da genau betroffen sind. Sollte es wie bei mir die “trace_log” Tabelle sein, dann solltet ihr hier eine Rentention setzen:
ALTER TABLE system.trace_log MODIFY TTL event_time + INTERVAL 1 HOUR;
Damit wird sie auf eine Stunde gesetzt, was noch immer ermöglicht, Dinge zu debuggen, aber eben nicht extrem viel Speicher frisst. Falls ihr einen Fehler bekommt, dass die Operation nicht durchgeführt werden konnte, dann kann es sein, dass die Tabelle schon zu groß ist. In diesem Fall kann man sie einfach mittels
TRUNCATE TABLE system.trace_log;
einmal komplett leer machen und anschließend dann die Retention setzen.

