summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorCorey Hulen <corey@hulen.com>2016-11-22 11:05:54 -0800
committerHarrison Healey <harrisonmhealey@gmail.com>2016-11-22 14:05:54 -0500
commit7961599b2e41c71720a42b3bfde641f7529f05fe (patch)
tree3c039e1d3790a954ba65fe551c7b348331bce994 /webapp
parente033dcce8e57ed6b6684227adf9b29347e4718b3 (diff)
downloadchat-7961599b2e41c71720a42b3bfde641f7529f05fe.tar.gz
chat-7961599b2e41c71720a42b3bfde641f7529f05fe.tar.bz2
chat-7961599b2e41c71720a42b3bfde641f7529f05fe.zip
PLT-4357 adding performance monitoring (#4622)
* WIP * WIP * Adding metrics collection * updating vendor packages * Adding metrics to config * Adding admin console page for perf monitoring * Updating glide * switching to tylerb/graceful
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/admin_console/admin_sidebar.jsx16
-rw-r--r--webapp/components/admin_console/metrics_settings.jsx96
-rw-r--r--webapp/i18n/en.json7
-rw-r--r--webapp/routes/route_admin_console.jsx5
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