Експлоатация

Следете сървъра, осигурете му възможност да обслужва повече потребители, определете колко дълго да се задържат данните и отстранете проблемите, с които администраторите се сблъскват най-често.

Проверки на здравословното състояние

  • amctl --local system status (в контейнера: docker compose exec antimatter amctl --local system status). Проверката на здравословното състояние на Docker образа се изпълнява на всеки 30 секунди, така че docker compose ps показва healthy или unhealthy.
  • GET /api/v4/system/ping отговаря без влизане в системата, за външен монитор или балансир на натоварването: curl -fsS https://chat.example.com/api/v4/system/ping.
  • antimatter db ping проверява дали базата данни е достъпна с конфигурираните параметри.
  • Системна конзола › Докладване › Статистика за системата показва броя на потребителите, публикациите и сесиите.
  • Системна конзола › Докладване › Здраве на сайта проверява базата данни, търсенето, клъстера, push известията, задачите, влизането, съответствието и други всеки час и изброява какво изисква внимание, с неговата сериозност; заглушете констатация, която не искате да виждате отново, и я намерете по-късно в раздела „Заглушени“, заедно с информация кой я е заглушил и кога. По подразбиране е включено; то замества Оптимизиране на работното пространство за пълните системни администратори (делегираният администратор, който може само да чете статистиката на сайта, все още вижда Оптимизиране на работното пространство). Изключете го с AM_FEATUREFLAGS_HEALTHDASHBOARD=false.
System Console › Reporting › Site health, with open findings grouped by severity
Системна конзола › Докладване › Здраве на сайта, групирано по сериозност.
System Console › Reporting › Server Logs, with level badges, filters and a live tail toggle
Системна конзола › Докладване › Журнали на сървъра.

Метрики

Сървърът може да публикува метрики на Prometheus: честота и продължителност на заявките, websocket връзки, използване на базата данни и кеша, задачи, хукове на приставки и др. Активират се в Системна конзола › Обкръжение › Мониторинг на производителността:

НастройкаКлюч и променливаПо подразбиране
Разреши мониторинг на производителносттаMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEизключено
Адрес на слушанеMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
Разрешаване мониторинг производителността на клиентаMetricsSettings.EnableClientMetricsактивно: браузърите и приложенията докладват собствените си времена

Prometheus след това извлича http://<server>:8067/metrics. Всяка метрика се публикува под името ѝ в Mattermost (mattermost_…) и под името ѝ в Antimatter (antimatter_…), така че съществуващите дашбордове на Mattermost продължават да работят. Приложенията публикуват собствените си метрики, например приложението Agents на /plugins/mattermost-ai/metrics.

Портът за метрики не изисква влизане в системата: дръжте го в частна мрежа. Файлът compose на сайта не го публикува; за да го извличате от хоста, добавете "127.0.0.1:8067:8067" в ports на услугата antimatter.

Приложението Metrics

Без сървър на Prometheus приложението „Метрики“ (вижте Вградени приложения) събира същите метрики в малка база данни с времеви редове вътре в Antimatter: на всеки 60 секунди, съхранявани за 15 дни. Включването на Разреши мониторинг на производителността активира и приложението, освен ако не сте го изключили сами. То включва крайната точка за метрики при стартиране. Неговата страница в Системна конзола › Приставки показва размера на базата данни и ви позволява да изтегляте експорти на данните, за ваш собствен анализ или за прикачване към доклад за грешка; последният ден също се добавя към пакетите за поддръжка.

Пакет за поддръжка

Пакетът за поддръжка е zip файл с необходимото за диагностика на проблем: версии, статистика, конфигурация с премахнати тайни, списък на приложенията и задачите, схемата на базата данни, последния лог и профили на производителността. Генерирайте такъв с amctl system supportpacket, или в Системната конзола от менюто в горната част на страничната ѝ лента (Търговска поддръжка, което после ви позволява да изберете какво да включите). Прочетете го, преди да го споделите: не съдържа съобщения, но съдържа имената на общности, потребители и настройки.

Производителност и мащабиране

Един сървър с 2 CPU ядра и 4 GB памет обслужва няколко стотин души. Преди да добавяте сървъри, проверете:

  • Базата данни. PostgreSQL извършва по-голямата част от работата: осигурете ѝ бързо съхранение и памет. Читащите реплики могат да поемат натоварването от четене (SqlSettings.DataSourceReplicas, списък с URL-и за свързване).
  • Търсене. По подразбиране съобщенията се търсят в базата данни. За големи сървъри Elasticsearch или OpenSearch могат да поемат търсенето и индексацията: Системна конзола › Обкръжение › Elasticsearch (ElasticsearchSettings: Backend тип Elasticsearch или OpenSearch, Адрес за връзка със сървъра, данни за удостоверяване, после активирайте индексацията, изградете индекса и активирайте търсенето).
  • Обаждания. Медията на обажданията е най-тежкото натоварване. Преместете я на rtcd сървър: вижте Обаждания и глас.
  • Отворени файлове. Всеки свързан човек поддържа отворен websocket. Продуктивният compose файл на antimatter-docker повишава лимита до 49152 (ulimits: nofile); направете същото с systemd (LimitNOFILE).
  • Логове. Намалете LogSettings.ConsoleLevel до INFO или WARN: DEBUG записва много на натоварен сървър.
  • Компресия. Когато Режим на уеб сървъра е зададен на gzip, AM_FEATUREFLAGS_ENABLEBROTLICOMPRESSION=true договаря Brotli компресия за отговорите на API с клиенти, които я приемат, вместо gzip (по избор, изключено по подразбиране; рестартирайте сървъра след промяната).

Висока наличност

Няколко сървъра на Antimatter могат да работят като клъстер зад балансир на натоварването, без лиценз. Те трябва да споделят една и съща база данни PostgreSQL, едно и също S3 хранилище за файлове и конфигурацията в базата данни (AM_CONFIG). В Системна конзола › Обкръжение › Висока достъпност (ClusterSettings): включете Разреши режим на висока достъпност (ClusterSettings.Enable), задайте на всеки възел едно и също Име на клъстера (ClusterSettings.ClusterName) и осигурете възможност възлите да се свързват помежду си на порта за gossip, 8074 TCP и UDP (ClusterSettings.GossipPort). Възлите се откриват чрез базата данни. Балансирът на натоварването трябва да пропуска websocket-и. За обаждания в клъстер използвайте rtcd.

Съхранение на данни

По подразбиране Antimatter запазва всяко съобщение и файл завинаги. За да се изтриват старите автоматично, отидете в Системна конзола › Съгласие › Политики за съхранение на данни:

  • Глобалната политика за съхраняване задава Съхранение на канали и директни съобщения и Съхранение на файлове за целия сървър: Запази завинаги или брой часове, дни или години (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours).
  • Персонализираните политики за съхраняване задават различен срок за избрани общности и канали.
  • Заданието за изтриване се изпълнява всеки ден в часа, който изберете (DataRetentionSettings.DeletionJobStartTime, по подразбиране 02:00 UTC). Изпълнете задание за изтриване сега го изпълнява веднага, а Дневникът на политиката изброява какво е премахнато при всяко изпълнение.
Изтритите съобщения и файлове се изчезват завинаги, от базата данни и от файловото хранилище. Проверете сроковете, преди да включите политика, и имайте предвид, че резервните копия продължават да съдържат изтритите данни, докато не изтекат.

Експорт за съответствие и одитни дневници

  • Системна конзола › Съгласие › Експорт на съответствие експортира всички съобщения и файлове всеки ден (Активиране на експорт на съответствие, MessageExportSettings.EnableExport, по подразбиране изключено; Време на експорта за съответствие, по подразбиране 01:00) в един от формати, които системите за архивираене четат: CSV, Actiance XML или Global Relay (zip файл или EML, изпратен чрез SMTP). amctl compliance-export изпълнява и изтегля експортите от командния ред.
  • Мониторинг на съответствието (ComplianceSettings) записва ежедневни отчети в директория. Това е по-старият механизъм; предпочетете Експорт на съответствие.
  • Журнал на одита (бета, ExperimentalAuditSettings) записва административни и сигурностни събития (влизания, промени в разрешенията и настройките) в собствен файл. Записът за единично влизане (SSO) също така показва дали това влизане е създало акаунта.
  • Персонализираните Условия за ползване изискват от всеки да приеме вашите условия, преди да използва Antimatter, и отново след като ги промените.

Чести проблеми

„Не може да се свърже със сървъра“ или съобщенията се появяват едва след презареждане

WebSocket връзката не минава. Проверете дали обратният прокси предава заглавието Upgrade и Connection (вижте примера за nginx) и дали URL-ът на сайта съвпада точно с адреса в браузъра, включително https.

Качванията се провалят с „413 Request Entity Too Large“

Прокси сървърът отхвърля размера. Повишете неговия лимит (nginx client_max_body_size) до поне Максимален размер на файла в Системна конзола › Обкръжение › Файлово хранилище (FileSettings.MaxFileSize, по подразбиране 100 MB).

Хората не могат да започнат обаждания или се присъединяват, но не чуват нищо

Ако само администраторите могат да започват обаждания, изключете Тестов режим на Обажданията. Ако бутонът за обаждане липсва в каналите на общността, тя е от вид Общност, при което обажданията са изключени по подразбиране: администраторите на канала или общността могат да ги включат в даден канал или да променят вида на общността (вижте Къде са активни обажданията). Ако хората се присъединяват, но не чуват нищо, медийният порт е блокиран или сървърът обявява грешен адрес: отворете 8443 UDP и TCP и задайте ICE Host Override зад NAT. Хората в мрежи, които блокират и двете, имат нужда от TURN сървър. Вижте Обаждания и глас.

Изборникът за GIF е празен

Проверете URL на GIF услугата (http://gifs:8080/v2 в compose файла на сайта) и API ключ (GIFS_API_KEY в .env) в Системна конзола › Приставка › GIF, както и че услугата gifs се изпълнява: docker compose ps gifs.

Имейлите не пристигат

Използвайте Тест на връзката в Системна конзола › Обкръжение › SMTP, проверете, че Уведомления от адрес не е все още test@example.com, и потърсете в лога за smtp или mail.

Приложение показва „Неуспешно стартиране“

Търсете неговия идентификатор в журнала (docker compose logs antimatter | grep <app id>). Изключете го и го включете отново в Управление на плъгини, за да го рестартирате.

Сървърът не се стартира

Прочетете края на неговия журнал. Най-често базата данни е недостъпна (проверете AM_SQLSETTINGS_DATASOURCE с antimatter db ping), миграция на базата данни се е провалила (възстановете резервното копие, направено преди надграждането, и докладвайте за грешката), или портът за слушане е зает.

Блокиран от администраторската сметка

От сървъра локалният режим не изисква парола:

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

Съобщаване за грешка

Отворете проблем в репозиторията на общността на Antimatter, като посочите версията, начина на инсталиране, какво сте направили и съответните редове от дневника. Съобщавайте за проблеми с сигурността поверително, както е обяснено в политиката за сигурност.