Operações
Vigiar o servidor, permitir-lhe suportar mais utilizadores, decidir por quanto tempo os dados são conservados e corrigir os problemas com que os administradores mais frequentemente se deparam.
Verificações de estado
amctl --local system status(no contentor:docker compose exec antimatter amctl --local system status). A verificação de estado da imagem Docker executa-a a cada 30 segundos, pelo quedocker compose psmostrahealthyouunhealthy.GET /api/v4/system/pingresponde sem necessidade de iniciar sessão, para um monitor externo ou um equilibrador de carga:curl -fsS https://chat.example.com/api/v4/system/ping.antimatter db pingverifica se a base de dados está acessível com as definições configuradas.- Consola do sistema › Relatórios › Estatísticas do sistema mostra o número de utilizadores, publicações e sessões, e Otimização do espaço de trabalho lista problemas de configuração a verificar.
Métricas
O servidor pode publicar métricas Prometheus: taxas e durações de pedidos, ligações websocket, utilização da base de dados e da cache, tarefas, ganchos de plugins e mais. Ative-as em Consola do sistema › Ambiente › Monitorização de desempenho:
| Definição | Chave e variável | Padrão |
|---|---|---|
| Ativar monitorização de desempenho | MetricsSettings.Enable, AM_METRICSSETTINGS_ENABLE | desativado |
| Endereço de escuta | MetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS | :8067 |
| Ativar monitorização de desempenho do cliente | MetricsSettings.EnableClientMetrics | ativado: os navegadores e as aplicações reportam os seus próprios tempos de resposta |
O Prometheus faz depois o scraping de http://<server>:8067/metrics. Cada métrica é publicada com o seu nome do Mattermost (mattermost_…) e o seu nome do Antimatter (antimatter_…), pelo que os painéis existentes do Mattermost continuam a funcionar. As aplicações publicam as suas próprias métricas, por exemplo, a aplicação Agents em /plugins/mattermost-ai/metrics.
A porta de métricas não requer início de sessão: mantenha-a numa rede privada. O ficheiro compose do site não a publica; para a recolher a partir do anfitrião, adicione "127.0.0.1:8067:8067" às ports do serviço antimatter.
A aplicação Métricas
Sem um servidor Prometheus, a app Métricas (desativada por omissão, ver Apps incluídas) recolhe as mesmas métricas numa pequena base de dados de séries temporais dentro do Antimatter: a cada 60 segundos, com retenção de 15 dias. Ativa o endpoint de métricas quando arranca. A sua página na Consola do sistema › Plugins mostra o tamanho da base de dados e permite descarregar cópias dos dados, para a sua própria análise ou para anexar a um relatório de erro; o dia mais recente é também incluído nos pacotes de suporte.
Pacote de suporte
Um pacote de suporte é um ficheiro zip com o necessário para diagnosticar um problema: versões, estatísticas, a configuração com os segredos removidos, a lista de apps e tarefas, o esquema da base de dados, o registo recente e os perfis de desempenho. Gere um com amctl system supportpacket, ou na Consola do sistema, a partir do menu no topo da barra lateral (Suporte comercial, que depois permite escolher o que incluir). Leia-o antes de o partilhar: não contém mensagens, mas contém nomes de comunidades, utilizadores e definições.
Desempenho e escalabilidade
Um servidor com 2 núcleos de CPU e 4 GB de memória serve algumas centenas de pessoas. Antes de adicionar servidores, verifique:
- A base de dados. O PostgreSQL faz a maior parte do trabalho: forneça-lhe armazenamento e memória rápidos. Réplicas de leitura podem assumir a carga de leitura (
SqlSettings.DataSourceReplicas, uma lista de URLs de ligação). - Pesquisa. As mensagens são pesquisadas na base de dados por omissão. Em servidores de grande dimensão, o Elasticsearch ou o OpenSearch podem assumir a pesquisa e a indexação: Consola do sistema › Ambiente › Elasticsearch (
ElasticsearchSettings: Tipo de backend Elasticsearch ou OpenSearch, Endereço de ligação ao servidor, credenciais, depois ativar a indexação, criar o índice e ativar a pesquisa). - Chamadas. Os meios das chamadas são a carga mais pesada. Mova-os para um servidor rtcd: ver Chamadas e voz.
- Ficheiros abertos. Cada pessoa ligada mantém um websocket aberto. O ficheiro compose de produção do antimatter-docker aumenta o limite para 49152 (
ulimits: nofile); faça o mesmo com o systemd (LimitNOFILE). - Registos. Reduza
LogSettings.ConsoleLevelparaINFOouWARN:DEBUGregista muito num servidor ocupado.
Alta disponibilidade
Vários servidores Antimatter podem ser executados como um cluster atrás de um balanceador de carga, sem necessidade de licença. Devem partilhar a mesma base de dados PostgreSQL, o mesmo armazenamento de ficheiros S3 e a configuração na base de dados (AM_CONFIG). Em Consola do sistema › Ambiente › Alta disponibilidade (ClusterSettings): ative Ativar modo de alta disponibilidade (ClusterSettings.Enable), atribua a todos os nós o mesmo Nome do cluster (ClusterSettings.ClusterName) e permita que os nós se comuniquem através da porta de gossip, 8074 TCP e UDP (ClusterSettings.GossipPort). Os nós encontram-se através da base de dados. O balanceador de carga deve permitir a passagem de websockets. Para chamadas num cluster, utilize o rtcd.
Retenção de dados
Por predefinição, o Antimatter mantém todas as mensagens e ficheiros para sempre. Para eliminar automaticamente os mais antigos, vá a Consola do sistema › Conformidade › Políticas de retenção de dados:
- A Política de Retenção Global define a Retenção de canais e mensagens diretas e a Retenção de ficheiros para todo o servidor: Manter para sempre, ou um número de horas, dias ou anos (
DataRetentionSettings.EnableMessageDeletion,MessageRetentionHours,EnableFileDeletion,FileRetentionHours). - As Políticas de retenção personalizadas definem uma duração diferente para comunidades e canais selecionados.
- A tarefa de eliminação é executada todos os dias à hora que escolher (
DataRetentionSettings.DeletionJobStartTime,02:00UTC por omissão). Executar tarefa de eliminação agora executa-a de imediato, e o Registo de políticas lista o que cada execução removeu.
Exportação de conformidade e registos de auditoria
- Consola do sistema › Conformidade › Exportação de conformidade exporta todas as mensagens e ficheiros todos os dias (Ativar exportação de conformidade,
MessageExportSettings.EnableExport, desativado por predefinição; Hora de exportação de conformidade,01:00por predefinição) num dos formatos que os sistemas de arquivamento leem: CSV, Actiance XML ou Global Relay (um ficheiro zip, ou EML enviado via SMTP).amctl compliance-exportexecuta e descarrega exportações a partir da linha de comandos. - Monitorização de conformidade (
ComplianceSettings) escreve relatórios diários num diretório. É o mecanismo mais antigo; prefira a Exportação de conformidade. - Registo de auditoria (beta,
ExperimentalAuditSettings) regista eventos administrativos e de segurança (inícios de sessão, alterações de permissões e definições) num ficheiro próprio. - Termos de serviço personalizados pede a todos que aceitem os seus termos antes de usarem o Antimatter, e novamente depois de os alterarem.
Problemas comuns
«Não é possível ligar ao servidor», ou as mensagens só aparecem após uma recarga
O websocket não passa. Verifique que o proxy inverso transmite os cabeçalhos Upgrade e Connection (veja o exemplo do nginx) e que o URL do site corresponde exatamente ao endereço no navegador, incluindo https.
As cargas falham com «413 Request Entity Too Large»
O proxy recusa o tamanho. Aumente o seu limite (nginx client_max_body_size) para pelo menos Tamanho máximo do ficheiro em Consola do sistema › Ambiente › Armazenamento de ficheiros (FileSettings.MaxFileSize, 100 MB por omissão).
As pessoas não conseguem iniciar chamadas, ou entram mas não ouvem nada
Se apenas os administradores podem iniciar chamadas, desative o Modo de teste das Chamadas. Se o botão de chamada não estiver presente nos canais de uma comunidade, a comunidade é do tipo Comunidade, onde as chamadas estão desativadas por omissão: os administradores do canal ou da comunidade podem ativar as chamadas num canal ou alterar o tipo da comunidade (ver Onde as chamadas estão ativas). Se as pessoas entrarem, mas não ouvirem nada, a porta de media está bloqueada ou o servidor anuncia o endereço errado: abra as portas 8443 UDP e TCP e defina o Substituição do anfitrião ICE atrás de NAT. As pessoas em redes que bloqueiam ambas precisam de um servidor TURN. Ver Chamadas e voz.
O seletor de GIF está vazio
Verifique o URL do serviço de GIFs (http://gifs:8080/v2 com o ficheiro compose do site) e a Chave da API (o GIFS_API_KEY do .env) em Consola do sistema › Plugins › GIFs, e que o serviço gifs esteja a executar: docker compose ps gifs.
Nenhum e-mail chega
Utilize Testar ligação em Consola do sistema › Ambiente › SMTP, verifique que o Endereço de origem das notificações não é ainda test@example.com, e pesquise no registo por smtp ou mail.
Uma aplicação mostra «Falha ao iniciar»
Procure o seu id no registo (docker compose logs antimatter | grep <app id>). Desative e ative-a na Gestão de Plugins para a reiniciar.
O servidor não inicia
Leia o final do seu registo. Mais frequentemente, a base de dados não é acessível (verifique AM_SQLSETTINGS_DATASOURCE com antimatter db ping), uma migração da base de dados falhou (restaurar a cópia de segurança feita antes da atualização e reportar o erro), ou a porta de escuta está ocupada.
Bloqueado da conta de administrador
A partir do servidor, o modo local não requer palavra-passe:
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
Reportar um erro
Abra uma issue no repositório da comunidade Antimatter, indicando a versão, a forma como foi instalado, o que foi feito e as linhas relevantes do registo. Reporte problemas de segurança em privado, conforme explicado na política de segurança.