संचालन

सर्वर पर नज़र रखें, उसे अधिक उपयोगकर्ताओं को संभालने में सक्षम बनाएं, डेटा कितने समय तक रखा जाए इसका निर्णय लें, और एडमिन के सामने आने वाली सबसे आम समस्याओं को ठीक करें।

हेल्थ चेक

  • 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 जांचता है कि कॉन्फ़िगर किए गए सेटिंग्स के साथ डेटाबेस तक पहुंच संभव है।
  • सिस्टम कंसोल › रिपोर्टिंग › सिस्टम सांख्यिकी उपयोगकर्ताओं, पोस्ट और सेशन की संख्या दिखाता है, और वरकस्पेस अनुकूलन उन कॉन्फ़िगरेशन समस्याओं की सूची देता है जिन्हें देखना चाहिए।

Metrics

सर्वर Prometheus मेट्रिक्स प्रकाशित कर सकता है: अनुरोध दरें और अवधि, वेबसॉकेट कनेक्शन, डेटाबेस और कैश उपयोग, जॉब्स, प्लगइन हुक्स और बहुत कुछ। इन्हें सिस्टम कंसोल › पर्यार्वण › प्रदरशान मोनिटरिंग में चालू करें:

सेटिंगकी और वेरिएबलडिफ़ॉल्ट
प्रदरशान नगरानी सक्षम करें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 ऐप (डिफ़ॉल्ट रूप से बंद, देखें Bundled apps) Antimatter के अंदर एक छोटे समय-श्रृंखला डेटाबेस में समान मेट्रिक्स एकत्र करता है: हर 60 सेकंड में, 15 दिनों के लिए। यह शुरू होने पर मेट्रिक्स एंडपॉइंट चालू कर देता है। इसकी सिस्टम कंसोल › प्लगइन में पेज डेटाबेस का आकार दिखाती है और डेटा के डंप डाउनलोड करने की अनुमति देती है, आपके अपने विश्लेषण के लिए या बग रिपोर्ट में जोड़ने के लिए; नवीनतम दिन का डेटा सपोर्ट पैकेट में भी जोड़ा जाता है।

सपोर्ट पैकेट

सपोर्ट पैकेट एक zip फ़ाइल है जिसमें समस्या का निदान करने के लिए आवश्यक चीज़ें होती हैं: संस्करण, सांख्यिकी, अपने रहस्यों (secrets) हटाए गए कॉन्फ़िगरेशन, ऐप्स और जॉब्स की सूची, डेटाबेस स्कीमा, हाल के लॉग और प्रदर्शन प्रोफ़ाइल। इसे amctl system supportpacket से, या सिस्टम कंसोल में उसके साइडबार के शीर्ष पर स्थित मेन्यू (कॉमरशियल सपोर्ट, जिससे आप बाद में शामिल करने के लिए चुन सकते हैं) से बनाएं। इसे साझा करने से पहले पढ़ें: इसमें संदेश नहीं होते, लेकिन इसमें कम्युनิตियों, उपयोगकर्ताओं और सेटिंग्स के नाम होते हैं।

परफ़ॉर्मेंस और स्केलिंग

2 CPU कोर और 4 GB मेमोरी वाला एक सर्वर कुछ सौ लोगों को सर्विस कर सकता है। सर्वर जोड़ने से पहले, इन चीज़ों पर ध्यान दें:

  • डेटाबेस। PostgreSQL सबसे ज़्यादा काम करता है: इसे तेज़ स्टोरेज और मेमोरी दें। रीड रिप्लिका रीड लोड संभाल सकते हैं (SqlSettings.DataSourceReplicas, कनेक्शन URL की एक सूची)।
  • खोजें। संदेश डिफ़ॉल्ट रूप से डेटाबेस में खोजे जाते हैं। बड़े सर्वर के लिए, Elasticsearch या OpenSearch खोज और इंडेक्सिंग संभाल सकते हैं: सिस्टम कंसोल › पर्यार्वण › Elasticsearch (ElasticsearchSettings: बैकएंड पृकार Elasticsearch या OpenSearch, सर्वर कनेक्शन एड्रेस, क्रेडेंशियल्स, फिर इंडेक्सिंग चालू करें, इंडेक्स बनाएं, और खोज चालू करें)।
  • कॉल। कॉल मीडिया सबसे भारी लोड होते हैं। इन्हें rtcd सर्वर पर ले जाएं: देखें कॉल और वॉइस।
  • खुले फ़ाइल। हर जुड़े हुए व्यक्ति एक वेबसॉकेट खुला रखता है। antimatter-docker का प्रोडक्शन कॉम्पोज़ फ़ाइल सीमा को 49152 तक बढ़ा देती है (ulimits: nofile); systemd के साथ भी यही करें (LimitNOFILE)।
  • लॉग। LogSettings.ConsoleLevel को INFO या WARN पर कम करें: DEBUG एक व्यस्त सर्वर पर बहुत कुछ लॉग करता है।

हाई एवेलेबिलिटी

एक लोड बैलेंसर के पीछे कई Antimatter सर्वर एक क्लस्टर के रूप में बिना लाइसेंस के चल सकते हैं। इनमें सबको एक ही PostgreSQL डेटाबेस, एक ही S3 फ़ाइल स्टोरेज और डेटाबेस में मौजूद कॉन्फ़िगरेशन (AM_CONFIG) साझा करना होगा। सिस्टम कंसोल › पर्यार्वण › हाई एवailability (ClusterSettings) में जाएँ: हाई एवेलेबिलिटि मोड सक्षम करें (ClusterSettings.Enable) चालू करें, हर नोड को एक ही क्लसटर क़ा नाम (ClusterSettings.ClusterName) दें, और नोड्स को एक-दूसरे तक गॉसिप पोर्ट, 8074 TCP और UDP (ClusterSettings.GossipPort) पर पहुँचने दें। नोड्स डेटाबेस के ज़रिए एक-दूसरे को खोजते हैं। लोड बैलेंसर को वेबसॉकेट्स पास करने होंगे। क्लस्टर में कॉल के लिए rtcd का इस्तेमाल करें।

डेटा रीटेनशन

डिफ़ॉल्ट रूप में Antimatter हर सन्देश और फ़ाइल हमेशा के लिए रखता है। पुराने सन्देशों को अपने-आप हटाने के लिए, सिस्टम कंसोल › सम्मततता › डेटा रीटेनशन नीतियां में जाएँ:

  • वैश्विक रीटेनशन नीति पूरे सर्वर के लिए चैनल और डायरेक्ट मैसेज रीटेनशन और फ़ाइल रीटेनशन सेट करती है: हमेशा रखें, या घंटों, दिनों या सालों की संख्या (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours)।
  • कस्टम रीटेनशन नीतियाँ चुनिंदा कम्युनิตियों और चैनलों के लिए अलग अवधि सेट करती हैं।
  • डिलीशन जॉब हर रोज़ उस समय चलता है जो आप चुनते हैं (DataRetentionSettings.DeletionJobStartTime, डिफ़ॉल्ट रूप से 02:00 UTC)। अभी डिलीशन जॉब चलाएँ इसे तुरंत चलाता है, और नीति लॉग में हर रन ने क्या हटाया, उसकी सूची दी गई है।
हटाए गए संदेश और फ़ाइलें डेटाबेस और फ़ाइल स्टोरेज दोनों से हमेशा के लिए गायब हो जाती हैं। किसी पॉलिसी को चालू करने से पहले अवधि की जांच करें, और याद रखें कि आपके बैकअप में हटाए गए डेटा तब तक मौजूद रहता है जब तक कि वे एक्सपायर न हो जाएं।

कंप्लायंस एक्सपोर्ट और ऑडिट लॉग

  • सिस्टम कंसोल › सम्मतता › कंप्लायंस एक्सपोर्ट हर दिन सभी सन्देशों और फ़ाइलों का निर्यान करता है (कंप्लायंस निर्यात सक्षम करें, MessageExportSettings.EnableExport, डिफ़ॉल्ट रूप से बंद; कंपलायंस एक्सपोर्ट समय, डिफ़ॉल्ट रूप से 01:00) जो फ़ॉर्मेट अरकाइविंग सिस्टम पढ़ते हैं: CSV, Actiance XML, या Global Relay (एक zip फ़ाइल, या SMTP के माध्यम से भेजा गया EML)। amctl compliance-export कमांड लाइन से निर्यान चलाता है और डाउनलोड करता है।
  • कंप्लायंस मॉनिटरिंग (ComplianceSettings) एक डायरेक्टरी में दैनिक रिपोर्ट लिखती है। यह पुराना तंत्र है; कंप्लायंस निर्यात को प्राथमिकता दें।
  • ऑडिट लॉगिंग (बीटा, ExperimentalAuditSettings) प्रशासनिक और सुरक्षा संबंधी घटनाओं (साइन-इन, अनुमतियों और सेटिंग्स में परिवर्तन) को एक स्वतंत्र फ़ाइल में दर्ज करता है।
  • कस्टम सेव क़ी शरतें Antimatter इस्तेमाल करने से पहले हर किसी से आपकी शर्तें स्वीकार करने के लिए कहती हैं, और फिर जब आप उन्हें बदलते हैं।

सामान्य समस्याएँ

"सेิร์ฟर से कनेक्ट नहीं हो पा रहा", या संदेश केवल रीलोड के बाद ही दिखाई देते हैं

वेबसॉकेट नहीं हो पा रहा है। जाँचें कि रिवर्स प्रॉक्सी Upgrade और Connection हेडर पास कर रहा है (देखें nginx का उदाहरण), और कि साइट का URL ब्राउज़र में दर्ज पता से बिल्कुल मेल खाता है, जिसमें https भी शामिल है।

अपलोड "413 Request Entity Too Large" के साथ विफल हो जाते हैं

प्रॉक्सी आकार को अस्वीकार कर रहा है। इसकी सीमा (nginx client_max_body_size) को कम से कम अधिकतम फ़ाइल आकार तक बढ़ाएं, जो सिस्टम कंसोल › पर्यार्वण › फ़ाइल सटोरिज (FileSettings.MaxFileSize, डिफ़ॉल्ट रूप से 100 MB) में सेट है।

लोग कॉल शुरू नहीं कर पा रहे हैं, या जुड़ते हैं लेकिन कुछ सुन नहीं पाते

यदि केवल एडमिन कॉल शुरू कर सकते हैं, तो कॉल के टेस्ट मोड को बंद कर दें। यदि किसी समुदाय के चैनल में कॉल बटन नहीं दिख रहा है, तो समुदाय समुदाय प्रकार का है, जहाँ कॉल डिफ़ॉल्ट रूप से बंद होते हैं: उसके चैनल या समुदाय एडमिन किसी चैनल में कॉल चालू कर सकते हैं, या समुदाय का प्रकार बदल सकते हैं (देखें कॉल कहाँ चालू होते हैं)। यदि लोग जुड़ते हैं लेकिन कुछ सुन नहीं पाते, तो मीडिया पोर्ट ब्लॉक है या सर्वर गलत पता घोषित कर रहा है: 8443 UDP और TCP खोलें, और NAT के पीछे ICE होस्ट ओवरराइड सेट करें। उन लोगों को जिन्हें दोनों ब्लॉक हैं, TURN सर्वर की आवश्यकता होती है। देखें कॉल और वॉइस।

GIF पिकर खाली है

सिस्टम कंसोल › प्लगइन › GIF में GIF सर्विस URL (साइट के कॉम्पोज़ फ़ाइल के साथ http://gifs:8080/v2) और API कुंजी (.env की GIFS_API_KEY) की जाँच करें, और यह भी कि gifs सर्विस चल रही है: docker compose ps gifs।

ईमेल नहीं आ रहे हैं

सिस्टम कंसोल › पर्यार्वण › SMTP में कनेक्शन का परीक्षण करें का उपयोग करें, जाँचें कि सूचना 'से' पता अब भी test@example.com नहीं है, और लॉग में smtp या mail खोजें।

एक ऐप "Failed to start" दिखा रहा है

लॉग में उसके id की खोज करें (docker compose logs antimatter | grep <app id>)। इसे फिर से शुरू करने के लिए Plugin Management में इसे अक्षम और फिर सक्षम करें।

सर्वर शुरू नहीं हो रहा है

इसके लॉग के अंत को पढ़ें। सबसे अक्सर डेटाबेस तक पहुँच नहीं पाई जा रही है (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 community repository में एक issue खोलें, जिसमें वर्ज़न, इंस्टॉलेशन का तरीका, आपने क्या किया और संबंधित लॉग लाइनें शामिल हों। सुरक्षा से जुड़ी समस्याओं की रिपोर्ट निजी रूप में करें, जैसा कि security policy में बताया गया है।