Operações
Monitore o servidor, permita que ele atenda mais pessoas, defina por quanto tempo os dados serão mantidos e resolva os problemas com que os administradores mais se deparam.
Verificações de integridade
amctl --local system status(no container:docker compose exec antimatter amctl --local system status). A verificação de integridade da imagem Docker executa esse comando a cada 30 segundos, de modo quedocker compose psexibehealthyouunhealthy.GET /api/v4/system/pingresponde sem exigir login, para um monitor externo ou um balanceador de carga:curl -fsS https://chat.example.com/api/v4/system/ping.antimatter db pingverifica se o banco de dados está acessível com as configurações definidas.- Console do Sistema › Reportando › Estatísticas do Sistema exibe o número de usuários, publicações e sessões, e Otimização do Espaço de Trabalho lista problemas de configuração que devem ser verificados.
Métricas
O servidor pode publicar métricas do Prometheus: taxas e durações de requisições, conexões websocket, uso do banco de dados e da cache, jobs, hooks de plugins e mais. Ative-as em Console do Sistema › Ambiente › Monitoramento de Performance:
| Configuração | Chave e variável | Padrão |
|---|---|---|
| Ativar Monitoramento de Performance | MetricsSettings.Enable, AM_METRICSSETTINGS_ENABLE | desativado |
| Endereço à Escutar | MetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS | :8067 |
| Ativar o monitoramento do desempenho do cliente | MetricsSettings.EnableClientMetrics | ativado: navegadores e aplicativos relatam seus próprios tempos de resposta |
O Prometheus então coleta dados de http://<server>:8067/metrics. Cada métrica é publicada com seu nome do Mattermost (mattermost_…) e seu nome do Antimatter (antimatter_…), de modo que os painéis existentes do Mattermost continuam funcionando. Os aplicativos publicam suas próprias métricas, por exemplo, o app de Agentes em /plugins/mattermost-ai/metrics.
A porta de métricas não exige login: mantenha-a em uma rede privada. O arquivo compose do site não a publica; para coletá-la do host, adicione "127.0.0.1:8067:8067" aos ports do serviço antimatter.
O app de Métricas
Sem um servidor Prometheus, o app de Métricas (desativado por padrão, veja Apps incluídos) coleta as mesmas métricas em um pequeno banco de dados de séries temporais dentro do Antimatter: a cada 60 segundos, com retenção de 15 dias. Ele ativa o endpoint de métricas ao iniciar. A página dele no Console do Sistema › Plugins mostra o tamanho do banco de dados e permite baixar cópias dos dados, para sua própria análise ou para anexar a um relatório de bug; o dia mais recente também é incluído nos pacotes de suporte.
Pacote de suporte
Um pacote de suporte é um arquivo zip com o necessário para diagnosticar um problema: versões, estatísticas, a configuração com seus segredos removidos, a lista de apps e jobs, o esquema do banco de dados, o log recente e os perfis de desempenho. Gere um com amctl system supportpacket, ou no Console do Sistema pelo menu no topo da barra lateral (Suporte Comercial, que então permite escolher o que incluir). Leia-o antes de compartilhá-lo: ele não contém mensagens, mas contém nomes de comunidades, usuários e configurações.
Desempenho e escalabilidade
Um servidor com 2 núcleos de CPU e 4 GB de memória atende algumas centenas de pessoas. Antes de adicionar servidores, verifique:
- O banco de dados. O PostgreSQL faz a maior parte do trabalho: forneça armazenamento rápido e memória. Réplicas de leitura podem assumir a carga de leitura (
SqlSettings.DataSourceReplicas, uma lista de URLs de conexão). - Pesquisa. As mensagens são pesquisadas no banco de dados por padrão. Para servidores grandes, o Elasticsearch ou OpenSearch pode assumir a pesquisa e a indexação: Console do Sistema › Ambiente › Elasticsearch (
ElasticsearchSettings: Tipo de back-end Elasticsearch ou OpenSearch, Endereço de Conexão do servidor, credenciais, depois ativar a indexação, construir o índice e ativar a pesquisa). - Chamadas. A mídia das chamadas é a carga mais pesada. Mova-a para um servidor rtcd: veja Chamadas e voz.
- Arquivos abertos. Cada pessoa conectada mantém um websocket aberto. O arquivo compose de produção do antimatter-docker aumenta o limite para 49152 (
ulimits: nofile); faça o mesmo com o systemd (LimitNOFILE). - Logs. Reduza
LogSettings.ConsoleLevelparaINFOouWARN:DEBUGgera muitos logs em um servidor ocupado.
Alta disponibilidade
Vários servidores Antimatter podem ser executados como um cluster atrás de um balanceador de carga, sem a necessidade de uma licença. Eles devem compartilhar o mesmo banco de dados PostgreSQL, o mesmo armazenamento de arquivos S3 e a configuração no banco de dados (AM_CONFIG). Em Console do Sistema › Ambiente › Alta Disponibilidade (ClusterSettings): ative Ativar modo 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 pela porta de gossip, 8074 TCP e UDP (ClusterSettings.GossipPort). Os nós se encontram por meio do banco de dados. O balanceador de carga deve transmitir websockets. Para chamadas em um cluster, use rtcd.
Retenção de dados
Por padrão, o Antimatter mantém todas as mensagens e arquivos para sempre. Para excluir automaticamente os antigos, acesse Console do Sistema › Conformidade › Políticas de Retenção de Dados:
- A Política Global de Retenção define a Retenção de canais e mensagens diretas e a Retenção de arquivo para todo o servidor: Mantenha 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.
- O job de exclusão é executado diariamente no horário que você escolher (
DataRetentionSettings.DeletionJobStartTime, padrão02:00UTC). Executa Job de Exclusão Agora o executa imediatamente, e o Registro de política lista o que cada execução removeu.
Exportação de conformidade e logs de auditoria
- Console do Sistema › Conformidade › Exportação de Conformidade exporta todas as mensagens e arquivos diariamente (Habilitar Exportação de Conformidade,
MessageExportSettings.EnableExport, desativado por padrão; Hora Exportação de Conformidade, padrão01:00) em um dos formatos lidos por sistemas de arquivamento: CSV, Actiance XML ou Global Relay (um arquivo zip, ou EML enviado via SMTP).amctl compliance-exportexecuta e baixa exportações pela linha de comando. - Monitoramento de Conformidade (
ComplianceSettings) gera relatórios diários em um diretório. É o mecanismo mais antigo; prefira a Exportação de Conformidade. - Registro de Auditoria (beta,
ExperimentalAuditSettings) registra eventos administrativos e de segurança (logins, alterações de permissões e configurações) em um arquivo próprio. - Termos de Serviço Personalizado (Beta) solicita que todos aceitem seus termos antes de usar o Antimatter, e novamente após você alterá-los.
Problemas comuns
"Não é possível conectar ao servidor", ou as mensagens só aparecem após uma recarga
O websocket não está passando. Verifique se o proxy reverso transmite os cabeçalhos Upgrade e Connection (veja o exemplo do nginx) e se a URL do site corresponde exatamente ao endereço no navegador, incluindo https.
Envios falham com "413 Request Entity Too Large"
O proxy recusa o tamanho. Aumente seu limite (nginx client_max_body_size) para pelo menos Tamanho Máximo do Arquivo em Console do Sistema › Ambiente › Armazenamento de Arquivo (FileSettings.MaxFileSize, 100 MB por padrão).
As pessoas não conseguem iniciar chamadas, ou entram, mas não ouvem nada
Se apenas 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 padrão: os administradores do canal ou da comunidade podem ativar as chamadas em um canal ou alterar o tipo da comunidade (veja Onde as chamadas estão ativadas). Se as pessoas entram, mas não ouvem nada, a porta de mídia está bloqueada ou o servidor anuncia o endereço incorreto: abra as portas 8443 UDP e TCP e configure o Substituição do Host ICE atrás de NAT. Pessoas em redes que bloqueiam ambas precisam de um servidor TURN. Veja Chamadas e voz.
O seletor de GIFs está vazio
Verifique URL do serviço de GIFs (http://gifs:8080/v2 com o arquivo compose do site) e Chave de API (o GIFS_API_KEY do .env) em Console do Sistema › Plugins › GIFs, e se o serviço gifs está em execução: docker compose ps gifs.
Nenhum e-mail chega
Use Testar Conexão em Console do Sistema › Ambiente › SMTP, verifique se Notificação a Partir do Endereço não é ainda test@example.com, e pesquise no log por smtp ou mail.
Um aplicativo exibe "Falha ao iniciar"
Procure seu id no log (docker compose logs antimatter | grep <app id>). Desative e ative-o no Gerenciamento de Plugins para reiniciá-lo.
O servidor não inicia
Leia o final do log. Mais frequentemente, o banco de dados é inacessível (verifique AM_SQLSETTINGS_DATASOURCE com antimatter db ping), uma migração do banco de dados falhou (restaure o backup feito antes da atualização e reporte o erro), ou a porta de escuta está ocupada.
Bloqueado da conta de administrador
A partir do servidor, o modo local não requer senha:
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 bug
Abra uma issue no repositório da comunidade do Antimatter, informando a versão, como você instalou, o que você fez e as linhas relevantes do log. Relate problemas de segurança de forma privada, conforme explicado na política de segurança.