İşletme

Sunucuyu gözlemleyin, daha fazla kişiye hizmet verecek şekilde ölçeklendirin, verilerin ne kadar süre saklanacağına karar verin ve yöneticilerin en sık karşılaştığı sorunları giderin.

Sağlık denetimleri

  • amctl --local system status (konteyner içinde: docker compose exec antimatter amctl --local system status). Docker imajının sağlık denetimi bunu her 30 saniyede bir çalıştırır, bu nedenle docker compose ps komutu healthy (sağlıklı) veya unhealthy (sağlıksız) durumunu gösterir.
  • GET /api/v4/system/ping oturum açmadan yanıt verir; harici bir izleme aracı veya yük dengeleyici için kullanılır: curl -fsS https://chat.example.com/api/v4/system/ping.
  • antimatter db ping komutu, yapılandırılmış ayarlarla veritabanının erişilebilir olduğunu denetler.
  • Sistem Konsolu › Raporlama › Sistem istatistikleri kullanıcı, gönderi ve oturum sayılarını gösterir; Çalışma alanı iyileştirmesi ise incelenmesi gereken yapılandırma sorunlarını listeler.

Metrikler

Sunucu, Prometheus metrikleri yayımlayabilir: istek oranları ve süreleri, websocket bağlantıları, veritabanı ve önbellek kullanımı, işler, uygulama eklentisi kancaları ve daha fazlası. Bunları Sistem Konsolu › Ortam › Başarım izleme bölümünden etkinleştirebilirsiniz:

AyarAnahtar ve değişkenVarsayılan
Başarım izlemesi kullanılsınMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEkapalı
Dinlenecek adresMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
İstemci başarımı izlemesi kullanılsınMetricsSettings.EnableClientMetricsaçık: tarayıcılar ve uygulamalar kendi zamanlamalarını raporlar

Prometheus ardından http://<server>:8067/metrics adresinden metrikleri toplar. Her metrik, Mattermost adıyla (mattermost_…) ve Antimatter adıyla (antimatter_…) yayımlanır; böylece mevcut Mattermost panoları çalışmaya devam eder. Uygulamalar kendi metriklerini yayımlar, örneğin Agents uygulaması /plugins/mattermost-ai/metrics adresinde.

Metrikler portu için oturum açma gerekmez: bu portu özel bir ağda tutun. Sitein compose dosyası bu portu dışa açmaz; ana makineden toplama yapmak için antimatter hizmetinin ports bölümüne "127.0.0.1:8067:8067" ekleyin.

Metrics uygulaması

Bir Prometheus sunucusu yoksa, Metrics uygulaması (varsayılan olarak kapalıdır, bkz. Yerleşik uygulamalar) aynı metrikleri Antimatter içindeki küçük bir zaman serisi veritabanına toplar: 60 saniyede bir, 15 gün boyunca saklanır. Uygulama başlatıldığında metrik uç noktasını etkinleştirir. Sistem Konsolu › Uygulama ekleri bölümündeki sayfası, veritabanının boyutunu gösterir ve verileri kendi analizleriniz için veya bir hata raporuna eklemek üzere indirilebilir kopyalar olarak sağlar; son günün verileri ayrıca destek paketlerine de eklenir.

Destek paketi

Bir destek paketi, bir sorunu teşhis etmek için gereken bilgileri içeren bir zip dosyasıdır: sürümler, istatistikler, gizli bilgileri çıkarılmış yapılandırma, uygulama ve iş listesi, veritabanı şeması, son zamanların günlük kaydı ve başarım profilleri. amctl system supportpacket komutuyla veya Sistem Konsolu'nda kenar çubuğunun üstündeki menüden (Kurumsal destek, ardından dahil edilecek öğeleri seçebilirsiniz) oluşturabilirsiniz. Paylaşmadan önce mutlaka inceleyin: paket iletileri içermez, ancak topluluk, kullanıcı ve ayar adlarını içerir.

Performans ve ölçeklenebilirlik

2 CPU çekirdeği ve 4 GB belleğe sahip tek bir sunucu, birkaç yüz kişiye hizmet verebilir. Sunucu eklemeye başlamadan önce şunlara bakın:

  • Veritabanı. PostgreSQL işin çoğunu yapar: ona hızlı depolama ve bellek verin. Okuma kopyaları (read replicas) okuma yükünü alabilir (SqlSettings.DataSourceReplicas, bağlantı URL'leri listesi).
  • Ara. İletiler varsayılan olarak veritabanında aranır. Büyük sunucularda Elasticsearch veya OpenSearch, arama ve dizinleme işlevlerini devralabilir: Sistem Konsolu › Ortam › Elasticsearch (ElasticsearchSettings: Arka uç türü Elasticsearch veya OpenSearch, Sunucu bağlantı adresi, kimlik bilgileri, ardından dizinlemeyi etkinleştirin, dizini oluşturun ve aramayı etkinleştirin).
  • Çağrılar. Çağrı medyası en ağır yüktür. Bunları bir rtcd sunucusuna taşıyın: bkz. Çağrılar ve ses.
  • Açık dosyalar. Her bağlı kişi bir websocket açık tutar. antimatter-docker'ın üretim compose dosyası bu sınırı 49152'ye yükseltir (ulimits: nofile); systemd ile de aynı işlemi yapın (LimitNOFILE).
  • Günlükler. LogSettings.ConsoleLevel değerini INFO veya WARN olarak düşürün: DEBUG yoğun bir sunucuda çok fazla günlük yazar.

Yüksek kullanılabilirlik

Birkaç Antimatter sunucusu, yük dengeleyicinin arkasında küme olarak, lisans gerektirmeden çalışabilir. Bunların aynı PostgreSQL veritabanını, aynı S3 dosya depolamasını ve veritabanındaki yapılandırmayı (AM_CONFIG) paylaşması gerekir. Sistem Konsolu › Ortam › Yüksek Erişilebilirlik (ClusterSettings) bölümünde Yüksek Erişilebilirlik Kipi Kullanılsın (ClusterSettings.Enable) seçeneğini etkinleştirin, her düğüm için aynı Küme Adı (ClusterSettings.ClusterName) verin ve düğümlerin birbirine gıdık portundan, 8074 TCP ve UDP (ClusterSettings.GossipPort) üzerinden erişebilmesini sağlayın. Düğümler birbirini veritabanı aracılığıyla bulur. Yük dengeleyici websocket trafiğini iletmelidir. Küme içindeki aramalar için rtcd kullanın.

Veri saklama

Varsayılan olarak Antimatter tüm iletileri ve dosyaları sonsuza dek saklar. Eski olanları otomatik olarak silmek için Sistem Konsolu › Uyumluluk › Verileri Tutma İlkeleri bölümüne gidin:

  • Genel verileri tutma ilkesi, tüm sunucu için Kanal & doğrudan ileti tutma ve Dosya tutma sürelerini belirler: Sonsuza dek tutulsun veya saat, gün veya yıl cinsinden bir süre (DataRetentionSettings.EnableMessageDeletion, MessageRetentionHours, EnableFileDeletion, FileRetentionHours).
  • Özel veri tutma ilkeleri, seçilen topluluklar ve kanallar için farklı bir süre belirler.
  • Silme görevi, seçtiğiniz saatte her gün çalışır (varsayılan olarak DataRetentionSettings.DeletionJobStartTime, 02:00 UTC). Silme görevini yürüt seçeneğiyle görevi anında çalıştırabilir, İlke günlüğü ile her çalıştırmanın ne sildiğini listeleyebilirsiniz.
Silinen iletiler ve dosyalar, veritabanından ve dosya depolamasından kalıcı olarak kaybolur. Bir politikayı etkinleştirmeden önce süreleri kontrol edin ve yedekleriniz, bu veriler sona erene kadar silinen verileri hala barındırdığını unutmayın.

Uygunluk dışa aktarımı ve denetim günlükleri

  • Sistem Konsolu › Uyumluluk › Uyumluluk dışa aktarma, tüm iletileri ve dosyaları her gün (Uyumluluk dışa aktarma kullanılsın, MessageExportSettings.EnableExport, varsayılan olarak kapalı; Uyumluluk dışa aktarma zamanı, varsayılan olarak 01:00) arşivleme sistemlerinin okuyabildiği biçimlerden biriyle (CSV, Actiance XML veya Global Relay (zip dosyası veya SMTP üzerinden gönderilen EML)) dışa aktarır. amctl compliance-export komut satırından dışa aktarmaları çalıştırır ve indirir.
  • Uyumluluk izleme (ComplianceSettings), günlük raporları bir dizine yazar. Bu, daha eski bir mekanizmadır; Uyumluluk dışa aktarma tercih edilmelidir.
  • Denetim günlüğü (beta, ExperimentalAuditSettings), yönetimsel ve güvenlik olaylarını (oturum açma, izin ve ayar değişiklikleri) kendi dosyasına kaydeder.
  • Özel hizmet koşulları, herkesin Antimatter'i kullanmadan önce ve koşulları değiştirdikten sonra hizmet koşullarınızı kabul etmesini ister.

Sık karşılaşılan sorunlar

"Sunucuya bağlanılamıyor" veya iletiler yalnızca yeniden yükleme sonrasında görünür

WebSocket bağlantısı kurulamıyor. Ters vekilin Upgrade ve Connection başlıklarını ilettiğinden (nginx örneğine bakın) ve site URL'inin tarayıcıdaki adresle, https dahil, birebir eşleştiğinden emin olun.

Yükleme "413 Request Entity Too Large" hatasıyla başarısız oluyor

Vekil, boyutu reddediyor. Sınırını, Sistem Konsolu › Ortam › Dosya depolama alanı içindeki En büyük dosya boyutu değerine (FileSettings.MaxFileSize, varsayılan olarak 100 MB) en az bu değere eşit olacak şekilde yükseltin (nginx client_max_body_size).

Kişiler aramaları başlatamıyor veya katılıyor ama hiçbir şey duymuyor

Sadece yöneticiler arama başlatabiliyorsa, Arama'nın Test modu seçeneğini kapatın. Bir topluluğun kanallarında arama düğmesi görünmüyorsa, topluluk Topluluk türündedir ve aramalar varsayılan olarak kapalıdır: kanal veya topluluk yöneticileri bir kanalda aramaları açabilir veya topluluğun türünü değiştirebilir (bkz. Aramaların açık olduğu yerler). Kişiler katılıyor ama hiçbir şey duymuyorsa, medya portu engellenmiş veya sunucu yanlış adresi duyuruyor olabilir: 8443 UDP ve TCP portlarını açın ve NAT arkasında ICE Host Override ayarını yapılandırın. Her ikisini de engelleyen ağlardaki kişilere bir TURN sunucusu gerekir. Bkz. Aramalar ve ses.

GIF seçici boş

Sistem Konsolu › Uygulama ekleri › GIF görselleri içinde GIF hizmeti URL'si (site'nin compose dosyasıyla http://gifs:8080/v2) ve API anahtarı (.env içindeki GIFS_API_KEY) değerlerini kontrol edin ve gifs hizmetinin çalıştığını doğrulayın: docker compose ps gifs.

E-postalar gelmiyor

Sistem Konsolu › Ortam › SMTP içinde Bağlantıyı sına seçeneğini kullanın, Bildirim kimden adresi hâlâ test@example.com olarak kalmamış olduğunu kontrol edin ve günlükte smtp veya mail için arama yapın.

Bir uygulama "Başlatılamadı" gösteriyor

Uygulamanın kimliğini günlükte arayın (docker compose logs antimatter | grep <app id>). Yeniden başlatmak için Eklenti Yönetimi'nde devre dışı bırakıp tekrar etkinleştirin.

Sunucu başlatılamıyor

Günlüğün sonunu okuyun. En sık karşılaşılan nedenler: veritabanına ulaşılamaması (antimatter db ping ile AM_SQLSETTINGS_DATASOURCE değerini kontrol edin), bir veritabanı geçişinin başarısız olması (yükseltme öncesi alınan yedeği geri yükleyin ve hatayı bildirin) veya dinleme portunun dolu olmasıdır.

Yönetici hesabına erişim engellendi

Sunucudan, yerel mod şifre gerektirmez:

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

Hata bildirme

Antimatter topluluk deposunda bir sorun açın; sürümü, nasıl kurduğunuzu, ne yaptığınızı ve ilgili günlük satırlarını belirtin. Güvenlik sorunlarını gizlice bildirin; güvenlik politikası bunu açıklar.