Betrieb

Den Server im Blick behalten, die Kapazität für mehr Benutzer erhöhen, die Aufbewahrungsdauer der Daten festlegen und die häufigsten Probleme beheben, auf die Administratoren stoßen.

Health Checks

  • amctl --local system status (im Container: docker compose exec antimatter amctl --local system status). Der Health Check des Docker-Images führt ihn alle 30 Sekunden aus, sodass docker compose ps healthy oder unhealthy anzeigt.
  • GET /api/v4/system/ping antwortet ohne Anmeldung, für ein externes Monitoring oder einen Load Balancer: curl -fsS https://chat.example.com/api/v4/system/ping.
  • antimatter db ping prüft, ob die Datenbank mit den konfigurierten Einstellungen erreichbar ist.
  • Systemkonsole › Berichterstattung › Systemstatistiken zeigt die Anzahl der Benutzer, Beiträge und Sitzungen an.
  • Systemkonsole › Berichterstattung › Website-Zustand prüft stündlich die Datenbank, Suche, den Cluster, Push-Benachrichtigungen, Jobs, die Anmeldung, die Compliance und mehr. Es listet auf, was Aufmerksamkeit erfordert, zusammen mit dem Schweregrad. Sie können einen Befund, den Sie nicht mehr sehen möchten, stummschalten und ihn später auf der Registerkarte „Stummgeschaltet“ wiederfinden, zusammen mit der Angabe, wer ihn wann stummgeschaltet hat. Diese Funktion ist standardmäßig aktiviert und ersetzt für vollständige Systemadministratoren Optimierung des Arbeitsbereichs (ein delegierter Administrator, der nur Website-Statistiken lesen darf, sieht weiterhin „Optimierung des Arbeitsbereichs“). Schalten Sie sie mit AM_FEATUREFLAGS_HEALTHDASHBOARD=false aus.
System Console › Reporting › Site health, with open findings grouped by severity
Systemkonsole › Berichterstattung › Website-Zustand, gruppiert nach Schweregrad.
System Console › Reporting › Server Logs, with level badges, filters and a live tail toggle
Systemkonsole › Berichterstattung › Serverprotokolle.

Metriken

Der Server kann Prometheus-Metriken veröffentlichen: Anfrageraten und -dauern, WebSocket-Verbindungen, Datenbank- und Cache-Nutzung, Jobs, Plugin-Hooks und mehr. Aktivieren Sie diese unter Systemkonsole › Umgebung › Performance Überwachung:

EinstellungSchlüssel und VariableStandard
Performance Monitoring aktivierenMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEaus
Empfangs-AdresseMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
Aktiviere die Client-LeistungsüberwachungMetricsSettings.EnableClientMetricsan: Browser und Apps melden ihre eigenen Zeitmessungen

Prometheus scrapes dann http://<server>:8067/metrics. Jede Metrik wird unter ihrem Mattermost-Namen (mattermost_…) und ihrem Antimatter-Namen (antimatter_…) veröffentlicht, sodass bestehende Mattermost-Dashboards weiterhin funktionieren. Apps veröffentlichen ihre eigenen Metriken, zum Beispiel die Agents-App unter /plugins/mattermost-ai/metrics.

Für den Metriken-Port ist keine Anmeldung erforderlich: Halten Sie ihn in einem privaten Netzwerk. Die Compose-Datei der Website veröffentlicht ihn nicht; um ihn vom Host zu scrapen, fügen Sie "127.0.0.1:8067:8067" zu den ports des antimatter-Dienstes hinzu.

Die Metriken-App

Ohne einen Prometheus-Server sammelt die Metrics-App (siehe Mitgelieferte Apps) dieselben Metriken in einer kleinen Zeitreihendatenbank innerhalb von Antimatter: alle 60 Sekunden, gespeichert für 15 Tage. Wenn Sie Performance Monitoring aktivieren einschalten, wird auch die App aktiviert, es sei denn, Sie haben sie selbst deaktiviert. Beim Start aktiviert sie den Metrik-Endpunkt. Ihre Seite in Systemkonsole › Plugins zeigt die Größe der Datenbank an und ermöglicht es Ihnen, Daten-Dumps herunterzuladen, entweder für Ihre eigene Analyse oder zum Anhängen an einen Fehlerbericht. Der letzte Tag wird ebenfalls in Support-Pakete aufgenommen.

Support-Paket

Ein Support-Paket ist eine ZIP-Datei mit allem, was zur Diagnose eines Problems benötigt wird: Versionen, Statistiken, die Konfiguration ohne sensible Daten, die Liste der Apps und Jobs, das Datenbankschema, das aktuelle Protokoll und Performance-Profile. Erstellen Sie eines mit amctl system supportpacket oder in der Systemkonsole über das Menü oben in der Seitenleiste (Kommerzieller Support, wo Sie anschließend auswählen können, was enthalten sein soll). Lesen Sie es, bevor Sie es weitergeben: Es enthält keine Nachrichten, aber Namen von Communities, Benutzern und Einstellungen.

Leistung und Skalierung

Ein Server mit 2 CPU-Kernen und 4 GB Speicher versorgt einige hundert Personen. Bevor Sie Server hinzufügen, beachten Sie:

  • Die Datenbank. PostgreSQL erledigt die meiste Arbeit: Verwenden Sie schnellen Speicher und viel RAM. Lese-Replikate können die Lese-Last übernehmen (SqlSettings.DataSourceReplicas, eine Liste von Verbindungs-URLs).
  • Suche. Standardmäßig werden Nachrichten in der Datenbank durchsucht. Für große Server können Elasticsearch oder OpenSearch die Suche und Indizierung übernehmen: Systemkonsole › Umgebung › ElasticSearch (ElasticsearchSettings: Backend-Typ Elasticsearch oder OpenSearch, Server-Verbindungsadresse, Zugangsdaten, dann Indizierung aktivieren, Index erstellen und Suche aktivieren).
  • Anrufe. Anruf-Medien sind die größte Last. Verschieben Sie sie auf einen rtcd-Server: siehe Anrufe und Sprache.
  • Offene Dateien. Jede verbundene Person hält eine WebSocket-Verbindung offen. Die Produktions-Compose-Datei von antimatter-docker erhöht die Grenze auf 49152 (ulimits: nofile); tun Sie dasselbe mit systemd (LimitNOFILE).
  • Protokolle. Senken Sie LogSettings.ConsoleLevel auf INFO oder WARN: DEBUG protokolliert auf einem ausgelasteten Server sehr viel.
  • Komprimierung. Wenn Webserver-Modus auf gzip eingestellt ist, verhandelt AM_FEATUREFLAGS_ENABLEBROTLICOMPRESSION=true die Brotli-Komprimierung für API-Antworten mit Clients, die dies akzeptieren, anstelle von gzip (optional, standardmäßig deaktiviert; starten Sie den Server nach der Änderung neu).

Hohe Verfügbarkeit

Mehrere Antimatter-Server können als Cluster hinter einem Lastausgleichs-Server (Load Balancer) betrieben werden, ohne Lizenz. Sie müssen dieselbe PostgreSQL-Datenbank, denselben S3-Dateispeicher und die Konfiguration in der Datenbank (AM_CONFIG) teilen. Unter Systemkonsole › Umgebung › Hochverfügbarkeit (ClusterSettings): Aktivieren Sie High-Availability-Modus aktivieren (ClusterSettings.Enable), vergeben Sie jedem Knoten denselben Cluster-Name (ClusterSettings.ClusterName) und stellen Sie sicher, dass die Knoten sich über den Gossip-Port, 8074 TCP und UDP (ClusterSettings.GossipPort), erreichen können. Die Knoten finden sich über die Datenbank. Der Load Balancer muss Websockets weiterleiten. Für Anrufe in einem Cluster wird rtcd verwendet.

Datenaufbewahrung

Standardmäßig behält Antimatter alle Nachrichten und Dateien für immer aufbewahrt. Um alte automatisch zu löschen, gehen Sie zu Systemkonsole › Compliance › Richtlinien für die Datenaufbewahrung:

  • Die Globale Aufbewahrungsrichtlinie legt die Aufbewahrungsdauer für Kanäle und Direktnachrichten sowie die Datenaufbewahrung für den gesamten Server fest: Für immer behalten oder eine bestimmte Anzahl an Stunden, Tagen oder Jahren (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours).
  • Benutzerdefinierte Aufbewahrungsrichtlinien legen eine andere Aufbewahrungsdauer für ausgewählte Communities und Kanäle fest.
  • Der Löschvorgang wird jeden Tag zur von Ihnen gewählten Uhrzeit ausgeführt (DataRetentionSettings.DeletionJobStartTime, standardmäßig 02:00 UTC). Mit Löschvorgang jetzt starten wird er sofort ausgeführt, und das Richtlinien-Protokoll listet auf, was jeder Durchlauf entfernt hat.
Gelöschte Nachrichten und Dateien sind endgültig aus der Datenbank und dem Dateispeicher entfernt. Prüfen Sie die Aufbewahrungsdauern, bevor Sie eine Richtlinie aktivieren, und beachten Sie, dass Ihre Backups die gelöschten Daten weiterhin enthalten, bis sie ablaufen.

Compliance-Export und Audit-Protokolle

  • Systemkonsole › Compliance › Compliance-Export exportiert täglich alle Nachrichten und Dateien (Aktiviere Compliance-Export, MessageExportSettings.EnableExport, standardmäßig deaktiviert; Compliance Export Zeitpunkt, standardmäßig 01:00) in einem der Formate, die Archivierungssysteme lesen: CSV, Actiance XML oder Global Relay (eine ZIP-Datei oder per SMTP gesendete EML-Datei). amctl compliance-export führt Exporte von der Kommandozeile aus und lädt sie herunter.
  • Compliance-Überwachung (ComplianceSettings) schreibt tägliche Berichte in ein Verzeichnis. Es handelt sich um den älteren Mechanismus; der Compliance-Export ist vorzuziehen.
  • Audit Logging (Beta, ExperimentalAuditSettings) protokolliert administrative und sicherheitsrelevante Ereignisse (Anmeldungen, Änderungen an Berechtigungen und Einstellungen) in einer eigenen Datei. Ein Single-Sign-On-Datensatz gibt auch an, ob diese Anmeldung das Konto erstellt hat.
  • Benutzerdefinierte Nutzungsbedingungen verlangen von allen, dass sie Ihre Nutzungsbedingungen akzeptieren, bevor sie Antimatter verwenden, und erneut, nachdem Sie diese geändert haben.

Häufige Probleme

„Cannot connect to the server“ oder Nachrichten erscheinen nur nach einem Neuladen

Die WebSocket-Verbindung wird nicht durchgelassen. Stellen Sie sicher, dass der Reverse-Proxy die Header Upgrade und Connection weiterleitet (siehe das nginx-Beispiel) und dass die Site-URL exakt mit der Adresse im Browser übereinstimmt, einschließlich https.

Uploads schlagen mit „413 Request Entity Too Large“ fehl

Der Proxy lehnt die Größe ab. Erhöhen Sie sein Limit (nginx client_max_body_size) auf mindestens Maximale Dateigröße in Systemkonsole › Umgebung › Dateispeicher (FileSettings.MaxFileSize, standardmäßig 100 MB).

Personen können keine Anrufe starten oder treten bei, hören aber nichts

Wenn nur Administratoren Anrufe starten können, schalten Sie den Testmodus für Anrufe aus. Wenn die Anrufschaltfläche in den Kanälen einer Community fehlt, handelt es sich um eine Community vom Typ Community, in der Anrufe standardmäßig deaktiviert sind: Die Kanal- oder Community-Administratoren können Anrufe in einem Kanal aktivieren oder den Typ der Community ändern (siehe Wo Anrufe aktiviert sind). Wenn Personen beitreten, aber nichts hören, ist der Medienport blockiert oder der Server gibt die falsche Adresse an: Öffnen Sie UDP und TCP auf Port 8443 und legen Sie den ICE Host Override hinter NAT fest. Personen in Netzwerken, die beide blockieren, benötigen einen TURN-Server. Siehe Anrufe und Sprache.

Der GIF-Auswahlbereich ist leer

Prüfen Sie die GIF-Dienst-URL (http://gifs:8080/v2 in der Compose-Datei der Site) und den API-Schlüssel (den GIFS_API_KEY in der .env-Datei) in Systemkonsole › Plugins › GIFs, sowie dass der gifs-Dienst läuft: docker compose ps gifs.

Keine E-Mails treffen ein

Verwenden Sie Verbindung testen in Systemkonsole › Umgebung › SMTP, prüfen Sie, dass die Benachrichtigungs-Absenderadresse nicht noch test@example.com lautet, und durchsuchen Sie das Protokoll nach smtp oder mail.

Eine App zeigt „Failed to start“ an

Suchen Sie deren ID im Protokoll (docker compose logs antimatter | grep <app id>). Deaktivieren und aktivieren Sie sie im Plugin Management, um sie neu zu starten.

Der Server startet nicht

Lesen Sie das Ende des Protokolls. Meistens ist die Datenbank nicht erreichbar (prüfen Sie AM_SQLSETTINGS_DATASOURCE mit antimatter db ping), eine Datenbank-Migration ist fehlgeschlagen (stellen Sie das vor dem Upgrade erstellte Backup wieder her und melden Sie den Fehler) oder der Lauschport ist belegt.

Vom Administrator-Konto ausgesperrt

Vom Server aus ist im lokalen Modus kein Passwort erforderlich:

docker compose exec antimatter amctl --local user change-password admin --password 'a-new-password'
docker compose exec antimatter amctl --local user resetmfa admin
docker compose exec antimatter amctl --local roles system-admin admin

Melden eines Fehlers

Erstellen Sie ein Issue im Antimatter-Community-Repository mit der Version, der Installationsmethode, den durchgeführten Schritten und den relevanten Protokolleinträgen. Melden Sie Sicherheitsprobleme vertraulich, wie in der Sicherheitsrichtlinie beschrieben.