diff options
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/components/admin_console/admin_sidebar.jsx | 16 | ||||
-rw-r--r-- | webapp/components/admin_console/metrics_settings.jsx | 96 | ||||
-rw-r--r-- | webapp/i18n/en.json | 7 | ||||
-rw-r--r-- | webapp/routes/route_admin_console.jsx | 5 |
4 files changed, 124 insertions, 0 deletions
diff --git a/webapp/components/admin_console/admin_sidebar.jsx b/webapp/components/admin_console/admin_sidebar.jsx index f39bb8b6b..25a06cecf 100644 --- a/webapp/components/admin_console/admin_sidebar.jsx +++ b/webapp/components/admin_console/admin_sidebar.jsx @@ -192,6 +192,7 @@ export default class AdminSidebar extends React.Component { let ldapSettings = null; let samlSettings = null; let clusterSettings = null; + let metricsSettings = null; let complianceSettings = null; let license = null; @@ -241,6 +242,20 @@ export default class AdminSidebar extends React.Component { ); } + if (global.window.mm_license.Metrics === 'true') { + metricsSettings = ( + <AdminSidebarSection + name='metrics' + title={ + <FormattedMessage + id='admin.sidebar.metrics' + defaultMessage='Performance Monitoring (Beta)' + /> + } + /> + ); + } + if (global.window.mm_license.SAML === 'true') { samlSettings = ( <AdminSidebarSection @@ -716,6 +731,7 @@ export default class AdminSidebar extends React.Component { } /> {clusterSettings} + {metricsSettings} </AdminSidebarSection> </AdminSidebarCategory> {this.renderTeams()} diff --git a/webapp/components/admin_console/metrics_settings.jsx b/webapp/components/admin_console/metrics_settings.jsx new file mode 100644 index 000000000..dd031047e --- /dev/null +++ b/webapp/components/admin_console/metrics_settings.jsx @@ -0,0 +1,96 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import AdminSettings from './admin_settings.jsx'; +import BooleanSetting from './boolean_setting.jsx'; +import TextSetting from './text_setting.jsx'; + +import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; +import SettingsGroup from './settings_group.jsx'; + +import * as Utils from 'utils/utils.jsx'; + +export default class MetricsSettings extends AdminSettings { + constructor(props) { + super(props); + + this.getConfigFromState = this.getConfigFromState.bind(this); + this.renderSettings = this.renderSettings.bind(this); + } + + getConfigFromState(config) { + config.MetricsSettings.Enable = this.state.enable; + config.MetricsSettings.ListenAddress = this.state.listenAddress; + + return config; + } + + getStateFromConfig(config) { + const settings = config.MetricsSettings; + + return { + enable: settings.Enable, + listenAddress: settings.ListenAddress + }; + } + + renderTitle() { + return ( + <h3> + <FormattedMessage + id='admin.advance.metrics' + defaultMessage='Performance Monitoring (Beta)' + /> + </h3> + ); + } + + renderSettings() { + const licenseEnabled = global.window.mm_license.IsLicensed === 'true' && global.window.mm_license.Metrics === 'true'; + if (!licenseEnabled) { + return null; + } + + return ( + <SettingsGroup> + <BooleanSetting + id='enable' + label={ + <FormattedMessage + id='admin.metrics.enableTitle' + defaultMessage='Enable Performance Monitoring:' + /> + } + helpText={ + <FormattedHTMLMessage + id='admin.metrics.enableDescription' + defaultMessage='When true, Mattermost will enable performance monitoring collection and profiling. Please see <a href="http://docs.mattermost.com/deployment/metrics.html" target="_blank">documentation</a> to learn more about configuring performance monitoring for Mattermost.' + /> + } + value={this.state.enable} + onChange={this.handleChange} + /> + <TextSetting + id='listenAddress' + label={ + <FormattedMessage + id='admin.metrics.listenAddressTitle' + defaultMessage='Listen Address:' + /> + } + placeholder={Utils.localizeMessage('admin.metrics.listenAddressEx', 'Ex ":8067"')} + helpText={ + <FormattedMessage + id='admin.metrics.listenAddressDesc' + defaultMessage='The address the server will listen on to expose performance metrics.' + /> + } + value={this.state.listenAddress} + onChange={this.handleChange} + /> + </SettingsGroup> + ); + } +} diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json index 942b611aa..d73ddf985 100644 --- a/webapp/i18n/en.json +++ b/webapp/i18n/en.json @@ -137,6 +137,7 @@ "add_outgoing_webhook.triggerWordsTriggerWhenFullWord": "First word matches a trigger word exactly", "add_outgoing_webhook.triggerWordsTriggerWhenStartsWith": "First word starts with a trigger word", "admin.advance.cluster": "High Availability (Beta)", + "admin.advance.metrics": "Performance Monitoring (Beta)", "admin.audits.reload": "Reload User Activity Logs", "admin.audits.title": "User Activity Logs", "admin.authentication.email": "Email Auth", @@ -145,6 +146,11 @@ "admin.authentication.oauth": "OAuth 2.0", "admin.authentication.saml": "SAML", "admin.banner.heading": "Note:", + "admin.metrics.enableTitle": "Enable Performance Monitoring:", + "admin.metrics.enableDescription": "When true, Mattermost will enable performance monitoring collection and profiling. Please see <a href=\"http://docs.mattermost.com/deployment/metrics.html\" target=\"_blank\">documentation</a> to learn more about configuring performance monitoring for Mattermost.", + "admin.metrics.listenAddressTitle": "Listen Address:", + "admin.metrics.listenAddressEx": "Ex \":8067\"", + "admin.metrics.listenAddressDesc": "The address the server will listen on to expose performance metrics.", "admin.cluster.enableDescription": "When true, Mattermost will run in High Availability mode. Please see <a href=\"http://docs.mattermost.com/deployment/cluster.html\" target=\"_blank\">documentation</a> to learn more about configuring High Availability for Mattermost.", "admin.cluster.enableTitle": "Enable High Availability Mode:", "admin.cluster.interNodeListenAddressDesc": "The address the server will listen on for communicating with other servers.", @@ -702,6 +708,7 @@ "admin.sidebar.audits": "Compliance and Auditing", "admin.sidebar.authentication": "Authentication", "admin.sidebar.cluster": "High Availability (Beta)", + "admin.sidebar.metrics": "Performance Monitoring (Beta)", "admin.sidebar.compliance": "Compliance", "admin.sidebar.configuration": "Configuration", "admin.sidebar.connections": "Connections", diff --git a/webapp/routes/route_admin_console.jsx b/webapp/routes/route_admin_console.jsx index e3e22ed68..a67cb3e83 100644 --- a/webapp/routes/route_admin_console.jsx +++ b/webapp/routes/route_admin_console.jsx @@ -18,6 +18,7 @@ import OAuthSettings from 'components/admin_console/oauth_settings.jsx'; import LdapSettings from 'components/admin_console/ldap_settings.jsx'; import SamlSettings from 'components/admin_console/saml_settings.jsx'; import ClusterSettings from 'components/admin_console/cluster_settings.jsx'; +import MetricsSettings from 'components/admin_console/metrics_settings.jsx'; import SignupSettings from 'components/admin_console/signup_settings.jsx'; import PasswordSettings from 'components/admin_console/password_settings.jsx'; import PublicLinkSettings from 'components/admin_console/public_link_settings.jsx'; @@ -201,6 +202,10 @@ export default ( path='cluster' component={ClusterSettings} /> + <Route + path='metrics' + component={MetricsSettings} + /> </Route> <Route path='team'> <Redirect |