Operatività
Tenere d'occhio il server, fargli gestire più utenti, decidere per quanto tempo conservare i dati e risolvere i problemi che gli amministratori incontrano più spesso.
Controlli di salute
amctl --local system status(nel container:docker compose exec antimatter amctl --local system status). Il controllo di salute dell'immagine Docker lo esegue ogni 30 secondi, quindidocker compose psmostrahealthyounhealthy.GET /api/v4/system/pingrisponde senza autenticazione, per un monitor esterno o un bilanciatore di carico:curl -fsS https://chat.example.com/api/v4/system/ping.antimatter db pingverifica che il database sia raggiungibile con le impostazioni configurate.- Console di Sistema › Segnalazione › Statistiche di Sistema mostra il numero di utenti, post e sessioni, mentre Ottimizzazione dell’area di lavoro elenca i problemi di configurazione da verificare.
Metriche
Il server può pubblicare metriche Prometheus: tassi e durate delle richieste, connessioni websocket, utilizzo del database e della cache, lavori, hook dei plugin e altro ancora. Attivale in Console di Sistema › Ambiente › Monitoraggio prestazioni:
| Impostazione | Chiave e variabile | Predefinito |
|---|---|---|
| Abilitare il monitor delle performance | MetricsSettings.Enable, AM_METRICSSETTINGS_ENABLE | disattivato |
| Indirizzo di ascolto | MetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS | :8067 |
| Abilita monitoraggio delle prestazioni client | MetricsSettings.EnableClientMetrics | attivo: browser e app segnalano i propri tempi di risposta |
Prometheus raccoglie quindi le metriche da http://<server>:8067/metrics. Ogni metrica è pubblicata con il suo nome Mattermost (mattermost_…) e il suo nome Antimatter (antimatter_…), in modo che i dashboard Mattermost esistenti continuino a funzionare. Le app pubblicano le proprie metriche, ad esempio l'app Agents in /plugins/mattermost-ai/metrics.
La porta delle metriche non richiede autenticazione: tenerla su una rete privata. Il file compose del sito non la pubblica; per raccoglierla dall'host, aggiungere "127.0.0.1:8067:8067" a ports del servizio antimatter.
L'app Metrics
In assenza di un server Prometheus, l'app Metrics (disabilitata di default, vedere App integrate) raccoglie le stesse metriche in un piccolo database di serie temporali all'interno di Antimatter: ogni 60 secondi, con una conservazione di 15 giorni. Attiva il endpoint delle metriche all'avvio. La sua pagina in Console di Sistema › Plugins mostra la dimensione del database e consente di scaricare dump dei dati, per analisi personali o da allegare a una segnalazione di bug; l'ultimo giorno viene inoltre aggiunto ai pacchetti di supporto.
Pacchetto di supporto
Un pacchetto di supporto è un file zip contenente quanto necessario per diagnosticare un problema: versioni, statistiche, la configurazione con i segreti rimossi, l'elenco delle app e dei job, lo schema del database, i log recenti e i profili di prestazioni. Generalo con amctl system supportpacket, oppure nella Console di Sistema dal menu in alto nella barra laterale (Supporto commerciale, che consente quindi di scegliere cosa includere). Leggilo prima di condividerlo: non contiene messaggi, ma contiene i nomi delle community, degli utenti e delle impostazioni.
Prestazioni e scalabilità
Un server con 2 core CPU e 4 GB di memoria può servire alcune centinaia di persone. Prima di aggiungere server, verifica:
- Il database. PostgreSQL esegue la maggior parte del lavoro: forniscigli archiviazione veloce e memoria. Le repliche di lettura possono assorbire il carico di lettura (
SqlSettings.DataSourceReplicas, un elenco di URL di connessione). - Ricerca. I messaggi vengono cercati nel database di default. Per i server di grandi dimensioni, Elasticsearch o OpenSearch possono gestire la ricerca e l'indicizzazione: Console di Sistema › Ambiente › Elasticsearch (
ElasticsearchSettings: Tipo di backend Elasticsearch o OpenSearch, Indirizzo del server, credenziali, quindi abilitare l'indicizzazione, costruire l'indice e abilitare la ricerca). - Chiamate. I media delle chiamate sono il carico più pesante. Spostali su un server rtcd: vedi Chiamate e voce.
- File aperti. Ogni persona connessa mantiene aperto un websocket. Il file compose di produzione di antimatter-docker aumenta il limite a 49152 (
ulimits: nofile); fai lo stesso con systemd (LimitNOFILE). - Log. Abbassa
LogSettings.ConsoleLevelaINFOoWARN:DEBUGgenera molti log su un server molto attivo.
Alta disponibilità
Più server Antimatter possono essere eseguiti come cluster dietro un bilanciatore di carico, senza licenza. Devono condividere lo stesso database PostgreSQL, lo stesso archivio file S3 e la configurazione nel database (AM_CONFIG). In Console di Sistema › Ambiente › Alta Disponibilità (HA) (ClusterSettings): attivare Abilita modalità Alta disponibilità (ClusterSettings.Enable), assegnare a ogni nodo lo stesso Nome Cluster (ClusterSettings.ClusterName) e consentire ai nodi di comunicare tra loro sulla porta gossip, 8074 TCP e UDP (ClusterSettings.GossipPort). I nodi si trovano tramite il database. Il bilanciatore di carico deve trasmettere i websocket. Per le chiamate in un cluster, utilizzare rtcd.
Conservazione dei dati
Di default, Antimatter conserva tutti i messaggi e i file per sempre. Per eliminarli automaticamente, andare in Console di Sistema › Conformità › Politiche di conservazione dati:
- La Politica di conservazione globale definisce la Conservazione di canali e messaggi diretti e la Conservazione dei file per l'intero server: Conserva per sempre, oppure un numero di ore, giorni o anni (
DataRetentionSettings.EnableMessageDeletion,MessageRetentionHours,EnableFileDeletion,FileRetentionHours). - Le Politiche di conservazione personalizzate impostano una durata diversa per comunità e canali selezionati.
- Il lavoro di cancellazione viene eseguito ogni giorno all'ora scelta (
DataRetentionSettings.DeletionJobStartTime,02:00UTC di default). Avvia il lavoro di cancellazione adesso lo esegue immediatamente, mentre il Registro delle politiche elenca ciò che ogni esecuzione ha rimosso.
Esportazione per la conformità e registri di audit
- Console di Sistema › Conformità › Esportazione Conforme (Beta) esporta tutti i messaggi e i file ogni giorno (Abilita esportazione conforme,
MessageExportSettings.EnableExport, disabilitato di default; Ora Esportazione Conforme,01:00di default) in uno dei formati leggibili dai sistemi di archiviazione: CSV, Actiance XML o Global Relay (un file zip, oppure EML inviato tramite SMTP).amctl compliance-exportesegue e scarica le esportazioni dalla riga di comando. - Monitor conformità (
ComplianceSettings) scrive report giornalieri in una directory. È il meccanismo più vecchio; si consiglia di preferire l'Esportazione Conforme. - Registrazione audit (beta,
ExperimentalAuditSettings) registra gli eventi amministrativi e di sicurezza (accessi, modifiche alle autorizzazioni e alle impostazioni) in un file dedicato. - Termini di Servizio Personalizzati (Beta) richiede a tutti di accettare i propri termini prima di utilizzare Antimatter, e di nuovo dopo averli modificati.
Problemi comuni
"Impossibile connettersi al server" oppure i messaggi appaiono solo dopo un ricaricamento
Il websocket non passa. Verifica che il proxy inverso trasmetta gli header Upgrade e Connection (vedi l'esempio per nginx) e che l'URL del sito corrisponda esattamente all'indirizzo nel browser, incluso https.
I caricamenti falliscono con "413 Request Entity Too Large"
Il proxy rifiuta la dimensione. Aumenta il suo limite (nginx client_max_body_size) ad almeno Dimensione massima file in Console di Sistema › Ambiente › Archiviazione file (FileSettings.MaxFileSize, 100 MB di default).
Le persone non possono avviare chiamate, oppure si uniscono ma non sentono nulla
Se solo gli amministratori possono avviare chiamate, disattiva la Modalità di prova delle chiamate. Se il pulsante di chiamata non è presente nei canali di una comunità, la comunità è di tipo Comunità, in cui le chiamate sono disattivate di default: gli amministratori del canale o della comunità possono attivarle in un canale, oppure modificare il tipo di comunità (vedi Dove le chiamate sono attive). Se le persone si uniscono ma non sentono nulla, la porta media è bloccata o il server annuncia l'indirizzo errato: apri la porta 8443 UDP e TCP e configura ICE Host Override dietro NAT. Le persone su reti che bloccano entrambe le porte necessitano di un server TURN. Vedi Chiamate e voce.
Il selettore GIF è vuoto
Verifica GIF service URL (http://gifs:8080/v2 nel file di composizione del sito) e Chiave API (il GIFS_API_KEY di .env) in Console di Sistema › Plugins › GIF, e che il servizio gifs sia in esecuzione: docker compose ps gifs.
Nessuna email arriva
Usa Test connessione in Console di Sistema › Ambiente › SMTP, verifica che Indirizzo mittente per le notifiche non sia ancora test@example.com, e cerca nel log smtp o mail.
Un'app mostra "Avvio non riuscito"
Cercane l'id nel log (docker compose logs antimatter | grep <app id>). Disattivala e riattivala nella Gestione plugin per riavviarla.
Il server non si avvia
Leggi la fine del suo log. Più spesso il database non è raggiungibile (controlla AM_SQLSETTINGS_DATASOURCE con antimatter db ping), una migrazione del database è fallita (ripristina il backup preso prima dell'aggiornamento e segnala l'errore) oppure la porta di ascolto è occupata.
Bloccato fuori dall'account amministratore
Dal server, la modalità locale non richiede password:
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
Segnalazione di un bug
Apri un problema nel repository della community di Antimatter, indicando la versione, il metodo di installazione, le operazioni eseguite e le righe di log pertinenti. Segnala i problemi di sicurezza in privato, come spiegato nella policy di sicurezza.