Discourse-health-check: Einmalige CLI-Übersicht Ihres Discourse-Servers

Ein kleines Bash-Skript, das ich für mein eigenes Forum erstellt habe und einen schnellen Gesundheitsüberblick eines Discourse-Servers liefert. Ich teile es hier mit allen, die diese Art von schnellem Überblick nützlich finden.

Prüft Systemressourcen: Docker, Discourse-Dienste (Postgres, Redis, Nginx, Unicorn, Sidekiq), Aktualität der Backups, TLS und grundlegende Sicherheit. Am Ende folgt eine Zusammenfassung mit Bestanden / Warnung / Kritisch sowie einem für Cron geeigneten Exit-Code.

Installation

curl -O https://raw.githubusercontent.com/haydenjames/discourse-health-check/main/discourse-health-check.sh
chmod +x discourse-health-check.sh
sudo ./discourse-health-check.sh

Quellcode, Optionen und ein Cron-Beispiel findest du in der README:


Neue Version v1.0.4:

Zwei Fehlerbehebungen:

  1. Discourse hat Unicorn durch Pitchfork ersetzt (Standard ab 2026.2, Unicorn vollständig entfernt in 2026.4), daher erkennt die Webserver-Prüfung nun beide. Vielen Dank an @RGJ, der dies bereits im Juni angesprochen hat.

  2. Die Dienst-Prüfungen haben ihre eigenen Befehlszeilen abgeglichen. pgrep -f <name> hat sich selbst gefunden, sodass die Prüfung bestanden wurde, unabhängig davon, ob der Dienst tatsächlich lief. Sidekiq meldete seit Version 1.0.0 bedingungslos „läuft“. Selbst wenn er abgestürzt war, hast du weiterhin ein grünes Häkchen und den Exit-Code 0 von Cron erhalten. Gleiche Ursache wie der falsche Positive bei Puma in Version 1.0.1, der sich als Umbenennung und nicht als Fehlerbehebung herausgestellt hat.

9 „Gefällt mir“

Discourse läuft nicht mit Puma.

3 „Gefällt mir“

Einhorn. Fixed, danke.

1 „Gefällt mir“

Pitchfork heutzutage!!

2 „Gefällt mir“

Tolles Angebot, danke!

Für Backups würde ich empfehlen, das neueste Backup zu prüfen, um festzustellen, ob es seit dem Schreiben gelesen wurde. Das ist ein Indikator dafür, ob es extern kopiert wurde. (Oder, falls nicht nur das neueste geprüft wird, vielleicht alle.)

Wenn seit einer Woche kein Backup extern kopiert wurde, ist das eine Warnung wert.

(Ich denke, man kann stat -c %Y von stat -c %X subtrahieren oder sie einfach vergleichen. Sie werden unterschiedlich sein, wenn die Backup-Datei seit dem Schreiben gelesen wurde.)

5 „Gefällt mir“

@Ed_S Tolle Idee. In v1.0.2 aufgenommen. Vergleicht atime mit mtime beim neuesten Backup und warnt, falls es seit dem Schreiben nicht gelesen wurde, inklusive einer noatime-Prüfung, um Fälle, in denen atime unzuverlässig ist, sauber zu überspringen. Ich habe dich als Urheber genannt, danke!

4 „Gefällt mir“