Zum Inhalt

Konfiguration

Ein Wert ist wirklich Pflicht: hannah.address, die Adresse deiner Core-Instanz. Alles andere kannst du zunächst so lassen.

Die übrigen Komponenten brauchst du dafür nicht anzufassen: Der LogCollector meldet sich beim Start selbst bei Hannah Core an, und Core teilt allen verbundenen Komponenten mit, wohin sie ihre Logs schicken sollen.

Der LogCollector hat keine eigene Datenbank für Einstellungen — die komplette Konfiguration liegt in config.yaml (native Installation: /etc/hannah-logcollector/config.yaml). Jeder Wert lässt sich zusätzlich per Umgebungsvariable überschreiben, siehe unten.

hannah:
  address: "192.168.8.15:50051"   # Hannah Core gRPC address

server:
  listen: ":50060"                # address the LogService listens on
  advertise_host: ""              # host announced to Hannah; empty = the address the collector connects from
  advertise_port: 0               # port announced to Hannah; 0 = the port from `listen`
  instance: "default"             # name of this collector

db:
  path: "/opt/hannah/logcollector/logs.db"

retention:
  days: 7
  max_size_mb: 256

log:
  level: "info"                   # debug | info | warn | error
Schlüssel Standard Zweck
hannah.address localhost:50051 host:port von Hannah Cores gRPC-Server
server.listen :50060 Adresse, auf der der LogCollector die Logs der Komponenten entgegennimmt
server.advertise_host leer Adresse, die Core den Komponenten als Ziel mitteilt. Leer lassen, dann nimmt Core die Adresse, von der aus sich der LogCollector verbunden hat. Nur setzen, wenn die übrigen Komponenten den LogCollector unter dieser Adresse nicht erreichen (z. B. Docker-Bridge-Netz, NAT)
server.advertise_port 0 Port, der den Komponenten mitgeteilt wird. 0 = Port aus server.listen. Nur nötig, wenn der Port nach außen anders gemappt ist
server.instance default Name dieses LogCollectors. Meldet sich ein zweiter mit demselben Namen an, ersetzt er den ersten
db.path logs.db Pfad zur SQLite-Datenbank. Temporäre Dateien für Exporte landen im selben Verzeichnis, es muss also beschreibbar sein
retention.days 7 Logs, die älter sind, werden gelöscht
retention.max_size_mb 256 Obergrenze für die gespeicherten Logs — ist sie erreicht, fallen die ältesten Einträge zuerst raus
log.level info Detailgrad der eigenen Meldungen des LogCollectors: debug, info, warn oder error

db.path bei nativer Installation

Der systemd-Dienst darf nur unter /opt/hannah/logcollector schreiben. Liegt db.path woanders, startet der LogCollector nicht. Die Vorlage config.example.yaml ist bereits richtig eingestellt.

Aufbewahrung

Es gilt, welche der beiden Grenzen (retention.days oder retention.max_size_mb) zuerst erreicht wird. Zur Orientierung: Eine typische Installation erzeugt nur wenige MB Logs pro Tag, 7 Tage bleiben also meist deutlich unter 100 MB. Die Größengrenze ist ein Sicherheitsnetz, falls eine Komponente das Log flutet.

Umgebungsvariablen

Praktisch vor allem für Docker. Eine gesetzte Variable hat Vorrang vor dem Wert in config.yaml.

Umgebungsvariable Schlüssel
HANNAH_LOGCOLLECTOR_HANNAH_ADDRESS hannah.address
HANNAH_LOGCOLLECTOR_SERVER_LISTEN server.listen
HANNAH_LOGCOLLECTOR_SERVER_ADVERTISE_HOST server.advertise_host
HANNAH_LOGCOLLECTOR_SERVER_ADVERTISE_PORT server.advertise_port
HANNAH_LOGCOLLECTOR_SERVER_INSTANCE server.instance
HANNAH_LOGCOLLECTOR_DB_PATH db.path
HANNAH_LOGCOLLECTOR_RETENTION_DAYS retention.days
HANNAH_LOGCOLLECTOR_RETENTION_MAX_SIZE_MB retention.max_size_mb
HANNAH_LOGCOLLECTOR_LOG_LEVEL log.level

Im Docker-Image ist HANNAH_LOGCOLLECTOR_DB_PATH bereits auf /app/data/logs.db gesetzt — /app/data als Volume einhängen, sonst sind die Logs nach dem Neuerstellen des Containers weg.

Nach Config-Änderungen neu starten

Der LogCollector liest seine Config nur beim Start:

sudo systemctl restart hannah-logcollector