85.1.41. pepsi-status¶
summarise the health of the Pepsi mail pipeline
- Handbuchabschnitt:
1
85.1.41.1.1. Name¶
pepsi-status - eine menschenlesbare Gesundheitszusammenfassung der Warteschlange, steckengebliebener Nachrichten, der Zustell- und Fehlerstatistiken sowie der ausgehenden TLS-Ergebnisse ausgeben.
85.1.41.1.2. Übersicht¶
pepsi-status [GLOBAL-OPTIONS] [–json] [–limit N]
85.1.41.1.3. Beschreibung¶
pepsi-status gibt einen einmaligen, nur lesenden Gesundheitsbericht der Pepsi-Pipeline aus, vollständig aus der gemeinsamen pepsi-Datenbank gezogen. Es ist dafür gedacht, interaktiv oder über SSH ausgeführt zu werden (zum Beispiel von einem Überwachungs-Host); es verändert nie einen Datensatz und gibt keine Datenbankbenachrichtigung aus, sodass es jederzeit gefahrlos gegen eine Live-Installation ausgeführt werden kann.
Das Werkzeug verbindet sich über den gemeinsamen [pepsi-postgres]-Abschnitt mit derselben Datenbank wie die anderen Komponenten; es führt keine eigene Konfiguration ein. Als root gestartet, läuft es als Dienstkonto pepsi weiter; siehe Ausführung als root.
Der Bericht hat sechs Abschnitte:
- Warteschlange
Der aktuelle Inhalt der
pepsi.workqueue-Tabelle, aufgeschlüsselt nachstageundstatus, mit dem Alter der ältesten Nachricht in jedem Bucket und einer Gesamtsumme. Dies ist der Live-Rückstau:pending- undrunning-Datensätze sind in Bearbeitung,paused-Datensätze warten (zum Beispiel auf eine Zahlungsfrist oder eine Relay-Wiederholung), undfailed/timeout-Datensätze benötigen Aufmerksamkeit.- Steckengebliebene Nachrichten
Die einzelnen Nachrichten, deren Status
failedodertimeoutist, älteste zuerst. Für jede zeigt der Bericht dieworkqueue_id, den Status, die Stage, das Alter, den Umschlagabsender und den Betreff sowie — wenn eine Relay-Stage einen festgehalten hat — den strukturierten Grund, warum der nächste Hop die Nachricht abgelehnt hat (entfernter MTA, SMTP-Code, erweiterter Status und Antworttext oder unsere eigene Diagnose, ausstate.bounce), den Fehlertext, den die Stage festgehalten hat, als sie die Nachricht fehlschlagen ließ oder zurückstellte (state.last_error, angezeigt alserror:), und den Grund, den pepsi-dispatch angab, als es die Nachricht selbst fehlschlagen ließ oder in den Timeout schickte — ein abgestürzter oder hängender Worker oder eine nicht konfigurierte Stage (state.dispatch_error, angezeigt alsdispatch:). In der –json-Ausgabe sind die drei die Felderbounce,last_errorunddispatch_errorjedesproblems-Eintrags. Die Liste ist durch –limit gedeckelt; die wahre Rückstaugröße wird immer angezeigt.- Zustellung & Fehler
Kumulative Pipeline-Zähler: die Gesamtzahl der Nachrichten, die abgeschlossen wurden und die Pipeline verlassen haben, die gesamten Stage-Ausführungen sowie je Stage die Anzahl der von ihr gezählten Ausführungen (die Spalte MESSAGES, die der Nenner des Durchschnitts ist), die durchschnittliche Verarbeitungszeit, Worker-Timeouts und Worker-Abstürze. Dies sind Lebenszeit-Gesamtwerte, die seit der Erstellung des Schemas angesammelt wurden. Weil eine erfolgreich zugestellte Nachricht aus der Warteschlange gelöscht wird, gibt es kein Zustellungsjournal je Nachricht und daher kein gleitendes Zeitfenster: Die Werte sind kumulativ, nicht „in der letzten Stunde“.
- Ausgehendes TLS
Ergebnisse ausgehender TLS-Sitzungen über die letzten sieben UTC-Berichtstage (der heutige, in UTC, und die sechs davor, unabhängig von der Zeitzone des Servers), gruppiert nach Richtliniendomain und Ergebnistyp, mit markierten nicht-erfolgreichen Ergebnissen. Diese Daten sind nur vorhanden, wenn
[pepsi-tlsrpt] SEND_REPORTSaktiviert ist, und nur so lange, wiepepsi-tlsrpt prunesie behält ([pepsi-tlsrpt] RETAIN_DAYS, ebenfalls standardmäßig sieben Tage), eine kürzere Aufbewahrung verkürzt also diesen Abschnitt. Der Abschnitt führt danach alle MX-Host-Adressen auf, die der Resolver-Cache derzeit als nicht verbindbar markiert hat, mit dem Zeitpunkt ihrer letzten erfolgreichen Verbindung (odernever).- Postfach-Quotas
Eine Zeile je lokalem Konto, für das Pepsi Buch geführt hat, älteste Messung zuerst: Belegung, wirksame Grenze, Füllgrad, woher die Zahl stammt (
fsquota/maildirsize/scan) und wie lange die Messung des Postfachs zurückliegt. Eine Zeile existiert für jedes Konto, an das Pepsi zugestellt hat — das ist es, was eine anlegt —, ob es eine Quota hat oder nicht; auf einer Installation, die die Funktion nicht nutzt, führt der Abschnitt diese Konten also weiterhin auf, mit-in den Spalten LIMIT und FULL. Leer ist er, und sagt das auch, nur wenn keine lokale Zustellung verbucht wurde.LIMIT ist die tatsächlich geltende Grenze, genau so aufgelöst, wie der Zustellpfad sie auflöst: die eigene Grenze des Kontos, wenn es eine hat, sonst der Site-Standardwert
[pepsi] MAILBOX_QUOTA, wobei eine ausdrückliche0am Konto unbegrenzt statt erben bedeutet und die Quota des Kernels zusätzlich verschärft, welche der beiden auch gewonnen hat.USED ist die letzte Messung plus alles seither Zugestellte; sie wächst nur, denn nichts sagt Pepsi, wann ein Benutzer Mail über IMAP löscht, sodass sie eine obere Schranke ist und keine Tatsache. MEASURED ist, wie lange es her ist, dass tatsächlich jemand nachgesehen hat, und das zählt, weil eine Ablehnung bei
RCPTdarauf beruht, dass eine Messung frisch ist: Ein Konto, das gegen eine sehr alte Messung als „voll“ erscheint, ist eines, um das sichreconcilevon pepsi-quota(1) kümmern sollte.- Schlüsseländerungen bei Korrespondenten
Wie viele Verschlüsselungsschlüssel von Korrespondenten die Autocrypt-Regel „das Neueste gewinnt“ in den letzten 30 Tagen ersetzt hat (rotated) und wie viele solcher Ersetzungen
ACCEPT_ROTATION = expiredabgelehnt hat (held), gefolgt von den jüngsten beider Arten — gedeckelt durch –limit — mit Datum, Adresse, Protokoll, altem und neuem Fingerabdruck und der Angabe, ob der neue Schlüssel der eigene des Korrespondenten war (inbound) oder von einem Dritten eingeführt wurde (gossip). Eine Rotation ist der einzige Weg, auf dem eine Nachricht, die bloß behauptet, von einem Korrespondenten zu stammen, den Schlüssel ändern kann, mit dem wir an ihn verschlüsseln; deshalb wird sie hier angezeigt, statt im Audit-Log zu verbleiben. Die Zahlen werden aus denkey.peer.rotate- undkey.peer.rotate.held-Zeilen vonpepsi.event_loggelesen, die die Datenbank zusammen mit der Änderung selbst schreibt, sodass der Abschnitt so weit zurückreicht, wie[pepsi-admin] EVENT_RETENTIONsie aufbewahrt. Siehe pepsi-stage-autocrypt-learn(1).
Freiform-Text im menschenlesbaren Bericht — die Antwort eines entfernten MTA, ein Nachrichtenbetreff, ein Hostname aus dem Resolver-Cache — bekommt vor der Ausgabe seine Steuerzeichen durch Leerzeichen ersetzt. All das wird von jemand anderem gewählt, und dieses Werkzeug ist dafür gedacht, über SSH gegen eine Live-Installation zu laufen, also genau dort, wo eine Terminal-Escape-Sequenz den Bildschirm des Operators neu zeichnen würde. Die --json-Ausgabe ist davon unberührt: Das JSON-Escaping deckt es bereits ab.
85.1.41.1.4. Optionen¶
- –json
Gibt den gesamten Bericht als einzelnes JSON-Objekt aus (Schlüssel
queue,problem_total,problems,global,stages,tls_report_days,tls,dns_failures,mailboxes,quota_default_bytes,key_change_days,key_changes_rotated,key_changes_heldundkey_changes) statt des menschenlesbaren Texts, für Skripting und Überwachung.- –limit N
Listet höchstens N einzelne steckengebliebene (
failed/timeout-)Nachrichten und höchstens *N* Postfach-Quota-Konten auf. Standardwert ist50. Der berichtete Gesamtrückstau ist von dieser Obergrenze unberührt.Der Abschnitt für steckengebliebene Nachrichten sagt „showing X of Y“, wenn er abgeschnitten ist; der Abschnitt für Postfach-Quotas tut das nicht, sodass diese Liste auf einem Host mit mehr als N verbuchten Konten stillschweigend die N mit den ältesten Messungen sind — was das nützliche Ende davon ist, aber erhöhen Sie –limit, bevor Sie schließen, dass ein Konto fehlt.
85.1.41.1.5. Ausführung als root¶
Pepsi gibt jeder Komponente ihre eigene PostgreSQL-Rolle, die über den lokalen Socket durch das Betriebssystemkonto authentifiziert wird, unter dem sie läuft, und root gehört bewusst nicht dazu. Statt den Verbindungsaufbau scheitern zu lassen und Sie zu zwingen, an sudo -u pepsi pepsi-status zu denken, erkennt das Werkzeug, dass es als root gestartet wurde, und wird zum unprivilegierten Dienstkonto pepsi, bevor es sich verbindet; der Bericht selbst bleibt strikt nur lesend.
Die Konfigurationsdatei (und jedes von ihr referenzierte @inline-secret@-Fragment) wird vor dem Wechsel gelesen, sodass eine nur für root lesbare Konfiguration weiterhin normal geladen wird.
Existiert das Konto pepsi nicht — ein nicht installierter Quellbaum, ein Testaufbau —, bleibt die Identität unangetastet, es wird eine Warnung protokolliert und die Verbindung als aufrufender Benutzer versucht, sodass eine Installation, in der root die Datenbank erreichen kann, weiterhin funktioniert.
85.1.41.1.6. Globale Optionen¶
Diese Optionen können vor oder nach den anderen Optionen stehen.
- -c FILE, –config FILE
Liest die Konfiguration aus FILE, statt die Standardorte zu durchsuchen.
- -L LOGLEVEL, –log LOGLEVEL
Setzt die Log-Ausführlichkeit. LOGLEVEL ist eines von
error,warn,info,debugodertrace(Standardwert:info).- -v, –verbose
Zeigt Log-Meldungen aus allen Quellen, einschließlich Drittanbieter-Bibliotheken.
- -h, –help
Gibt eine Verwendungsübersicht aus und beendet sich.
- -V, –version
Gibt die Version aus und beendet sich.
85.1.41.1.7. Exit-Status¶
- 0
Erfolgreicher Abschluss.
- 1
Ein Fehler ist aufgetreten: eine fehlerhafte Konfigurationsdatei oder eine fehlgeschlagene Datenbankverbindung oder -abfrage. Der Grund wird in das Journal geschrieben.
85.1.41.1.8. Dateien¶
Wenn –config nicht angegeben ist, wird die erste vorhandene Datei aus der folgenden Liste verwendet. Jede Pepsi-Komponente teilt sich dieselbe Konfigurationsdatei, sodass dies dieselbe Liste ist, die jede durchsucht:
$XDG_CONFIG_HOME/pepsi.conf$HOME/.config/pepsi.conf/etc/pepsi/pepsi.conf/etc/pepsi.conf
85.1.41.1.9. Beispiele¶
Den vollständigen Gesundheitsbericht ausgeben:
pepsi-status -c /etc/pepsi/pepsi.conf
Den Bericht als JSON für ein Überwachungssystem über SSH erfassen:
ssh mail.example.com pepsi-status --json
Bis zu 200 steckengebliebene Nachrichten anzeigen:
pepsi-status -c /etc/pepsi/pepsi.conf --limit 200
85.1.41.1.10. Siehe auch¶
pepsi-queue(1), pepsi-tlsrpt(1), pepsi-quota(1), pepsi-dispatch(1), pepsi.conf(5), pepsi-setup(1)
85.1.41.1.11. Fehler¶
Melden Sie Fehler an den Pepsi-Issue-Tracker.