Petrel / Benutzerhandbuch

Ein Signal, bevor etwas ausfällt.

Petrel sammelt technische Zustandsberichte von deinen Systemen und meldet Auffälligkeiten per E-Mail. Dieses Handbuch führt dich von der Einrichtung bis zur Fehlersuche.

Collector einrichten
  1. Collectormisst lokal
  2. Petrelprüft Regeln
  3. E-Mailmeldet Alarm

Was du hier tun kannst

Collector installieren, einen ersten Bericht auslösen, E-Mail-Alarme einordnen und typische Fehler prüfen. Für neue Sites und Sources gibt es ein eigenes Admin-Kapitel. Die Befehle lassen sich direkt kopieren.

Wichtig vorab

Petrel hat in dieser Phase kein Dashboard und keinen Login. Dieses Handbuch zeigt keine Live-Daten und nimmt keine Schlüssel entgegen.

02

Inbetriebnahme

Collector einrichten

Ein Collector läuft auf jedem überwachten Linux-System. Er sendet signierte Berichte über HTTPS an Petrel.

1

Quelle registrieren lassen

Eine administrierende Person legt deine Site und Source in Petrel an und stellt dir den zugehörigen Schlüssel über einen sicheren Kanal bereit. Ohne diese Registrierung werden Berichte abgewiesen. Der genaue Ablauf steht im Admin-Kapitel.

2

Installer auf dem Zielsystem starten

Du brauchst Linux auf x86_64 oder aarch64, systemd, wget und Administratorrechte. Der Installer wählt die Architektur automatisch, prüft die Prüfsumme und fragt Site, Source und Schlüssel interaktiv ab.

Terminal · Zielsystem
wget -qO- https://petrel.app.vieten.cloud/download/install.sh | sudo bash

Der Schlüssel gehört nicht in eine URL, Shell-History oder ein Ticket. Bei einem erneuten Lauf behält der Installer Konfiguration und Schlüssel bei.

3

Ersten Bericht prüfen

Nach der Installation sind zwei Timer aktiv. Ein Heartbeat läuft alle 30 Minuten, ein ausführlicher Bericht alle drei Stunden. Mit diesem Befehl sendest du sofort einen Heartbeat:

Terminal · Zielsystem
sudo systemctl start petrel-collector@heartbeat.service

Einrichtung im Blick

Die Häkchen gelten nur für diese geöffnete Seite.

0 von 4 Schritten markiert

Binary einzeln herunterladen

Wenn du nur das ausführbare Programm brauchst, wähle die Architektur. Die vollständige Einrichtung mit Konfiguration und Timern erfolgt dann von Hand.

Terminal · Binary-Download
wget -O petrel-collector https://petrel.app.vieten.cloud/download/linux-amd64/petrel-collector

Eine passende .sha256-Datei liegt neben jedem Binary. Der Installer kontrolliert sie automatisch.

03

Signale

Welche Berichte Petrel erhält

Der Collector misst lokal. Petrel fordert keine Befehle auf deinem System an.

Alle 30 Minuten

Heartbeat

Ein kurzes Lebenszeichen. Bleibt es aus, kann Petrel nach 75 Minuten warnen und nach 180 Minuten kritisch alarmieren — nachdem die Quelle bereits einmal berichtet hat.

Alle 3 Stunden

Ausführlicher Bericht

Enthält technische Kennzahlen wie CPU, Speicher und Dateisystem. Weitere Checks für ZFS, UPS, Docker, NVMe, Proxmox oder MariaDB werden nur nach gezielter Konfiguration aktiv.

Bei einem Ereignis

Technisches Event

Lokale Integrationen können ein Ereignis sofort senden, etwa einen fehlgeschlagenen Backup-Lauf. Ein Event löst nur dann einen Alarm aus, wenn dafür eine passende Regel eingerichtet ist.

Beispiel: technisches Backup-Event

Der Aufruf benötigt eine bereits installierte und konfigurierte Collector-Instanz.

Terminal · Zielsystem
sudo -u petrel petrel-collector -type event -event-kind backup -event-entity main -event-state failed
04

Benachrichtigung

Alarme per E-Mail verstehen

Petrel bewertet festgelegte Regeln und sendet in dieser Phase ausschließlich E-Mails.

Beispiel einer Alarmmail

[CRITICAL] Petrel: 2 Alarme auf rocky/rocky

Site: rocky · Source: rocky
SchwereRegelBefundAktion
KRITISCHroot_full_criticalDateisystem ist fast voll.Quittieren
WARNUNGmemory_lowFreier Arbeitsspeicher ist knapp.Quittieren

Die echte E-Mail enthält pro Alarm einen individuellen Quittierlink und die ermittelten Handlungshinweise.

Warnung

Eine Schwelle ist überschritten, aber die Lage ist noch nicht als kritisch eingestuft. Beispiel: hoher Speicherplatzverbrauch.

Kritisch

Ein schwerer Zustand braucht zeitnahe Prüfung. Der Betreff trägt dann [CRITICAL].

Mails zu einem Fehler stoppen

Öffne in der Alarmmail den Link Quittieren beim betroffenen Alarm und bestätige auf der Petrel-Seite. Damit werden weitere Mails zu dieser Alarmepisode unterdrückt, während sie weiter geprüft wird. In einer Mail mit mehreren Alarmen hat jede Tabellenzeile einen eigenen Link. Das bloße Öffnen der Seite ändert noch nichts; so können Mail-Vorschauen den Alarm nicht versehentlich quittieren. Behandle den Link vertraulich: Wer ihn besitzt, kann den Alarm quittieren.

Mehrere neue Fehler aus demselben Bericht landen gemeinsam in einer E-Mail. Wiederholte Berichte zu einem offenen oder quittierten Alarm erzeugen keine neue Mail. Sobald die Regel wieder gesund ist, schließt Petrel die Alarmepisode. Ein späterer neuer Vorfall kann erneut eine Mail auslösen. Eine separate Entwarnungs-Mail gibt es derzeit nicht. Handlungshinweise können durch ein Modell ergänzt werden; fällt es aus, bleibt die regelbasierte Meldung erhalten.

05

Alltag

Betrieb und Kontrolle

Die wichtigsten Prüfungen laufen auf dem überwachten Host. Die öffentliche Health-URL zeigt nur, ob die zentrale API erreichbar ist.

Timer prüfen

Zeigt, ob der regelmäßige Versand eingerichtet ist.

Terminal · Zielsystem
systemctl status petrel-heartbeat.timer petrel-full.timer

Letzten Lauf ansehen

Bei Versandproblemen findest du hier den HTTP-Status oder einen Verbindungsfehler. Gib den geheimen Schlüssel nicht weiter.

Terminal · Zielsystem
journalctl -u petrel-collector@heartbeat.service -n 30 --no-pager

Zentrale API prüfen

Ein {"status":"ok"} bestätigt die Erreichbarkeit von API und Datenbank. Es bestätigt nicht, dass deine Source korrekt angemeldet ist.

Terminal · Zielsystem
curl -fsS https://petrel.app.vieten.cloud/healthz
06

Diagnose

Wenn kein Signal ankommt

Öffne den Fall, der zu deiner Beobachtung passt.

Der Download oder Installer schlägt fehl

Prüfe DNS, HTTPS und ob wget verfügbar ist. Die URL petrel.app.vieten.cloud/healthz sollte antworten. Der Installer unterstützt nur Linux x86_64 und aarch64 mit systemd.

Bei einer Prüfsummenabweichung die Datei verwerfen und den Download erneut starten. Führe ein Binary mit fehlgeschlagener Prüfung nicht aus.

Der Timer läuft, aber Petrel nimmt keinen Bericht an

Starte einen Heartbeat manuell und lies das Journal. HTTP 401 weist meist auf Site/Source, Schlüssel oder eine stark abweichende Systemzeit hin. Prüfe die Daten mit der administrierenden Person, ohne den Schlüssel in ein Ticket zu kopieren.

HTTP 422 bedeutet, dass der Bericht nicht zum erwarteten Schema passt, zum Beispiel wegen einer unbekannten Metrik. Ein älterer Collector sollte zuerst aktualisiert werden.

Es kommt keine Alarm-Mail

Prüfe, ob eine Regel wirklich ausgelöst wurde. Nicht jeder Bericht und nicht jedes Event erzeugt eine Mail. Wiederholte Berichte zum selben offenen oder quittierten Alarm erzeugen keine neue Mail. Prüfe anschließend den Spam-Ordner und die hinterlegte Empfängeradresse mit der administrierenden Person.

Die zentrale Health-URL antwortet, aber mein Host bleibt stumm

Der Healthcheck testet nur die zentrale API. Prüfe auf deinem Host beide Timer, den letzten Service-Lauf, Netzwerkzugang zu Petrel und die lokale Collector-Konfiguration unter /etc/petrel/config.yaml.

Ich möchte die Erfassung anhalten

Deaktiviere beide Timer. Die lokale Warteschlange und Konfiguration bleiben erhalten. Für die spätere Wiederaufnahme aktiviere sie erneut.

Terminal · Zielsystem
sudo systemctl disable --now petrel-heartbeat.timer petrel-full.timer
07

Vertrauen

Daten und Grenzen

Petrel ist für technische Zustände gebaut, nicht für Anwendungsinhalte.

Geeignete Daten

Auslastung, freier Speicher, Zustände von Diensten, Backup-Alter und andere freigegebene technische Kennzahlen. Die API akzeptiert nur bekannte Metriknamen und begrenzte Werte.

Nicht senden

Keine Logzeilen, Dokumente, SQL-Zeilen, Patientendaten, E-Mail-Inhalte oder Zugangsdaten in Metriken und Events.

Jede Source signiert ihren Bericht mit einem eigenen Schlüssel. Der Collector sendet ausschließlich per HTTPS. Bei einer vorübergehenden Störung hält er Berichte lokal in einer begrenzten Warteschlange vor. Dieses Handbuch ist eine eigenständige statische Webseite; Suche, Häkchen und Kopierknöpfe laufen nur im Browser und kontaktieren Petrel nicht.

08

Für Administratoren

Sites und Sources einrichten

Dieses Beispiel legt die Site lab mit der Source node1 an. Ersetze diese Namen und den Beispiel-Empfänger überall konsistent durch deine Werte.

Reihenfolge und Arbeitsorte

YAML-Dateien bearbeitest du im lokalen Petrel-Repository. Der Server läuft auf Rocky. Der Collector kommt auf den überwachten Zielhost. Die Reihenfolge ist: Site-Dateien erstellen, lokal prüfen, nach Rocky deployen, Source-Schlüssel erzeugen, API neu laden, Schlüssel sicher übertragen und Collector installieren.

1 · Lokales Repository

Site und Regeln definieren

Lege für eine neue Site config/sites/lab/ mit site.yaml, rules.yaml, notifications.yaml und knowledge.md an. Ordnername und id müssen übereinstimmen. Site- und Source-Kennungen erlauben Kleinbuchstaben, Ziffern, _ und -, jeweils bis 64 Zeichen.

Terminal · Petrel-Repository
mkdir -p config/sites/lab
config/sites/lab/site.yaml
id: lab
name: Beispiel-Site
timezone: Europe/Berlin
sources: [node1]
maintenance_states: [planned_maintenance]
config/sites/lab/rules.yaml
rules:
  - id: root_full_warning
    source: node1
    path: host.root_used_percent
    operator: greater_than
    value: 75
    severity: warning
    category: storage
  - id: root_full_critical
    source: node1
    path: host.root_used_percent
    operator: greater_than
    value: 90
    severity: critical
    category: storage
config/sites/lab/knowledge.md
# Beispiel-Site

- node1 ist ein Linux-Host für technische Infrastrukturmeldungen.
- Wartungen werden vorab angekündigt.

Trage in knowledge.md nur zutreffende technische Fakten ein, keine Schlüssel oder personenbezogenen Inhalte. Für eine bestehende Site ergänzt du die Source in deren site.yaml unter sources und passt Regeln bei Bedarf an. Belasse die Liste in der Inline-Form sources: [node1, node2], die das Provisionierungsskript erwartet. Gemeinsame Intervalle und Schwellen stehen in config/common.yaml und gelten Site-übergreifend.

2 · Lokales Repository

E-Mail-Routen festlegen

In dieser Phase gibt es nur E-Mail. Ersetze die Beispieladresse durch den tatsächlichen Empfänger. Ein Alarm wird nur zugestellt, wenn seine Schwere zu einer Route passt.

config/sites/lab/notifications.yaml
channels:
  ops_email:
    type: email
    recipients: [admin@example.invalid]
routes:
  - match: {severity: warning}
    channels: [ops_email]
  - match: {severity: critical}
    channels: [ops_email]

Regelpfade müssen in Petrels Metrik-Allowlist stehen. Fehlt ein Messwert im Bericht, wird seine Regel nicht ausgewertet. greater_than bedeutet strikt größer als der Grenzwert.

3 · Admin-Rechner

Konfiguration prüfen und deployen

Führe die Befehle im Wurzelverzeichnis des Petrel-Repositories aus. Richte .venv bei Bedarf einmalig ein, prüfe die Konfiguration und versioniere die Dateien vor dem Deploy. Das Deployskript braucht den Codex-SSH-Key und den read-only 1Password-Vault AI. Es archiviert den vorherigen Release und erhält vorhandene Source-Schlüssel.

Terminal · einmalige lokale Vorbereitung
python3 -m venv .venv
.venv/bin/pip install -e 'server[test]'
Terminal · Petrel-Repository
PYTHONPATH=server PETREL_CONFIG_DIR="$PWD/config" .venv/bin/python -c 'from petrel.settings import settings; settings(); print("Site-Konfiguration gültig")'
Terminal · Petrel-Repository
op whoami && op vault list && bash scripts/deploy-rocky.sh

deploy-manual-rocky.sh aktualisiert nur diese Webseite. Für Sites, Regeln und E-Mail-Routen verwendest du deploy-rocky.sh.

4 · Rocky als deploy

Source provisionieren und API neu laden

Erst nach dem Konfigurations-Deploy kennt Rocky die neue Site und Source. Sichere zuvor die geschützte Runtime-Umgebung außerhalb des Quell- und Release-Archivs. Der zweite Befehl erzeugt ihren eigenen Schlüssel oder verwendet ihn beim erneuten Aufruf wieder. Er druckt keinen Schlüssel aus und erstellt nur die API neu, damit sie die geänderte Umgebung liest.

Terminal · Admin-Rechner
ssh -i ~/.ssh/id_ed25519_codex -o IdentitiesOnly=yes deploy@10.99.0.1 'umask 077; mkdir -p /home/deploy/releases/petrel/runtime; cp /home/deploy/petrel/docker/.env /home/deploy/releases/petrel/runtime/lab-node1-before.env'
Terminal · Admin-Rechner
ssh -i ~/.ssh/id_ed25519_codex -o IdentitiesOnly=yes deploy@10.99.0.1 'python3 /home/deploy/petrel/scripts/provision-source-rocky.py lab node1 && cd /home/deploy/petrel/docker && docker compose up -d --no-deps --force-recreate api'

Das Beispiel setzt WireGuard-Zugriff auf Rocky voraus. Niemals Schlüssel in URLs, Shell-History, Git oder das Handbuch kopieren.

5 · Neuer Zielhost

Schlüssel übertragen und Collector installieren

Dieses Beispiel verwendet auf dem Zielhost den SSH-Account ai mit sudo. Ersetze zielhost durch seinen erreichbaren Namen. scp -3 überträgt die geschützte Datei über deinen Admin-Rechner, ohne ihren Inhalt anzuzeigen.

Terminal · Admin-Rechner
scp -3 -i ~/.ssh/id_ed25519_codex -o IdentitiesOnly=yes deploy@10.99.0.1:/home/deploy/petrel/source-secrets/lab/node1 ai@zielhost:/home/ai/petrel-secret

Auf einem neuen Host legst du die Konfiguration vor dem Installer an. Er erkennt die vorhandenen Dateien und fragt den Schlüssel nicht am Terminal ab. Überschreibe so keine bereits bestehende Petrel-Konfiguration.

Terminal · Zielhost als ai
id petrel >/dev/null 2>&1 || sudo useradd --system --no-create-home --shell /usr/sbin/nologin petrel
sudo install -d -m 0750 -o root -g petrel /etc/petrel
sudo install -m 0400 -o petrel -g petrel /home/ai/petrel-secret /etc/petrel/secret
rm /home/ai/petrel-secret
sudo tee /etc/petrel/config.yaml >/dev/null <<'YAML'
server_url: https://petrel.app.vieten.cloud
site: lab
source: node1
secret_file: /etc/petrel/secret
queue_dir: /var/lib/petrel/queue
zpool: []
ups: []
tcp: []
metrics_files: []
docker: []
smart: []
pve_vms: []
check_updates: false
YAML
sudo chmod 0644 /etc/petrel/config.yaml
wget -qO- https://petrel.app.vieten.cloud/download/install.sh | sudo bash

Für einen Host ohne ai-Account verwende einen eigenen administrativen Account mit sudo und passe den Zielpfad an. Der Collector läuft danach als gesperrter Nutzer petrel.

6 · Prüfen

Ersten Bericht und Timer verifizieren

Der Installer startet einen Heartbeat. Auf dem Zielhost müssen beide Timer aktiv sein. Die lesende Datenbankabfrage zeigt den Zeitpunkt des letzten angenommenen Berichts je Source. Prüfe, ob eine aktuelle Zeile für lab/node1 erscheint; Schlüssel werden dabei nicht ausgegeben.

Terminal · Zielhost
systemctl is-active petrel-heartbeat.timer petrel-full.timer && journalctl -u petrel-collector@heartbeat.service -n 20 --no-pager
Terminal · Admin-Rechner
ssh -i ~/.ssh/id_ed25519_codex -o IdentitiesOnly=yes deploy@10.99.0.1 'cd /home/deploy/petrel/docker && docker compose exec -T db psql -U postgres -d petrel -c "SELECT site, source, max(received_at) AS last_report FROM reports GROUP BY site, source ORDER BY site, source"'
Spätere Änderungen und Rückweg

Regeln, Empfänger oder Site-Text änderst du im Repository, validierst lokal und deployst erneut mit scripts/deploy-rocky.sh. Optionale Checks konfigurierst du separat auf dem Zielhost unter /etc/petrel/config.yaml; der Nutzer petrel braucht dafür gezielte Leserechte. Sichere vor einer neuen Source Rockys geschützte docker/.env. Für einen Rollback musst du die vorige Site-Konfiguration und diese Umgebungsdatei gemeinsam wiederherstellen: Ein entfernter Source-Name darf nicht als verwaister Schlüssel in der API-Umgebung stehen. Release-Archive liegen unter /home/deploy/releases/petrel/; das Datenbank-Volume bleibt erhalten.