From 719e5ca62df94d1df66331f5f8690c21447b8376 Mon Sep 17 00:00:00 2001 From: Claudio Costa Date: Fri, 21 Jun 2024 15:47:36 +0200 Subject: [PATCH 1/6] [MM-58584] Update Calls metrics (#7219) * Update Calls metrics * Update source/configure/calls-deployment.rst * Add more clarity to metrics endpoints --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> --- source/configure/calls-deployment.rst | 73 +++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/source/configure/calls-deployment.rst b/source/configure/calls-deployment.rst index 630801a7f51..6bec4075606 100644 --- a/source/configure/calls-deployment.rst +++ b/source/configure/calls-deployment.rst @@ -181,7 +181,10 @@ Both the plugin and the external ``rtcd`` service expose some Prometheus metrics Calls plugin metrics ^^^^^^^^^^^^^^^^^^^^ -Metrics for the calls plugin are exposed through the public ``/plugins/com.mattermost.calls/metrics`` API endpoint. +Metrics for the calls plugin are exposed through the ``/plugins/com.mattermost.calls/metrics`` subpath under the existing Mattermost server metrics endpoint. This is controlled by the :ref:`Listen address for performance ` configuration setting. It defaults to port ``8067``. + +.. note:: + On Mattermost versions prior to v9.5, plugin metrics were exposed through the public ``/plugins/com.mattermost.calls/metrics`` API endpoint controlled by the :ref:`Web server listen address ` configuration setting. This defaults to port ``8065``. **Process** @@ -209,19 +212,52 @@ Metrics for the calls plugin are exposed through the public ``/plugins/com.matte - ``mattermost_plugin_calls_rtc_sessions_total``: Total number of active RTC sessions. +**Application** + +- ``mattermost_plugin_calls_app_handlers_time_bucket``: Time taken to execute app handlers. + + - ``mattermost_plugin_calls_app_handlers_time_sum`` + + - ``mattermost_plugin_calls_app_handlers_time_count`` + **Database** - ``mattermost_plugin_calls_store_ops_total``: Total number of db store operations. +- ``mattermost_plugin_calls_store_methods_time_bucket``: Time taken to execute store methods. + + - ``mattermost_plugin_calls_store_methods_time_sum`` + + - ``mattermost_plugin_calls_store_methods_time_count`` +- ``mattermost_plugin_calls_cluster_mutex_grab_time_bucket``: Time taken to grab global mutexes. + + - ``mattermost_plugin_calls_cluster_mutex_grab_time_sum`` + + - ``mattermost_plugin_calls_cluster_mutex_grab_time_count`` +- ``mattermost_plugin_calls_cluster_mutex_locked_time_bucket``: Time spent locked in global mutexes. + + - ``mattermost_plugin_calls_cluster_mutex_locked_time_sum`` + + - ``mattermost_plugin_calls_cluster_mutex_locked_time_count`` **WebSocket** - ``mattermost_plugin_calls_websocket_connections_total``: Total number of active WebSocket connections. - ``mattermost_plugin_calls_websocket_events_total``: Total number of WebSocket events. +**Jobs** + +- ``mattermost_plugin_calls_jobs_live_captions_new_audio_len_ms_bucket``: Duration (in ms) of new audio transcribed for live captions. + + - ``mattermost_plugin_calls_jobs_live_captions_new_audio_len_ms_sum`` + + - ``mattermost_plugin_calls_jobs_live_captions_new_audio_len_ms_count`` +- ``mattermost_plugin_calls_jobs_live_captions_pktPayloadCh_buf_full``: Total packets of audio data dropped due to full channel. +- ``mattermost_plugin_calls_jobs_live_captions_window_dropped``: Total windows of audio data dropped due to pressure on the transcriber. + WebRTC service metrics ^^^^^^^^^^^^^^^^^^^^^^ -Metrics for the ``rtcd`` service are exposed through the ``/metrics`` API endpoint. +Metrics for the ``rtcd`` service are exposed through the ``/metrics`` API endpoint under the ``rtcd`` API listener controlled by the ``api.http.listen_address`` configuration setting. It defaults to port ``8045``. **Process** @@ -236,24 +272,39 @@ Metrics for the ``rtcd`` service are exposed through the ``/metrics`` API endpoi - ``rtcd_rtc_conn_states_total``: Total number of RTC connection state changes. - ``rtcd_rtc_errors_total``: Total number of RTC errors. - ``rtcd_rtc_rtp_bytes_total``: Total number of sent/received RTP packets in bytes. - - - Note: removed as of v0.10.0 - - ``rtcd_rtc_rtp_packets_total``: Total number of sent/received RTP packets. - - - Note: removed as of v0.10.0 - - ``rtcd_rtc_rtp_tracks_total``: Total number of incoming/outgoing RTP tracks. +- ``rtcd_rtc_sessions_total``: Total number of active RTC sessions. +- ``rtcd_rtc_rtp_tracks_writes_time_bucket``: Time taken to write to outgoing RTP tracks. - - Note: added as of v0.10.0 + - ``rtcd_rtc_rtp_tracks_writes_time_sum`` -- ``rtcd_rtc_sessions_total``: Total number of active RTC sessions. + - ``rtcd_rtc_rtp_tracks_writes_time_count`` **WebSocket** - ``rtcd_ws_connections_total``: Total number of active WebSocket connections. - ``rtcd_ws_messages_total``: Total number of received/sent WebSocket messages. +Configuration +^^^^^^^^^^^^^ + +A sample Prometheus configuration to scrape both plugin and ``rtcd`` metrics could look like this: + +.. code:: + + scrape_configs: + - job_name: node + static_configs: + - targets: ['rtcd-0:9100','rtcd-1:9100', 'calls-offloader-1:9100', 'calls-offloader-2:9100'] + - job_name: calls + metrics_path: /plugins/com.mattermost.calls/metrics + static_configs: + - targets: ['app-0:8067','app-1:8067','app-2:8067'] + - job_name: rtcd + static_configs: + - targets: ['rtcd-0:8045', 'rtcd-1:8045'] + System tunings ~~~~~~~~~~~~~~ @@ -472,4 +523,4 @@ On the server side, run the following: sudo tcpdump -n port 8443 -This command will output information (i.e. source and destination addresses) for all the network packets being sent or received through port ``8443``. This is a good way to check whether data is getting in and out of the instance and can be used to quickly identify network configuration issues. \ No newline at end of file +This command will output information (i.e. source and destination addresses) for all the network packets being sent or received through port ``8443``. This is a good way to check whether data is getting in and out of the instance and can be used to quickly identify network configuration issues. From cf0d4f44fe8eadcb2336c98dd98c996ea5fd0914 Mon Sep 17 00:00:00 2001 From: emily dela cruz Date: Mon, 24 Jun 2024 16:34:16 -0400 Subject: [PATCH 2/6] Update notification bar with Copilot webinar CTA (#7232) * Update notification bar with Copilot webinar CTA * Add megaphone emoji to notification bar --- source/_static/css/mattermost-global.css | 13 +++++++++++++ source/_static/js/myscript-v1.js | 4 ++-- source/_templates/custom-nav.html | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/source/_static/css/mattermost-global.css b/source/_static/css/mattermost-global.css index fc68bb7128d..6756f65d21c 100644 --- a/source/_static/css/mattermost-global.css +++ b/source/_static/css/mattermost-global.css @@ -178,10 +178,23 @@ section[id] { align-items: center; } +.notification-bar__wrapper a { + display: flex; + align-items: center; +} + .notification-bar__content>div img { display: none; } +@media (min-width:992px) { + .notification-bar__content>div img { + display: block; + max-height: 25px; + width: auto; + } +} + .notification-bar a { color: #1B1D22 !important; } diff --git a/source/_static/js/myscript-v1.js b/source/_static/js/myscript-v1.js index d6635159fb4..2e97365d74c 100644 --- a/source/_static/js/myscript-v1.js +++ b/source/_static/js/myscript-v1.js @@ -68,7 +68,7 @@ $(document).ready(function () { // Fallback for when a notification CTA expires - ie. webinar happens const dateInFuture = (value) => new Date().getTime() <= new Date(value).getTime(); - const expiryDate = '2024-06-07T00:00:00-0500'; + const expiryDate = '2024-07-11T00:00:00-0500'; // 2024-03-28 @ 12am EST const fallback_url = 'https://mattermost.com/solutions/mattermost-for-microsoft-teams/'; @@ -85,7 +85,7 @@ $(document).ready(function () { // So it will show up for new announcements // Keep "mm_notification_banner__" at the beginning of the key // Add system to clean out storage items that are no longer needed - let notification_banner_key = 'mm_notification_banner__webinar-june-2024-ai'; + let notification_banner_key = 'mm_notification_banner__webinar-july-2024-copilot'; if (!dateInFuture(expiryDate)) { notification_banner_key = 'mm_notification_banner__fallback-mst'; } diff --git a/source/_templates/custom-nav.html b/source/_templates/custom-nav.html index fb2fe9fefb4..df29a306689 100644 --- a/source/_templates/custom-nav.html +++ b/source/_templates/custom-nav.html @@ -4,7 +4,7 @@ From 8acbe56a7df19d1e8aa989564a2c42003aa34b62 Mon Sep 17 00:00:00 2001 From: emily dela cruz Date: Mon, 24 Jun 2024 17:02:20 -0400 Subject: [PATCH 3/6] Update notification bar (#7233) * Update notification bar with Copilot webinar CTA * Add megaphone emoji to notification bar * Update notification bar copy --- source/_templates/custom-nav.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_templates/custom-nav.html b/source/_templates/custom-nav.html index df29a306689..9b230210603 100644 --- a/source/_templates/custom-nav.html +++ b/source/_templates/custom-nav.html @@ -4,7 +4,7 @@ From 09bf644e64236647054addf058b6aab5e8ff5095 Mon Sep 17 00:00:00 2001 From: Claudio Costa Date: Tue, 25 Jun 2024 08:44:54 +0200 Subject: [PATCH 4/6] Clarify documentation for WebsocketPort and WebsocketSecurePort settings (#7227) --- .../configure/experimental-configuration-settings.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/configure/experimental-configuration-settings.rst b/source/configure/experimental-configuration-settings.rst index bae4880449b..ccd3c3fe455 100644 --- a/source/configure/experimental-configuration-settings.rst +++ b/source/configure/experimental-configuration-settings.rst @@ -1931,12 +1931,15 @@ Websocket secure port This setting isn't available in the System Console and can only be set in ``config.json``. Changes to this setting require a server restart before taking effect. -(Optional) This setting defines the port on which the secured WebSocket will listen using the ``wss`` protocol. Defaults to ``443``. When the client attempts to make a WebSocket connection it first checks to see if the page is loaded with HTTPS. If so, it will use the secure WebSocket connection. If not, it will use the unsecure WebSocket connection. IT IS HIGHLY RECOMMENDED PRODUCTION DEPLOYMENTS ONLY OPERATE UNDER HTTPS AND WSS. +(Optional) This setting defines the port on which the secured WebSocket is listening using the ``wss`` protocol. Defaults to ``443``. When the client attempts to make a WebSocket connection it first checks to see if the page is loaded with HTTPS. If so, it will use the secure WebSocket connection. If not, it will use the unsecure WebSocket connection. IT IS HIGHLY RECOMMENDED PRODUCTION DEPLOYMENTS ONLY OPERATE UNDER HTTPS AND WSS. +------------------------------------------------------------------------------------------------+ | This feature's ``config.json`` setting is ``"WebsocketSecurePort": 443`` with numerical input. | +------------------------------------------------------------------------------------------------+ +.. note:: + This is a client only override that doesn't affect the listening port of the server process which is controlled by the :ref:`Web server listen address ` setting. + .. config:setting:: exp-websocketport :displayname: Websocket port (Experimental) :systemconsole: N/A @@ -1949,12 +1952,15 @@ Websocket port This setting isn't available in the System Console and can only be set in ``config.json``. Changes to this setting require a server restart before taking effect. -(Optional) This setting defines the port on which the unsecured WebSocket will listen using the ``ws`` protocol. Defaults to ``80``. When the client attempts to make a WebSocket connection it first checks to see if the page is loaded with HTTPS. If so, it will use the secure WebSocket connection. If not, it will use the unsecure WebSocket connection. IT IS HIGHLY RECOMMENDED PRODUCTION DEPLOYMENTS ONLY OPERATE UNDER HTTPS AND WSS. +(Optional) This setting defines the port on which the unsecured WebSocket is listening using the ``ws`` protocol. Defaults to ``80``. When the client attempts to make a WebSocket connection it first checks to see if the page is loaded with HTTPS. If so, it will use the secure WebSocket connection. If not, it will use the unsecure WebSocket connection. IT IS HIGHLY RECOMMENDED PRODUCTION DEPLOYMENTS ONLY OPERATE UNDER HTTPS AND WSS. +----------------------------------------------------------------------------------------+ | This feature's ``config.json`` setting is ``WebsocketPort": 80`` with numerical input. | +----------------------------------------------------------------------------------------+ +.. note:: + This is a client only override that doesn't affect the listening port of the server process which is controlled by the :ref:`Web server listen address ` setting. + .. config:setting:: exp-enableapiteamdeletion :displayname: Enable API team deletion (Experimental) :systemconsole: N/A From c3aecbfd49c3617f9ca57b59d35a4137f3f753b4 Mon Sep 17 00:00:00 2001 From: Amy Blais <29708087+amyblais@users.noreply.github.com> Date: Tue, 25 Jun 2024 08:23:22 -0400 Subject: [PATCH 5/6] Mobile v2.17.1 dot release docs (#7225) * Update mobile-app-changelog.md * Update mobile-app-changelog.md --- source/deploy/mobile-app-changelog.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/deploy/mobile-app-changelog.md b/source/deploy/mobile-app-changelog.md index 33f0ebdc12c..cf7d026289e 100644 --- a/source/deploy/mobile-app-changelog.md +++ b/source/deploy/mobile-app-changelog.md @@ -2,6 +2,18 @@ This changelog summarizes updates to Mattermost mobile apps releases for [Mattermost](https://mattermost.com). +## 2.17.1 Release + - Release Date: June 25, 2024 + - Server Versions Supported: Server v9.5.0+ is required. Self-Signed SSL Certificates are not supported unless the user installs the CA certificate on their device. + +### Compatibility + - **Upgrade to server version v9.5.0 or later is required.** Support for server [Extended Support Release](https://docs.mattermost.com/upgrade/extended-support-release.html) (ESR) v8.1.0 has ended and upgrading to server ESR v9.5.0 or later is required. As we innovate and offer newer versions of our mobile apps, we maintain backwards compatibility only with supported server versions. Users who upgrade to the newest mobile apps while being connected to an unsupported server version can be exposed to compatibility issues, which can cause crashes or severe bugs that break core functionality of the app. + - Android operating system 7+ [is required by Google](https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html). + - iPhone 6s devices and later with iOS 13.4+ is required. + +### Bug Fixes + - Fixed a crash when receiving a push notification on Android when the app was not running. + ## 2.17.0 Release - Release Date: June 14, 2024 - Server Versions Supported: Server v9.5.0+ is required. Self-Signed SSL Certificates are not supported unless the user installs the CA certificate on their device. From 87b6f42743c3b7692f4503e126a2ba752bb2fda4 Mon Sep 17 00:00:00 2001 From: Mario Vitale Date: Tue, 25 Jun 2024 15:26:05 +0200 Subject: [PATCH 6/6] Desktop: add note about rotated key, chrome-sandbox instructions (#7231) * Desktop: add note about rotated key, chrome-sandbox instructions * Use permission 4755 instead of 4700 * Update source/collaborate/install-desktop-app.rst Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> --- source/collaborate/install-desktop-app.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/collaborate/install-desktop-app.rst b/source/collaborate/install-desktop-app.rst index 7b1b1f9bab3..e700da981be 100644 --- a/source/collaborate/install-desktop-app.rst +++ b/source/collaborate/install-desktop-app.rst @@ -85,6 +85,10 @@ You can download the `desktop app `_ directly from Both a ``.deb`` package (Beta), and an official APT repository is available for Debian 9 and for Ubuntu releases 20.04 LTS or later. Automatic app updates are supported and enabled. When a new version of the desktop app is released, your app updates automatically. + .. important:: + + The GPG public key has changed. If you had previously set up the repository on your system, you'll need to download the new key. You can set the ``UPDATE_GPG_KEY=yes`` environment variable when running the setup script to configure it to overwrite the previous key on your system with the new one. The first step of installation then becomes: ``curl -fsS -o- https://deb.packages.mattermost.com/setup-repo.sh | sudo UPDATE_GPG_KEY=yes bash``. Depending on your setup, additional steps may also be required, particularly for installations that don't rely on the repository setup script. + 1. At the command line, set up the Mattermost repository on your system: .. code-block:: none @@ -171,9 +175,11 @@ You can download the `desktop app `_ directly from - 64-bit systems: `mattermost-desktop-5.8.1-linux-x64.tar.gz `_ - 32-bit systems: `mattermost-desktop-5.8.1-linux-ia32.tar.gz `_ - 2. Extract the archive to a convenient location, then execute ``mattermost-desktop`` located inside the extracted directory. + 2. Extract the archive to a convenient location, then give ``chrome-sandbox`` in the extracted directory the required ownership and permissions: ``sudo chown root:root chrome-sandbox && sudo chmod 4755 chrome-sandbox`` + + 3. Execute ``mattermost-desktop`` located inside the extracted directory. - 3. To create a Desktop launcher, open the file ``README.md``, and follow the instructions in the **Desktop launcher** section. + 4. To create a Desktop launcher, open the file ``README.md``, and follow the instructions in the **Desktop launcher** section. Log in using the desktop app -----------------------------