Provoz

Sledujte server, zajistěte, aby zvládal více uživatelů, rozhodněte, jak dlouho se data uchovávají, a řešte problémy, s nimiž se administrátoři nejčastěji setkávají.

Kontroly stavu

  • amctl --local system status (v kontejneru: docker compose exec antimatter amctl --local system status). Kontrola stavu obrazu Docker se spouští každých 30 sekund, takže docker compose ps zobrazí healthy nebo unhealthy.
  • GET /api/v4/system/ping odpovídá bez přihlášení, což je vhodné pro externí monitor nebo vyvažovač zátěže: curl -fsS https://chat.example.com/api/v4/system/ping.
  • antimatter db ping ověří, že je databáze dosažitelná s nastavenými parametry.
  • Systémová konzole › Reporty › Systémové statistiky zobrazuje počet uživatelů, příspěvků a relací.
  • Systémová konzole › Reporty › Zdraví webu každou hodinu kontroluje databázi, vyhledávání, cluster, push oznámení, úlohy, přihlašování, soulad s předpisy a další, a vypisuje, co vyžaduje pozornost, včetně závažnosti. Nález, který nechcete vidět znovu, můžete ztlumit a později ho najdete na kartě Ztlumené, kde je uvedeno, kdo ho ztlumil a kdy. Funkce je ve výchozím nastavení zapnutá; plným systémovým administrátorům nahrazuje Optimalizaci pracovního prostoru (delegovaný administrátor, který má přístup pouze ke statistikám webu, stále vidí Optimalizaci pracovního prostoru). Vypnete ji pomocí AM_FEATUREFLAGS_HEALTHDASHBOARD=false.
System Console › Reporting › Site health, with open findings grouped by severity
Systémová konzole › Reporty › Zdraví webu, seskupeno podle závažnosti.
System Console › Reporting › Server Logs, with level badges, filters and a live tail toggle
Systémová konzole › Reporty › Logy serveru.

Metriky

Server může publikovat metriky Prometheus: frekvence a délka požadavků, websocketové připojení, využití databáze a mezipaměti, úlohy, háčky pluginů a další. Zapněte je v Systémová konzole › Prostředí › Monitorování výkonu:

NastaveníKlíč a proměnnáVýchozí
Povolit monitorování výkonuMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEVypnuto
Adresa nasloucháníMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
Povolit monitorování výkonu klientaMetricsSettings.EnableClientMetricszapnuto: prohlížeče a aplikace hlásí vlastní časy odezvy

Prometheus pak sbírá data z http://<server>:8067/metrics. Každá metrika je publikována pod svým názvem Mattermost (mattermost_…) i pod svým názvem Antimatter (antimatter_…), takže stávající dashboardy Mattermost dál fungují. Aplikace publikují vlastní metriky, například aplikace Agenti na /plugins/mattermost-ai/metrics.

Port pro metriky nevyžaduje přihlášení: nechte ho v privátní síti. Soubor compose pro web ho nepublikuje; pokud ho chcete sbírat z hostitele, přidejte "127.0.0.1:8067:8067" do sekce ports služby antimatter.

Aplikace Metriky

Bez serveru Prometheus aplikace Metriky (viz Předinstalované aplikace) shromažďuje stejné metriky do malé databáze časových řad uvnitř Antimatteru: sběr probíhá každých 60 sekund, data jsou uchovávána po dobu 15 dní. Zapnutím Povolit monitorování výkonu se aplikace také zapne, pokud jste ji sami nevypnuli. Při spuštění zapne koncový bod metrik. Stránka aplikace v Systémové konzoli › Pluginy zobrazuje velikost databáze a umožňuje stahovat výpisy dat pro vlastní analýzu nebo pro připojení k hlášení chyby; poslední den je také přidán do podpůrných paketů.

Podpůrný balíček

Podpůrný balíček je soubor zip, který obsahuje vše potřebné pro diagnostiku problému: verze, statistiky, konfigurace bez utajených údajů, seznam aplikací a úloh, schéma databáze, nedávné protokoly a profily výkonu. Vytvoříte ho příkazem amctl system supportpacket nebo v Systémové konzoli z menu v horní části bočního panelu (Komerční podpora, kde pak můžete vybrat, co zahrnout). Před sdílením si ho přečtěte: neobsahuje zprávy, ale obsahuje názvy komunit, uživatelů a nastavení.

Výkon a škálování

Jeden server s 2 jádry CPU a 4 GB paměti obsluží několik set lidí. Před přidáváním dalších serverů zvažte:

  • Databáze. Většinu práce odvádí PostgreSQL: zajistěte mu rychlé úložiště a dostatek paměti. Čtecí repliky mohou převzát čtecí zátěž (SqlSettings.DataSourceReplicas, seznam URL pro připojení).
  • Hledat. Zprávy se ve výchozím nastavení vyhledávají v databázi. U velkých serverů může vyhledávání a indexování převzít Elasticsearch nebo OpenSearch: Systémová konzole › Prostředí › Elasticsearch (ElasticsearchSettings: Typ backendu Elasticsearch nebo OpenSearch, Adresa připojení k serveru, přihlašovací údaje, poté povolte indexování, sestavte index a povolte vyhledávání).
  • Hovory. Média hovorů představují největší zátěž. Přesuňte je na server rtcd: viz Hovory a hlas.
  • Otevřené soubory. Každý připojený uživatel drží otevřené websocket. Produkční soubor compose projektu antimatter-docker zvyšuje limit na 49152 (ulimits: nofile); to samé proveďte pomocí systemd (LimitNOFILE).
  • Protokoly. Snížte LogSettings.ConsoleLevel na INFO nebo WARN: DEBUG generuje na vytíženém serveru velké množství záznamů.
  • Komprese. Pokud je Režim webového serveru nastaven na gzip, pak AM_FEATUREFLAGS_ENABLEBROTLICOMPRESSION=true vyjednává kompresi Brotli pro odpovědi API s klienty, které ji podporují, místo komprese gzip (volitelné, ve výchozím nastavení vypnuto; po změně restartujte server).

Vysoká dostupnost

Více serverů Antimatter může běžet jako cluster za load balancerem, aniž by vyžadovaly licenci. Musí sdílet stejnou databázi PostgreSQL, stejné úložiště souborů S3 a konfiguraci v databázi (AM_CONFIG). V sekci Systémová konzole › Prostředí › Vysoká dostupnost (ClusterSettings): zapněte Povolit režim vysoké dostupnosti (ClusterSettings.Enable), přidejte všem uzlům stejný Název clusteru (ClusterSettings.ClusterName) a ujistěte se, že si uzly mohou navzájem komunikovat na gossip portu, 8074 TCP a UDP (ClusterSettings.GossipPort). Uzly se navzájí najdou přes databázi. Load balancer musí propouštět websockets. Pro hovory v clusteru použijte rtcd.

Zachování dat

Ve výchozím nastavení Antimatter uchovává všechny zprávy a soubory navždy. Pokud chcete starší obsah automaticky odstraňovat, přejděte do sekce Systémová konzole › Shoda s předpisy › Zásady pro uchovávání dat:

  • Globální zásada pro uchovávání dat nastavuje Uchovávání kanálů a přímých zpráv a Uchovávání souborů pro celý server: Uchovávat navždy, nebo konkrétní počet hodin, dnů nebo let (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours).
  • Vlastní zásady pro uchovávání dat nastavují jinou dobu uchovávání pro vybrané komunity a kanály.
  • Úloha pro mazání běží každý den ve vámi zvoleném čase (DataRetentionSettings.DeletionJobStartTime, ve výchozím nastavení 02:00 UTC). Tlačítko Spustit úlohu pro mazání nyní ji spustí okamžitě a Protokol zásad vyjmenuje, co každé provedení odstranilo.
Odstraněné zprávy a soubory jsou trvale ztraceny, z databáze i z úložiště souborů. Před zapnutím politiky zkontrolujte nastavené doby a pamatujte, že vaše zálohy stále obsahují odstraněná data, dokud nevyprší.

Export pro compliance a deníky auditu

  • Sekce Systémová konzole › Shoda s předpisy › Export pro souladnost denně exportuje všechny zprávy a soubory (Povolit export pro soulad s předpisy, MessageExportSettings.EnableExport, výchozí stav vypnuto; Čas exportu souladu, výchozí hodnota 01:00) do jednoho z formátů, které archivní systémy čtou: CSV, Actiance XML nebo Global Relay (zip soubor, nebo EML odeslané přes SMTP). Příkaz amctl compliance-export spouští export a stahuje ho z příkazového řádku.
  • Sekce Monitorování souladnosti (ComplianceSettings) zapisuje denní zprávy do adresáře. Jedná se o starší mechanismus; preferujte Export pro souladnost.
  • Auditní protokolování (beta, ExperimentalAuditSettings) zaznamenává administrativní a bezpečnostní události (přihlášení, změny oprávnění a nastavení) do samostatného souboru. Záznam o jednotném přihlášení (SSO) také uvádí, zda dané přihlášení vytvořilo účet.
  • Nastavení Vlastní podmínky služby vyžaduje, aby všichni uživatelé před použitím Antimatteru přijali vaše podmínky, a znovu po jejich změně.

Common problems

"Cannot connect to the server", or messages only appear after a reload

The websocket doesn't get through. Check that the reverse proxy passes Upgrade and Connection headers (see the nginx example), and that the site URL matches the address in the browser exactly, including https.

Uploads fail with "413 Request Entity Too Large"

Proxy služba velikost zamítá. Zvyšte její limit (v nginx client_max_body_size) na alespoň hodnotu Maximální velikost souboru v sekci Systémová konzole › Prostředí › Úložiště souborů (FileSettings.MaxFileSize, výchozí hodnota 100 MB).

People can't start calls, or join but hear nothing

Pokud hovor nemůže spustit nikdo kromě administrátorů, vypněte Test mode u Hovorů. Pokud je tlačítko hovoru chybí v kanálech komunity, jedná se o komunitu typu Komunita, kde jsou hovory výchozí vypnuté: administrátoři kanálu nebo komunity je mohou zapnout v konkrétním kanálu, nebo změnit typ komunity (viz Kde jsou hovory zapnuté). Pokud se lidé připojí, ale neslyší nic, je mediální port blokovaný nebo server oznamuje nesprávnou adresu: otevřete UDP a TCP port 8443 a nastavte ICE Host Override za NAT. Lidé na sítích, které blokují oba, potřebují TURN server. Viz Hovory a hlas.

The GIF picker is empty

Zkontrolujte URL GIF služby (http://gifs:8080/v2 v compose souboru webu) a API klíč (GIFS_API_KEY v souboru .env) v sekci Systémová konzole › Pluginy › GIF, a také, že služba gifs běží: docker compose ps gifs.

No emails arrive

Použijte Test připojení v sekci Systémová konzole › Prostředí › SMTP, zkontrolujte, že Adresa odesílatele oznámení není stále test@example.com, a prohledejte protokol po výrazu smtp nebo mail.

An app shows "Failed to start"

Look for its id in the log (docker compose logs antimatter | grep <app id>). Disable and enable it in Plugin Management to restart it.

The server doesn't start

Read the end of its log. Most often the database is unreachable (check AM_SQLSETTINGS_DATASOURCE with antimatter db ping), a database migration failed (restore the backup taken before the upgrade and report the error), or the listen port is taken.

Locked out of the administrator account

Z serveru, lokální režim nevyžaduje heslo:

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

Nahlášení chyby

Otevřete problém v komunitním repozitáři Antimatter a uveďte verzi, způsob instalace, co jste provedli a příslušné řádky z logu. Bezpečnostní problémy nám prosím nahláste soukromě, jak je popsáno v zásadách pro bezpečnost.