Operaciones

Vigila el servidor, haz que pueda soportar más personas, decide cuánto tiempo se conservan los datos y resuelve los problemas que los administradores encuentran con más frecuencia.

Comprobaciones de estado

  • amctl --local system status (en el contenedor: docker compose exec antimatter amctl --local system status). La comprobación de estado de la imagen de Docker la ejecuta cada 30 segundos, por lo que docker compose ps muestra healthy o unhealthy.
  • GET /api/v4/system/ping responde sin necesidad de iniciar sesión, para un monitor externo o un equilibrador de carga: curl -fsS https://chat.example.com/api/v4/system/ping.
  • antimatter db ping comprueba que la base de datos es accesible con la configuración establecida.
  • Consola de sistema › Informes › Estadísticas del Sistema muestra el número de usuarios, publicaciones y sesiones.
  • Consola de sistema › Informes › Salud del sitio comprueba cada hora la base de datos, la búsqueda, el clúster, las notificaciones push, los trabajos, el inicio de sesión, el cumplimiento normativo y más, y enumera lo que requiere atención junto con su gravedad; silencia un hallazgo que no necesites ver de nuevo y encuéntralo más tarde en la pestaña Silenciados, junto con quién lo silenció y cuándo. Está activado de forma predeterminada; sustituye a Optimización de Espacio de Trabajo para los administradores de sistema completos (un administrador delegado que solo puede leer las estadísticas del sitio seguirá viendo Optimización de Espacio de Trabajo). Desactívalo con AM_FEATUREFLAGS_HEALTHDASHBOARD=false.
System Console › Reporting › Site health, with open findings grouped by severity
Consola de sistema › Informes › Salud del sitio, agrupada por gravedad.
System Console › Reporting › Server Logs, with level badges, filters and a live tail toggle
Consola de sistema › Informes › Registros del servidor.

Métricas

El servidor puede publicar métricas de Prometheus: tasas y duraciones de solicitudes, conexiones websocket, uso de la base de datos y la caché, trabajos, hooks de plugins y más. Actívalas en Consola de sistema › Entorno › Monitoreo de Desempeño:

AjusteClave y variablePredeterminado
Habilitar el Monitoreo de DesempeñoMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEdesactivado
Dirección de escuchaMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
Habilitar monitoreo de rendimiento del clienteMetricsSettings.EnableClientMetricsactivado: los navegadores y las aplicaciones informan de sus propios tiempos de respuesta

Después, Prometheus recopila http://<server>:8067/metrics. Cada métrica se publica con su nombre de Mattermost (mattermost_…) y su nombre de Antimatter (antimatter_…), de modo que los paneles de Mattermost existentes siguen funcionando. Las aplicaciones publican sus propias métricas, por ejemplo la app Agentes en /plugins/mattermost-ai/metrics.

El puerto de métricas no requiere inicio de sesión: mantenlo en una red privada. El archivo compose del sitio no lo publica; para recopilarlo desde el host, añade "127.0.0.1:8067:8067" a ports del servicio antimatter.

La app Métricas

Sin un servidor Prometheus, la aplicación Métricas (consulta Aplicaciones incluidas) recopila las mismas métricas en una pequeña base de datos de series temporales dentro de Antimatter: cada 60 segundos, con una retención de 15 días. Al activar Habilitar el Monitoreo de Desempeño, la aplicación también se habilita, salvo que la hayas desactivado manualmente. Activa el punto de acceso de métricas al iniciarse. Su página en Consola de sistema › Plugins muestra el tamaño de la base de datos y te permite descargar volcados de los datos, para tu propio análisis o para adjuntarlos a un informe de errores; el último día también se incluye en los paquetes de soporte.

Paquete de soporte

Un paquete de soporte es un archivo zip con lo necesario para diagnosticar un problema: versiones, estadísticas, la configuración con sus secretos eliminados, la lista de aplicaciones y trabajos, el esquema de la base de datos, el registro reciente y los perfiles de rendimiento. Genérela con amctl system supportpacket, o en la Consola de sistema desde el menú en la parte superior de su barra lateral (Soporte comercial, que luego permite elegir qué incluir). Léalo antes de compartirlo: no contiene mensajes, pero sí contiene nombres de comunidades, usuarios y configuraciones.

Rendimiento y escalabilidad

Un servidor con 2 núcleos de CPU y 4 GB de memoria sirve a unas pocas centenas de personas. Antes de añadir servidores, revise:

  • La base de datos. PostgreSQL realiza la mayor parte del trabajo: proporciónale almacenamiento y memoria rápidos. Las réplicas de lectura pueden asumir la carga de lectura (SqlSettings.DataSourceReplicas, una lista de URLs de conexión).
  • Búsqueda. Por defecto, los mensajes se buscan en la base de datos. En servidores grandes, Elasticsearch o OpenSearch pueden asumir la búsqueda y el indexado: Consola de sistema › Entorno › Elasticsearch (ElasticsearchSettings: Tipo de backend Elasticsearch o OpenSearch, Dirección de conexión del servidor, credenciales, luego habilitar el indexado, construir el índice y habilitar la búsqueda).
  • Llamadas. Los medios de las llamadas son la carga más pesada. Muévelos a un servidor rtcd: ver Llamadas y voz.
  • Archivos abiertos. Cada persona conectada mantiene un websocket abierto. El archivo de composición de producción de antimatter-docker eleva el límite a 49152 (ulimits: nofile); haga lo mismo con systemd (LimitNOFILE).
  • Registros. Reduzca LogSettings.ConsoleLevel a INFO o WARN: DEBUG registra mucho en un servidor ocupado.
  • Compresión. Con Modo de servidor web establecido en gzip, AM_FEATUREFLAGS_ENABLEBROTLICOMPRESSION=true negocia la compresión Brotli para las respuestas de la API con los clientes que la aceptan, en lugar de gzip (opcional, desactivado de forma predeterminada; reinicia el servidor tras cambiarlo).

Alta disponibilidad

Varios servidores de Antimatter pueden ejecutarse como un cluster detrás de un equilibrador de carga, sin necesidad de licencia. Deben compartir la misma base de datos PostgreSQL, el mismo almacenamiento de archivos S3 y la configuración en la base de datos (AM_CONFIG). En Consola de sistema › Entorno › Alta disponibilidad (ClusterSettings): activa Habilitar el Modo De Alta Disponibilidad (ClusterSettings.Enable), asigna a cada nodo el mismo Nombre del cluster (ClusterSettings.ClusterName) y permite que los nodos se comuniquen entre sí en el puerto de gossip, 8074 TCP y UDP (ClusterSettings.GossipPort). Los nodos se encuentran a través de la base de datos. El equilibrador de carga debe transmitir websockets. Para las llamadas en un cluster, usa rtcd.

Retención de datos

Por defecto, Antimatter conserva todos los mensajes y archivos para siempre. Para eliminarlos automáticamente, ve a Consola de sistema › Conformidad › Políticas de retención de datos:

  • La Política global de retención establece la Retención de canales y mensajes directos y la Retención de archivos para todo el servidor: Mantener para siempre, o un número de horas, días o años (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours).
  • Las Políticas de retención personalizadas establecen otra duración para comunidades y canales seleccionados.
  • El trabajo de eliminación se ejecuta a diario a la hora que elijas (DataRetentionSettings.DeletionJobStartTime, 02:00 UTC por defecto). Ejecutar el Trabajo de Eliminación Ahora lo ejecuta de inmediato, y el Registro de políticas lista lo que cada ejecución eliminó.
Los mensajes y archivos eliminados desaparecen definitivamente, tanto de la base de datos como del almacenamiento de archivos. Revisa las duraciones antes de activar una política y recuerda que tus copias de seguridad siguen conteniendo los datos eliminados hasta que caduquen.

Exportación de cumplimiento normativo y registros de auditoría

  • Consola de sistema › Conformidad › Exportación de cumplimiento exporta todos los mensajes y archivos a diario (Habilitar Los Informes de Conformidad, MessageExportSettings.EnableExport, desactivado por defecto; Hora de exportación, 01:00 por defecto) en uno de los formatos que los sistemas de archivo pueden leer: CSV, Actiance XML o Global Relay (un archivo zip, o EML enviado mediante SMTP). amctl compliance-export ejecuta y descarga las exportaciones desde la línea de comandos.
  • Monitorización de Conformidad (ComplianceSettings) escribe informes diarios en un directorio. Es el mecanismo más antiguo; se recomienda usar la Exportación de cumplimiento.
  • Registro de auditoría (beta, ExperimentalAuditSettings) registra eventos administrativos y de seguridad (inicios de sesión, cambios de permisos y de configuración) en un archivo propio. Un registro de inicio de sesión único también indica si ese inicio de sesión creó la cuenta.
  • Condiciones de servicio personalizadas pide a todos que acepten sus términos antes de usar Antimatter, y de nuevo después de que los modifique.

Problemas comunes

«No se puede conectar al servidor», o los mensajes solo aparecen después de una recarga

El websocket no se establece. Comprueba que el proxy inverso transmite las cabeceras Upgrade y Connection (consulta el ejemplo de nginx) y que la URL del sitio coincide exactamente con la dirección en el navegador, incluido https.

Las subidas fallan con «413 Request Entity Too Large»

El proxy rechaza el tamaño. Aumente su límite (nginx client_max_body_size) al menos hasta el Tamaño máximo de los Archivos en Consola de sistema › Entorno › Almacenamiento de Archivos (FileSettings.MaxFileSize, 100 MB por defecto).

Las personas no pueden iniciar llamadas, o se unen pero no oyen nada

Si solo los administradores pueden iniciar llamadas, desactiva el Modo de prueba de las llamadas. Si el botón de llamada no aparece en los canales de una comunidad, es porque la comunidad es de tipo Comunidad, donde las llamadas están desactivadas por defecto: los administradores del canal o de la comunidad pueden activar las llamadas en un canal, o cambiar el tipo de la comunidad (ver Dónde están activadas las llamadas). Si las personas se unen pero no oyen nada, el puerto de medios está bloqueado o el servidor anuncia la dirección incorrecta: abre el puerto 8443 UDP y TCP, y configura Sustitución del host ICE detrás de NAT. Las personas en redes que bloquean ambos necesitan un servidor TURN. Ver Llamadas y voz.

El selector de GIF está vacío

Comprueba la URL del servicio de GIF (http://gifs:8080/v2 con el archivo compose del sitio) y la clave de API (el GIFS_API_KEY de .env) en Consola de sistema › Plugins › GIFs, y que el servicio gifs se esté ejecutando: docker compose ps gifs.

No llegan correos electrónicos

Use Probar conexión en Consola de sistema › Entorno › SMTP, compruebe que la Dirección para Notificación de correo electrónico no siga siendo test@example.com y busque en el registro smtp o mail.

Una aplicación muestra «Failed to start»

Busca su id en el registro (docker compose logs antimatter | grep <app id>). Desactívala y actívala en la gestión de plugins para reiniciarla.

El servidor no se inicia

Lee el final de su registro. Lo más frecuente es que la base de datos no sea accesible (comprueba AM_SQLSETTINGS_DATASOURCE con antimatter db ping), que una migración de la base de datos haya fallado (restaura la copia de seguridad tomada antes de la actualización e informa del error) o que el puerto de escucha esté ocupado.

Bloqueo de la cuenta de administrador

Desde el servidor, el modo local no requiere contraseñ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

Informar de un error

Abre un problema en el repositorio de la comunidad de Antimatter, indicando la versión, cómo lo instalaste, lo que hiciste y las líneas de registro relevantes. Informa de los problemas de seguridad de forma privada, como explica la política de seguridad.