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, sodassdocker compose pshealthyoderunhealthyanzeigt.GET /api/v4/system/pingantwortet ohne Anmeldung, für ein externes Monitoring oder einen Load Balancer:curl -fsS https://chat.example.com/api/v4/system/ping.antimatter db pingprü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=falseaus.


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:
| Einstellung | Schlüssel und Variable | Standard |
|---|---|---|
| Performance Monitoring aktivieren | MetricsSettings.Enable, AM_METRICSSETTINGS_ENABLE | aus |
| Empfangs-Adresse | MetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS | :8067 |
| Aktiviere die Client-Leistungsüberwachung | MetricsSettings.EnableClientMetrics | an: 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.ConsoleLevelaufINFOoderWARN:DEBUGprotokolliert auf einem ausgelasteten Server sehr viel. - Komprimierung. Wenn Webserver-Modus auf gzip eingestellt ist, verhandelt
AM_FEATUREFLAGS_ENABLEBROTLICOMPRESSION=truedie 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äßig02:00UTC). Mit Löschvorgang jetzt starten wird er sofort ausgeführt, und das Richtlinien-Protokoll listet auf, was jeder Durchlauf entfernt hat.
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äßig01: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-exportfü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.