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
Этот коммит содержится в:
Corey Hulen
2016-11-22 11:05:54 -08:00
коммит произвёл Harrison Healey
родитель e033dcce8e
Коммит 7961599b2e
389 изменённых файлов: 76289 добавлений и 1023 удалений

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

@@ -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()}

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

@@ -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>
);
}
}

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

@@ -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",

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

@@ -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