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
Этот коммит содержится в:
Harrison Healey
2024-05-06 09:46:16 -04:00
коммит произвёл GitHub
родитель 03c930daa0
Коммит 0a3a55bb80
5 изменённых файлов: 36 добавлений и 3 удалений

Просмотреть файл

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

Просмотреть файл

@@ -980,9 +980,10 @@ func (s *ClusterSettings) SetDefaults() {
} }
type MetricsSettings struct { type MetricsSettings struct {
Enable *bool `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"` Enable *bool `access:"environment_performance_monitoring,write_restrictable,cloud_restrictable"`
BlockProfileRate *int `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 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() { func (s *MetricsSettings) SetDefaults() {
@@ -997,6 +998,10 @@ func (s *MetricsSettings) SetDefaults() {
if s.BlockProfileRate == nil { if s.BlockProfileRate == nil {
s.BlockProfileRate = NewInt(0) s.BlockProfileRate = NewInt(0)
} }
if s.EnableClientMetrics == nil {
s.EnableClientMetrics = NewBool(true)
}
} }
type ExperimentalSettings struct { type ExperimentalSettings struct {

Просмотреть файл

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

Просмотреть файл

@@ -1788,6 +1788,28 @@ const AdminDefinition: AdminDefinitionType = {
}, },
isDisabled: it.not(it.userHasWritePermissionOnResource(RESOURCE_KEYS.ENVIRONMENT.PERFORMANCE_MONITORING)), 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', type: 'text',
key: 'MetricsSettings.ListenAddress', key: 'MetricsSettings.ListenAddress',

Просмотреть файл

@@ -1472,6 +1472,8 @@
"admin.manage_tokens.userAccessTokensNone": "No personal access tokens.", "admin.manage_tokens.userAccessTokensNone": "No personal access tokens.",
"admin.member_list_group.name": "Name", "admin.member_list_group.name": "Name",
"admin.member_list_group.notFound": "No users found", "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.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.enableTitle": "Enable Performance Monitoring:",
"admin.metrics.listenAddressDesc": "The address the server will listen on to expose performance metrics.", "admin.metrics.listenAddressDesc": "The address the server will listen on to expose performance metrics.",