營運

監控伺服器、提升其承載能力、決定資料保留期限,並修復管理員最常遇到的問題。

健康檢查

  • 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 會使用已設定的參數檢查資料庫是否可連線。
  • 系統控制台 › 報告 › 系統統計 顯示使用者、貼文與工作階段數量,而 工作區最佳化 則列出需要檢視的設定問題。

指標

伺服器可發布 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 檔案未發布此埠口;若要從主機抓取,請在 antimatter 服務的 ports 中加入 "127.0.0.1:8067:8067"。

Metrics 應用程式

若未部署 Prometheus 伺服器,Metrics 應用程式(預設為停用,請參閱內建應用程式)會將相同的指標收集到 Antimatter 內部的輕量級時間序列資料庫中:每 60 秒收集一次,保留 15 天。該應用程式啟動時會開啟指標端點。其在系統控制台 › 擴充程式中的頁面會顯示資料庫大小,並允許您下載資料轉儲,以便自行分析或附在錯誤報告中;最新一天的資料也會加入支援套件中。

支援套件

支援套件是一個 zip 檔案,包含診斷問題所需的資訊:版本、統計數據、已移除機密資訊的設定、應用程式與工作清單、資料庫結構、近期日誌與效能分析報告。您可以使用 amctl system supportpacket 指令產生,或在系統控制台的側邊欄頂端選單中操作(商業性支援,接著可選擇要包含的內容)。分享前請先閱讀內容:雖然不包含訊息,但會包含社群、使用者與設定的名稱。

效能與擴展性

一台配備 2 個 CPU 核心與 4 GB 記憶體的伺服器可服務數百人。在增加伺服器之前,請先檢視以下項目:

  • 資料庫。PostgreSQL 承擔了大部分的工作:請提供快速的儲存空間與記憶體。讀取複本可分擔讀取負載(SqlSettings.DataSourceReplicas,為連線 URL 清單)。
  • 搜尋。預設情況下,訊息是在資料庫中進行搜尋。對於大型伺服器,Elasticsearch 或 OpenSearch 可接管搜尋與索引功能:系統控制台 › 環境 › Elasticsearch(ElasticsearchSettings:後端類型 選擇 Elasticsearch 或 OpenSearch、伺服器連線地址、憑證,然後啟用索引、建立索引,並啟用搜尋)。
  • 通話。通話媒體是最重的負載。請將其移至 rtcd 伺服器:請參閱通話與語音。
  • 開啟的檔案。每位連線的使用者都會保持一個 websocket 開啟。antimatter-docker 的生產環境 compose 檔案已將限制提高至 49152(ulimits: nofile);請在 systemd 中執行相同操作(LimitNOFILE)。
  • 日誌。將 LogSettings.ConsoleLevel 降低為 INFO 或 WARN:DEBUG 在繁忙的伺服器上會記錄大量資訊。

高可用性

多部 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,預設為 UTC 02:00)。立即執行刪除作業可立即執行,而政策記錄檔則列出每次執行所移除的內容。
已刪除的訊息和檔案將從資料庫和檔案儲存空間中永久移除。在啟用政策前,請先確認保留期限,並記住您的備份在過期前仍會保留已刪除的資料。

合規性報告匯出與稽核記錄

  • 系統控制台 › 規範 › 合規性報告匯出 每天匯出所有訊息與檔案(啟用合規性報告匯出、MessageExportSettings.EnableExport,預設為關閉;法遵報告匯出時間、預設為 01:00),格式為檔案系統可讀取的 CSV、Actiance XML 或 Global Relay(zip 檔案,或透過 SMTP 送出的 EML)。amctl compliance-export 可從命令列執行並下載匯出檔案。
  • 法遵監控(ComplianceSettings)會將每日報告寫入目錄。這是較舊的機制;建議改用合規性報告匯出。
  • 稽核日誌(Beta 版,ExperimentalAuditSettings)會將管理與安全事件(登入、權限與設定變更)記錄到獨立的檔案中。
  • 自訂服務條款會要求所有人在使用 Antimatter 前接受您的條款,且在您修改條款後再次要求接受。

常見問題

「無法連線至伺服器」,或訊息只有在重新載入後才出現

WebSocket 無法穿透。請確認反向代理是否傳遞 Upgrade 與 Connection 標頭(請參閱 nginx 範例),並確保網站 URL 與瀏覽器中的地址完全一致,包括 https。

上傳失敗,顯示「413 Request Entity Too Large」

代理拒絕了該大小。請將其限制提高至至少與 系統控制台 › 環境 › 檔案儲存 中的 最大檔案大小(FileSettings.MaxFileSize,預設為 100 MB)相同(例如 nginx 的 client_max_body_size)。

使用者無法開始通話,或加入後聽不到聲音

如果只有管理員能開始通話,請關閉通話的 測試模式。如果社群的頻道中沒有通話按鈕,表示該社群屬於 社群 類型,此類型預設關閉通話功能:其頻道或社群管理員可以在頻道中開啟通話,或變更社群類型(請參閱 通話開啟的位置)。如果使用者加入後聽不到任何聲音,可能是媒體埠被封鎖,或伺服器公告了錯誤的地址:請開啟 8443 UDP 和 TCP 埠,並在 NAT 後方設定 ICE Host Override。使用同時封鎖兩種協定的網路的使用者需要 TURN 伺服器。請參閱 通話與語音。

GIF 選擇器是空的

請檢查 系統控制台 › 擴充程式 › GIFs 中的 GIF 服務 URL(使用網站的 compose 檔案時為 http://gifs:8080/v2)和 API 金鑰(.env 中的 GIFS_API_KEY),並確認 gifs 服務正在執行:docker compose ps gifs。

收不到電子郵件

請使用 系統控制台 › 環境 › SMTP 中的 測試連線,檢查 通知信寄件人地址 是否仍為 test@example.com,並在日誌中搜尋 smtp 或 mail。

應用程式顯示「啟動失敗」

請在日誌中查找其 ID(docker compose logs antimatter | grep <app id>)。在擴充程式管理中停用再啟用該應用程式以重新啟動它。

伺服器無法啟動

請閱讀其日誌的結尾。最常見的原因是資料庫無法連線(使用 antimatter db ping 檢查 AM_SQLSETTINGS_DATASOURCE)、資料庫遷移失敗(還原升級前備份並回報錯誤),或監聽埠已被佔用。

管理員帳號被鎖定

從伺服器端,本地模式不需要密碼:

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 社群儲存庫 中開啟一個問題,並附上版本、安裝方式、您執行的操作以及相關的日誌內容。請依 安全政策 的說明,私下回報安全性問題。