From 0a9d771bcba036971ebc076112c4a62f2179e372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Fri, 31 Aug 2018 18:53:50 +0200 Subject: Import common metrics into database. This MR backports PrometheusMetric model to CE and adds: common, identifier to figure out what kind of metric is used. --- .../integrations/prometheus_library/metrics.md | 43 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'doc/user/project/integrations') diff --git a/doc/user/project/integrations/prometheus_library/metrics.md b/doc/user/project/integrations/prometheus_library/metrics.md index 96a22316265..1e0f9d4e249 100644 --- a/doc/user/project/integrations/prometheus_library/metrics.md +++ b/doc/user/project/integrations/prometheus_library/metrics.md @@ -20,6 +20,45 @@ GitLab uses the defined queries and fills in the environment specific variables. ## Adding to the library -We strive to support the 2-4 most important metrics for each common system service that supports Prometheus. If you are looking for support for a particular exporter which has not yet been added to the library, additions can be made [to the `additional_metrics.yml`](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/prometheus/additional_metrics.yml) file. +We strive to support the 2-4 most important metrics for each common system service that supports Prometheus. If you are looking for support for a particular exporter which has not yet been added to the library, additions can be made [to the `common_metrics.yml`](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/prometheus/common_metrics.yml) file. -> Note: The library is only for monitoring public, common, system services which all customers can benefit from. Support for monitoring [customer proprietary metrics](https://gitlab.com/gitlab-org/gitlab-ee/issues/2273) will be added in a subsequent release. +### Query identifier + +The requirement for adding metrics is to have each query to have unique identifier. +Identifier is used to update the metric later when changed. + +```yaml +- group: Response metrics (NGINX Ingress) + metrics: + - title: "Throughput" + y_label: "Requests / Sec" + queries: + - id: response_metrics_nginx_ingress_throughput_status_code + query_range: 'sum(rate(nginx_upstream_responses_total{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[2m])) by (status_code)' + unit: req / sec + label: Status Code +``` + +### Update existing metrics + +After you add or change existing _common_ metric you have to create a new database migration that will query and update all existing metrics. + +**Note: If a query metric (which is identified by `id:`) is removed it will not be removed from database by default.** +**You might want to add additional database migration that makes a decision what to do with removed one.** +**For example: you might be interested in migrating all dependent data to a different metric.** + +```ruby +class ImportCommonMetrics < ActiveRecord::Migration + require_relative '../importers/common_metrics_importer.rb' + + DOWNTIME = false + + def up + Importers::CommonMetricsImporter.new.execute + end + + def down + # no-op + end +end +``` -- cgit v1.2.3