MM-58092 Add feature flag and setting for client performance metrics (#26942)

* MM-58092 Add feature flag and setting for client performance metrics

* Fix incorrect field name
This commit is contained in:
Harrison Healey
2024-05-06 09:46:16 -04:00
committed by GitHub
parent 03c930daa0
commit 0a3a55bb80
5 changed files with 36 additions and 3 deletions

View File

@@ -187,6 +187,7 @@ func GenerateClientConfig(c *model.Config, telemetryID string, license *model.Li
if *license.Features.Cluster {
props["EnableMetrics"] = strconv.FormatBool(*c.MetricsSettings.Enable)
props["EnableClientMetrics"] = strconv.FormatBool(c.FeatureFlags.ClientMetrics && *c.MetricsSettings.EnableClientMetrics)
}
if *license.Features.Announcement {

View File

@@ -980,9 +980,10 @@ func (s *ClusterSettings) SetDefaults() {
}
type MetricsSettings struct {
Enable *bool `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"`
BlockProfileRate *int `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"`
ListenAddress *string `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"` // telemetry: none
Enable *bool `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"`
BlockProfileRate *int `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"`
ListenAddress *string `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"` // telemetry: none
EnableClientMetrics *bool `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"`
}
func (s *MetricsSettings) SetDefaults() {
@@ -997,6 +998,10 @@ func (s *MetricsSettings) SetDefaults() {
if s.BlockProfileRate == nil {
s.BlockProfileRate = NewInt(0)
}
if s.EnableClientMetrics == nil {
s.EnableClientMetrics = NewBool(true)
}
}
type ExperimentalSettings struct {

View File

@@ -55,6 +55,8 @@ type FeatureFlags struct {
WebSocketEventScope bool
NotificationMonitoring bool
ClientMetrics bool
}
func (f *FeatureFlags) SetDefaults() {
@@ -78,6 +80,7 @@ func (f *FeatureFlags) SetDefaults() {
f.ChannelBookmarks = false
f.WebSocketEventScope = false
f.NotificationMonitoring = true
f.ClientMetrics = false
}
// ToMap returns the feature flags as a map[string]string

View File

@@ -1788,6 +1788,28 @@ const AdminDefinition: AdminDefinitionType = {
},
isDisabled: it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.ENVIRONMENT.PERFORMANCE_MONITORING)),
},
{
type: 'bool',
key: 'MetricsSettings.EnableClientMetrics',
label: defineMessage({id: 'admin.metrics.enableClientMetricsTitle', defaultMessage: 'Enable Client Performance Monitoring:'}),
help_text: defineMessage({id: 'admin.metrics.enableClientMetricsDescription', defaultMessage: 'When true, Mattermost will enable performance monitoring collection for web and desktop app users. Please see <link>documentation</link> to learn more about configuring performance monitoring for Mattermost.'}),
help_text_markdown: false,
help_text_values: {
link: (msg: string) => (
<ExternalLink
location='admin_console'
href={DocLinks.SETUP_PERFORMANCE_MONITORING}
>
{msg}
</ExternalLink>
),
},
isDisabled: it.any(
it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.ENVIRONMENT.PERFORMANCE_MONITORING)),
it.configIsFalse('MetricsSettings', 'Enable'),
),
isHidden: it.configIsFalse('FeatureFlags', 'ClientMetrics'),
},
{
type: 'text',
key: 'MetricsSettings.ListenAddress',

View File

@@ -1472,6 +1472,8 @@
"admin.manage_tokens.userAccessTokensNone": "No personal access tokens.",
"admin.member_list_group.name": "Name",
"admin.member_list_group.notFound": "No users found",
"admin.metrics.enableClientMetricsDescription": "When true, Mattermost will enable performance monitoring collection for web and desktop app users. Please see <link>documentation</link> to learn more about configuring performance monitoring for Mattermost.",
"admin.metrics.enableClientMetricsTitle": "Enable Client Performance Monitoring:",
"admin.metrics.enableDescription": "When true, Mattermost will enable performance monitoring collection and profiling. Please see <link>documentation</link> to learn more about configuring performance monitoring for Mattermost.",
"admin.metrics.enableTitle": "Enable Performance Monitoring:",
"admin.metrics.listenAddressDesc": "The address the server will listen on to expose performance metrics.",