From f0eb67fa0d0fe95769e73a69e0735b5372e75e52 Mon Sep 17 00:00:00 2001 From: catalintomai <56169943+catalintomai@users.noreply.github.com> Date: Tue, 8 Sep 2020 07:51:14 -0700 Subject: [PATCH] MM-28226: Admin Advisor: add mitigations (#15379) * Admin Advisor: add mitigation --- app/server.go | 19 +++++++++++-------- i18n/en.json | 16 ++++++++-------- model/system.go | 2 +- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/app/server.go b/app/server.go index 6255817284..eb3cea761e 100644 --- a/app/server.go +++ b/app/server.go @@ -1165,7 +1165,7 @@ func runCheckNumberOfActiveUsersWarnMetricStatusJob(a *App) { doCheckNumberOfActiveUsersWarnMetricStatus(a) model.CreateRecurringTask("Check Number Of Active Users Warn Metric Status", func() { doCheckNumberOfActiveUsersWarnMetricStatus(a) - }, time.Hour*24) + }, time.Hour*24*7) } func doSecurity(s *Server) { @@ -1220,21 +1220,22 @@ func doCheckNumberOfActiveUsersWarnMetricStatus(a *App) { for _, warnMetric := range warnMetrics { data, nErr := a.Srv().Store.System().GetByName(warnMetric.Id) - if nErr == nil && data != nil && (data.Value == model.WARN_METRIC_STATUS_ACK || data.Value == model.WARN_METRIC_STATUS_RUNONCE) { - mlog.Debug("This metric warning has already been acked or should only run once") + if nErr == nil && data != nil && (data.Value == model.WARN_METRIC_STATUS_ACK || (warnMetric.IsBotOnly && data.Value == model.WARN_METRIC_STATUS_RUNONCE)) { + mlog.Debug("This metric warning has already been acked or it is bot only and ran once") continue } - if nErr = a.Srv().Store.System().SaveOrUpdate(&model.System{Name: warnMetric.Id, Value: model.WARN_METRIC_STATUS_LIMIT_REACHED}); nErr != nil { - mlog.Error("Unable to write to database.", mlog.String("id", warnMetric.Id), mlog.Err(nErr)) - continue - } warnMetricStatus, _ := a.getWarnMetricStatusAndDisplayTextsForId(warnMetric.Id, nil) - if !warnMetric.IsBotOnly { + // Banner and bot metrics - send websocket event message := model.NewWebSocketEvent(model.WEBSOCKET_WARN_METRIC_STATUS_RECEIVED, "", "", "", nil) message.Add("warnMetricStatus", warnMetricStatus.ToJson()) a.Publish(message) + + // Bot and banner metrics, do not send the bot message again + if data != nil && data.Value == model.WARN_METRIC_STATUS_RUNONCE { + continue + } } if err = a.notifyAdminsOfWarnMetricStatus(warnMetric.Id); err != nil { @@ -1243,6 +1244,8 @@ func doCheckNumberOfActiveUsersWarnMetricStatus(a *App) { if warnMetric.IsRunOnce { a.setWarnMetricsStatusForId(warnMetric.Id, model.WARN_METRIC_STATUS_RUNONCE) + } else { + a.setWarnMetricsStatusForId(warnMetric.Id, model.WARN_METRIC_STATUS_LIMIT_REACHED) } } } diff --git a/i18n/en.json b/i18n/en.json index 8f489d36e0..cafd1aaa59 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -2004,11 +2004,11 @@ }, { "id": "api.server.warn_metric.contact_us", - "translation": "Contact us" + "translation": "Acknowledge" }, { "id": "api.server.warn_metric.contacting_us", - "translation": "Contacting us" + "translation": "Acknowledging" }, { "id": "api.server.warn_metric.email_us", @@ -2016,27 +2016,27 @@ }, { "id": "api.server.warn_metric.number_of_active_users_200.notification_body", - "translation": "Your Mattermost system now has 200 users. As your user base grows, provisioning new accounts can become time-consuming. We recommend that you upgrade to Mattermost Enterprise Edition and integrate your organization’s Active Directory/LDAP, which will allow anyone with an account to access Mattermost. Users can log in without having to create new usernames and passwords, and administrators save time provisioning and managing accounts.\r\n\r\n[Learn more about integrating with AD/LDAP](https://docs.mattermost.com/deployment/sso-ldap.html?utm_medium=product&utm_source=mattermost-advisor-bot&utm_content=adldap)\r\n\r\nContacting support sends your contact information to Mattermost, Inc. [Learn more](https://mattermost.com/pl/default-admin-advisory)" + "translation": "Your Mattermost system now has 200 users. As your user base grows, provisioning new accounts can become time-consuming. We recommend that you integrate your organization’s Active Directory/LDAP, which will allow anyone with an account to access Mattermost.\r\n\r\n[Learn more about integrating with AD/LDAP](https://docs.mattermost.com/deployment/sso-ldap.html?utm_medium=product&utm_source=mattermost-advisor-bot&utm_content=adldap)\r\n\r\nBy clicking Acknowledge, you'll be sharing your information with Mattermost Inc., to learn more about upgrading. [Learn more](https://mattermost.com/pl/default-admin-advisory)" }, { "id": "api.server.warn_metric.number_of_active_users_200.notification_title", - "translation": "Integrate AD/LDAP" + "translation": "Scaling with Mattermost" }, { "id": "api.server.warn_metric.number_of_active_users_400.notification_body", - "translation": "Your Mattermost system now has 400 users. When you connect Mattermost with your organization's single sign-on provider, users can access Mattermost without having to re-enter their credentials. Contact support to learn more about integrating with SAML 2.0, available in Mattermost Enterprise Edition.\r\n\r\n[Learn more about integrating with SAML 2.0](https://docs.mattermost.com/deployment/sso-saml.html?utm_medium=product&utm_source=mattermost-advisor-bot&utm_content=saml)\r\n\r\nContacting support sends your contact information to Mattermost, Inc. [Learn more](https://mattermost.com/pl/default-admin-advisory)" + "translation": "Your Mattermost system now has 400 users. When you connect Mattermost with your organization's single sign-on provider, users can access Mattermost without having to re-enter their credentials. We recommend you integrate SAML 2.0 provider with your Mattermost server.\r\n\r\n[Learn more about integrating with SAML 2.0](https://docs.mattermost.com/deployment/sso-saml.html?utm_medium=product&utm_source=mattermost-advisor-bot&utm_content=saml)\r\n\r\nBy clicking Acknowledge, you'll be sharing your information with Mattermost Inc., to learn more about upgrading. [Learn more](https://mattermost.com/pl/default-admin-advisory)" }, { "id": "api.server.warn_metric.number_of_active_users_400.notification_title", - "translation": "Integrate SAML 2.0" + "translation": "Scaling with Mattermost" }, { "id": "api.server.warn_metric.number_of_active_users_500.notification_body", - "translation": "Mattermost strongly recommends that deployments of over 500 users upgrade to Mattermost Enterprise Edition, which offers features such as user management, server clustering, and performance monitoring.\r\n\r\nContacting support sends your contact information to Mattermost, Inc. [Learn more](https://mattermost.com/pl/default-admin-advisory)" + "translation": "Mattermost strongly recommends that deployments of over 500 users take advantage of features such as user management, server clustering and performance monitoring. Contact us to learn more and let us know how we can help.\r\n\r\nBy clicking Acknowledge, you'll be sharing your information with Mattermost Inc., to learn more about upgrading. [Learn more](https://mattermost.com/pl/default-admin-advisory)" }, { "id": "api.server.warn_metric.number_of_active_users_500.notification_title", - "translation": "Upgrade to Mattermost Enterprise edition" + "translation": "Scaling with Mattermost" }, { "id": "api.slackimport.slack_add_bot_user.email_pwd", diff --git a/model/system.go b/model/system.go index 2be454ab24..9563d7b056 100644 --- a/model/system.go +++ b/model/system.go @@ -99,7 +99,7 @@ var WarnMetricsTable = map[string]WarnMetric{ Id: SYSTEM_WARN_METRIC_NUMBER_OF_ACTIVE_USERS_500, Limit: 500, IsBotOnly: false, - IsRunOnce: false, + IsRunOnce: true, }, }