summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab/merge_request_templates/Documentation.md2
-rw-r--r--app/assets/javascripts/grafana_integration/components/grafana_integration.vue2
-rw-r--r--app/views/clusters/clusters/user/_form.html.haml4
-rwxr-xr-xbin/secpick2
-rw-r--r--doc/user/project/integrations/img/prometheus_dashboard_anomaly_panel_type.pngbin0 -> 41015 bytes
-rw-r--r--doc/user/project/integrations/prometheus.md58
-rw-r--r--spec/frontend/grafana_integration/components/__snapshots__/grafana_integration_spec.js.snap2
7 files changed, 56 insertions, 14 deletions
diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md
index a2dd79ed1ab..2a7da2a436f 100644
--- a/.gitlab/merge_request_templates/Documentation.md
+++ b/.gitlab/merge_request_templates/Documentation.md
@@ -34,7 +34,7 @@ All reviewers can help ensure accuracy, clarity, completeness, and adherence to
**3. Maintainer**
1. [ ] Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review.
-1. [ ] Ensure a release milestone is set and that you merge the equivalent EE MR before the CE MR if both exist.
+1. [ ] Ensure a release milestone is set.
1. [ ] If there has not been a technical writer review, [create an issue for one using the Doc Review template](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review).
/label ~documentation
diff --git a/app/assets/javascripts/grafana_integration/components/grafana_integration.vue b/app/assets/javascripts/grafana_integration/components/grafana_integration.vue
index 35135792c5b..bd504d95ee2 100644
--- a/app/assets/javascripts/grafana_integration/components/grafana_integration.vue
+++ b/app/assets/javascripts/grafana_integration/components/grafana_integration.vue
@@ -13,7 +13,7 @@ export default {
Icon,
},
data() {
- return { placeholderUrl: 'https://my-url.grafana.net/my-dashboard' };
+ return { placeholderUrl: 'https://my-url.grafana.net/' };
},
computed: {
...mapState(['operationsSettingsEndpoint', 'grafanaToken', 'grafanaUrl', 'grafanaEnabled']),
diff --git a/app/views/clusters/clusters/user/_form.html.haml b/app/views/clusters/clusters/user/_form.html.haml
index c16f5f333f5..39b6d74d9f9 100644
--- a/app/views/clusters/clusters/user/_form.html.haml
+++ b/app/views/clusters/clusters/user/_form.html.haml
@@ -1,6 +1,6 @@
-- more_info_link = link_to _('More information'), help_page_path('user/project/clusters/add_remove_cluster.md',
+- more_info_link = link_to _('More information'), help_page_path('user/project/clusters/add_remove_clusters.md',
anchor: 'add-existing-cluster'), target: '_blank'
-- rbac_help_link = link_to _('More information'), help_page_path('user/project/clusters/add_remove_cluster.md',
+- rbac_help_link = link_to _('More information'), help_page_path('user/project/clusters/add_remove_clusters.md',
anchor: 'access-controls'), target: '_blank'
- api_url_help_text = s_('ClusterIntegration|The URL used to access the Kubernetes API.')
diff --git a/bin/secpick b/bin/secpick
index a44867846d0..963172987f4 100755
--- a/bin/secpick
+++ b/bin/secpick
@@ -103,7 +103,7 @@ module Secpick
options[:branch] = branch
end
- opts.on('-s', '--sha abcd', 'SHA to cherry pick') do |sha|
+ opts.on('-s', '--sha abcd', 'SHA or SHA range to cherry pick') do |sha|
options[:sha] = sha
end
diff --git a/doc/user/project/integrations/img/prometheus_dashboard_anomaly_panel_type.png b/doc/user/project/integrations/img/prometheus_dashboard_anomaly_panel_type.png
new file mode 100644
index 00000000000..5cba6fa9038
--- /dev/null
+++ b/doc/user/project/integrations/img/prometheus_dashboard_anomaly_panel_type.png
Binary files differ
diff --git a/doc/user/project/integrations/prometheus.md b/doc/user/project/integrations/prometheus.md
index 9c5b53f8d47..d9d39897178 100644
--- a/doc/user/project/integrations/prometheus.md
+++ b/doc/user/project/integrations/prometheus.md
@@ -211,11 +211,11 @@ The following tables outline the details of expected properties.
| Property | Type | Required | Description |
| ------ | ------ | ------ | ------- |
-| `type` | enum | no, defaults to `area-chart` | Specifies the chart type to use, can be `area-chart` or `line-chart` |
+| `type` | enum | no, defaults to `area-chart` | Specifies the chart type to use, can be: `area-chart`, `line-chart` or `anomaly-chart`. |
| `title` | string | yes | Heading for the panel. |
| `y_label` | string | no, but highly encouraged | Y-Axis label for the panel. |
| `weight` | number | no, defaults to order in file | Order to appear within the grouping. Lower number means higher priority, which will be higher on the page. Numbers do not need to be consecutive. |
-| `metrics` | array | yes | The metrics which should be displayed in the panel. |
+| `metrics` | array | yes | The metrics which should be displayed in the panel. Any number of metrics can be displayed when `type` is `area-chart` or `line-chart`, whereas only 3 can be displayed when `type` is `anomaly-chart`. |
**Metrics (`metrics`) properties:**
@@ -231,20 +231,20 @@ The following tables outline the details of expected properties.
The below panel types are supported in monitoring dashboards.
-##### Area
+##### Area or Line Chart
-To add an area panel type to a dashboard, look at the following sample dashboard file:
+To add an area chart panel type to a dashboard, look at the following sample dashboard file:
```yaml
dashboard: 'Dashboard Title'
panel_groups:
- group: 'Group Title'
panels:
- - type: area-chart
- title: "Chart Title"
+ - type: area-chart # or line-chart
+ title: 'Area Chart Title'
y_label: "Y-Axis"
metrics:
- - id: 10
+ - id: area_http_requests_total
query_range: 'http_requests_total'
label: "Metric of Ages"
unit: "count"
@@ -255,10 +255,52 @@ Note the following properties:
| Property | Type | Required | Description |
| ------ | ------ | ------ | ------ |
| type | string | no | Type of panel to be rendered. Optional for area panel types |
-| query_range | yes | required | For area panel types, you must use a [range query](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) |
+| query_range | string | required | For area panel types, you must use a [range query](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) |
![area panel type](img/prometheus_dashboard_area_panel_type.png)
+##### Anomaly chart
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/16530) in GitLab 12.5.
+
+To add an anomaly chart panel type to a dashboard, add add a panel with *exactly* 3 metrics.
+
+The first metric represents the current state, and the second and third metrics represent the upper and lower limit respectively:
+
+```yaml
+dashboard: 'Dashboard Title'
+panel_groups:
+ - group: 'Group Title'
+ panels:
+ - type: anomaly-chart
+ title: "Chart Title"
+ y_label: "Y-Axis"
+ metrics:
+ - id: anomaly_requests_normal
+ query_range: 'http_requests_total'
+ label: "# of Requests"
+ unit: "count"
+ metrics:
+ - id: anomaly_requests_upper_limit
+ query_range: 10000
+ label: "Max # of requests"
+ unit: "count"
+ metrics:
+ - id: anomaly_requests_lower_limit
+ query_range: 2000
+ label: "Min # of requests"
+ unit: "count"
+```
+
+Note the following properties:
+
+| Property | Type | Required | Description |
+| ------ | ------ | ------ | ------ |
+| type | string | required | Must be `anomaly-chart` for anomaly panel types |
+| query_range | yes | required | For anomaly panel types, you must use a [range query](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) in every metric. |
+
+![anomaly panel type](img/prometheus_dashboard_anomaly_panel_type.png)
+
##### Single Stat
To add a single stat panel type to a dashboard, look at the following sample dashboard file:
diff --git a/spec/frontend/grafana_integration/components/__snapshots__/grafana_integration_spec.js.snap b/spec/frontend/grafana_integration/components/__snapshots__/grafana_integration_spec.js.snap
index 99f669dba5a..69ad71a1efb 100644
--- a/spec/frontend/grafana_integration/components/__snapshots__/grafana_integration_spec.js.snap
+++ b/spec/frontend/grafana_integration/components/__snapshots__/grafana_integration_spec.js.snap
@@ -51,7 +51,7 @@ exports[`grafana integration component default state to match the default snapsh
>
<glforminput-stub
id="grafana-url"
- placeholder="https://my-url.grafana.net/my-dashboard"
+ placeholder="https://my-url.grafana.net/"
value="http://test.host"
/>
</glformgroup-stub>