diff --git a/lib/monitoring/addon/components/enable-monitoring/component.js b/lib/monitoring/addon/components/enable-monitoring/component.js index f08bb4b9f..f9d739e37 100644 --- a/lib/monitoring/addon/components/enable-monitoring/component.js +++ b/lib/monitoring/addon/components/enable-monitoring/component.js @@ -3,6 +3,8 @@ import { on } from '@ember/object/evented'; import Component from '@ember/component'; import { set, get, computed, observer } from '@ember/object'; import { alias } from '@ember/object/computed'; +import { convertToMillis } from 'shared/utils/util'; +import { parseSi } from 'shared/utils/parse-unit'; import layout from './template'; const PROMETHEUS = 'prometheus'; @@ -23,10 +25,14 @@ export default Component.extend({ enableNodeExporter: true, prometheusPersistenceSize: '50Gi', grafanaPersistenceSize: '10Gi', + requestsCpu: '200', + limitsCpu: '1000', + requestsMemory: '100', + limitsMemory: '500', prometheusStorageClass: null, grafanaStorageClass: null, nodeSelectors: null, - retention: 360, + retention: 12, port: 9796, cluster: alias('scope.currentCluster'), @@ -63,6 +69,10 @@ export default Component.extend({ answers['grafana.persistence.storageClass'] = `${ get(this, 'grafanaStorageClass') === null ? 'default' : get(this, 'grafanaStorageClass') }`; answers['grafana.persistence.size'] = `${ get(this, 'grafanaPersistenceSize') }`; answers['prometheus.persistence.size'] = `${ get(this, 'prometheusPersistenceSize') }`; + answers['prometheus.resources.core.requests.cpu'] = `${ get(this, 'requestsCpu') }m`; + answers['prometheus.resources.core.limits.cpu'] = `${ get(this, 'limitsCpu') }m`; + answers['prometheus.resources.core.requests.memory'] = `${ get(this, 'requestsMemory') }Mi`; + answers['prometheus.resources.core.limits.memory'] = `${ get(this, 'limitsMemory') }Mi`; Object.keys(answers).filter((key) => key.startsWith('prometheus.nodeSelectors[') ).forEach((key) => { delete answers[key] @@ -137,6 +147,22 @@ export default Component.extend({ }, updateConfig(answers) { + if ( answers['prometheus.resources.core.requests.cpu'] ) { + set(this, 'requestsCpu', convertToMillis(answers['prometheus.resources.core.requests.cpu'])); + } + + if ( answers['prometheus.resources.core.limits.cpu'] ) { + set(this, 'limitsCpu', convertToMillis(answers['prometheus.resources.core.limits.cpu'])); + } + + if ( answers['prometheus.resources.core.requests.memory'] ) { + set(this, 'requestsMemory', parseSi(answers['prometheus.resources.core.requests.memory'], 1024) / 1048576); + } + + if ( answers['prometheus.resources.core.limits.memory'] ) { + set(this, 'limitsMemory', parseSi(answers['prometheus.resources.core.limits.memory'], 1024) / 1048576); + } + if ( answers['prometheus.retention'] ) { set(this, 'retention', answers['prometheus.retention'].substr(0, answers['prometheus.retention'].length - 1)); } diff --git a/lib/monitoring/addon/components/enable-monitoring/template.hbs b/lib/monitoring/addon/components/enable-monitoring/template.hbs index 8dd254a11..2e0df3314 100644 --- a/lib/monitoring/addon/components/enable-monitoring/template.hbs +++ b/lib/monitoring/addon/components/enable-monitoring/template.hbs @@ -65,14 +65,7 @@ {{schema/input-boolean value=enableGrafanaPersistence}} - {{#if (and (eq level "cluster") enableNodeExporter)}} -
-
- - {{input-integer min=1 max=65535 value=port}} -
-
- {{/if}} + {{#if enablePrometheusPersistence}}
@@ -99,6 +92,85 @@
{{/if}} +
+
+ + +
+ {{input-integer + min="0" + step="100" + value=limitsCpu + classNames="form-control" + placeholder=(t "monitoringPage.config.prometheus.cpuLimit.placeholder") + }} +
+ {{t "monitoringPage.config.prometheus.cpuLimit.unit"}} +
+
+
+ + + +
+ {{input-integer + min="0" + step="100" + value=requestsCpu + classNames="form-control" + placeholder=(t "monitoringPage.config.prometheus.cpuRequest.placeholder") + }} +
+ {{t "monitoringPage.config.prometheus.cpuRequest.unit"}} +
+
+
+
+ +
+ +
+ {{input-integer + min="4" + step="1" + value=limitsMemory + classNames="form-control" + placeholder=(t "monitoringPage.config.prometheus.memoryLimit.placeholder") + }} +
+ {{t "generic.mibibyte"}} +
+
+ + +
+ {{input-integer + min="4" + step="1" + value=requestsMemory + classNames="form-control" + placeholder=(t "monitoringPage.config.prometheus.memoryRequest.placeholder") + }} +
+ {{t "generic.mibibyte"}} +
+
+
+
+ + {{#if (and (eq level "cluster") enableNodeExporter)}} +
+
+ + {{input-integer + min=1 + max=65535 + value=port + }} +
+
+ {{/if}} +
diff --git a/lib/monitoring/translations/en-us.yaml b/lib/monitoring/translations/en-us.yaml index 1f8e45721..4e4cfa525 100644 --- a/lib/monitoring/translations/en-us.yaml +++ b/lib/monitoring/translations/en-us.yaml @@ -100,6 +100,20 @@ monitoringPage: prometheus: Prometheus header: Prometheus Configuration prometheus: + cpuLimit: + label: Prometheus CPU Limit + placeholder: e.g. 1000 + unit: milli CPUs + cpuRequest: + label: Prometheus CPU Reservation + placeholder: e.g. 1000 + unit: milli CPUs + memoryLimit: + label: Prometheus Memory Limit + placeholder: e.g. 1000 + memoryRequest: + label: Prometheus Memory Reservation + placeholder: e.g. 1000 enablePersistence: label: Enable Persistent Storage for Prometheus size: