פעילות
שמירה על עין פקוחה על השרת, יכולת להכיל יותר משתמשים, קביעת תקופת שמירת הנתונים, ותיקון הבעיות שבהן נתקלים מנהלים לעיתים קרובות.
בדיקות בריאות
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 של האתר אינו פורסם אותו; כדי לאסוף אותו מהמארח, יש להוסיף "127.0.0.1:8067:8067" לports של שירות antimatter.
אפליקציית Metrics
ללא שרת Prometheus, אפליקציית Metrics (כבוי כברירת מחדל, ראו אפליקציות מובנות) אוספת את אותם מדדים למסד נתונים זמני קטן בתוך Antimatter: כל 60 שניות, עם שמירה למשך 15 ימים. היא מפעילה את נקודת המדדים (metrics endpoint) בעת ההתחלה. העמוד שלה בקונסולת מערכת › תוספים מציג את גודל מסד הנתונים ומאפשר להוריד גיבויים (dumps) של הנתונים, לניתוח עצמאי או לצירוף לדיווח תקלה; יום המדדים האחרון נוסף גם לחבילת התמיכה.
חבילת תמיכה
חבילת תמיכה היא קובץ zip המכיל את מה שנדרש לאבחון תקלה: גרסאות, סטטיסטיקות, ההגדרות עם הסודות מוסרים, רשימת האפליקציות והמשימות, סכמת מסד הנתונים, יומן האירועים האחרון ופרופילי ביצוע. יצירת חבילה מתבצעת באמצעות amctl system supportpacket, או בקונסולת המערכת מתפריט החלק העליון של סרגל הצד (תמיכה מסחרית, שם ניתן לבחור מה לכלול). קראו את התוכן לפני שאתם משתפים אותו: הוא אינו מכיל הודעות, אך הוא כן מכיל שמות של קהילות, משתמשים והגדרות.
ביצועים והרחבה
שרת אחד עם 2 ליבות CPU ו-4 GB זיכרון יכול לשרת מאות משתמשים. לפני הוספת שרתים נוספים, יש לבדוק את:
- מסד הנתונים. PostgreSQL מבצע את רוב העבודה: יש להעניק לו אחסון מהיר וזיכרון. רפליקציות קריאה (read replicas) יכולות לקלוט את עומס הקריאה (
SqlSettings.DataSourceReplicas, רשימת כתובות חיבור). - חיפוש. כברירת מחדל, חיפוש בהודעות מתבצע במסד הנתונים. עבור שרתים גדולים, Elasticsearch או OpenSearch יכולים לקלוט את החיפוש והאינדוקס: קונסולת מערכת › סביבה › Elasticsearch (
ElasticsearchSettings: סוג ביקורת חיפוש Elasticsearch או OpenSearch, כתובת חיבור לשרת, פרטי התחברות, ואז הפעלת אינדוקס, בניית האינדקס והפעלת חיפוש). - שיחות. מדיה של שיחות מהווה את העומס הכבד ביותר. יש להעביר אותה לשרת rtcd: ראו שיחות וקול.
- קבצים פתוחים. כל משתמש מחובר שומר חיבור websocket פתוח. קובץ compose לייצור של antimatter-docker מעלה את הגבול ל-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). הצמתים מזהים זה את זה באמצעות בסיס הנתונים. מאזן העומס חייב להעביר websockets. עבור שיחות בתוך עלוקה, השתמשו ב-rtcd.
שמירת נתונים
ברירת המחדל, Antimatter שומר כל הודעה וקובץ לצמיתות. כדי למחוק אוטומטית פריטים ישנים, עבורו לקונסולת מערכת › עמידה בתקנים › מדיניות שמירת נתונים:
- מדיניות שמירה גלובלית מגדירה את שמירת ערוצים והודעות ישירות ואת שמירת קבצים לכל השרת: שמירה לצמיתות, או מספר שעות, ימים או שנים (
DataRetentionSettings.EnableMessageDeletion,MessageRetentionHours,EnableFileDeletion,FileRetentionHours). - מדיניות שמירה מותאמת אישית מגדירה משך זמן נוסף לקהילות וערוצים נבחרים.
- משיבת המחיקה מורצת כל יום בשעה שאתם בוחרים (
DataRetentionSettings.DeletionJobStartTime, ברירת המחדל02:00UTC). הרצת משימת מחיקה עכשיו מריצה אותה מיידית, ויומן מדיניות מפרט מה נמחק בכל הרצה.
ייצוא עמידה בתקנים ויומני ביקורת
- קונסולת מערכת › עמידה בתקנים › ייצוא עמידה בתקנים מייצא את כל ההודעות והקבצים כל יום (הפעלת ייצוא עמידה בתקנים,
MessageExportSettings.EnableExport, כבוי ברירת המחדל; שעת ייצוא העמידה בתקן, ברירת המחדל01:00) באחד מהפורמטים שמערכות הארכיון קוראות: CSV, Actiance XML, או Global Relay (קובץ zip, או EML שנשלח דרך SMTP).amctl compliance-exportמריץ ומוריד ייצואים משורת הפקודה. - ניטור עמידה בתקנים (
ComplianceSettings) כותב דוחות יומיים לספרייה. זהו המנגנון הישן; עדיף להשתמש בייצוא עמידה בתקנים. - יומן ביקורת (בטא,
ExperimentalAuditSettings) רשם אירועי ניהול ואבטחה (התחברויות, שינויי הרשאות והגדרות) לקובץ ייעודי. - תנאי שימוש מותאמים אישית מבקשים מכל המשתמשים לקבל את תנאי השימוש לפני השימוש ב-Antimatter, ושוב לאחר שאתה משנה אותם.
בעיות נפוצות
"לא ניתן להתחבר לשרת", או שההודעות מופיעות רק לאחר רענון
החיבור websocket לא עובר. ודא שהפרוקסי ההפוך מעביר את כותרות Upgrade ו-Connection (ראה דוגמת nginx), ושהכתובת של האתר תואמת בדיוק לכתובת בדפדפן, כולל https.
ההעלאות נכשלות עם "413 Request Entity Too Large"
הפרוקסי דוחה את הגודל. הגב את הגבול שלו (nginx client_max_body_size) לפחות לגודל קובץ מקסימלי בקונסולת מערכת › סביבה › אחסון קבצים (FileSettings.MaxFileSize, ברירת המחדל 100 MB).
המשתמשים לא יכולים להתחיל שיחות, או שהם מצטרפים אבל לא שומעים כלום
אם רק מנהלים יכולים להתחיל שיחות, כבו את מצב בדיקה של השיחות. אם כפתור השיחה חסר בערוצים של קהילה, הקהילה היא מסוג קהילה, שבו שיחות כבויות כברירת מחדל: מנהלי הערוץ או הקהילה יכולים להפעיל שיחות בערוץ, או לשנות את סוג הקהילה (ראו איפה השיחות מופעלות). אם אנשים מצטרפים אבל לא שומעים כלום, פורט המדיה חסום או שהשרת מודיע על כתובת שגויה: פתחו את 8443 UDP ו־TCP, והגדירו החלפת כתובת ICE מאחורי NAT. אנשים ברשתות שחסמות את שניהם זקוקים לשרת TURN. ראו שיחות וקול.
מבחר ה-GIF ריק
בדוק את כתובת שירות GIF (http://gifs:8080/v2 עם קובץ ה-compose של האתר) ואת מפתח API (ה-GIFS_API_KEY של .env) בקונסולת מערכת › תוספים › GIF, ושהשירות gifs רץ: docker compose ps gifs.
אימיילים לא מגיעים
השתמש בבדיקת חיבור בקונסולת מערכת › סביבה › SMTP, ודא שכתובת שולח ההתראות אינה עדיין test@example.com, וחפש ביומן את smtp או mail.
אפליקציה מציגה "נכשל בהתחלה"
חפש את המזהה שלה ביומן (docker compose logs antimatter | grep <app id>). כבה והפעל אותה בניהול תוספים כדי להפעיל אותה מחדש.
השרת לא מתחיל
קרא את סוף היומן. לרוב, המסד הנתונים אינו נגיש (בדוק AM_SQLSETTINGS_DATASOURCE עם antimatter db ping), מיגרציית מסד נתונים נכשלה (שחזר את הגיבוי שנלקח לפני ה-upgrade והגש דיווח על השגיאה), או שפורט האזינו תפוס.
נעול מחשבון המנהל
מהשרת, במצב מקומי אין צורך בסיסמה:
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
דיווח על באג
פתחו issue במאגר Antimatter community, כולל הגרסה, אופן ההתקנה, מה ביצעתם ושורות הלוג הרלוונטיות. דווחו על בעיות אבטחה בפרטיות, כמתואר במדיניות האבטחה.