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- Collectormisst lokal
- Petrelprüft Regeln
- 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.
Petrel hat in dieser Phase kein Dashboard und keinen Login. Dieses Handbuch zeigt keine Live-Daten und nimmt keine Schlüssel entgegen.
Inbetriebnahme
Collector einrichten
Ein Collector läuft auf jedem überwachten Linux-System. Er sendet signierte Berichte über HTTPS an Petrel.
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.
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.
wget -qO- https://petrel.app.vieten.cloud/download/install.sh | sudo bashDer 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.
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:
sudo systemctl start petrel-collector@heartbeat.serviceEinrichtung 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.
wget -O petrel-collector https://petrel.app.vieten.cloud/download/linux-amd64/petrel-collectorEine passende .sha256-Datei liegt neben jedem Binary. Der Installer kontrolliert sie automatisch.
Signale
Welche Berichte Petrel erhält
Der Collector misst lokal. Petrel fordert keine Befehle auf deinem System an.
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.
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.
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.
Der Aufruf benötigt eine bereits installierte und konfigurierte Collector-Instanz.
sudo -u petrel petrel-collector -type event -event-kind backup -event-entity main -event-state failedBenachrichtigung
Alarme per E-Mail verstehen
Petrel bewertet festgelegte Regeln und sendet in dieser Phase ausschließlich E-Mails.
[CRITICAL] Petrel: 2 Alarme auf rocky/rocky
| Schwere | Regel | Befund | Aktion |
|---|---|---|---|
| KRITISCH | root_full_critical | Dateisystem ist fast voll. | Quittieren |
| WARNUNG | memory_low | Freier 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].
Ö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.
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.
systemctl status petrel-heartbeat.timer petrel-full.timerLetzten Lauf ansehen
Bei Versandproblemen findest du hier den HTTP-Status oder einen Verbindungsfehler. Gib den geheimen Schlüssel nicht weiter.
journalctl -u petrel-collector@heartbeat.service -n 30 --no-pagerZentrale API prüfen
Ein {"status":"ok"} bestätigt die Erreichbarkeit von API und Datenbank. Es bestätigt nicht, dass deine Source korrekt angemeldet ist.
curl -fsS https://petrel.app.vieten.cloud/healthzDiagnose
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.
sudo systemctl disable --now petrel-heartbeat.timer petrel-full.timerVertrauen
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.
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.
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.
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.
mkdir -p config/sites/labid: lab
name: Beispiel-Site
timezone: Europe/Berlin
sources: [node1]
maintenance_states: [planned_maintenance]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# 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.
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.
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.
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.
python3 -m venv .venv
.venv/bin/pip install -e 'server[test]'PYTHONPATH=server PETREL_CONFIG_DIR="$PWD/config" .venv/bin/python -c 'from petrel.settings import settings; settings(); print("Site-Konfiguration gültig")'op whoami && op vault list && bash scripts/deploy-rocky.shdeploy-manual-rocky.sh aktualisiert nur diese Webseite. Für Sites, Regeln und E-Mail-Routen verwendest du deploy-rocky.sh.
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.
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'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.
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.
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-secretAuf 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.
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 bashFü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.
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.
systemctl is-active petrel-heartbeat.timer petrel-full.timer && journalctl -u petrel-collector@heartbeat.service -n 20 --no-pagerssh -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"'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.