Operacje

Nadzoruj serwer, zwiększ jego wydajność, ustal, jak długo przechowywać dane, i naprawiaj problemy, z którymi administratorzy spotykają się najczęściej.

Sprawdzanie stanu

  • amctl --local system status (w kontenerze: docker compose exec antimatter amctl --local system status). Sprawdzanie stanu obrazu Docker uruchamia to polecenie co 30 sekund, więc docker compose ps wyświetla healthy lub unhealthy.
  • GET /api/v4/system/ping odpowiada bez konieczności zalogowania, co przydaje się zewnętrznym monitorom lub load balancerom: curl -fsS https://chat.example.com/api/v4/system/ping.
  • antimatter db ping sprawdza, czy baza danych jest dostępna z zainstalowanymi ustawieniami.
  • Konsola systemu › Raportowanie › Statystyki systemu pokazuje liczbę użytkowników, wiadomości i sesji, a Optymalizacja przestrzeni roboczej wymienia problemy z konfiguracją do sprawdzenia.

Metryki

Serwer może publikować metryki Prometheus: częstotliwość i czas trwania żądań, połączenia websocket, wykorzystanie bazy danych i pamięci podręcznej, zadania, hooki wtyczek i wiele więcej. Włącz je w Konsola systemu › Środowisko › Monitorowanie wydajności:

UstawienieKlucz i zmiennaDomyślnie
Włącz monitorowanie wydajnościMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEWyłączone
Adres nasłuchiwaniaMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
Włącz monitorowanie wydajności klientaMetricsSettings.EnableClientMetricswłączone: przeglądarki i aplikacje raportują własne czasy odpowiedzi

Prometheus pobiera następnie dane z http://<server>:8067/metrics. Każda metryka jest publikowana pod nazwą Mattermost (mattermost_…) i nazwą Antimatter (antimatter_…), dzięki czemu istniejące pulpity Mattermost nadal działają. Aplikacje publikują własne metryki, na przykład aplikacja Agenci pod /plugins/mattermost-ai/metrics.

Port metryk nie wymaga logowania: utrzymuj go w sieci prywatnej. Plik compose witryny go nie publikuje; aby pobierać dane z hosta, dodaj "127.0.0.1:8067:8067" do sekcji ports usługi antimatter.

Aplikacja Metryki

Bez serwera Prometheus aplikacja Metrics (wyłączona domyślnie, patrz Wbudowane aplikacje) zbiera te same metryki do małej bazy danych szeregów czasowych wewnątrz Antimatter: co 60 sekund, z zachowaniem danych przez 15 dni. Aktywuje punkt końcowy metryk przy starcie. Jej strona w Konsola systemu › Wtyczki pokazuje rozmiar bazy danych i umożliwia pobranie zrzutów danych do własnej analizy lub dołączenia do zgłoszenia błędu; najnowszy dzień jest również dodawany do pakietów wsparcia.

Pakiet wsparcia

Pakiet wsparcia to plik zip zawierający wszystko, co jest potrzebne do zdiagnozowania problemu: wersje, statystyki, konfigurację z usuniętymi danymi wrażliwymi, listę aplikacji i zadań, schemat bazy danych, ostatnie dzienniki oraz profile wydajności. Możesz go wygenerować za pomocą polecenia amctl system supportpacket lub w Konsoli systemu z menu u góry paska bocznego (Wsparcie Komercyjne, co następnie pozwala wybrać, co ma być zawarte). Przeczytaj go przed udostępnieniem: nie zawiera wiadomości, ale zawiera nazwy społeczności, użytkowników oraz ustawień.

Wydajność i skalowanie

Jeden serwer z 2 rdzeniami CPU i 4 GB pamięci obsługuje kilkuset użytkowników. Przed dodawaniem kolejnych serwerów sprawdź:

  • Baza danych. PostgreSQL wykonuje większość pracy: zapewnij mu szybkie magazynowanie i pamięć. Odczyty mogą być rozłożone na repliki odczytu (SqlSettings.DataSourceReplicas, lista adresów URL połączeń).
  • Szukaj. Wiadomości są domyślnie wyszukiwane w bazie danych. W przypadku dużych serwerów wyszukiwanie i indeksowanie może przejąć Elasticsearch lub OpenSearch: Konsola systemu › Środowisko › Elasticsearch (ElasticsearchSettings: Typ zaplecza Elasticsearch lub OpenSearch, Adres połączenia z serwerem, dane uwierzytelniające, a następnie włącz indeksowanie, zbuduj indeks i włącz wyszukiwanie).
  • Połączenia. Media z połączeń generują największe obciążenie. Przenieś je na serwer rtcd: zobacz Połączenia i głos.
  • Otwarte pliki. Każdy połączony użytkownik utrzymuje otwarty websocket. Produkcyjny plik compose z antimatter-docker podnosi limit do 49152 (ulimits: nofile); zrób to samo w systemd (LimitNOFILE).
  • Logi. Obniż LogSettings.ConsoleLevel do INFO lub WARN: DEBUG generuje dużo logów na zajętym serwerze.

Wysoka dostępność

Wiele serwerów Antimatter może działać jako klastrowy za balancerem obciążenia, bez licencji. Muszą one współdzielić tę samą bazę danych PostgreSQL, to samo magazynowanie plików S3 oraz konfigurację w bazie danych (AM_CONFIG). W Konsola systemu › Środowisko › Wysoka Dostępność (ClusterSettings): włącz Włącz tryb Wysokiej Dostępności (ClusterSettings.Enable), nadaj każdemu węzłowi tę samą Nazwę klastra (ClusterSettings.ClusterName) i upewnij się, że węzły mogą się nawzajem osiągnąć na porcie gossip, 8074 TCP i UDP (ClusterSettings.GossipPort). Węzły znajdują się nawzajem za pośrednictwem bazy danych. Balancer obciążenia musi przekazywać websockety. W przypadku połączeń w klastrze użyj rtcd.

Zasady przechowywania danych

Domyślnie Antimatter przechowuje wszystkie wiadomości i pliki na zawsze. Aby automatycznie usuwać starsze dane, przejdź do Konsola systemu › Zgodność › Zasady przechowywania danych:

  • Globalna polityka przechowywania danych ustawia Przechowywanie kanałów i wiadomości bezpośrednich oraz Przechowywanie plików dla całego serwera: Zachowaj na zawsze lub określoną liczbę godzin, dni lub lat (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours).
  • Własne zasady przechowywania ustawiają inny czas przechowywania dla wybranych społeczności i kanałów.
  • Zadanie usuwania jest uruchamiane codziennie o wybranej przez Ciebie godzinie (DataRetentionSettings.DeletionJobStartTime, domyślnie 02:00 UTC). Opcja Uruchom teraz zadanie usuwania uruchamia je natychmiast, a Dziennik polityki zawiera listę elementów usuniętych podczas każdego uruchomienia.
Usunięte wiadomości i pliki są trwale usuwane z bazy danych i magazynu plików. Sprawdź okresy przechowywania przed włączeniem zasady i pamiętaj, że Twoje kopie zapasowe nadal zawierają usunięte dane do czasu ich wygaśnięcia.

Eksport zgodności i dzienniki audytu

  • Sekcja Konsola systemu › Zgodność › Eksport zgodności eksportuje codziennie wszystkie wiadomości i pliki (opcja Włącz raport zgodności, MessageExportSettings.EnableExport, domyślnie wyłączona; Czas eksportu zgodności, domyślnie 01:00) w jednym z formatów czytanych przez systemy archiwizacji: CSV, Actiance XML lub Global Relay (plik zip lub EML wysłany przez SMTP). Polecenie amctl compliance-export pozwala uruchamiać i pobierać eksporty z wiersza poleceń.
  • Monitorowanie zgodności (ComplianceSettings) zapisuje codzienne raporty do katalogu. Jest to starszy mechanizm; zalecane jest korzystanie z Eksportu zgodności.
  • Funkcja Rejestrowanie audytów (beta, ExperimentalAuditSettings) zapisuje zdarzenia administracyjne i bezpieczeństwa (logowania, zmiany uprawnień i ustawień) do osobnego pliku.
  • Opcja Własne zasady użytkowania wymaga od wszystkich użytkowników akceptacji Twoich zasad przed rozpoczęciem korzystania z Antimatter oraz ponownie po ich zmianie.

Częste problemy

„Nie można połączyć się z serwerem” lub wiadomości pojawiają się dopiero po odświeżeniu

Połączenie websocket nie przechodzi. Sprawdź, czy proxy odwrotne przekazuje nagłówki Upgrade i Connection (patrz przykład dla nginx), oraz czy adres URL witryny dokładnie odpowiada adresowi w przeglądarce, w tym protokołu https.

Przesyłanie plików kończy się błędem „413 Request Entity Too Large”

Proxy odrzuca rozmiar żądania. Zwiększ jego limit (w nginx: client_max_body_size) do wartości nie mniejszej niż Maksymalny rozmiar pliku w Konsola systemu › Środowisko › Magazyn plików (FileSettings.MaxFileSize, domyślnie 100 MB).

Użytkownicy nie mogą rozpocząć rozmów lub dołączają, ale nic nie słyszą

Jeśli tylko administratorzy mogą rozpoczynać rozmowy, wyłącz Tryb testowy dla rozmów. Jeśli przycisk rozmowy nie jest widoczny w kanałach społeczności, oznacza to, że jest to społeczność typu Społeczność, w której rozmowy są domyślnie wyłączone: administratorzy kanału lub społeczności mogą je włączyć w danym kanale lub zmienić typ społeczności (patrz Gdzie rozmowy są włączone). Jeśli użytkownicy dołączają, ale nie słyszą niczego, port mediów jest zablokowany lub serwer zwraca nieprawidłowy adres: otwórz porty 8443 UDP i TCP oraz ustaw Nadpisanie hosta ICE za NAT. Użytkownicy w sieciach blokujących oba porty potrzebują serwera TURN. Patrz Rozmowy i głos.

Wybór GIF jest pusty

W sekcji Konsola systemu › Wtyczki › GIFy sprawdź Adres URL usługi GIF (http://gifs:8080/v2 w pliku compose witryny) oraz Klucz API (GIFS_API_KEY z pliku .env), a także czy usługa gifs działa: docker compose ps gifs.

Nie dochodzą e-maile

W sekcji Konsola systemu › Środowisko › SMTP użyj opcji Sprawdź połączenie, upewnij się, że Powiadomienie z adresu nie jest nadal ustawione na test@example.com, a następnie wyszukaj w dzienniku frazy smtp lub mail.

Aplikacja wyświetla „Nie udało się uruchomić”

Znajdź jej identyfikator w dzienniku (docker compose logs antimatter | grep <app id>). Wyłącz i włącz ją w Zarządzaniu wtyczkami, aby ją uruchomić ponownie.

Serwer nie startuje

Przeczytaj koniec jego dziennika. Najczęściej baza danych jest niedostępna (sprawdź AM_SQLSETTINGS_DATASOURCE poleceniem antimatter db ping), migracja bazy danych się nie powiodła (przywróć kopię zapasową wykonaną przed aktualizacją i zgłoś błąd) lub port nasłuchiwania jest zajęty.

Utrata dostępu do konta administratora

Na serwerze tryb lokalny nie wymaga hasła:

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

Zgłaszanie błędu

Otwórz zgłoszenie w repozytorium społeczności Antimatter, podając wersję, sposób instalacji, wykonane czynności oraz istotne linie dziennika. Problemy bezpieczeństwa zgłaszaj prywatnie, zgodnie z polityką bezpieczeństwa.