From 6207dc9037601d5188c86876c2ff79d6ddbbe540 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Sun, 25 Sep 2016 12:16:14 +0200 Subject: [PATCH 1/2] Move monitoring/ to new location --- doc/README.md | 4 +- doc/administration/monitoring/health_check.md | 66 ++++++ .../monitoring/img/health_check_token.png | Bin .../performance/gitlab_configuration.md | 40 ++++ .../performance/grafana_configuration.md | 111 ++++++++++ .../img/grafana_dashboard_dropdown.png | Bin 0 -> 14368 bytes .../img/grafana_dashboard_import.png | Bin 0 -> 18267 bytes .../img/grafana_data_source_configuration.png | Bin 0 -> 26060 bytes .../img/grafana_data_source_empty.png | Bin 0 -> 21821 bytes .../performance/img/grafana_save_icon.png | Bin 0 -> 9107 bytes .../metrics_gitlab_configuration_settings.png | Bin 0 -> 61357 bytes .../performance/influxdb_configuration.md | 193 +++++++++++++++++ .../monitoring/performance/influxdb_schema.md | 97 +++++++++ .../monitoring/performance/introduction.md | 65 ++++++ doc/monitoring/health_check.md | 67 +----- .../performance/gitlab_configuration.md | 41 +--- .../performance/grafana_configuration.md | 112 +--------- .../performance/influxdb_configuration.md | 194 +----------------- doc/monitoring/performance/influxdb_schema.md | 98 +-------- doc/monitoring/performance/introduction.md | 66 +----- 20 files changed, 580 insertions(+), 574 deletions(-) create mode 100644 doc/administration/monitoring/health_check.md rename doc/{ => administration}/monitoring/img/health_check_token.png (100%) create mode 100644 doc/administration/monitoring/performance/gitlab_configuration.md create mode 100644 doc/administration/monitoring/performance/grafana_configuration.md create mode 100644 doc/administration/monitoring/performance/img/grafana_dashboard_dropdown.png create mode 100644 doc/administration/monitoring/performance/img/grafana_dashboard_import.png create mode 100644 doc/administration/monitoring/performance/img/grafana_data_source_configuration.png create mode 100644 doc/administration/monitoring/performance/img/grafana_data_source_empty.png create mode 100644 doc/administration/monitoring/performance/img/grafana_save_icon.png create mode 100644 doc/administration/monitoring/performance/img/metrics_gitlab_configuration_settings.png create mode 100644 doc/administration/monitoring/performance/influxdb_configuration.md create mode 100644 doc/administration/monitoring/performance/influxdb_schema.md create mode 100644 doc/administration/monitoring/performance/introduction.md diff --git a/doc/README.md b/doc/README.md index dd0eb97489e4..5a6f467c17c4 100644 --- a/doc/README.md +++ b/doc/README.md @@ -46,8 +46,8 @@ - [Migrate GitLab CI to CE/EE](migrate_ci_to_ce/README.md) Follow this guide to migrate your existing GitLab CI data to GitLab CE/EE. - [Git LFS configuration](workflow/lfs/lfs_administration.md) - [Housekeeping](administration/housekeeping.md) Keep your Git repository tidy and fast. -- [GitLab Performance Monitoring](monitoring/performance/introduction.md) Configure GitLab and InfluxDB for measuring performance metrics. -- [Monitoring uptime](monitoring/health_check.md) Check the server status using the health check endpoint. +- [GitLab Performance Monitoring](administration/monitoring/performance/introduction.md) Configure GitLab and InfluxDB for measuring performance metrics. +- [Monitoring uptime](administration/monitoring/health_check.md) Check the server status using the health check endpoint. - [Debugging Tips](administration/troubleshooting/debug.md) Tips to debug problems when things go wrong - [Sidekiq Troubleshooting](administration/troubleshooting/sidekiq.md) Debug when Sidekiq appears hung and is not processing jobs. - [High Availability](administration/high_availability/README.md) Configure multiple servers for scaling or high availability. diff --git a/doc/administration/monitoring/health_check.md b/doc/administration/monitoring/health_check.md new file mode 100644 index 000000000000..eac57bc3de4b --- /dev/null +++ b/doc/administration/monitoring/health_check.md @@ -0,0 +1,66 @@ +# Health Check + +> [Introduced][ce-3888] in GitLab 8.8. + +GitLab provides a health check endpoint for uptime monitoring on the `health_check` web +endpoint. The health check reports on the overall system status based on the status of +the database connection, the state of the database migrations, and the ability to write +and access the cache. This endpoint can be provided to uptime monitoring services like +[Pingdom][pingdom], [Nagios][nagios-health], and [NewRelic][newrelic-health]. + +## Access Token + +An access token needs to be provided while accessing the health check endpoint. The current +accepted token can be found on the `admin/health_check` page of your GitLab instance. + +![access token](img/health_check_token.png) + +The access token can be passed as a URL parameter: + +``` +https://gitlab.example.com/health_check.json?token=ACCESS_TOKEN +``` + +or as an HTTP header: + +```bash +curl --header "TOKEN: ACCESS_TOKEN" https://gitlab.example.com/health_check.json +``` + +## Using the Endpoint + +Once you have the access token, health information can be retrieved as plain text, JSON, +or XML using the `health_check` endpoint: + +- `https://gitlab.example.com/health_check?token=ACCESS_TOKEN` +- `https://gitlab.example.com/health_check.json?token=ACCESS_TOKEN` +- `https://gitlab.example.com/health_check.xml?token=ACCESS_TOKEN` + +You can also ask for the status of specific services: + +- `https://gitlab.example.com/health_check/cache.json?token=ACCESS_TOKEN` +- `https://gitlab.example.com/health_check/database.json?token=ACCESS_TOKEN` +- `https://gitlab.example.com/health_check/migrations.json?token=ACCESS_TOKEN` + +For example, the JSON output of the following health check: + +```bash +curl --header "TOKEN: ACCESS_TOKEN" https://gitlab.example.com/health_check.json +``` + +would be like: + +``` +{"healthy":true,"message":"success"} +``` + +## Status + +On failure, the endpoint will return a `500` HTTP status code. On success, the endpoint +will return a valid successful HTTP status code, and a `success` message. Ideally your +uptime monitoring should look for the success message. + +[ce-3888]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3888 +[pingdom]: https://www.pingdom.com +[nagios-health]: https://nagios-plugins.org/doc/man/check_http.html +[newrelic-health]: https://docs.newrelic.com/docs/alerts/alert-policies/downtime-alerts/availability-monitoring diff --git a/doc/monitoring/img/health_check_token.png b/doc/administration/monitoring/img/health_check_token.png similarity index 100% rename from doc/monitoring/img/health_check_token.png rename to doc/administration/monitoring/img/health_check_token.png diff --git a/doc/administration/monitoring/performance/gitlab_configuration.md b/doc/administration/monitoring/performance/gitlab_configuration.md new file mode 100644 index 000000000000..771584268d91 --- /dev/null +++ b/doc/administration/monitoring/performance/gitlab_configuration.md @@ -0,0 +1,40 @@ +# GitLab Configuration + +GitLab Performance Monitoring is disabled by default. To enable it and change any of its +settings, navigate to the Admin area in **Settings > Metrics** +(`/admin/application_settings`). + +The minimum required settings you need to set are the InfluxDB host and port. +Make sure _Enable InfluxDB Metrics_ is checked and hit **Save** to save the +changes. + +--- + +![GitLab Performance Monitoring Admin Settings](img/metrics_gitlab_configuration_settings.png) + +--- + +Finally, a restart of all GitLab processes is required for the changes to take +effect: + +```bash +# For Omnibus installations +sudo gitlab-ctl restart + +# For installations from source +sudo service gitlab restart +``` + +## Pending Migrations + +When any migrations are pending, the metrics are disabled until the migrations +have been performed. + +--- + +Read more on: + +- [Introduction to GitLab Performance Monitoring](introduction.md) +- [InfluxDB Configuration](influxdb_configuration.md) +- [InfluxDB Schema](influxdb_schema.md) +- [Grafana Install/Configuration](grafana_configuration.md) diff --git a/doc/administration/monitoring/performance/grafana_configuration.md b/doc/administration/monitoring/performance/grafana_configuration.md new file mode 100644 index 000000000000..7947b0fedc4e --- /dev/null +++ b/doc/administration/monitoring/performance/grafana_configuration.md @@ -0,0 +1,111 @@ +# Grafana Configuration + +[Grafana](http://grafana.org/) is a tool that allows you to visualize time +series metrics through graphs and dashboards. It supports several backend +data stores, including InfluxDB. GitLab writes performance data to InfluxDB +and Grafana will allow you to query InfluxDB to display useful graphs. + +For the easiest installation and configuration, install Grafana on the same +server as InfluxDB. For larger installations, you may want to split out these +services. + +## Installation + +Grafana supplies package repositories (Yum/Apt) for easy installation. +See [Grafana installation documentation](http://docs.grafana.org/installation/) +for detailed steps. + +> **Note**: Before starting Grafana for the first time, set the admin user +and password in `/etc/grafana/grafana.ini`. Otherwise, the default password +will be `admin`. + +## Configuration + +Login as the admin user. Expand the menu by clicking the Grafana logo in the +top left corner. Choose 'Data Sources' from the menu. Then, click 'Add new' +in the top bar. + +![Grafana empty data source page](img/grafana_data_source_empty.png) + +Fill in the configuration details for the InfluxDB data source. Save and +Test Connection to ensure the configuration is correct. + +- **Name**: InfluxDB +- **Default**: Checked +- **Type**: InfluxDB 0.9.x (Even if you're using InfluxDB 0.10.x) +- **Url**: https://localhost:8086 (Or the remote URL if you've installed InfluxDB +on a separate server) +- **Access**: proxy +- **Database**: gitlab +- **User**: admin (Or the username configured when setting up InfluxDB) +- **Password**: The password configured when you set up InfluxDB + +![Grafana data source configurations](img/grafana_data_source_configuration.png) + +## Apply retention policies and create continuous queries + +If you intend to import the GitLab provided Grafana dashboards, you will need to +set up the right retention policies and continuous queries. The easiest way of +doing this is by using the [influxdb-management](https://gitlab.com/gitlab-org/influxdb-management) +repository. + +To use this repository you must first clone it: + +``` +git clone https://gitlab.com/gitlab-org/influxdb-management.git +cd influxdb-management +``` + +Next you must install the required dependencies: + +``` +gem install bundler +bundle install +``` + +Now you must configure the repository by first copying `.env.example` to `.env` +and then editing the `.env` file to contain the correct InfluxDB settings. Once +configured you can simply run `bundle exec rake` and the InfluxDB database will +be configured for you. + +For more information see the [influxdb-management README](https://gitlab.com/gitlab-org/influxdb-management/blob/master/README.md). + +## Import Dashboards + +You can now import a set of default dashboards that will give you a good +start on displaying useful information. GitLab has published a set of default +[Grafana dashboards][grafana-dashboards] to get you started. Clone the +repository or download a zip/tarball, then follow these steps to import each +JSON file. + +Open the dashboard dropdown menu and click 'Import' + +![Grafana dashboard dropdown](img/grafana_dashboard_dropdown.png) + +Click 'Choose file' and browse to the location where you downloaded or cloned +the dashboard repository. Pick one of the JSON files to import. + +![Grafana dashboard import](img/grafana_dashboard_import.png) + +Once the dashboard is imported, be sure to click save icon in the top bar. If +you do not save the dashboard after importing it will be removed when you +navigate away. + +![Grafana save icon](img/grafana_save_icon.png) + +Repeat this process for each dashboard you wish to import. + +Alternatively you can automatically import all the dashboards into your Grafana +instance. See the README of the [Grafana dashboards][grafana-dashboards] +repository for more information on this process. + +[grafana-dashboards]: https://gitlab.com/gitlab-org/grafana-dashboards + +--- + +Read more on: + +- [Introduction to GitLab Performance Monitoring](introduction.md) +- [GitLab Configuration](gitlab_configuration.md) +- [InfluxDB Installation/Configuration](influxdb_configuration.md) +- [InfluxDB Schema](influxdb_schema.md) diff --git a/doc/administration/monitoring/performance/img/grafana_dashboard_dropdown.png b/doc/administration/monitoring/performance/img/grafana_dashboard_dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..7e34fad71ce6ef121704f909617c827e7f706967 GIT binary patch literal 14368 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 UF4ujQfq{X+)78&qol`;+01!HchX4Qo literal 0 HcmV?d00001 diff --git a/doc/administration/monitoring/performance/img/grafana_dashboard_import.png b/doc/administration/monitoring/performance/img/grafana_dashboard_import.png new file mode 100644 index 0000000000000000000000000000000000000000..f97624365c70d63dd24ef54ef578882b0081403e GIT binary patch literal 18267 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 E032c@o&W#< literal 0 HcmV?d00001 diff --git a/doc/administration/monitoring/performance/img/grafana_save_icon.png b/doc/administration/monitoring/performance/img/grafana_save_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c740e33cd1c3bc105f247dcbec3d42a0a632dfd1 GIT binary patch literal 9107 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�@7r^@sC4dxtNR@H3jbSCI&sOiuCtq-zquCD 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 +and password (`-password `) you set earlier to the commands below._ + +Run the following command to create a database named `gitlab`: + +```bash +influx -execute 'CREATE DATABASE gitlab' +``` + +The name **must** be `gitlab`, do not use any other name. + +Next, make sure that the database was successfully created: + +```bash +influx -execute 'SHOW DATABASES' +``` + +The output should be similar to: + +``` +name: databases +--------------- +name +_internal +gitlab +``` + +That's it! Now your GitLab instance should send data to InfluxDB. + +--- + +Read more on: + +- [Introduction to GitLab Performance Monitoring](introduction.md) +- [GitLab Configuration](gitlab_configuration.md) +- [InfluxDB Schema](influxdb_schema.md) +- [Grafana Install/Configuration](grafana_configuration.md) + +[influxdb-retention]: https://docs.influxdata.com/influxdb/v0.9/query_language/database_management/#retention-policy-management +[influxdb documentation]: https://docs.influxdata.com/influxdb/v0.9/ +[influxdb cli]: https://docs.influxdata.com/influxdb/v0.9/tools/shell/ +[udp]: https://docs.influxdata.com/influxdb/v0.9/write_protocols/udp/ +[influxdb]: https://influxdata.com/time-series-platform/influxdb/ +[tsm tree]: https://influxdata.com/blog/new-storage-engine-time-structured-merge-tree/ +[tsm1-commit]: https://github.com/influxdata/influxdb/commit/15d723dc77651bac83e09e2b1c94be480966cb0d +[influx-admin]: https://docs.influxdata.com/influxdb/v0.9/administration/authentication_and_authorization/#create-a-new-admin-user diff --git a/doc/administration/monitoring/performance/influxdb_schema.md b/doc/administration/monitoring/performance/influxdb_schema.md new file mode 100644 index 000000000000..eff0e29f58d5 --- /dev/null +++ b/doc/administration/monitoring/performance/influxdb_schema.md @@ -0,0 +1,97 @@ +# InfluxDB Schema + +The following measurements are currently stored in InfluxDB: + +- `PROCESS_file_descriptors` +- `PROCESS_gc_statistics` +- `PROCESS_memory_usage` +- `PROCESS_method_calls` +- `PROCESS_object_counts` +- `PROCESS_transactions` +- `PROCESS_views` +- `events` + +Here, `PROCESS` is replaced with either `rails` or `sidekiq` depending on the +process type. In all series, any form of duration is stored in milliseconds. + +## PROCESS_file_descriptors + +This measurement contains the number of open file descriptors over time. The +value field `value` contains the number of descriptors. + +## PROCESS_gc_statistics + +This measurement contains Ruby garbage collection statistics such as the amount +of minor/major GC runs (relative to the last sampling interval), the time spent +in garbage collection cycles, and all fields/values returned by `GC.stat`. + +## PROCESS_memory_usage + +This measurement contains the process' memory usage (in bytes) over time. The +value field `value` contains the number of bytes. + +## PROCESS_method_calls + +This measurement contains the methods called during a transaction along with +their duration, and a name of the transaction action that invoked the method (if +available). The method call duration is stored in the value field `duration`, +while the method name is stored in the tag `method`. The tag `action` contains +the full name of the transaction action. Both the `method` and `action` fields +are in the following format: + +``` +ClassName#method_name +``` + +For example, a method called by the `show` method in the `UsersController` class +would have `action` set to `UsersController#show`. + +## PROCESS_object_counts + +This measurement is used to store retained Ruby objects (per class) and the +amount of retained objects. The number of objects is stored in the `count` value +field while the class name is stored in the `type` tag. + +## PROCESS_transactions + +This measurement is used to store basic transaction details such as the time it +took to complete a transaction, how much time was spent in SQL queries, etc. The +following value fields are available: + +| Value | Description | +| ----- | ----------- | +| `duration` | The total duration of the transaction | +| `allocated_memory` | The amount of bytes allocated while the transaction was running. This value is only reliable when using single-threaded application servers | +| `method_duration` | The total time spent in method calls | +| `sql_duration` | The total time spent in SQL queries | +| `view_duration` | The total time spent in views | + +## PROCESS_views + +This measurement is used to store view rendering timings for a transaction. The +following value fields are available: + +| Value | Description | +| ----- | ----------- | +| `duration` | The rendering time of the view | +| `view` | The path of the view, relative to the application's root directory | + +The `action` tag contains the action name of the transaction that rendered the +view. + +## events + +This measurement is used to store generic events such as the number of Git +pushes, Emails sent, etc. Each point in this measurement has a single value +field called `count`. The value of this field is simply set to `1`. Each point +also has at least one tag: `event`. This tag's value is set to the event name. +Depending on the event type additional tags may be available as well. + +--- + +Read more on: + +- [Introduction to GitLab Performance Monitoring](introduction.md) +- [GitLab Configuration](gitlab_configuration.md) +- [InfluxDB Configuration](influxdb_configuration.md) +- [Grafana Install/Configuration](grafana_configuration.md) diff --git a/doc/administration/monitoring/performance/introduction.md b/doc/administration/monitoring/performance/introduction.md new file mode 100644 index 000000000000..79904916b7e2 --- /dev/null +++ b/doc/administration/monitoring/performance/introduction.md @@ -0,0 +1,65 @@ +# GitLab Performance Monitoring + +GitLab comes with its own application performance measuring system as of GitLab +8.4, simply called "GitLab Performance Monitoring". GitLab Performance Monitoring is available in both the +Community and Enterprise editions. + +Apart from this introduction, you are advised to read through the following +documents in order to understand and properly configure GitLab Performance Monitoring: + +- [GitLab Configuration](gitlab_configuration.md) +- [InfluxDB Install/Configuration](influxdb_configuration.md) +- [InfluxDB Schema](influxdb_schema.md) +- [Grafana Install/Configuration](grafana_configuration.md) + +## Introduction to GitLab Performance Monitoring + +GitLab Performance Monitoring makes it possible to measure a wide variety of statistics +including (but not limited to): + +- The time it took to complete a transaction (a web request or Sidekiq job). +- The time spent in running SQL queries and rendering HAML views. +- The time spent executing (instrumented) Ruby methods. +- Ruby object allocations, and retained objects in particular. +- System statistics such as the process' memory usage and open file descriptors. +- Ruby garbage collection statistics. + +Metrics data is written to [InfluxDB][influxdb] over [UDP][influxdb-udp]. Stored +data can be visualized using [Grafana][grafana] or any other application that +supports reading data from InfluxDB. Alternatively data can be queried using the +InfluxDB CLI. + +## Metric Types + +Two types of metrics are collected: + +1. Transaction specific metrics. +1. Sampled metrics, collected at a certain interval in a separate thread. + +### Transaction Metrics + +Transaction metrics are metrics that can be associated with a single +transaction. This includes statistics such as the transaction duration, timings +of any executed SQL queries, time spent rendering HAML views, etc. These metrics +are collected for every Rack request and Sidekiq job processed. + +### Sampled Metrics + +Sampled metrics are metrics that can't be associated with a single transaction. +Examples include garbage collection statistics and retained Ruby objects. These +metrics are collected at a regular interval. This interval is made up out of two +parts: + +1. A user defined interval. +1. A randomly generated offset added on top of the interval, the same offset + can't be used twice in a row. + +The actual interval can be anywhere between a half of the defined interval and a +half above the interval. For example, for a user defined interval of 15 seconds +the actual interval can be anywhere between 7.5 and 22.5. The interval is +re-generated for every sampling run instead of being generated once and re-used +for the duration of the process' lifetime. + +[influxdb]: https://influxdata.com/time-series-platform/influxdb/ +[influxdb-udp]: https://docs.influxdata.com/influxdb/v0.9/write_protocols/udp/ +[grafana]: http://grafana.org/ diff --git a/doc/monitoring/health_check.md b/doc/monitoring/health_check.md index eac57bc3de4b..23ae1b17258a 100644 --- a/doc/monitoring/health_check.md +++ b/doc/monitoring/health_check.md @@ -1,66 +1 @@ -# Health Check - -> [Introduced][ce-3888] in GitLab 8.8. - -GitLab provides a health check endpoint for uptime monitoring on the `health_check` web -endpoint. The health check reports on the overall system status based on the status of -the database connection, the state of the database migrations, and the ability to write -and access the cache. This endpoint can be provided to uptime monitoring services like -[Pingdom][pingdom], [Nagios][nagios-health], and [NewRelic][newrelic-health]. - -## Access Token - -An access token needs to be provided while accessing the health check endpoint. The current -accepted token can be found on the `admin/health_check` page of your GitLab instance. - -![access token](img/health_check_token.png) - -The access token can be passed as a URL parameter: - -``` -https://gitlab.example.com/health_check.json?token=ACCESS_TOKEN -``` - -or as an HTTP header: - -```bash -curl --header "TOKEN: ACCESS_TOKEN" https://gitlab.example.com/health_check.json -``` - -## Using the Endpoint - -Once you have the access token, health information can be retrieved as plain text, JSON, -or XML using the `health_check` endpoint: - -- `https://gitlab.example.com/health_check?token=ACCESS_TOKEN` -- `https://gitlab.example.com/health_check.json?token=ACCESS_TOKEN` -- `https://gitlab.example.com/health_check.xml?token=ACCESS_TOKEN` - -You can also ask for the status of specific services: - -- `https://gitlab.example.com/health_check/cache.json?token=ACCESS_TOKEN` -- `https://gitlab.example.com/health_check/database.json?token=ACCESS_TOKEN` -- `https://gitlab.example.com/health_check/migrations.json?token=ACCESS_TOKEN` - -For example, the JSON output of the following health check: - -```bash -curl --header "TOKEN: ACCESS_TOKEN" https://gitlab.example.com/health_check.json -``` - -would be like: - -``` -{"healthy":true,"message":"success"} -``` - -## Status - -On failure, the endpoint will return a `500` HTTP status code. On success, the endpoint -will return a valid successful HTTP status code, and a `success` message. Ideally your -uptime monitoring should look for the success message. - -[ce-3888]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3888 -[pingdom]: https://www.pingdom.com -[nagios-health]: https://nagios-plugins.org/doc/man/check_http.html -[newrelic-health]: https://docs.newrelic.com/docs/alerts/alert-policies/downtime-alerts/availability-monitoring +This document was moved to [administration/monitoring/health_check](../administration/monitoring/health_check.md). diff --git a/doc/monitoring/performance/gitlab_configuration.md b/doc/monitoring/performance/gitlab_configuration.md index 771584268d91..a669bb28904b 100644 --- a/doc/monitoring/performance/gitlab_configuration.md +++ b/doc/monitoring/performance/gitlab_configuration.md @@ -1,40 +1 @@ -# GitLab Configuration - -GitLab Performance Monitoring is disabled by default. To enable it and change any of its -settings, navigate to the Admin area in **Settings > Metrics** -(`/admin/application_settings`). - -The minimum required settings you need to set are the InfluxDB host and port. -Make sure _Enable InfluxDB Metrics_ is checked and hit **Save** to save the -changes. - ---- - -![GitLab Performance Monitoring Admin Settings](img/metrics_gitlab_configuration_settings.png) - ---- - -Finally, a restart of all GitLab processes is required for the changes to take -effect: - -```bash -# For Omnibus installations -sudo gitlab-ctl restart - -# For installations from source -sudo service gitlab restart -``` - -## Pending Migrations - -When any migrations are pending, the metrics are disabled until the migrations -have been performed. - ---- - -Read more on: - -- [Introduction to GitLab Performance Monitoring](introduction.md) -- [InfluxDB Configuration](influxdb_configuration.md) -- [InfluxDB Schema](influxdb_schema.md) -- [Grafana Install/Configuration](grafana_configuration.md) +This document was moved to [administration/monitoring/performance/gitlab_configuration](../administration/monitoring/performance/gitlab_configuration.md). diff --git a/doc/monitoring/performance/grafana_configuration.md b/doc/monitoring/performance/grafana_configuration.md index 7947b0fedc4e..93320b40174b 100644 --- a/doc/monitoring/performance/grafana_configuration.md +++ b/doc/monitoring/performance/grafana_configuration.md @@ -1,111 +1 @@ -# Grafana Configuration - -[Grafana](http://grafana.org/) is a tool that allows you to visualize time -series metrics through graphs and dashboards. It supports several backend -data stores, including InfluxDB. GitLab writes performance data to InfluxDB -and Grafana will allow you to query InfluxDB to display useful graphs. - -For the easiest installation and configuration, install Grafana on the same -server as InfluxDB. For larger installations, you may want to split out these -services. - -## Installation - -Grafana supplies package repositories (Yum/Apt) for easy installation. -See [Grafana installation documentation](http://docs.grafana.org/installation/) -for detailed steps. - -> **Note**: Before starting Grafana for the first time, set the admin user -and password in `/etc/grafana/grafana.ini`. Otherwise, the default password -will be `admin`. - -## Configuration - -Login as the admin user. Expand the menu by clicking the Grafana logo in the -top left corner. Choose 'Data Sources' from the menu. Then, click 'Add new' -in the top bar. - -![Grafana empty data source page](img/grafana_data_source_empty.png) - -Fill in the configuration details for the InfluxDB data source. Save and -Test Connection to ensure the configuration is correct. - -- **Name**: InfluxDB -- **Default**: Checked -- **Type**: InfluxDB 0.9.x (Even if you're using InfluxDB 0.10.x) -- **Url**: https://localhost:8086 (Or the remote URL if you've installed InfluxDB -on a separate server) -- **Access**: proxy -- **Database**: gitlab -- **User**: admin (Or the username configured when setting up InfluxDB) -- **Password**: The password configured when you set up InfluxDB - -![Grafana data source configurations](img/grafana_data_source_configuration.png) - -## Apply retention policies and create continuous queries - -If you intend to import the GitLab provided Grafana dashboards, you will need to -set up the right retention policies and continuous queries. The easiest way of -doing this is by using the [influxdb-management](https://gitlab.com/gitlab-org/influxdb-management) -repository. - -To use this repository you must first clone it: - -``` -git clone https://gitlab.com/gitlab-org/influxdb-management.git -cd influxdb-management -``` - -Next you must install the required dependencies: - -``` -gem install bundler -bundle install -``` - -Now you must configure the repository by first copying `.env.example` to `.env` -and then editing the `.env` file to contain the correct InfluxDB settings. Once -configured you can simply run `bundle exec rake` and the InfluxDB database will -be configured for you. - -For more information see the [influxdb-management README](https://gitlab.com/gitlab-org/influxdb-management/blob/master/README.md). - -## Import Dashboards - -You can now import a set of default dashboards that will give you a good -start on displaying useful information. GitLab has published a set of default -[Grafana dashboards][grafana-dashboards] to get you started. Clone the -repository or download a zip/tarball, then follow these steps to import each -JSON file. - -Open the dashboard dropdown menu and click 'Import' - -![Grafana dashboard dropdown](img/grafana_dashboard_dropdown.png) - -Click 'Choose file' and browse to the location where you downloaded or cloned -the dashboard repository. Pick one of the JSON files to import. - -![Grafana dashboard import](img/grafana_dashboard_import.png) - -Once the dashboard is imported, be sure to click save icon in the top bar. If -you do not save the dashboard after importing it will be removed when you -navigate away. - -![Grafana save icon](img/grafana_save_icon.png) - -Repeat this process for each dashboard you wish to import. - -Alternatively you can automatically import all the dashboards into your Grafana -instance. See the README of the [Grafana dashboards][grafana-dashboards] -repository for more information on this process. - -[grafana-dashboards]: https://gitlab.com/gitlab-org/grafana-dashboards - ---- - -Read more on: - -- [Introduction to GitLab Performance Monitoring](introduction.md) -- [GitLab Configuration](gitlab_configuration.md) -- [InfluxDB Installation/Configuration](influxdb_configuration.md) -- [InfluxDB Schema](influxdb_schema.md) +This document was moved to [administration/monitoring/performance/grafana_configuration](../administration/monitoring/performance/grafana_configuration.md). diff --git a/doc/monitoring/performance/influxdb_configuration.md b/doc/monitoring/performance/influxdb_configuration.md index c30cd2950d86..02647de1eb00 100644 --- a/doc/monitoring/performance/influxdb_configuration.md +++ b/doc/monitoring/performance/influxdb_configuration.md @@ -1,193 +1 @@ -# InfluxDB Configuration - -The default settings provided by [InfluxDB] are not sufficient for a high traffic -GitLab environment. The settings discussed in this document are based on the -settings GitLab uses for GitLab.com, depending on your own needs you may need to -further adjust them. - -If you are intending to run InfluxDB on the same server as GitLab, make sure -you have plenty of RAM since InfluxDB can use quite a bit depending on traffic. - -Unless you are going with a budget setup, it's advised to run it separately. - -## Requirements - -- InfluxDB 0.9.5 or newer -- A fairly modern version of Linux -- At least 4GB of RAM -- At least 10GB of storage for InfluxDB data - -Note that the RAM and storage requirements can differ greatly depending on the -amount of data received/stored. To limit the amount of stored data users can -look into [InfluxDB Retention Policies][influxdb-retention]. - -## Installation - -Installing InfluxDB is out of the scope of this document. Please refer to the -[InfluxDB documentation]. - -## InfluxDB Server Settings - -Since InfluxDB has many settings that users may wish to customize themselves -(e.g. what port to run InfluxDB on), we'll only cover the essentials. - -The configuration file in question is usually located at -`/etc/influxdb/influxdb.conf`. Whenever you make a change in this file, -InfluxDB needs to be restarted. - -### Storage Engine - -InfluxDB comes with different storage engines and as of InfluxDB 0.9.5 a new -storage engine is available, called [TSM Tree]. All users **must** use the new -`tsm1` storage engine as this [will be the default engine][tsm1-commit] in -upcoming InfluxDB releases. - -Make sure you have the following in your configuration file: - -``` -[data] - dir = "/var/lib/influxdb/data" - engine = "tsm1" -``` - -### Admin Panel - -Production environments should have the InfluxDB admin panel **disabled**. This -feature can be disabled by adding the following to your InfluxDB configuration -file: - -``` -[admin] - enabled = false -``` - -### HTTP - -HTTP is required when using the [InfluxDB CLI] or other tools such as Grafana, -thus it should be enabled. When enabling make sure to _also_ enable -authentication: - -``` -[http] - enabled = true - auth-enabled = true -``` - -_**Note:** Before you enable authentication, you might want to [create an -admin user](#create-a-new-admin-user)._ - -### UDP - -GitLab writes data to InfluxDB via UDP and thus this must be enabled. Enabling -UDP can be done using the following settings: - -``` -[[udp]] - enabled = true - bind-address = ":8089" - database = "gitlab" - batch-size = 1000 - batch-pending = 5 - batch-timeout = "1s" - read-buffer = 209715200 -``` - -This does the following: - -1. Enable UDP and bind it to port 8089 for all addresses. -2. Store any data received in the "gitlab" database. -3. Define a batch of points to be 1000 points in size and allow a maximum of - 5 batches _or_ flush them automatically after 1 second. -4. Define a UDP read buffer size of 200 MB. - -One of the most important settings here is the UDP read buffer size as if this -value is set too low, packets will be dropped. You must also make sure the OS -buffer size is set to the same value, the default value is almost never enough. - -To set the OS buffer size to 200 MB, on Linux you can run the following command: - -```bash -sysctl -w net.core.rmem_max=209715200 -``` - -To make this permanent, add the following to `/etc/sysctl.conf` and restart the -server: - -```bash -net.core.rmem_max=209715200 -``` - -It is **very important** to make sure the buffer sizes are large enough to -handle all data sent to InfluxDB as otherwise you _will_ lose data. The above -buffer sizes are based on the traffic for GitLab.com. Depending on the amount of -traffic, users may be able to use a smaller buffer size, but we highly recommend -using _at least_ 100 MB. - -When enabling UDP, users should take care to not expose the port to the public, -as doing so will allow anybody to write data into your InfluxDB database (as -[InfluxDB's UDP protocol][udp] doesn't support authentication). We recommend either -whitelisting the allowed IP addresses/ranges, or setting up a VLAN and only -allowing traffic from members of said VLAN. - -## Create a new admin user - -If you want to [enable authentication](#http), you might want to [create an -admin user][influx-admin]: - -``` -influx -execute "CREATE USER jeff WITH PASSWORD '1234' WITH ALL PRIVILEGES" -``` - -## Create the `gitlab` database - -Once you get InfluxDB up and running, you need to create a database for GitLab. -Make sure you have changed the [storage engine](#storage-engine) to `tsm1` -before creating a database. - -_**Note:** If you [created an admin user](#create-a-new-admin-user) and enabled -[HTTP authentication](#http), remember to append the username (`-username `) -and password (`-password `) you set earlier to the commands below._ - -Run the following command to create a database named `gitlab`: - -```bash -influx -execute 'CREATE DATABASE gitlab' -``` - -The name **must** be `gitlab`, do not use any other name. - -Next, make sure that the database was successfully created: - -```bash -influx -execute 'SHOW DATABASES' -``` - -The output should be similar to: - -``` -name: databases ---------------- -name -_internal -gitlab -``` - -That's it! Now your GitLab instance should send data to InfluxDB. - ---- - -Read more on: - -- [Introduction to GitLab Performance Monitoring](introduction.md) -- [GitLab Configuration](gitlab_configuration.md) -- [InfluxDB Schema](influxdb_schema.md) -- [Grafana Install/Configuration](grafana_configuration.md) - -[influxdb-retention]: https://docs.influxdata.com/influxdb/v0.9/query_language/database_management/#retention-policy-management -[influxdb documentation]: https://docs.influxdata.com/influxdb/v0.9/ -[influxdb cli]: https://docs.influxdata.com/influxdb/v0.9/tools/shell/ -[udp]: https://docs.influxdata.com/influxdb/v0.9/write_protocols/udp/ -[influxdb]: https://influxdata.com/time-series-platform/influxdb/ -[tsm tree]: https://influxdata.com/blog/new-storage-engine-time-structured-merge-tree/ -[tsm1-commit]: https://github.com/influxdata/influxdb/commit/15d723dc77651bac83e09e2b1c94be480966cb0d -[influx-admin]: https://docs.influxdata.com/influxdb/v0.9/administration/authentication_and_authorization/#create-a-new-admin-user +This document was moved to [administration/monitoring/performance/influxdb_configuration](../administration/monitoring/performance/influxdb_configuration.md). diff --git a/doc/monitoring/performance/influxdb_schema.md b/doc/monitoring/performance/influxdb_schema.md index eff0e29f58d5..a989e323e045 100644 --- a/doc/monitoring/performance/influxdb_schema.md +++ b/doc/monitoring/performance/influxdb_schema.md @@ -1,97 +1 @@ -# InfluxDB Schema - -The following measurements are currently stored in InfluxDB: - -- `PROCESS_file_descriptors` -- `PROCESS_gc_statistics` -- `PROCESS_memory_usage` -- `PROCESS_method_calls` -- `PROCESS_object_counts` -- `PROCESS_transactions` -- `PROCESS_views` -- `events` - -Here, `PROCESS` is replaced with either `rails` or `sidekiq` depending on the -process type. In all series, any form of duration is stored in milliseconds. - -## PROCESS_file_descriptors - -This measurement contains the number of open file descriptors over time. The -value field `value` contains the number of descriptors. - -## PROCESS_gc_statistics - -This measurement contains Ruby garbage collection statistics such as the amount -of minor/major GC runs (relative to the last sampling interval), the time spent -in garbage collection cycles, and all fields/values returned by `GC.stat`. - -## PROCESS_memory_usage - -This measurement contains the process' memory usage (in bytes) over time. The -value field `value` contains the number of bytes. - -## PROCESS_method_calls - -This measurement contains the methods called during a transaction along with -their duration, and a name of the transaction action that invoked the method (if -available). The method call duration is stored in the value field `duration`, -while the method name is stored in the tag `method`. The tag `action` contains -the full name of the transaction action. Both the `method` and `action` fields -are in the following format: - -``` -ClassName#method_name -``` - -For example, a method called by the `show` method in the `UsersController` class -would have `action` set to `UsersController#show`. - -## PROCESS_object_counts - -This measurement is used to store retained Ruby objects (per class) and the -amount of retained objects. The number of objects is stored in the `count` value -field while the class name is stored in the `type` tag. - -## PROCESS_transactions - -This measurement is used to store basic transaction details such as the time it -took to complete a transaction, how much time was spent in SQL queries, etc. The -following value fields are available: - -| Value | Description | -| ----- | ----------- | -| `duration` | The total duration of the transaction | -| `allocated_memory` | The amount of bytes allocated while the transaction was running. This value is only reliable when using single-threaded application servers | -| `method_duration` | The total time spent in method calls | -| `sql_duration` | The total time spent in SQL queries | -| `view_duration` | The total time spent in views | - -## PROCESS_views - -This measurement is used to store view rendering timings for a transaction. The -following value fields are available: - -| Value | Description | -| ----- | ----------- | -| `duration` | The rendering time of the view | -| `view` | The path of the view, relative to the application's root directory | - -The `action` tag contains the action name of the transaction that rendered the -view. - -## events - -This measurement is used to store generic events such as the number of Git -pushes, Emails sent, etc. Each point in this measurement has a single value -field called `count`. The value of this field is simply set to `1`. Each point -also has at least one tag: `event`. This tag's value is set to the event name. -Depending on the event type additional tags may be available as well. - ---- - -Read more on: - -- [Introduction to GitLab Performance Monitoring](introduction.md) -- [GitLab Configuration](gitlab_configuration.md) -- [InfluxDB Configuration](influxdb_configuration.md) -- [Grafana Install/Configuration](grafana_configuration.md) +This document was moved to [administration/monitoring/performance/influxdb_schema](../administration/monitoring/performance/influxdb_schema.md). diff --git a/doc/monitoring/performance/introduction.md b/doc/monitoring/performance/introduction.md index 79904916b7e2..ab3f3ac16644 100644 --- a/doc/monitoring/performance/introduction.md +++ b/doc/monitoring/performance/introduction.md @@ -1,65 +1 @@ -# GitLab Performance Monitoring - -GitLab comes with its own application performance measuring system as of GitLab -8.4, simply called "GitLab Performance Monitoring". GitLab Performance Monitoring is available in both the -Community and Enterprise editions. - -Apart from this introduction, you are advised to read through the following -documents in order to understand and properly configure GitLab Performance Monitoring: - -- [GitLab Configuration](gitlab_configuration.md) -- [InfluxDB Install/Configuration](influxdb_configuration.md) -- [InfluxDB Schema](influxdb_schema.md) -- [Grafana Install/Configuration](grafana_configuration.md) - -## Introduction to GitLab Performance Monitoring - -GitLab Performance Monitoring makes it possible to measure a wide variety of statistics -including (but not limited to): - -- The time it took to complete a transaction (a web request or Sidekiq job). -- The time spent in running SQL queries and rendering HAML views. -- The time spent executing (instrumented) Ruby methods. -- Ruby object allocations, and retained objects in particular. -- System statistics such as the process' memory usage and open file descriptors. -- Ruby garbage collection statistics. - -Metrics data is written to [InfluxDB][influxdb] over [UDP][influxdb-udp]. Stored -data can be visualized using [Grafana][grafana] or any other application that -supports reading data from InfluxDB. Alternatively data can be queried using the -InfluxDB CLI. - -## Metric Types - -Two types of metrics are collected: - -1. Transaction specific metrics. -1. Sampled metrics, collected at a certain interval in a separate thread. - -### Transaction Metrics - -Transaction metrics are metrics that can be associated with a single -transaction. This includes statistics such as the transaction duration, timings -of any executed SQL queries, time spent rendering HAML views, etc. These metrics -are collected for every Rack request and Sidekiq job processed. - -### Sampled Metrics - -Sampled metrics are metrics that can't be associated with a single transaction. -Examples include garbage collection statistics and retained Ruby objects. These -metrics are collected at a regular interval. This interval is made up out of two -parts: - -1. A user defined interval. -1. A randomly generated offset added on top of the interval, the same offset - can't be used twice in a row. - -The actual interval can be anywhere between a half of the defined interval and a -half above the interval. For example, for a user defined interval of 15 seconds -the actual interval can be anywhere between 7.5 and 22.5. The interval is -re-generated for every sampling run instead of being generated once and re-used -for the duration of the process' lifetime. - -[influxdb]: https://influxdata.com/time-series-platform/influxdb/ -[influxdb-udp]: https://docs.influxdata.com/influxdb/v0.9/write_protocols/udp/ -[grafana]: http://grafana.org/ +This document was moved to [administration/monitoring/performance/introduction](../administration/monitoring/performance/introduction.md). -- GitLab From 44d5be2e8a248657165f932d859a3be4f1ee9089 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Sun, 25 Sep 2016 12:24:35 +0200 Subject: [PATCH 2/2] Add links to internal docs in Metrics section in the admin area --- app/views/admin/application_settings/_form.html.haml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml index 0d79ca7dc520..c4c68cd78915 100644 --- a/app/views/admin/application_settings/_form.html.haml +++ b/app/views/admin/application_settings/_form.html.haml @@ -221,7 +221,11 @@ %fieldset %legend Metrics %p - These settings require a restart to take effect. + Setup InfluxDB to measure a wide variety of statistics like the time spent + in running SQL queries. These settings require a + = link_to 'restart', help_page_path('administration/restart_gitlab') + to take effect. + = link_to icon('question-circle'), help_page_path('administration/monitoring/performance/introduction') .form-group .col-sm-offset-2.col-sm-10 .checkbox -- GitLab