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 que docker compose ps mostra healthy ou unhealthy.
  • GET /api/v4/system/ping responde 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 ping verifica 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çãoChave e variávelPadrão
Ativar monitorização de desempenhoMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEdesativado
Endereço de escutaMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
Ativar monitorização de desempenho do clienteMetricsSettings.EnableClientMetricsativado: 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.ConsoleLevel para INFO ou WARN: DEBUG regista 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:00 UTC 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.
As mensagens e ficheiros eliminados desaparecem definitivamente, da base de dados e do armazenamento de ficheiros. Verifique as durações antes de ativar uma política e lembre-se de que as suas cópias de segurança ainda contêm os dados eliminados até expirarem.

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:00 por 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-export executa 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.