From b78a67cec745b11b05ba2cf7ff12d848798b07a5 Mon Sep 17 00:00:00 2001 From: Connor Lindsey Date: Fri, 6 Aug 2021 07:52:36 -0600 Subject: [PATCH] PackageJson: Prettify markdown/mdx on commit with lint-staged (#37616) * Format md,mdx files with prettier on lint-staged * Manually run prettier on docs/sources --- docs/sources/administration/cli.md | 17 +- docs/sources/administration/configuration.md | 10 +- .../administration/configure-docker.md | 18 +- .../sources/administration/image_rendering.md | 32 +-- .../administration/jaeger-instrumentation.md | 2 +- .../preferences/change-grafana-name.md | 7 +- .../preferences/change-grafana-theme.md | 5 +- .../preferences/change-grafana-timezone.md | 7 +- .../preferences/change-home-dashboard.md | 7 +- docs/sources/administration/provisioning.md | 133 +++++----- docs/sources/administration/security.md | 4 +- .../view-server/internal-metrics.md | 2 + .../view-server/view-server-stats.md | 4 +- docs/sources/alerting/_index.md | 2 +- docs/sources/alerting/difference-old-new.md | 11 +- docs/sources/alerting/old-alerting/_index.md | 23 +- .../alerting/old-alerting/create-alerts.md | 9 +- .../alerting/old-alerting/notifications.md | 192 +++++++------- .../old-alerting/pause-an-alert-rule.md | 2 +- .../alerting/old-alerting/view-alerts.md | 2 +- .../alerting/unified-alerting/_index.md | 24 +- .../unified-alerting/alerting-rules/_index.md | 3 +- .../create-cortex-loki-managed-rule.md | 21 +- .../create-grafana-managed-rule.md | 51 ++-- .../alerting-rules/state-and-health.md | 6 + .../unified-alerting/contact-points.md | 51 ++-- .../grafana-managed-numeric-rule.md | 44 ++-- .../message-templating/_index.md | 17 +- .../message-templating/template-data.md | 79 +++--- .../unified-alerting/notification-policies.md | 22 +- .../alerting/unified-alerting/opt-in.md | 9 +- .../alerting/unified-alerting/silences.md | 6 +- docs/sources/auth/_index.md | 22 +- docs/sources/auth/auth-proxy.md | 22 +- docs/sources/auth/azuread.md | 84 +++--- docs/sources/auth/generic-oauth.md | 130 ++++----- docs/sources/auth/github.md | 4 +- docs/sources/auth/gitlab.md | 13 +- docs/sources/auth/grafana.md | 2 +- docs/sources/auth/jwt.md | 4 +- docs/sources/auth/ldap.md | 34 +-- docs/sources/auth/overview.md | 27 +- docs/sources/auth/team-sync.md | 2 +- .../basics/exemplars/view-exemplars.md | 23 +- docs/sources/basics/intro-histograms.md | 2 +- docs/sources/basics/timeseries.md | 27 +- .../best-practices-for-creating-dashboards.md | 11 +- .../best-practices-for-managing-dashboards.md | 6 +- docs/sources/dashboards/_index.md | 4 +- docs/sources/dashboards/annotations.md | 4 +- docs/sources/dashboards/dashboard_folders.md | 5 +- docs/sources/dashboards/dashboard_history.md | 1 - docs/sources/dashboards/export-import.md | 19 +- docs/sources/dashboards/json-model.md | 9 +- docs/sources/dashboards/playlist.md | 65 ++--- docs/sources/dashboards/search.md | 8 +- docs/sources/datasources/add-a-data-source.md | 6 +- docs/sources/datasources/alertmanager.md | 4 +- docs/sources/datasources/elasticsearch.md | 32 +-- .../preconfig-cloud-monitoring-dashboards.md | 3 +- docs/sources/datasources/graphite.md | 79 +++--- docs/sources/datasources/influxdb/_index.md | 50 ++-- .../datasources/influxdb/influxdb-flux.md | 58 ++--- .../influxdb/influxdb-templates.md | 7 +- .../influxdb/provision-influxdb.md | 1 - docs/sources/datasources/loki.md | 16 +- docs/sources/datasources/mysql.md | 103 ++++---- docs/sources/datasources/opentsdb.md | 18 +- docs/sources/datasources/postgres.md | 114 ++++---- docs/sources/datasources/testdata.md | 1 + docs/sources/developers/cla.md | 180 +++++++------ docs/sources/developers/plugins/_index.md | 2 - ...-authentication-for-data-source-plugins.md | 11 +- .../plugins/add-query-editor-help.md | 6 +- .../plugins/add-support-for-annotations.md | 3 +- .../add-support-for-explore-queries.md | 5 +- .../plugins/add-support-for-variables.md | 16 +- .../plugins/backend/plugin-protocol.md | 1 + .../build-a-streaming-data-source-plugin.md | 70 ++--- .../plugins/custom-panel-option-editors.md | 44 ++-- .../developers/plugins/error-handling.md | 6 +- .../developers/plugins/legacy/data-sources.md | 34 +-- .../legacy/defaults-and-editor-mode.md | 31 ++- .../developers/plugins/legacy/panels.md | 5 +- .../plugins/legacy/review-guidelines.md | 45 ++-- docs/sources/developers/plugins/metadata.md | 38 ++- .../developers/plugins/sign-a-plugin.md | 4 +- .../plugins/working-with-data-frames.md | 39 ++- .../enterprise/access-control/_index.md | 2 +- .../fine-grained-access-control-references.md | 43 +-- .../enterprise/access-control/permissions.md | 108 ++++---- .../enterprise/access-control/provisioning.md | 127 ++++----- .../enterprise/access-control/roles.md | 7 +- .../access-control/usage-scenarios.md | 23 +- docs/sources/enterprise/auditing.md | 62 ++--- .../enterprise/datasource_permissions.md | 2 +- .../enterprise/enterprise-configuration.md | 1 + .../enterprise/license/activate-license.md | 34 +-- .../license/license-restrictions.md | 10 +- docs/sources/enterprise/query-caching.md | 7 +- docs/sources/enterprise/reporting.md | 21 +- docs/sources/enterprise/request-security.md | 1 + docs/sources/enterprise/saml.md | 86 +++--- docs/sources/enterprise/settings-updates.md | 13 +- docs/sources/enterprise/team-sync.md | 4 +- .../enterprise/usage-insights/_index.md | 4 +- .../dashboard-datasource-insights.md | 1 + .../enterprise/usage-insights/export-logs.md | 15 +- .../usage-insights/improved-search.md | 1 + .../usage-insights/presence-indicator.md | 2 +- docs/sources/enterprise/vault.md | 1 + docs/sources/enterprise/white-labeling.md | 2 + docs/sources/explore/trace-integration.md | 18 +- .../getting-started-influxdb.md | 3 +- .../getting-started-prometheus.md | 4 +- .../getting-started/getting-started-sql.md | 17 +- .../getting-started/getting-started.md | 8 +- docs/sources/http_api/_index.md | 1 - docs/sources/http_api/access_control.md | 246 +++++++++--------- docs/sources/http_api/admin.md | 68 ++--- docs/sources/http_api/alerting.md | 26 +- docs/sources/http_api/annotations.md | 9 +- docs/sources/http_api/auth.md | 6 +- .../http_api/create-api-tokens-for-org.md | 72 ++--- docs/sources/http_api/curl-examples.md | 2 +- docs/sources/http_api/dashboard.md | 3 +- docs/sources/http_api/data_source.md | 4 +- docs/sources/http_api/folder.md | 2 +- docs/sources/http_api/org.md | 62 ++--- docs/sources/http_api/other.md | 1 - docs/sources/http_api/playlist.md | 8 +- docs/sources/http_api/preferences.md | 8 +- docs/sources/http_api/reporting.md | 36 +-- docs/sources/http_api/team.md | 6 +- docs/sources/http_api/user.md | 48 ++-- docs/sources/installation/debian.md | 19 +- docs/sources/installation/docker.md | 29 ++- docs/sources/installation/kubernetes.md | 47 ++-- docs/sources/installation/mac.md | 21 +- docs/sources/installation/restart-grafana.md | 3 + docs/sources/installation/rpm.md | 20 +- docs/sources/installation/upgrading.md | 18 +- docs/sources/installation/windows.md | 6 +- docs/sources/linking/_index.md | 1 - docs/sources/linking/dashboard-links.md | 1 + docs/sources/linking/data-link-variables.md | 28 +- docs/sources/linking/linking-overview.md | 2 +- docs/sources/live/configure-grafana-live.md | 7 +- docs/sources/live/live-ha-setup.md | 4 +- docs/sources/manage-users/_index.md | 4 +- .../manage-users/manage-teams/index.md | 16 +- docs/sources/manage-users/org-admin/index.md | 1 + .../server-admin/server-admin-manage-orgs.md | 20 +- .../server-admin/server-admin-manage-users.md | 70 +++-- .../manage-users/user-admin/switch-org.md | 4 +- .../manage-users/user-admin/user-profile.md | 2 +- docs/sources/panels/_index.md | 2 +- docs/sources/panels/calculations-list.md | 34 +-- docs/sources/panels/expressions.md | 8 +- docs/sources/panels/panel-library.md | 6 +- docs/sources/panels/queries.md | 54 ++-- docs/sources/panels/share-query-results.md | 2 +- docs/sources/panels/standard-options.md | 22 +- docs/sources/panels/thresholds.md | 4 +- docs/sources/panels/transformations/_index.md | 6 +- .../transformations/apply-transformations.md | 3 +- .../transformations/config-from-query.md | 8 +- .../panels/transformations/rows-to-fields.md | 6 +- docs/sources/panels/value-mappings.md | 2 +- docs/sources/panels/visualizations/_index.md | 65 ++--- .../panels/visualizations/alert-list-panel.md | 1 + .../panels/visualizations/annotations.md | 26 +- .../panels/visualizations/bar-chart.md | 7 +- .../panels/visualizations/bar-gauge-panel.md | 2 +- .../visualizations/dashboard-list-panel.md | 2 +- .../panels/visualizations/gauge-panel.md | 4 +- docs/sources/panels/visualizations/geomap.md | 13 +- .../panels/visualizations/graph-panel.md | 52 ++-- docs/sources/panels/visualizations/heatmap.md | 1 + .../panels/visualizations/node-graph.md | 54 ++-- .../panels/visualizations/stat-panel.md | 2 +- .../panels/visualizations/status-history.md | 6 +- .../panels/visualizations/table/_index.md | 2 +- .../table/filter-table-columns.md | 2 +- .../visualizations/time-series/_index.md | 2 +- .../time-series/annotate-time-series.md | 11 +- .../time-series/graph-color-scheme.md | 22 +- .../time-series/graph-time-series-as-bars.md | 2 +- .../time-series/graph-time-series-as-lines.md | 6 +- docs/sources/permissions/_index.md | 4 +- .../sources/permissions/organization_roles.md | 29 ++- docs/sources/plugins/_index.md | 2 - docs/sources/plugins/catalog.md | 13 +- docs/sources/plugins/plugin-signatures.md | 22 +- .../release-notes/release-notes-7-3-0.md | 146 ++++++----- .../release-notes/release-notes-7-3-1.md | 12 +- .../release-notes/release-notes-7-3-10.md | 5 +- .../release-notes/release-notes-7-3-2.md | 31 +-- .../release-notes/release-notes-7-3-3.md | 12 +- .../release-notes/release-notes-7-3-4.md | 9 +- .../release-notes/release-notes-7-3-5.md | 13 +- .../release-notes/release-notes-7-3-6.md | 3 +- .../release-notes/release-notes-7-3-7.md | 9 +- .../release-notes/release-notes-7-4-1.md | 29 +-- .../release-notes/release-notes-7-4-2.md | 29 +-- .../release-notes/release-notes-7-4-3.md | 13 +- .../release-notes/release-notes-7-4-5.md | 6 +- .../release-notes-7-5-0-beta1.md | 99 ++++--- .../release-notes-7-5-0-beta2.md | 58 ++--- .../release-notes/release-notes-7-5-0.md | 13 +- .../release-notes/release-notes-7-5-1.md | 3 +- .../release-notes/release-notes-7-5-10.md | 3 +- .../release-notes/release-notes-7-5-2.md | 13 +- .../release-notes/release-notes-7-5-3.md | 22 +- .../release-notes/release-notes-7-5-4.md | 14 +- .../release-notes/release-notes-7-5-5.md | 19 +- .../release-notes/release-notes-7-5-6.md | 11 +- .../release-notes/release-notes-7-5-7.md | 7 +- .../release-notes/release-notes-7-5-8.md | 9 +- .../release-notes/release-notes-7-5-9.md | 2 +- .../release-notes-8-0-0-beta1.md | 213 +++++++-------- .../release-notes-8-0-0-beta2.md | 86 +++--- .../release-notes-8-0-0-beta3.md | 74 +++--- .../release-notes/release-notes-8-0-0.md | 36 ++- .../release-notes/release-notes-8-0-1.md | 23 +- .../release-notes/release-notes-8-0-2.md | 10 +- .../release-notes/release-notes-8-0-3.md | 33 ++- .../release-notes/release-notes-8-0-4.md | 19 +- .../release-notes/release-notes-8-0-5.md | 25 +- .../release-notes/release-notes-8-0-6.md | 32 +-- .../release-notes-8-1-0-beta1.md | 119 +++++---- .../release-notes-8-1-0-beta2.md | 12 +- .../release-notes-8-1-0-beta3.md | 17 +- .../release-notes/release-notes-8-1-0.md | 35 ++- .../release-notes/release-notes-v7-4-2.md | 2 - docs/sources/shared/basics/grafana-cloud.md | 2 +- docs/sources/shared/basics/what-is-grafana.md | 2 +- docs/sources/shared/example.md | 7 +- .../shared/getting-started/first-step.md | 2 +- docs/sources/shared/index.md | 4 - docs/sources/shared/influxdb/intro.md | 2 +- .../view-server-org-list-and-edit.md | 3 +- .../manage-users/view-server-org-list.md | 2 +- .../view-server-user-list-search.md | 7 +- .../manage-users/view-server-user-list.md | 2 +- .../shared/manage-users/view-team-list.md | 2 +- .../shared/panels/panel-links-intro.md | 2 +- .../shared/panels/repeat-panel-intro.md | 2 +- .../navigate-to-the-dashboard-list.md | 2 +- .../navigate-user-preferences-list.md | 2 +- .../preferences/org-preferences-list.md | 2 +- .../preferences/select-home-dashboard-list.md | 2 +- .../preferences/select-timezone-list.md | 2 +- .../preferences/select-ui-theme-list.md | 2 +- .../some-tasks-require-permissions.md | 2 +- docs/sources/shared/test.md | 3 +- docs/sources/shared/view-server-org-list.md | 2 +- .../shared/view-server-user-list-search.md | 2 +- .../shared/visualizations/change-axis-link.md | 2 +- .../shared/visualizations/legend-mode.md | 2 +- .../visualizations/stack-series-link.md | 2 +- docs/sources/sharing/_index.md | 5 +- docs/sources/sharing/playlists.md | 68 ++--- docs/sources/sharing/share-dashboard.md | 1 + docs/sources/sharing/share-panel.md | 16 +- docs/sources/troubleshooting/_index.md | 2 - docs/sources/troubleshooting/diagnostics.md | 6 +- .../troubleshoot-dashboards.md | 1 + .../troubleshooting/troubleshoot-queries.md | 1 + docs/sources/variables/_index.md | 1 - .../variables/filter-variables-with-regex.md | 1 - .../formatting-multi-value-variables.md | 3 +- .../variables/variable-types/_index.md | 22 +- .../variable-types/add-interval-variable.md | 2 +- .../variable-types/global-variables.md | 32 +-- docs/sources/whatsnew/_index.md | 2 + docs/sources/whatsnew/whats-new-in-v2-0.md | 2 +- docs/sources/whatsnew/whats-new-in-v2-1.md | 43 ++- docs/sources/whatsnew/whats-new-in-v2-5.md | 10 +- docs/sources/whatsnew/whats-new-in-v2-6.md | 14 +- docs/sources/whatsnew/whats-new-in-v3-0.md | 14 +- docs/sources/whatsnew/whats-new-in-v3-1.md | 1 + docs/sources/whatsnew/whats-new-in-v4-0.md | 1 + docs/sources/whatsnew/whats-new-in-v4-1.md | 4 + docs/sources/whatsnew/whats-new-in-v4-2.md | 2 +- docs/sources/whatsnew/whats-new-in-v4-3.md | 2 +- docs/sources/whatsnew/whats-new-in-v4-4.md | 1 + docs/sources/whatsnew/whats-new-in-v4-5.md | 4 +- docs/sources/whatsnew/whats-new-in-v4-6.md | 3 +- docs/sources/whatsnew/whats-new-in-v5-0.md | 4 +- docs/sources/whatsnew/whats-new-in-v5-1.md | 25 +- docs/sources/whatsnew/whats-new-in-v5-2.md | 6 +- docs/sources/whatsnew/whats-new-in-v6-0.md | 4 +- docs/sources/whatsnew/whats-new-in-v6-3.md | 15 +- docs/sources/whatsnew/whats-new-in-v6-4.md | 3 +- docs/sources/whatsnew/whats-new-in-v6-5.md | 4 +- docs/sources/whatsnew/whats-new-in-v6-6.md | 26 +- docs/sources/whatsnew/whats-new-in-v6-7.md | 6 +- docs/sources/whatsnew/whats-new-in-v8-0.md | 1 + docs/sources/whatsnew/whats-new-in-v8-1.md | 23 +- package.json | 2 +- 301 files changed, 3230 insertions(+), 2994 deletions(-) diff --git a/docs/sources/administration/cli.md b/docs/sources/administration/cli.md index 87d77715be2..2a051b0f8a2 100644 --- a/docs/sources/administration/cli.md +++ b/docs/sources/administration/cli.md @@ -10,18 +10,21 @@ weight = 400 Grafana CLI is a small executable that is bundled with Grafana server. It can be executed on the same machine Grafana server is running on. Grafana CLI has `plugins` and `admin` commands, as well as global options. To list all commands and options: + ``` grafana-cli -h ``` + ## Invoking Grafana CLI To invoke Grafana CLI, add the path to the grafana binaries in your `PATH` environment variable. Alternately, if your current directory is the `bin` directory, use `./grafana-cli`. Otherwise, you can specify full path to the CLI. For example, on Linux `/usr/share/grafana/bin/grafana-cli` and on Windows `C:\Program Files\GrafanaLabs\grafana\bin\grafana-cli.exe`. ->**Note:** Some commands, such as installing or removing plugins, require `sudo` on Linux. If you are on Windows, run Windows PowerShell as Administrator. +> **Note:** Some commands, such as installing or removing plugins, require `sudo` on Linux. If you are on Windows, run Windows PowerShell as Administrator. ## Grafana CLI command syntax The general syntax for commands in Grafana CLI is: + ```bash grafana-cli [global options] command [command options] [arguments...] ``` @@ -37,6 +40,7 @@ Each global option applies only to the command in which it is used. For example, `--help` or `-h` displays the help, including default paths and Docker configuration information. **Example:** + ```bash grafana-cli -h ``` @@ -46,6 +50,7 @@ grafana-cli -h `--version` or `-v` prints the version of Grafana CLI currently running. **Example:** + ```bash grafana-cli -v ``` @@ -55,6 +60,7 @@ grafana-cli -v `--pluginsDir value` overrides the path to where your local Grafana instance stores plugins. Use this option if you want to install, update, or remove a plugin somewhere other than the default directory ("/var/lib/grafana/plugins") [$GF_PLUGIN_DIR]. **Example:** + ```bash grafana-cli --pluginsDir "/var/lib/grafana/devplugins" plugins install ``` @@ -64,6 +70,7 @@ grafana-cli --pluginsDir "/var/lib/grafana/devplugins" plugins install ``` @@ -73,6 +80,7 @@ grafana-cli --repo "https://example.com/plugins" plugins install `--pluginUrl value` allows you to download a .zip file containing a plugin from a local URL instead of downloading it from the default Grafana source. **Example:** + ```bash grafana-cli --pluginUrl https://company.com/grafana/plugins/-.zip plugins install ``` @@ -84,6 +92,7 @@ grafana-cli --pluginUrl https://company.com/grafana/plugins/--.zip plugins install ``` @@ -93,6 +102,7 @@ grafana-cli --insecure --pluginUrl https://company.com/grafana/plugins/ ``` @@ -104,6 +114,7 @@ grafana-cli --debug plugins install For example, you can use it to redirect logging to another file (maybe to log plugin installations in Grafana Cloud) or when resetting the admin password and you have non-default values for some important configuration value (like where the database is located). **Example:** + ```bash grafana-cli --configOverrides cfg:default.paths.log=/dev/null plugins install ``` @@ -113,6 +124,7 @@ grafana-cli --configOverrides cfg:default.paths.log=/dev/null plugins install

``` @@ -122,6 +134,7 @@ grafana-cli --homepath "/usr/share/grafana" admin reset-admin-password }}) for more information about configuring Grafana and default configuration file locations. **Example:** + ```bash grafana-cli --config "/etc/configuration/" admin reset-admin-password mynewpassword ``` @@ -157,6 +170,7 @@ grafana-cli plugins ls ``` ### Update all installed plugins + ```bash grafana-cli plugins update-all ``` @@ -208,6 +222,7 @@ If you need to set the password in a script, then you can use the [Grafana User `encrypt-datasource-passwords` migrates passwords from unsecured fields to secure_json_data field. Returns `ok` unless there is an error. Safe to execute multiple times. **Example:** + ```bash grafana-cli admin data-migration encrypt-datasource-passwords ``` diff --git a/docs/sources/administration/configuration.md b/docs/sources/administration/configuration.md index 896b8935c08..04d54ca2a00 100644 --- a/docs/sources/administration/configuration.md +++ b/docs/sources/administration/configuration.md @@ -206,7 +206,6 @@ Another way is to put a web server like Nginx or Apache in front of Grafana and ### domain - ### enforce_domain Redirect to correct domain if the host header does not match the domain. Prevents DNS rebinding attacks. Default is `false`. @@ -423,6 +422,7 @@ For more details check the [Transport.MaxConnsPerHost](https://golang.org/pkg/ne The maximum number of idle connections that Grafana will maintain. Default is `100`. For more details check the [Transport.MaxIdleConns](https://golang.org/pkg/net/http/#Transport.MaxIdleConns) documentation. ### max_idle_connections_per_host + [Deprecated - use max_idle_connections instead] The maximum number of idle connections per host that Grafana will maintain. Default is `2`. For more details check the [Transport.MaxIdleConnsPerHost](https://golang.org/pkg/net/http/#Transport.MaxIdleConnsPerHost) documentation. @@ -588,7 +588,7 @@ As of Grafana v7.3, this also limits the refresh interval options in Explore. Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json". ->**Note:** On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the default home dashboard location. +> **Note:** On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the default home dashboard location.


@@ -828,7 +828,7 @@ Azure cloud environment where Grafana is hosted: | Azure Cloud | Value | | ------------------------------------------------ | ---------------------- | -| Microsoft Azure public cloud | AzureCloud (*default*) | +| Microsoft Azure public cloud | AzureCloud (_default_) | | Microsoft Chinese national cloud | AzureChinaCloud | | US Government cloud | AzureUSGovernment | | Microsoft German national cloud ("Black Forest") | AzureGermanCloud | @@ -1520,7 +1520,7 @@ The `allowed_origins` option is a comma-separated list of additional origins (`O If not set (default), then the origin is matched over [root_url]({{< relref "#root_url" >}}) which should be sufficient for most scenarios. -Origin patterns support wildcard symbol "*". +Origin patterns support wildcard symbol "\*". For example: @@ -1718,4 +1718,4 @@ default_baselayer_config = `{ ### enable_custom_baselayers -Set this to `true` to disable loading other custom base maps and hide them in the Grafana UI. Default is `false`. \ No newline at end of file +Set this to `true` to disable loading other custom base maps and hide them in the Grafana UI. Default is `false`. diff --git a/docs/sources/administration/configure-docker.md b/docs/sources/administration/configure-docker.md index 3f2c8dccf1f..b9af57db34b 100644 --- a/docs/sources/administration/configure-docker.md +++ b/docs/sources/administration/configure-docker.md @@ -40,14 +40,14 @@ docker run -d --user $ID --volume "$PWD/data:/var/lib/grafana" -p 3000:3000 graf The following settings are hard-coded when launching the Grafana Docker container and can only be overridden using environment variables, not in `conf/grafana.ini`. -Setting | Default value -----------------------|--------------------------- -GF_PATHS_CONFIG | /etc/grafana/grafana.ini -GF_PATHS_DATA | /var/lib/grafana -GF_PATHS_HOME | /usr/share/grafana -GF_PATHS_LOGS | /var/log/grafana -GF_PATHS_PLUGINS | /var/lib/grafana/plugins -GF_PATHS_PROVISIONING | /etc/grafana/provisioning +| Setting | Default value | +| --------------------- | ------------------------- | +| GF_PATHS_CONFIG | /etc/grafana/grafana.ini | +| GF_PATHS_DATA | /var/lib/grafana | +| GF_PATHS_HOME | /usr/share/grafana | +| GF_PATHS_LOGS | /var/log/grafana | +| GF_PATHS_PLUGINS | /var/lib/grafana/plugins | +| GF_PATHS_PROVISIONING | /etc/grafana/provisioning | ## Logging @@ -92,5 +92,5 @@ You may also specify multiple profiles to `GF_AWS_PROFILES` (e.g. Supported variables: - `GF_AWS_${profile}_ACCESS_KEY_ID`: AWS access key ID (required). -- `GF_AWS_${profile}_SECRET_ACCESS_KEY`: AWS secret access key (required). +- `GF_AWS_${profile}_SECRET_ACCESS_KEY`: AWS secret access key (required). - `GF_AWS_${profile}_REGION`: AWS region (optional). diff --git a/docs/sources/administration/image_rendering.md b/docs/sources/administration/image_rendering.md index a6eed104886..2a1d9bca337 100755 --- a/docs/sources/administration/image_rendering.md +++ b/docs/sources/administration/image_rendering.md @@ -9,7 +9,7 @@ weight = 300 Grafana supports automatic rendering of panels as PNG images. This allows Grafana to automatically generate images of your panels to include in [alert notifications]({{< relref "../alerting/old-alerting/notifications.md" >}}). ->**Note:** Image rendering of dashboards is not supported at this time. +> **Note:** Image rendering of dashboards is not supported at this time. While an image is being rendered, the PNG image is temporarily written to the file system. When the image is rendered, the PNG image is temporarily written to the `png` folder in the Grafana `data` folder. @@ -35,7 +35,7 @@ To install the plugin, refer to the [Grafana Image Renderer Installation instruc ## Run in custom Grafana Docker image - We recommend setting up another Docker container for rendering and using remote rendering. Refer to [Remote rendering service]({{< relref "#remote-rendering-service" >}}) for instructions. +We recommend setting up another Docker container for rendering and using remote rendering. Refer to [Remote rendering service]({{< relref "#remote-rendering-service" >}}) for instructions. If you still want to install the plugin in the Grafana Docker image, refer to [Build with Grafana Image Renderer plugin pre-installed]({{< relref "../installation/docker/#build-with-grafana-image-renderer-plugin-pre-installed" >}}). @@ -60,7 +60,7 @@ services: grafana: image: grafana/grafana:main ports: - - "3000:3000" + - '3000:3000' environment: GF_RENDERING_SERVER_URL: http://renderer:8081/render GF_RENDERING_CALLBACK_URL: http://grafana:3000/ @@ -84,24 +84,24 @@ The following example describes how to build and run the remote HTTP rendering s 1. Clone the [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) Git repository. 1. Install dependencies and build: - ```bash - yarn install --pure-lockfile - yarn run build - ``` + ```bash + yarn install --pure-lockfile + yarn run build + ``` 1. Run the server: - ```bash - node build/app.js server --port=8081 - ``` + ```bash + node build/app.js server --port=8081 + ``` 1. Update Grafana configuration: - ``` - [rendering] - server_url = http://localhost:8081/render - callback_url = http://localhost:3000/ - ``` + ``` + [rendering] + server_url = http://localhost:8081/render + callback_url = http://localhost:3000/ + ``` 1. Restart Grafana. @@ -128,7 +128,7 @@ Rendering failed: Error: Failed to launch chrome!/var/lib/grafana/plugins/grafan error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory\n\n\nTROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md ``` -In general you can use the [`ldd`](https://en.wikipedia.org/wiki/Ldd_(Unix)) utility to figure out what shared libraries +In general you can use the [`ldd`]() utility to figure out what shared libraries are not installed in your system: ```bash diff --git a/docs/sources/administration/jaeger-instrumentation.md b/docs/sources/administration/jaeger-instrumentation.md index 46671158181..7f8e749b9e7 100644 --- a/docs/sources/administration/jaeger-instrumentation.md +++ b/docs/sources/administration/jaeger-instrumentation.md @@ -11,6 +11,6 @@ Grafana supports [Jaeger tracing](https://www.jaegertracing.io/). Grafana can emit Jaeger traces for its HTTP API endpoints and propagate Jaeger trace information to data sources. All HTTP endpoints are logged evenly (annotations, dashboard, tags, and so on). -When a trace ID is propagated, it is reported with operation 'HTTP /datasources/proxy/:id/*'. +When a trace ID is propagated, it is reported with operation 'HTTP /datasources/proxy/:id/\*'. Refer to [Configuration]({{< relref "configuration.md#tracing-jaeger" >}}) for information about enabling Jaeger tracing. diff --git a/docs/sources/administration/preferences/change-grafana-name.md b/docs/sources/administration/preferences/change-grafana-name.md index 0883fb84c09..69d4394a8e2 100644 --- a/docs/sources/administration/preferences/change-grafana-name.md +++ b/docs/sources/administration/preferences/change-grafana-name.md @@ -20,10 +20,11 @@ Follow these instructions if you are a Grafana Server Admin. {{< docs/list >}} {{< docs/shared "manage-users/view-server-org-list.md" >}} + 1. In the organization list, click the name of the organization that you want to change. 1. In **Name**, enter the new organization name. 1. Click **Update**. -{{< /docs/list >}} + {{< /docs/list >}} ### Organization Admin change organization name @@ -31,14 +32,16 @@ If you are an Organization Admin, follow these steps: {{< docs/list >}} {{< docs/shared "preferences/org-preferences-list.md" >}} + 1. In **Organization name**, enter the new name. 1. Click **Update organization name**. -{{< /docs/list >}} + {{< /docs/list >}} ## Change team name or email Organization administrators and team administrators can change team names and email addresses. To change the team name or email, follow these steps: + 1. Hover your cursor over the **Configuration** (gear) icon in the side menu. 1. Click **Teams**. Grafana displays the team list. 1. In the team list, click the name of the team that you want to change. diff --git a/docs/sources/administration/preferences/change-grafana-theme.md b/docs/sources/administration/preferences/change-grafana-theme.md index 89a129ad46c..5508db083c4 100644 --- a/docs/sources/administration/preferences/change-grafana-theme.md +++ b/docs/sources/administration/preferences/change-grafana-theme.md @@ -52,9 +52,10 @@ Organization and team administrators can change the UI theme for all users in a {{< docs/list >}} {{< docs/shared "manage-users/view-team-list.md" >}} + 1. Click on the team that you want to change the UI theme for and then navigate to the **Settings** tab. -{{< docs/shared "preferences/select-ui-theme-list.md" >}} -{{< /docs/list >}} + {{< docs/shared "preferences/select-ui-theme-list.md" >}} + {{< /docs/list >}} ## Change your personal UI theme diff --git a/docs/sources/administration/preferences/change-grafana-timezone.md b/docs/sources/administration/preferences/change-grafana-timezone.md index 82a26c58079..bd9d1160d7b 100644 --- a/docs/sources/administration/preferences/change-grafana-timezone.md +++ b/docs/sources/administration/preferences/change-grafana-timezone.md @@ -30,9 +30,10 @@ Organization administrators and team administrators can choose a default timezon {{< docs/list >}} {{< docs/shared "manage-users/view-team-list.md" >}} + 1. Click on the team you that you want to change the timezone for and then navigate to the **Settings** tab. -{{< docs/shared "preferences/select-timezone-list.md" >}} -{{< /docs/list >}} + {{< docs/shared "preferences/select-timezone-list.md" >}} + {{< /docs/list >}} ## Set your personal timezone @@ -41,4 +42,4 @@ You can change the timezone for your user account. This setting overrides timezo {{< docs/list >}} {{< docs/shared "preferences/navigate-user-preferences-list.md" >}} {{< docs/shared "preferences/select-timezone-list.md" >}} -{{< /docs/list >}} \ No newline at end of file +{{< /docs/list >}} diff --git a/docs/sources/administration/preferences/change-home-dashboard.md b/docs/sources/administration/preferences/change-home-dashboard.md index 1fc82412eda..894fd2f20d0 100644 --- a/docs/sources/administration/preferences/change-home-dashboard.md +++ b/docs/sources/administration/preferences/change-home-dashboard.md @@ -40,7 +40,7 @@ Users with the Grafana Server Admin flag on their account or access to the confi default_home_dashboard_path = data/main-dashboard.json ``` ->**Note:** On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the default home dashboard location. +> **Note:** On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the default home dashboard location. ## Set the home dashboard for your organization @@ -59,9 +59,10 @@ Organization administrators and Team Admins can choose a home dashboard for a te {{< docs/list >}} {{< docs/shared "preferences/navigate-to-the-dashboard-list.md" >}} {{< docs/shared "manage-users/view-team-list.md" >}} + 1. Click on the team that you want to change the home dashboard for and then navigate to the **Settings** tab. -{{< docs/shared "preferences/select-home-dashboard-list.md" >}} -{{< /docs/list >}} + {{< docs/shared "preferences/select-home-dashboard-list.md" >}} + {{< /docs/list >}} ## Set your personal home dashboard diff --git a/docs/sources/administration/provisioning.md b/docs/sources/administration/provisioning.md index 548309da3c6..43b385b3f4f 100644 --- a/docs/sources/administration/provisioning.md +++ b/docs/sources/administration/provisioning.md @@ -141,49 +141,49 @@ Please refer to each datasource documentation for specific provisioning examples Since not all datasources have the same configuration settings we only have the most common ones as fields. The rest should be stored as a json blob in the `jsonData` field. Here are the most common settings that the core datasources use. -| Name | Type | Datasource | Description | -| ----------------------- | ------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| tlsAuth | boolean | _All_ | Enable TLS authentication using client cert configured in secure json data | -| tlsAuthWithCACert | boolean | _All_ | Enable TLS authentication using CA cert | -| tlsSkipVerify | boolean | _All_ | Controls whether a client verifies the server's certificate chain and host name. | +| Name | Type | Datasource | Description | +| ----------------------- | ------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| tlsAuth | boolean | _All_ | Enable TLS authentication using client cert configured in secure json data | +| tlsAuthWithCACert | boolean | _All_ | Enable TLS authentication using CA cert | +| tlsSkipVerify | boolean | _All_ | Controls whether a client verifies the server's certificate chain and host name. | | serverName | string | _All_ | Optional. Controls the server name used for certificate common name/subject alternative name verification. Defaults to using the data source URL. | -| timeout | string | _All_ | Request timeout in seconds. Overrides dataproxy.timeout option | -| graphiteVersion | string | Graphite | Graphite version | -| timeInterval | string | Prometheus, Elasticsearch, InfluxDB, MySQL, PostgreSQL and MSSQL | Lowest interval/step value that should be used for this data source. | -| httpMode | string | Influxdb | HTTP Method. 'GET', 'POST', defaults to GET | -| maxSeries | number | Influxdb | Max number of series/tables that Grafana processes | -| httpMethod | string | Prometheus | HTTP Method. 'GET', 'POST', defaults to POST | -| customQueryParameters | string | Prometheus | Query parameters to add, as a URL-encoded string. | -| esVersion | string | Elasticsearch | Elasticsearch version (E.g. `7.0.0`, `7.6.1`) | -| timeField | string | Elasticsearch | Which field that should be used as timestamp | -| interval | string | Elasticsearch | Index date time format. nil(No Pattern), 'Hourly', 'Daily', 'Weekly', 'Monthly' or 'Yearly' | -| logMessageField | string | Elasticsearch | Which field should be used as the log message | -| logLevelField | string | Elasticsearch | Which field should be used to indicate the priority of the log message | -| sigV4Auth | boolean | Elasticsearch and Prometheus | Enable usage of SigV4 | -| sigV4AuthType | string | Elasticsearch and Prometheus | SigV4 auth provider. default/credentials/keys | -| sigV4ExternalId | string | Elasticsearch and Prometheus | Optional SigV4 External ID | -| sigV4AssumeRoleArn | string | Elasticsearch and Prometheus | Optional SigV4 ARN role to assume | -| sigV4Region | string | Elasticsearch and Prometheus | SigV4 AWS region | -| sigV4Profile | string | Elasticsearch and Prometheus | Optional SigV4 credentials profile | -| authType | string | Cloudwatch | Auth provider. default/credentials/keys | -| externalId | string | Cloudwatch | Optional External ID | -| assumeRoleArn | string | Cloudwatch | Optional ARN role to assume | -| defaultRegion | string | Cloudwatch | Optional default AWS region | -| customMetricsNamespaces | string | Cloudwatch | Namespaces of Custom Metrics | -| profile | string | Cloudwatch | Optional credentials profile | -| tsdbVersion | string | OpenTSDB | Version | -| tsdbResolution | string | OpenTSDB | Resolution | -| sslmode | string | PostgreSQL | SSLmode. 'disable', 'require', 'verify-ca' or 'verify-full' | -| tlsConfigurationMethod | string | PostgreSQL | SSL Certificate configuration, either by 'file-path' or 'file-content' | -| sslRootCertFile | string | PostgreSQL | SSL server root certificate file, must be readable by the Grafana user | -| sslCertFile | string | PostgreSQL | SSL client certificate file, must be readable by the Grafana user | -| sslKeyFile | string | PostgreSQL | SSL client key file, must be readable by _only_ the Grafana user | -| encrypt | string | MSSQL | Connection SSL encryption handling. 'disable', 'false' or 'true' | -| postgresVersion | number | PostgreSQL | Postgres version as a number (903/904/905/906/1000) meaning v9.3, v9.4, ..., v10 | -| timescaledb | boolean | PostgreSQL | Enable usage of TimescaleDB extension | -| maxOpenConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of open connections to the database (Grafana v5.4+) | -| maxIdleConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of connections in the idle connection pool (Grafana v5.4+) | -| connMaxLifetime | number | MySQL, PostgreSQL and MSSQL | Maximum amount of time in seconds a connection may be reused (Grafana v5.4+) | +| timeout | string | _All_ | Request timeout in seconds. Overrides dataproxy.timeout option | +| graphiteVersion | string | Graphite | Graphite version | +| timeInterval | string | Prometheus, Elasticsearch, InfluxDB, MySQL, PostgreSQL and MSSQL | Lowest interval/step value that should be used for this data source. | +| httpMode | string | Influxdb | HTTP Method. 'GET', 'POST', defaults to GET | +| maxSeries | number | Influxdb | Max number of series/tables that Grafana processes | +| httpMethod | string | Prometheus | HTTP Method. 'GET', 'POST', defaults to POST | +| customQueryParameters | string | Prometheus | Query parameters to add, as a URL-encoded string. | +| esVersion | string | Elasticsearch | Elasticsearch version (E.g. `7.0.0`, `7.6.1`) | +| timeField | string | Elasticsearch | Which field that should be used as timestamp | +| interval | string | Elasticsearch | Index date time format. nil(No Pattern), 'Hourly', 'Daily', 'Weekly', 'Monthly' or 'Yearly' | +| logMessageField | string | Elasticsearch | Which field should be used as the log message | +| logLevelField | string | Elasticsearch | Which field should be used to indicate the priority of the log message | +| sigV4Auth | boolean | Elasticsearch and Prometheus | Enable usage of SigV4 | +| sigV4AuthType | string | Elasticsearch and Prometheus | SigV4 auth provider. default/credentials/keys | +| sigV4ExternalId | string | Elasticsearch and Prometheus | Optional SigV4 External ID | +| sigV4AssumeRoleArn | string | Elasticsearch and Prometheus | Optional SigV4 ARN role to assume | +| sigV4Region | string | Elasticsearch and Prometheus | SigV4 AWS region | +| sigV4Profile | string | Elasticsearch and Prometheus | Optional SigV4 credentials profile | +| authType | string | Cloudwatch | Auth provider. default/credentials/keys | +| externalId | string | Cloudwatch | Optional External ID | +| assumeRoleArn | string | Cloudwatch | Optional ARN role to assume | +| defaultRegion | string | Cloudwatch | Optional default AWS region | +| customMetricsNamespaces | string | Cloudwatch | Namespaces of Custom Metrics | +| profile | string | Cloudwatch | Optional credentials profile | +| tsdbVersion | string | OpenTSDB | Version | +| tsdbResolution | string | OpenTSDB | Resolution | +| sslmode | string | PostgreSQL | SSLmode. 'disable', 'require', 'verify-ca' or 'verify-full' | +| tlsConfigurationMethod | string | PostgreSQL | SSL Certificate configuration, either by 'file-path' or 'file-content' | +| sslRootCertFile | string | PostgreSQL | SSL server root certificate file, must be readable by the Grafana user | +| sslCertFile | string | PostgreSQL | SSL client certificate file, must be readable by the Grafana user | +| sslKeyFile | string | PostgreSQL | SSL client key file, must be readable by _only_ the Grafana user | +| encrypt | string | MSSQL | Connection SSL encryption handling. 'disable', 'false' or 'true' | +| postgresVersion | number | PostgreSQL | Postgres version as a number (903/904/905/906/1000) meaning v9.3, v9.4, ..., v10 | +| timescaledb | boolean | PostgreSQL | Enable usage of TimescaleDB extension | +| maxOpenConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of open connections to the database (Grafana v5.4+) | +| maxIdleConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of connections in the idle connection pool (Grafana v5.4+) | +| connMaxLifetime | number | MySQL, PostgreSQL and MSSQL | Maximum amount of time in seconds a connection may be reused (Grafana v5.4+) | #### Secure Json Data @@ -191,15 +191,15 @@ Since not all datasources have the same configuration settings we only have the Secure json data is a map of settings that will be encrypted with [secret key]({{< relref "configuration.md#secret-key" >}}) from the Grafana config. The purpose of this is only to hide content from the users of the application. This should be used for storing TLS Cert and password that Grafana will append to the request on the server side. All of these settings are optional. -| Name | Type | Datasource | Description | -| ----------------- | ------ | ---------- | --------------------------------------- | -| tlsCACert | string | _All_ | CA cert for out going requests | -| tlsClientCert | string | _All_ | TLS Client cert for outgoing requests | -| tlsClientKey | string | _All_ | TLS Client key for outgoing requests | -| password | string | _All_ | password | -| basicAuthPassword | string | _All_ | password for basic authentication | -| accessKey | string | Cloudwatch | Access key for connecting to Cloudwatch | -| secretKey | string | Cloudwatch | Secret key for connecting to Cloudwatch | +| Name | Type | Datasource | Description | +| ----------------- | ------ | ---------------------------- | -------------------------------------------------------- | +| tlsCACert | string | _All_ | CA cert for out going requests | +| tlsClientCert | string | _All_ | TLS Client cert for outgoing requests | +| tlsClientKey | string | _All_ | TLS Client key for outgoing requests | +| password | string | _All_ | password | +| basicAuthPassword | string | _All_ | password for basic authentication | +| accessKey | string | Cloudwatch | Access key for connecting to Cloudwatch | +| secretKey | string | Cloudwatch | Secret key for connecting to Cloudwatch | | sigV4AccessKey | string | Elasticsearch and Prometheus | SigV4 access key. Required when using keys auth provider | | sigV4SecretKey | string | Elasticsearch and Prometheus | SigV4 secret key. Required when using keys auth provider | @@ -319,9 +319,11 @@ By default, Grafana deletes dashboards in the database if the file is removed. Y > or `uid` within the same installation as this will cause weird behaviors. ### Provision folders structure from filesystem to Grafana + If you already store your dashboards using folders in a git repo or on a filesystem, and also you want to have the same folder names in the Grafana menu, you can use `foldersFromFilesStructure` option. For example, to replicate these dashboards structure from the filesystem to Grafana, + ``` /etc/dashboards ├── /server @@ -331,18 +333,21 @@ For example, to replicate these dashboards structure from the filesystem to Graf ├── /requests_dashboard.json └── /resources_dashboard.json ``` + you need to specify just this short provision configuration file. + ```yaml apiVersion: 1 providers: -- name: dashboards - type: file - updateIntervalSeconds: 30 - options: - path: /etc/dashboards - foldersFromFilesStructure: true + - name: dashboards + type: file + updateIntervalSeconds: 30 + options: + path: /etc/dashboards + foldersFromFilesStructure: true ``` + `server` and `application` will become new folders in Grafana menu. > **Note:** `folder` and `folderUid` options should be empty or missing to make `foldersFromFilesStructure` work. @@ -426,7 +431,7 @@ The following sections detail the supported settings and secure settings for eac #### Alert notification `pushover` | Name | Secure setting | -| -------- | -------------- | +| ---------- | -------------- | | apiToken | yes | | userKey | yes | | device | | @@ -439,11 +444,11 @@ The following sections detail the supported settings and secure settings for eac #### Alert notification `discord` -| Name | Secure setting | -| -------------- | -------------- | -| url | yes | -| avatar_url | | -| message | | +| Name | Secure setting | +| ---------- | -------------- | +| url | yes | +| avatar_url | | +| message | | #### Alert notification `slack` @@ -500,7 +505,7 @@ The following sections detail the supported settings and secure settings for eac #### Alert notification `sensugo` | Name | Secure setting | -| -------- | -------------- | +| --------- | -------------- | | url | | | apikey | yes | | entity | | diff --git a/docs/sources/administration/security.md b/docs/sources/administration/security.md index 4409f484625..5fb3d1057a6 100644 --- a/docs/sources/administration/security.md +++ b/docs/sources/administration/security.md @@ -28,7 +28,7 @@ Require all network requests being made by Grafana to go through a proxy server. ## Limit Viewer query permissions -Users with the Viewer role can enter *any possible query* in *any* of the data sources available in the **organization**, not just the queries that are defined on the dashboards for which the user has Viewer permissions. +Users with the Viewer role can enter _any possible query_ in _any_ of the data sources available in the **organization**, not just the queries that are defined on the dashboards for which the user has Viewer permissions. **For example:** In a Grafana instance with one data source, one dashboard, and one panel that has one query defined, you might assume that a Viewer can only see the result of the query defined in that panel. Actually, the Viewer has access to send any query to the data source. With a command-line tool like curl (there are lots of tools for this), the Viewer can make their own query to the data source and potentially access sensitive data. @@ -41,6 +41,6 @@ To address this vulnerability, you can restrict data source query access in the When you enable anonymous access to a dashboard, it is publicly available. This section lists the security implications of enabling Anonymous access. -- Anyone with the URL can access the dashboard. +- Anyone with the URL can access the dashboard. - Anyone can make view calls to the API and list all folders, dashboards, and data sources. - Anyone can make arbitrary queries to any data source that the Grafana instance is configured with. diff --git a/docs/sources/administration/view-server/internal-metrics.md b/docs/sources/administration/view-server/internal-metrics.md index 1472b45b468..ed73c45492d 100644 --- a/docs/sources/administration/view-server/internal-metrics.md +++ b/docs/sources/administration/view-server/internal-metrics.md @@ -59,6 +59,7 @@ These instructions assume you have already added Prometheus as a data source in static_configs: - targets: ['localhost:3000'] ``` + 1. Restart Prometheus. Your new job should appear on the Targets tab. 1. In Grafana, hover your mouse over the **Configuration** (gear) icon on the left sidebar and then click **Data Sources**. 1. Select the **Prometheus** data source. @@ -81,6 +82,7 @@ These instructions assume you have already added Graphite as a data source in Gr ``` 1. Enable [metrics.graphite] options: + ``` # Send internal metrics to Graphite [metrics.graphite] diff --git a/docs/sources/administration/view-server/view-server-stats.md b/docs/sources/administration/view-server/view-server-stats.md index 7f5b00c8911..d7a4e180ad8 100644 --- a/docs/sources/administration/view-server/view-server-stats.md +++ b/docs/sources/administration/view-server/view-server-stats.md @@ -47,5 +47,5 @@ If a user belongs to several organizations, then that user is counted once as a For example, if Sofia is a Viewer in two organizations, an Editor in two organizations, and Admin in three organizations, then she would be reflected in the stats as: -- Total users 1 -- Total admins 1 +- Total users 1 +- Total admins 1 diff --git a/docs/sources/alerting/_index.md b/docs/sources/alerting/_index.md index 0708cae47ce..f713ac1d842 100644 --- a/docs/sources/alerting/_index.md +++ b/docs/sources/alerting/_index.md @@ -26,4 +26,4 @@ As part of the new alert changes, we have introduced a new data source, Alertman > **Note:** Out of the box, Grafana still supports old Grafana alerts. They are legacy alerts at this time, and will be deprecated in a future release. For more information, refer to [Legacy Grafana alerts]({{< relref "./old-alerting/_index.md" >}}). -To learn more about the differences between new alerts and the legacy alerts, refer to [What's New with Grafana 8 Alerts]({{< relref "../alerting/difference-old-new.md" >}}). \ No newline at end of file +To learn more about the differences between new alerts and the legacy alerts, refer to [What's New with Grafana 8 Alerts]({{< relref "../alerting/difference-old-new.md" >}}). diff --git a/docs/sources/alerting/difference-old-new.md b/docs/sources/alerting/difference-old-new.md index aaae68ea737..3d9851ebae5 100644 --- a/docs/sources/alerting/difference-old-new.md +++ b/docs/sources/alerting/difference-old-new.md @@ -6,16 +6,21 @@ weight = 112 +++ # What's New with Grafana 8 Alerts + The Alerts released with Grafana 8.0 are an opt-in feature that centralizes alerting information for Grafana managed alerts and alerts from Prometheus-compatible datasources in one UI and API. You are able to create and edit alerting rules for Grafana managed alerts, Cortex alerts, and Loki alerts as well as see alerting information from prometheus-compatible datasources in a single, searchable view. ## Multi-dimensional alerting -Create alerts that will give you system-wide visibility with a single alerting rule. With Grafana 8 alerts, you are able to generate multiple alert instances from a single rule eg. creating a rule to monitor disk usage for multiple mount points on a single host. The evaluation engine is able to return multiple time series from a single query. Each time series is identified by its label set. + +Create alerts that will give you system-wide visibility with a single alerting rule. With Grafana 8 alerts, you are able to generate multiple alert instances from a single rule eg. creating a rule to monitor disk usage for multiple mount points on a single host. The evaluation engine is able to return multiple time series from a single query. Each time series is identified by its label set. ## Create alerts outside of Dashboards -Grafana legacy alerts were tied to a dashboard. Grafana 8 Alerts allow you to create queries and expressions that can combine data from multiple sources, in unique ways. You are still able to link dashboards and panels to alerting rules, allowing you to quickly troubleshoot the system under observation, by linking a dashboard and/or panel ID to the alerting rule. + +Grafana legacy alerts were tied to a dashboard. Grafana 8 Alerts allow you to create queries and expressions that can combine data from multiple sources, in unique ways. You are still able to link dashboards and panels to alerting rules, allowing you to quickly troubleshoot the system under observation, by linking a dashboard and/or panel ID to the alerting rule. ## Create Loki and Cortex alerting rules -With Grafana 8 Alerts you are able to manage your Loki and Cortex alerting rules using the same UI and API as your Grafana managed alerts. + +With Grafana 8 Alerts you are able to manage your Loki and Cortex alerting rules using the same UI and API as your Grafana managed alerts. ## View and search for alerts from Prometheus + You can now display all of your alerting information in one, searchable UI. Alerts for Prometheus compatible datasources are listed below Grafana managed alerts. Search for labels across multiple datasources to quickly find all of the relevant alerts. diff --git a/docs/sources/alerting/old-alerting/_index.md b/docs/sources/alerting/old-alerting/_index.md index a74db7668dc..710cb1169ef 100644 --- a/docs/sources/alerting/old-alerting/_index.md +++ b/docs/sources/alerting/old-alerting/_index.md @@ -17,7 +17,7 @@ Currently only the graph panel visualization supports alerts. Legacy alerts have two main components: - Alert rule - When the alert is triggered. Alert rules are defined by one or more conditions that are regularly evaluated by Grafana. -- Notification channel - How the alert is delivered. When the conditions of an alert rule are met, the Grafana notifies the channels configured for that alert. +- Notification channel - How the alert is delivered. When the conditions of an alert rule are met, the Grafana notifies the channels configured for that alert. ## Alert tasks @@ -37,20 +37,21 @@ Currently alerting supports a limited form of high availability. Since v4.2.0 of Grafana managed alerts are evaluated by the Grafana backend. Rule evaluations are scheduled, according to the alert rule configuration, and queries are evaluated by an engine that is part of core Grafana. Alert rules can only query backend data sources with alerting enabled: + - builtin or developed and maintained by grafana: `Graphite`, `Prometheus`, `Loki`, `InfluxDB`, `Elasticsearch`, -`Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Data Explorer` + `Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Data Explorer` - any community backend data sources with alerting enabled (`backend` and `alerting` properties are set in the [plugin.json]({{< relref "../../developers/plugins/metadata.md" >}})) ## Metrics from the alert engine The alert engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics]({{< relref "../../administration/view-server/internal-metrics.md" >}}). -Metric Name | Type | Description ----------- | ----------- | ---------- -`alerting.alerts` | gauge | How many alerts by state -`alerting.request_duration_seconds` | histogram | Histogram of requests to the Alerting API -`alerting.active_configurations` | gauge | The number of active, non default alertmanager configurations for grafana managed alerts -`alerting.rule_evaluations_total` | counter | The total number of rule evaluations -`alerting.rule_evaluation_failures_total` | counter | The total number of rule evaluation failures -`alerting.rule_evaluation_duration_seconds` | summary | The duration for a rule to execute -`alerting.rule_group_rules` | gauge | The number of rules +| Metric Name | Type | Description | +| ------------------------------------------- | --------- | ---------------------------------------------------------------------------------------- | +| `alerting.alerts` | gauge | How many alerts by state | +| `alerting.request_duration_seconds` | histogram | Histogram of requests to the Alerting API | +| `alerting.active_configurations` | gauge | The number of active, non default alertmanager configurations for grafana managed alerts | +| `alerting.rule_evaluations_total` | counter | The total number of rule evaluations | +| `alerting.rule_evaluation_failures_total` | counter | The total number of rule evaluation failures | +| `alerting.rule_evaluation_duration_seconds` | summary | The duration for a rule to execute | +| `alerting.rule_group_rules` | gauge | The number of rules | diff --git a/docs/sources/alerting/old-alerting/create-alerts.md b/docs/sources/alerting/old-alerting/create-alerts.md index 28d0529aec6..49e9cfa4424 100644 --- a/docs/sources/alerting/old-alerting/create-alerts.md +++ b/docs/sources/alerting/old-alerting/create-alerts.md @@ -96,16 +96,16 @@ Below are conditions you can configure how the rule evaluation engine should han | --------------- | ------------------------------------------------------------------------------------------ | | No Data | Set alert rule state to `NoData` | | Alerting | Set alert rule state to `Alerting` | -| Keep Last State | Keep the current alert rule state, whatever it is. | +| Keep Last State | Keep the current alert rule state, whatever it is. | | Ok | Not sure why you would want to send yourself an alert when things are okay, but you could. | ### Execution errors or timeouts Tell Grafana how to handle execution or timeout errors. -| Error or timeout option | Description | -| ----------------------- | --------------------------------------------------- | -| Alerting | Set alert rule state to `Alerting` | +| Error or timeout option | Description | +| ----------------------- | -------------------------------------------------- | +| Alerting | Set alert rule state to `Alerting` | | Keep Last State | Keep the current alert rule state, whatever it is. | If you have an unreliable time series store from which queries sometime timeout or fail randomly you can set this option to `Keep Last State` in order to basically ignore them. @@ -124,4 +124,3 @@ The actual notifications are configured and shared between multiple alerts. Read ## Alert state history and annotations Alert state changes are recorded in the internal annotation table in Grafana's database. The state changes are visualized as annotations in the alert rule's graph panel. You can also go into the `State history` submenu in the alert tab to view and clear state history. - diff --git a/docs/sources/alerting/old-alerting/notifications.md b/docs/sources/alerting/old-alerting/notifications.md index db032332301..ad4585dc048 100644 --- a/docs/sources/alerting/old-alerting/notifications.md +++ b/docs/sources/alerting/old-alerting/notifications.md @@ -37,41 +37,41 @@ This is done from the Notification channels page. These examples show how often and when reminders are sent for a triggered alert. -Alert rule evaluation interval | Send reminders every | Reminder sent every (after last alert notification) ----------- | ----------- | ----------- -`30s` | `15s` | ~30 seconds -`1m` | `5m` | ~5 minutes -`5m` | `15m` | ~15 minutes -`6m` | `20m` | ~24 minutes -`1h` | `15m` | ~1 hour -`1h` | `2h` | ~2 hours +| Alert rule evaluation interval | Send reminders every | Reminder sent every (after last alert notification) | +| ------------------------------ | -------------------- | --------------------------------------------------- | +| `30s` | `15s` | ~30 seconds | +| `1m` | `5m` | ~5 minutes | +| `5m` | `15m` | ~15 minutes | +| `6m` | `20m` | ~24 minutes | +| `1h` | `15m` | ~1 hour | +| `1h` | `2h` | ~2 hours |
## List of supported notifiers -Name | Type | Supports images | Support alert rule tags ------|------|---------------- | ----------------------- -[DingDing](#dingdingdingtalk) | `dingding` | yes, external only | no -[Discord](#discord) | `discord` | yes | no -[Email](#email) | `email` | yes | no -[Google Hangouts Chat](#google-hangouts-chat) | `googlechat` | yes, external only | no -Hipchat | `hipchat` | yes, external only | no -[Kafka](#kafka) | `kafka` | yes, external only | no -Line | `line` | yes, external only | no -Microsoft Teams | `teams` | yes, external only | no -[Opsgenie](#opsgenie) | `opsgenie` | yes, external only | yes -[Pagerduty](#pagerduty) | `pagerduty` | yes, external only | yes -Prometheus Alertmanager | `prometheus-alertmanager` | yes, external only | yes -[Pushover](#pushover) | `pushover` | yes | no -Sensu | `sensu` | yes, external only | no -[Sensu Go](#sensu-go) | `sensugo` | yes, external only | no -[Slack](#slack) | `slack` | yes | no -Telegram | `telegram` | yes | no -Threema | `threema` | yes, external only | no -VictorOps | `victorops` | yes, external only | yes -[Webhook](#webhook) | `webhook` | yes, external only | yes -[Zenduty](#zenduty) | `webhook` | yes, external only | yes +| Name | Type | Supports images | Support alert rule tags | +| --------------------------------------------- | ------------------------- | ------------------ | ----------------------- | +| [DingDing](#dingdingdingtalk) | `dingding` | yes, external only | no | +| [Discord](#discord) | `discord` | yes | no | +| [Email](#email) | `email` | yes | no | +| [Google Hangouts Chat](#google-hangouts-chat) | `googlechat` | yes, external only | no | +| Hipchat | `hipchat` | yes, external only | no | +| [Kafka](#kafka) | `kafka` | yes, external only | no | +| Line | `line` | yes, external only | no | +| Microsoft Teams | `teams` | yes, external only | no | +| [Opsgenie](#opsgenie) | `opsgenie` | yes, external only | yes | +| [Pagerduty](#pagerduty) | `pagerduty` | yes, external only | yes | +| Prometheus Alertmanager | `prometheus-alertmanager` | yes, external only | yes | +| [Pushover](#pushover) | `pushover` | yes | no | +| Sensu | `sensu` | yes, external only | no | +| [Sensu Go](#sensu-go) | `sensugo` | yes, external only | no | +| [Slack](#slack) | `slack` | yes | no | +| Telegram | `telegram` | yes | no | +| Threema | `threema` | yes, external only | no | +| VictorOps | `victorops` | yes, external only | yes | +| [Webhook](#webhook) | `webhook` | yes, external only | yes | +| [Zenduty](#zenduty) | `webhook` | yes, external only | yes | ### Email @@ -83,10 +83,10 @@ able to access the image. > **Note:** Template variables are not supported in email alerts. -Setting | Description ----------- | ----------- -Single email | Send a single email to all recipients. Disabled per default. -Addresses | Email addresses to recipients. You can enter multiple email addresses using a ";" separator. +| Setting | Description | +| ------------ | -------------------------------------------------------------------------------------------- | +| Single email | Send a single email to all recipients. Disabled per default. | +| Addresses | Email addresses to recipients. You can enter multiple email addresses using a ";" separator. | ### Slack @@ -98,17 +98,17 @@ firing alerts in the Slack messages you have to configure either the [external i in Grafana or a bot integration via Slack Apps. [Follow Slack's guide to set up a bot integration](https://api.slack.com/bot-users) and use the token provided, which starts with "xoxb". -Setting | Description ----------- | ----------- -Url | Slack incoming webhook URL, or eventually the [chat.postMessage](https://api.slack.com/methods/chat.postMessage) Slack API endpoint. -Username | Set the username for the bot's message. -Recipient | Allows you to override the Slack recipient. You must either provide a channel Slack ID, a user Slack ID, a username reference (@<user>, all lowercase, no whitespace), or a channel reference (#<channel>, all lowercase, no whitespace). If you use the `chat.postMessage` Slack API endpoint, this is required. -Icon emoji | Provide an emoji to use as the icon for the bot's message. Ex :smile: -Icon URL | Provide a URL to an image to use as the icon for the bot's message. -Mention Users | Optionally mention one or more users in the Slack notification sent by Grafana. You have to refer to users, comma-separated, via their corresponding Slack IDs (which you can find by clicking the overflow button on each user's Slack profile). -Mention Groups | Optionally mention one or more groups in the Slack notification sent by Grafana. You have to refer to groups, comma-separated, via their corresponding Slack IDs (which you can get from each group's Slack profile URL). -Mention Channel | Optionally mention either all channel members or just active ones. -Token | If provided, Grafana will upload the generated image via Slack's file.upload API method, not the external image destination. If you use the `chat.postMessage` Slack API endpoint, this is required. +| Setting | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Url | Slack incoming webhook URL, or eventually the [chat.postMessage](https://api.slack.com/methods/chat.postMessage) Slack API endpoint. | +| Username | Set the username for the bot's message. | +| Recipient | Allows you to override the Slack recipient. You must either provide a channel Slack ID, a user Slack ID, a username reference (@<user>, all lowercase, no whitespace), or a channel reference (#<channel>, all lowercase, no whitespace). If you use the `chat.postMessage` Slack API endpoint, this is required. | +| Icon emoji | Provide an emoji to use as the icon for the bot's message. Ex :smile: | +| Icon URL | Provide a URL to an image to use as the icon for the bot's message. | +| Mention Users | Optionally mention one or more users in the Slack notification sent by Grafana. You have to refer to users, comma-separated, via their corresponding Slack IDs (which you can find by clicking the overflow button on each user's Slack profile). | +| Mention Groups | Optionally mention one or more groups in the Slack notification sent by Grafana. You have to refer to groups, comma-separated, via their corresponding Slack IDs (which you can get from each group's Slack profile URL). | +| Mention Channel | Optionally mention either all channel members or just active ones. | +| Token | If provided, Grafana will upload the generated image via Slack's file.upload API method, not the external image destination. If you use the `chat.postMessage` Slack API endpoint, this is required. | If you are using the token for a slack bot, then you have to invite the bot to the channel you want to send notifications and add the channel to the recipient field. @@ -116,12 +116,12 @@ If you are using the token for a slack bot, then you have to invite the bot to t To setup Opsgenie you will need an API Key and the Alert API Url. These can be obtained by configuring a new [Grafana Integration](https://docs.opsgenie.com/docs/grafana-integration). -Setting | Description ---------|------------ -Alert API URL | The API URL for your Opsgenie instance. This will normally be either `https://api.opsgenie.com` or, for EU customers, `https://api.eu.opsgenie.com`. -API Key | The API Key as provided by Opsgenie for your configured Grafana integration. -Override priority | Configures the alert priority using the `og_priority` tag. The `og_priority` tag must have one of the following values: `P1`, `P2`, `P3`, `P4`, or `P5`. Default is `False`. -Send notification tags as | Specify how you would like [Notification Tags]({{< relref "create-alerts.md/#notifications" >}}) delivered to Opsgenie. They can be delivered as `Tags`, `Extra Properties` or both. Default is Tags. See note below for more information. +| Setting | Description | +| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Alert API URL | The API URL for your Opsgenie instance. This will normally be either `https://api.opsgenie.com` or, for EU customers, `https://api.eu.opsgenie.com`. | +| API Key | The API Key as provided by Opsgenie for your configured Grafana integration. | +| Override priority | Configures the alert priority using the `og_priority` tag. The `og_priority` tag must have one of the following values: `P1`, `P2`, `P3`, `P4`, or `P5`. Default is `False`. | +| Send notification tags as | Specify how you would like [Notification Tags]({{< relref "create-alerts.md/#notifications" >}}) delivered to Opsgenie. They can be delivered as `Tags`, `Extra Properties` or both. Default is Tags. See note below for more information. | > **Note:** When notification tags are sent as `Tags` they are concatenated into a string with a `key:value` format. If you prefer to receive the notifications tags as key/values under Extra Properties in Opsgenie then change the `Send notification tags as` to either `Extra Properties` or `Tags & Extra Properties`. @@ -129,19 +129,19 @@ Send notification tags as | Specify how you would like [Notification Tags]({{< r To set up PagerDuty, all you have to do is to provide an integration key. -Setting | Description ----------- | ----------- -Integration Key | Integration key for PagerDuty. -Severity | Level for dynamic notifications, default is `critical` (1) -Auto resolve incidents | Resolve incidents in PagerDuty once the alert goes back to ok -Message in details | Removes the Alert message from the PD summary field and puts it into custom details instead (2) +| Setting | Description | +| ---------------------- | ----------------------------------------------------------------------------------------------- | +| Integration Key | Integration key for PagerDuty. | +| Severity | Level for dynamic notifications, default is `critical` (1) | +| Auto resolve incidents | Resolve incidents in PagerDuty once the alert goes back to ok | +| Message in details | Removes the Alert message from the PD summary field and puts it into custom details instead (2) | ->**Note:** The tags `Severity`, `Class`, `Group`, `dedup_key`, and `Component` have special meaning in the [Pagerduty Common Event Format - PD-CEF](https://support.pagerduty.com/docs/pd-cef). If an alert panel defines these tag keys, then they are transposed to the root of the event sent to Pagerduty. This means they will be available within the Pagerduty UI and Filtering tools. A Severity tag set on an alert overrides the global Severity set on the notification channel if it's a valid level. +> **Note:** The tags `Severity`, `Class`, `Group`, `dedup_key`, and `Component` have special meaning in the [Pagerduty Common Event Format - PD-CEF](https://support.pagerduty.com/docs/pd-cef). If an alert panel defines these tag keys, then they are transposed to the root of the event sent to Pagerduty. This means they will be available within the Pagerduty UI and Filtering tools. A Severity tag set on an alert overrides the global Severity set on the notification channel if it's a valid level. ->Using Message In Details will change the structure of the `custom_details` field in the PagerDuty Event. -This might break custom event rules in your PagerDuty rules if you rely on the fields in `payload.custom_details`. -Move any existing rules using `custom_details.myMetric` to `custom_details.queries.myMetric`. -This behavior will become the default in a future version of Grafana. +> Using Message In Details will change the structure of the `custom_details` field in the PagerDuty Event. +> This might break custom event rules in your PagerDuty rules if you rely on the fields in `payload.custom_details`. +> Move any existing rules using `custom_details.myMetric` to `custom_details.queries.myMetric`. +> This behavior will become the default in a future version of Grafana. > **Note:** The `dedup_key` tag overrides the Grafana-generated `dedup_key` with a custom key. @@ -152,22 +152,22 @@ This behavior will become the default in a future version of Grafana. To configure VictorOps, provide the URL from the Grafana Integration and substitute `$routing_key` with a valid key. > **Note:** The tag `Severity` has special meaning in the [VictorOps Incident Fields](https://help.victorops.com/knowledge-base/incident-fields-glossary/). If an alert panel defines this key, then it replaces the `message_type` in the root of the event sent to VictorOps. + ### Pushover To set up Pushover, you must provide a user key and an API token. Refer to [What is Pushover and how do I use it](https://support.pushover.net/i7-what-is-pushover-and-how-do-i-use-it) for instructions on how to generate them. - -Setting | Description ----------- | ----------- -API Token | Application token -User key(s) | A comma-separated list of user keys -Device(s) | A comma-separated list of devices -Priority | The priority alerting nottifications are sent -OK priority | The priority OK notifications are sent; if not set, then OK notifications are sent with the priority set for alerting notifications -Retry | How often (in seconds) the Pushover servers send the same notification to the user. (minimum 30 seconds) -Expire | How many seconds your notification will continue to be retried for (maximum 86400 seconds) -Alerting sound | The sound for alerting notifications -OK sound | The sound for OK notifications +| Setting | Description | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| API Token | Application token | +| User key(s) | A comma-separated list of user keys | +| Device(s) | A comma-separated list of devices | +| Priority | The priority alerting nottifications are sent | +| OK priority | The priority OK notifications are sent; if not set, then OK notifications are sent with the priority set for alerting notifications | +| Retry | How often (in seconds) the Pushover servers send the same notification to the user. (minimum 30 seconds) | +| Expire | How many seconds your notification will continue to be retried for (maximum 86400 seconds) | +| Alerting sound | The sound for alerting notifications | +| OK sound | The sound for OK notifications | ### Webhook @@ -178,26 +178,26 @@ Example json body: ```json { - "dashboardId":1, - "evalMatches":[ + "dashboardId": 1, + "evalMatches": [ { - "value":1, - "metric":"Count", - "tags":{} + "value": 1, + "metric": "Count", + "tags": {} } ], - "imageUrl":"https://grafana.com/assets/img/blog/mixed_styles.png", - "message":"Notification Message", - "orgId":1, - "panelId":2, - "ruleId":1, - "ruleName":"Panel Title alert", - "ruleUrl":"http://localhost:3000/d/hZ7BuVbWz/test-dashboard?fullscreen\u0026edit\u0026tab=alert\u0026panelId=2\u0026orgId=1", - "state":"alerting", - "tags":{ - "tag name":"tag value" + "imageUrl": "https://grafana.com/assets/img/blog/mixed_styles.png", + "message": "Notification Message", + "orgId": 1, + "panelId": 2, + "ruleId": 1, + "ruleName": "Panel Title alert", + "ruleUrl": "http://localhost:3000/d/hZ7BuVbWz/test-dashboard?fullscreen\u0026edit\u0026tab=alert\u0026panelId=2\u0026orgId=1", + "state": "alerting", + "tags": { + "tag name": "tag value" }, - "title":"[Alerting] Panel Title alert" + "title": "[Alerting] Panel Title alert" } ``` @@ -213,7 +213,7 @@ In DingTalk PC Client: 2. Click "Robot Manage" item in the pop menu, there will be a new panel call "Robot Manage". -3. In the "Robot Manage" panel, select "customized: customized robot with Webhook". +3. In the "Robot Manage" panel, select "customized: customized robot with Webhook". 4. In the next new panel named "robot detail", click "Add" button. @@ -226,11 +226,11 @@ In DingTalk PC Client: To set up Discord, you must create a Discord channel webhook. For instructions on how to create the channel, refer to [Intro to Webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks). -Setting | Description ----------- | ----------- -Webhook URL | Discord webhook URL. -Message Content | Mention a group using @ or a user using <@ID> when notifying in a channel. -Avatar URL | Optionally, provide a URL to an image to use as the avatar for the bot's message. +| Setting | Description | +| --------------- | --------------------------------------------------------------------------------- | +| Webhook URL | Discord webhook URL. | +| Message Content | Mention a group using @ or a user using <@ID> when notifying in a channel. | +| Avatar URL | Optionally, provide a URL to an image to use as the avatar for the bot's message. | Alternately, use the [Slack](#slack) notifier by appending `/slack` to a Discord webhook URL. diff --git a/docs/sources/alerting/old-alerting/pause-an-alert-rule.md b/docs/sources/alerting/old-alerting/pause-an-alert-rule.md index aaa0005ca35..b55c02bbab9 100644 --- a/docs/sources/alerting/old-alerting/pause-an-alert-rule.md +++ b/docs/sources/alerting/old-alerting/pause-an-alert-rule.md @@ -12,4 +12,4 @@ Pausing the evaluation of an alert rule can sometimes be useful. For example, du 1. In the Grafana side bar, hover your cursor over the Alerting (bell) icon and then click **Alert Rules**. All configured alert rules are listed, along with their current state. 1. Find your alert in the list, and click the **Pause** icon on the right. The **Pause** icon turns into a **Play** icon. -1. Click the **Play** icon to resume evaluation of your alert. \ No newline at end of file +1. Click the **Play** icon to resume evaluation of your alert. diff --git a/docs/sources/alerting/old-alerting/view-alerts.md b/docs/sources/alerting/old-alerting/view-alerts.md index d02713ab678..132b60b9110 100644 --- a/docs/sources/alerting/old-alerting/view-alerts.md +++ b/docs/sources/alerting/old-alerting/view-alerts.md @@ -17,4 +17,4 @@ You can do several things while viewing alerts. - **Filter alerts by name -** Type an alert name in the **Search alerts** field. - **Filter alerts by state -** In **States**, select which alert states you want to see. All others will be hidden. - **Pause or resume an alert -** Click the **Pause** or **Play** icon next to the alert to pause or resume evaluation. See [Pause an alert rule]({{< relref "pause-an-alert-rule.md" >}}) for more information. -- **Access alert rule settings -** Click the alert name or the **Edit alert rule** (gear) icon. Grafana opens the Alert tab of the panel where the alert rule is defined. This is helpful when an alert is firing but you don't know which panel it is defined in. \ No newline at end of file +- **Access alert rule settings -** Click the alert name or the **Edit alert rule** (gear) icon. Grafana opens the Alert tab of the panel where the alert rule is defined. This is helpful when an alert is firing but you don't know which panel it is defined in. diff --git a/docs/sources/alerting/unified-alerting/_index.md b/docs/sources/alerting/unified-alerting/_index.md index d96ef3b1438..6415f62fccd 100644 --- a/docs/sources/alerting/unified-alerting/_index.md +++ b/docs/sources/alerting/unified-alerting/_index.md @@ -5,9 +5,10 @@ weight = 113 +++ # Overview of Grafana 8 alerts + Alerts allow you to know about problems in your systems moments after they occur. Robust and actionable alerts help you identify and resolve issues quickly, minimizing disruption to your services. ->**Note:** This information is for the new, Grafana 8 Alerts. This is an [opt-in]({{< relref"./opt-in.md" >}}) feature released in Grafana 8.0. Grafana still supports [legacy dashboard alerts]({{< relref "../old-alerting/_index.md" >}}) out of the box +> **Note:** This information is for the new, Grafana 8 Alerts. This is an [opt-in]({{< relref"./opt-in.md" >}}) feature released in Grafana 8.0. Grafana still supports [legacy dashboard alerts]({{< relref "../old-alerting/_index.md" >}}) out of the box Alerts have four main components: @@ -20,7 +21,6 @@ Alerts have four main components: You can perform the following tasks for alerts: - - [Create a Grafana managed alert rule]({{< relref "alerting-rules/create-grafana-managed-rule.md" >}}) - [Create a Cortex or Loki managed alert rule]({{< relref "alerting-rules/create-cortex-loki-managed-rule.md" >}}) - [View existing alert rules and their current state]({{< relref "alerting-rules/rule-list.md" >}}) @@ -38,6 +38,7 @@ The current alerting system doesn't support high availability. Alert notificatio Grafana managed alerts are evaluated by the Grafana backend. Rule evaluations are scheduled, according to the alert rule configuration, and queries are evaluated by an engine that is part of core Grafana. Alerting rules can only query backend data sources with alerting enabled: + - builtin or developed and maintained by grafana: `Graphite`, `Prometheus`, `Loki`, `InfluxDB`, `Elasticsearch`, `Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Data Explorer` - any community backend data sources with alerting enabled (`backend` and `alerting` properties are set in the [plugin.json]({{< relref "../../developers/plugins/metadata.md" >}})) @@ -46,15 +47,14 @@ Alerting rules can only query backend data sources with alerting enabled: The alerting engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics]({{< relref "../../administration/view-server/internal-metrics.md" >}}). -Metric Name | Type | Description ----------- | ----------- | ---------- -`alerting.alerts` | gauge | How many alerts by state -`alerting.request_duration_seconds` | histogram | Histogram of requests to the Alerting API -`alerting.active_configurations` | gauge | The number of active, non default Alertmanager configurations for grafana managed alerts -`alerting.rule_evaluations_total` | counter | The total number of rule evaluations -`alerting.rule_evaluation_failures_total` | counter | The total number of rule evaluation failures -`alerting.rule_evaluation_duration_seconds` | summary | The duration for a rule to execute -`alerting.rule_group_rules` | gauge | The number of rules - +| Metric Name | Type | Description | +| ------------------------------------------- | --------- | ---------------------------------------------------------------------------------------- | +| `alerting.alerts` | gauge | How many alerts by state | +| `alerting.request_duration_seconds` | histogram | Histogram of requests to the Alerting API | +| `alerting.active_configurations` | gauge | The number of active, non default Alertmanager configurations for grafana managed alerts | +| `alerting.rule_evaluations_total` | counter | The total number of rule evaluations | +| `alerting.rule_evaluation_failures_total` | counter | The total number of rule evaluation failures | +| `alerting.rule_evaluation_duration_seconds` | summary | The duration for a rule to execute | +| `alerting.rule_group_rules` | gauge | The number of rules | - [View alert rules and their current state]({{< relref "alerting-rules/rule-list.md" >}}) diff --git a/docs/sources/alerting/unified-alerting/alerting-rules/_index.md b/docs/sources/alerting/unified-alerting/alerting-rules/_index.md index 9a165cbae70..536d13c35dd 100644 --- a/docs/sources/alerting/unified-alerting/alerting-rules/_index.md +++ b/docs/sources/alerting/unified-alerting/alerting-rules/_index.md @@ -5,7 +5,8 @@ weight = 130 +++ # Create and manage alerting Rules -One or more queries and/or expressions, a condition, the frequency of evaluation, and the (optional) duration that a condition must be met before creating an alert. Alerting rules are how you express the criteria for creating an alert. Queries and expressions select and can operate on the data you wish to alert on. A condition sets the threshold that an alert must meet or exceed to create an alert. The interval specifies how frequently the rule should be evaluated. The duration, when configured, sets a period that a condition must be met or exceeded before an alert is created. Alerting rules also can contain settings for what to do when your query does not return any data, or there is an error attempting to execute the query. + +One or more queries and/or expressions, a condition, the frequency of evaluation, and the (optional) duration that a condition must be met before creating an alert. Alerting rules are how you express the criteria for creating an alert. Queries and expressions select and can operate on the data you wish to alert on. A condition sets the threshold that an alert must meet or exceed to create an alert. The interval specifies how frequently the rule should be evaluated. The duration, when configured, sets a period that a condition must be met or exceeded before an alert is created. Alerting rules also can contain settings for what to do when your query does not return any data, or there is an error attempting to execute the query. - [Create Cortex or Loki managed alert rule]({{< relref "./create-cortex-loki-managed-rule.md" >}}) - [Create Grafana managed alert rule]({{< relref "./create-grafana-managed-rule.md" >}}) diff --git a/docs/sources/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-rule.md b/docs/sources/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-rule.md index 574747a11c9..9cbc2edb2dd 100644 --- a/docs/sources/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-rule.md +++ b/docs/sources/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-rule.md @@ -7,10 +7,9 @@ weight = 400 # Create a Cortex or Loki managed alerting rule -Grafana allows you manage alerting rules for an external Cortex or Loki instance. +Grafana allows you manage alerting rules for an external Cortex or Loki instance. - -In order for both Cortex and Loki data sources to work with Grafana 8.0 alerting, enable the ruler API by configuring their respective services. The`local` rule storage type, default for Loki, only supports viewing of rules. If you want to edit rules, then configure one of the other rule storage types. When configuring a Grafana Prometheus data source to point to Cortex, use the legacy `/api/prom` prefix, not `/prometheus`. Only single-binary mode is currently supported, and it is not possible to provide a separate URL for the ruler API. +In order for both Cortex and Loki data sources to work with Grafana 8.0 alerting, enable the ruler API by configuring their respective services. The`local` rule storage type, default for Loki, only supports viewing of rules. If you want to edit rules, then configure one of the other rule storage types. When configuring a Grafana Prometheus data source to point to Cortex, use the legacy `/api/prom` prefix, not `/prometheus`. Only single-binary mode is currently supported, and it is not possible to provide a separate URL for the ruler API. ## Add or edit a Cortex or Loki managed alerting rule @@ -26,11 +25,11 @@ This section describes the fields you fill out to create an alert. ### Alert type - - **Alert name -** Enter a descriptive name. The name will be displayed in the alert rule list, as well as added as `alertname` label to every alert instance that is created from this rule. - - **Alert type -** Select **Cortex / Loki managed alert**. - - **Data source -** Select a Prometheus or Loki data source. Only Prometheus data sources that support Cortex ruler API will be available. - - **Namespace -** Select an existing rule namespace or click **Add new** to create a new one. - - **Group -** Select an existing group within the selected namespace or click **Add new** to create a new one. Newly created rules will be added to the end of the rule group. +- **Alert name -** Enter a descriptive name. The name will be displayed in the alert rule list, as well as added as `alertname` label to every alert instance that is created from this rule. +- **Alert type -** Select **Cortex / Loki managed alert**. +- **Data source -** Select a Prometheus or Loki data source. Only Prometheus data sources that support Cortex ruler API will be available. +- **Namespace -** Select an existing rule namespace or click **Add new** to create a new one. +- **Group -** Select an existing group within the selected namespace or click **Add new** to create a new one. Newly created rules will be added to the end of the rule group. ![Alert type section screenshot](/static/img/docs/alerting/unified/rule-edit-cortex-alert-type-8-0.png 'Alert type section screenshot') @@ -42,7 +41,7 @@ Enter a PromQL or LogQL expression. Rule will fire if evaluation result has at l ### Conditions - - **For -** For how long the selected condition should violated before an alert enters `Firing` state. When condition threshold is violated for the first time, an alert becomes `Pending`. If the **for** time elapses and the condition is still violated, it becomes `Firing`. Else it reverts back to `Normal`. +- **For -** For how long the selected condition should violated before an alert enters `Firing` state. When condition threshold is violated for the first time, an alert becomes `Pending`. If the **for** time elapses and the condition is still violated, it becomes `Firing`. Else it reverts back to `Normal`. ![Conditions section](/static/img/docs/alerting/unified/rule-edit-cortex-conditions-8-0.png 'Conditions section screenshot') @@ -52,11 +51,11 @@ Annotations and labels can be optionally added in the details section. #### Annotations -Annotations are key and value pairs that provide additional meta information about the alert, for example description, summary, runbook URL. They are displayed in rule and alert details in the UI and can be used in contact type message templates. Annotations can also be templated, for example `Instance {{ $labels.instance }} down` will have the evaluated `instance` label value added for every alert this rule produces. +Annotations are key and value pairs that provide additional meta information about the alert, for example description, summary, runbook URL. They are displayed in rule and alert details in the UI and can be used in contact type message templates. Annotations can also be templated, for example `Instance {{ $labels.instance }} down` will have the evaluated `instance` label value added for every alert this rule produces. #### Labels -Labels are key value pairs that categorize or identify an alert. Labels are used to match alerts in silences or match and groups alerts in notification policies. Labels are also shown in rule or alert details in the UI and can be used in contact type message templates. For example, it is common to add a `severity` label and then configure a separate notification policy for each severity. Or one could add a `team` label and configure team specific notification policies, or silence all alerts for a particular team. +Labels are key value pairs that categorize or identify an alert. Labels are used to match alerts in silences or match and groups alerts in notification policies. Labels are also shown in rule or alert details in the UI and can be used in contact type message templates. For example, it is common to add a `severity` label and then configure a separate notification policy for each severity. Or one could add a `team` label and configure team specific notification policies, or silence all alerts for a particular team. ![Details section](/static/img/docs/alerting/unified/rule-edit-details-8-0.png 'Details section screenshot') diff --git a/docs/sources/alerting/unified-alerting/alerting-rules/create-grafana-managed-rule.md b/docs/sources/alerting/unified-alerting/alerting-rules/create-grafana-managed-rule.md index f38051b5ca8..11605a3ad96 100644 --- a/docs/sources/alerting/unified-alerting/alerting-rules/create-grafana-managed-rule.md +++ b/docs/sources/alerting/unified-alerting/alerting-rules/create-grafana-managed-rule.md @@ -7,7 +7,7 @@ weight = 400 # Create a Grafana managed alerting rule -Grafana allows you to create alerting rules that query one or more data sources, reduce or transform the results and compare them to each other or to fix thresholds. These rules will be executed and notifications sent by Grafana itself. +Grafana allows you to create alerting rules that query one or more data sources, reduce or transform the results and compare them to each other or to fix thresholds. These rules will be executed and notifications sent by Grafana itself. ## Add or edit a Grafana managed alerting rule @@ -23,15 +23,15 @@ This section describes the fields you fill out to create an alert. ### Alert type - - **Alert name -** Enter a descriptive name. The name will be displayed in the alert rule list, as well as added as `alertname` label to every alert instance that is created from this rule. - - **Alert type -** Select **Grafana managed alert**. - - **Folder -** Select a folder this alert rule will belong to. To create a new folder, click on the drop down and type in a new folder name. +- **Alert name -** Enter a descriptive name. The name will be displayed in the alert rule list, as well as added as `alertname` label to every alert instance that is created from this rule. +- **Alert type -** Select **Grafana managed alert**. +- **Folder -** Select a folder this alert rule will belong to. To create a new folder, click on the drop down and type in a new folder name. ![Alert type section screenshot](/static/img/docs/alerting/unified/rule-edit-grafana-alert-type-8-0.png 'Alert type section screenshot') ### Query -Add one or more [queries]({{< relref "../../../panels/queries.md" >}}) or [expressions]({{< relref "../../../panels/expressions.md" >}}). You can use classic condition expression to create a rule that will trigger a single alert if it's threshold is met, or use reduce and math expressions to create a multi dimensional alert rule that can trigger multiple alerts, one per matching series in the query result. +Add one or more [queries]({{< relref "../../../panels/queries.md" >}}) or [expressions]({{< relref "../../../panels/expressions.md" >}}). You can use classic condition expression to create a rule that will trigger a single alert if it's threshold is met, or use reduce and math expressions to create a multi dimensional alert rule that can trigger multiple alerts, one per matching series in the query result. #### Rule with classic condition @@ -41,7 +41,7 @@ You can use classic condition expression to create a rule that will trigger a si 1. Add an expression. Click on **Operation** dropdown and select **Classic condition**. 1. Add one or more conditions. For each condition you can specify operator (`AND` / `OR`), aggregation function, query letter and threshold value. -If a query returns multiple series, then the aggregation function and threshold check will be evaluated for each series.It will not track alert state **per series**. This has implications that are detailed in the scenario below. +If a query returns multiple series, then the aggregation function and threshold check will be evaluated for each series.It will not track alert state **per series**. This has implications that are detailed in the scenario below. - Alert condition with query that returns 2 series: **server1** and **server2** - **server1** series causes the alert rule to fire and switch to state `Firing` @@ -67,25 +67,24 @@ See or [expressions documentation]({{< relref "../../../panels/expressions.md" > ### Conditions - - **Condition -** Select the letter of the query or expression whose result will trigger the alert rule. You will likely want to select either a `classic condition` or a `math` expression. - - **Evaluate every -** How often the rule should be evaluated, executing the defined queries and expressions. Must be no less than 10 seconds and a multiple of 10 seconds. Examples: `1m`, `30s` - - **Evaluate for -** For how long the selected condition should violated before an alert enters `Alerting` state. When condition threshold is violated for the first time, an alert becomes `Pending`. If the **for** time elapses and the condition is still violated, it becomes `Alerting`. Else it reverts back to `Normal`. +- **Condition -** Select the letter of the query or expression whose result will trigger the alert rule. You will likely want to select either a `classic condition` or a `math` expression. +- **Evaluate every -** How often the rule should be evaluated, executing the defined queries and expressions. Must be no less than 10 seconds and a multiple of 10 seconds. Examples: `1m`, `30s` +- **Evaluate for -** For how long the selected condition should violated before an alert enters `Alerting` state. When condition threshold is violated for the first time, an alert becomes `Pending`. If the **for** time elapses and the condition is still violated, it becomes `Alerting`. Else it reverts back to `Normal`. #### No Data & Error handling - - Toggle **Configure no data and error handling** switch to configure how the rule should handle cases where evaluation results in error or returns no data. -| No Data Option | Description | -| --------------- | ------------------------------------------------------------------------------------------ | -| No Data | Set alert state to `NoData` and rule state to `Normal` | -| Alerting | Set alert rule state to `Alerting` | -| Ok | Set alert rule state to `Normal` | +Toggle **Configure no data and error handling** switch to configure how the rule should handle cases where evaluation results in error or returns no data. +| No Data Option | Description | +| -------------- | ------------------------------------------------------ | +| No Data | Set alert state to `NoData` and rule state to `Normal` | +| Alerting | Set alert rule state to `Alerting` | +| Ok | Set alert rule state to `Normal` | -| Error or timeout option | Description | -| ----------------------- | --------------------------------------------------- | -| Alerting | Set alert rule state to `Alerting` | -| OK | Set alert rule state to `Normal` | +| Error or timeout option | Description | +| ----------------------- | ---------------------------------- | +| Alerting | Set alert rule state to `Alerting` | +| OK | Set alert rule state to `Normal` | ![Conditions section](/static/img/docs/alerting/unified/rule-edit-grafana-conditions-8-0.png 'Conditions section screenshot') @@ -95,11 +94,11 @@ Annotations and labels can be optionally added in the details section. #### Annotations -Annotations are key and value pairs that provide additional meta information about the alert, for example description, summary, runbook URL. They are displayed in rule and alert details in the UI and can be used in contact type message templates. Annotations can also be templated, for example `Instance {{ $labels.instance }} down` will have the evaluated `instance` label value added for every alert this rule produces. +Annotations are key and value pairs that provide additional meta information about the alert, for example description, summary, runbook URL. They are displayed in rule and alert details in the UI and can be used in contact type message templates. Annotations can also be templated, for example `Instance {{ $labels.instance }} down` will have the evaluated `instance` label value added for every alert this rule produces. #### Labels -Labels are key value pairs that categorize or identify an alert. Labels are used to match alerts in silences or match and groups alerts in notification policies. Labels are also shown in rule or alert details in the UI and can be used in contact type message templates. For example, it is common to add a `severity` label and then configure a separate notification policy for each severity. Or one could add a `team` label and configure team specific notification policies, or silence all alerts for a particular team. Labels can also be templated like annotations, for example `{{ $labels.namespace }}/{{ $labels.job }}` will produce a new rule label that will have the evaluated `namespace` and `job` label value added for every alert this rule produces. The rule labels take precedence over the labels produced by the query/condition. +Labels are key value pairs that categorize or identify an alert. Labels are used to match alerts in silences or match and groups alerts in notification policies. Labels are also shown in rule or alert details in the UI and can be used in contact type message templates. For example, it is common to add a `severity` label and then configure a separate notification policy for each severity. Or one could add a `team` label and configure team specific notification policies, or silence all alerts for a particular team. Labels can also be templated like annotations, for example `{{ $labels.namespace }}/{{ $labels.job }}` will produce a new rule label that will have the evaluated `namespace` and `job` label value added for every alert this rule produces. The rule labels take precedence over the labels produced by the query/condition. ![Details section](/static/img/docs/alerting/unified/rule-edit-details-8-0.png 'Details section screenshot') @@ -107,11 +106,11 @@ Labels are key value pairs that categorize or identify an alert. Labels are use The following template variables are available when expanding annotations and labels. -| Name | Description | -| ------- | --------------- | -| $labels | The labels from the query or condition. For example, `{{ $labels.instance }}` and `{{ $labels.job }}`. | +| Name | Description | +| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| $labels | The labels from the query or condition. For example, `{{ $labels.instance }}` and `{{ $labels.job }}`. | | $values | The values of all reduce and math expressions that were evaluated for this alert rule. For example, `{{ $values.A }}`, `{{ $values.A.Labels }}` and `{{ $values.A.Value }}` where `A` is the `refID` of the expression. | -| $value | The value string of the alert instance. For example, `[ var='A' labels={instance=foo} value=10 ]`. | +| $value | The value string of the alert instance. For example, `[ var='A' labels={instance=foo} value=10 ]`. | ## Preview alerts diff --git a/docs/sources/alerting/unified-alerting/alerting-rules/state-and-health.md b/docs/sources/alerting/unified-alerting/alerting-rules/state-and-health.md index 7c5be151d9a..76ffec61de6 100644 --- a/docs/sources/alerting/unified-alerting/alerting-rules/state-and-health.md +++ b/docs/sources/alerting/unified-alerting/alerting-rules/state-and-health.md @@ -9,13 +9,17 @@ keywords = ["grafana", "alerting", "guide", "state"] The concepts of state and health for alerting rules help you understand, at a glance, several key status indicators about your alerts. Alert state, alerting rule state, and alerting rule health are related, but they each convey subtly different information. ## Alerting rule state + Indicates whether any of the timeseries resulting from evaluation of the alerting rule are in an alerting state. Alerting rule state only requires a single alerting instance to be in a pending or firing state for the alerting rule state to not be normal. + - Normal: none of the timeseries returned are in an alerting state. - Pending: at least one of the timeseries returned are in a pending state. - Firing: at least one of the timeseries returned are in an alerting state. ## Alert state + Alert state is an indication of the output of the alerting evaluation engine. + - Normal: the condition for the alerting rule has evaluated to **false** for every timeseries returned by the evaluation engine. - Alerting: the condition for the alerting rule has evaluated to **true** for at least one timeseries returned by the evaluation engine and the duration, if set, **has** been met or exceeded. - Pending: the condition for the alerting rule has evaluated to **true** for at least one timeseries returned by the evaluation engine and the duration, if set, **has not** been met or exceeded. @@ -23,7 +27,9 @@ Alert state is an indication of the output of the alerting evaluation engine. - Error: There was an error encountered when attempting to evaluate the alerting rule. ## Alerting rule health + Indicates the status of alerting rule evaluation. + - Ok: the rule is being evaluated, data is being returned, and no errors have been encountered. - Error: an error was encountered when evaluating the alerting rule. - NoData: at least one of the timeseries returned during evaluation is in a NoData state. diff --git a/docs/sources/alerting/unified-alerting/contact-points.md b/docs/sources/alerting/unified-alerting/contact-points.md index b3dfb7a837d..02d17ccc1f7 100644 --- a/docs/sources/alerting/unified-alerting/contact-points.md +++ b/docs/sources/alerting/unified-alerting/contact-points.md @@ -17,17 +17,19 @@ Grafana alerting UI allows you to configure contact points for the Grafana manag 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. Click **Add contact point**. -1. Enter a **Name** for the contact point +1. Enter a **Name** for the contact point 1. Select contact point type and fill out mandatory fields. **Optional settings** can be expanded for more options. 1. If you'd like this contact point to notify via multiple channels, for example both email and slack, click **New contact point type** and fill out additional contact point type details. 1. Click **Save contact point** button at the bottom of the page. ## Editing a contact point + 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. Find the contact point you want to edit in the contact points table and click the **pen icon** on the right side. 1. Make any changes and click **Save contact point** button at the bottom of the page. -## Deleting a contact point +## Deleting a contact point + 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. Find the contact point you want to edit in the contact points table and click the **trash can icon** on the right side. 1. A confirmation dialog will open. Click **Yes, delete**. @@ -36,31 +38,31 @@ Grafana alerting UI allows you to configure contact points for the Grafana manag ## List of notifiers supported by Grafana -Name | Type ------|----- -[DingDing](#dingdingdingtalk) | `dingding` -[Discord](#discord) | `discord` -[Email](#email) | `email` -[Google Hangouts Chat](#google-hangouts-chat) | `googlechat` -[Kafka](#kafka) | `kafka` -Line | `line` -Microsoft Teams | `teams` -[Opsgenie](#opsgenie) | `opsgenie` -[Pagerduty](#pagerduty) | `pagerduty` -Prometheus Alertmanager | `prometheus-alertmanager` -[Pushover](#pushover) | `pushover` -Sensu | `sensu` -[Sensu Go](#sensu-go) | `sensugo` -[Slack](#slack) | `slack` -Telegram | `telegram` -Threema | `threema` -VictorOps | `victorops` -[Webhook](#webhook) | `webhook` -[Zenduty](#zenduty) | `webhook` +| Name | Type | +| --------------------------------------------- | ------------------------- | +| [DingDing](#dingdingdingtalk) | `dingding` | +| [Discord](#discord) | `discord` | +| [Email](#email) | `email` | +| [Google Hangouts Chat](#google-hangouts-chat) | `googlechat` | +| [Kafka](#kafka) | `kafka` | +| Line | `line` | +| Microsoft Teams | `teams` | +| [Opsgenie](#opsgenie) | `opsgenie` | +| [Pagerduty](#pagerduty) | `pagerduty` | +| Prometheus Alertmanager | `prometheus-alertmanager` | +| [Pushover](#pushover) | `pushover` | +| Sensu | `sensu` | +| [Sensu Go](#sensu-go) | `sensugo` | +| [Slack](#slack) | `slack` | +| Telegram | `telegram` | +| Threema | `threema` | +| VictorOps | `victorops` | +| [Webhook](#webhook) | `webhook` | +| [Zenduty](#zenduty) | `webhook` | ## Manage contact points for an external Alertmanager -Grafana alerting UI supports managing external Alertmanager configuration. Once you add an [Alertmanager data source]({{< relref "../../datasources/alertmanager.md" >}}), a dropdown displays at the top of the page where you can select either `Grafana` or an external Alertmanager as your data source. +Grafana alerting UI supports managing external Alertmanager configuration. Once you add an [Alertmanager data source]({{< relref "../../datasources/alertmanager.md" >}}), a dropdown displays at the top of the page where you can select either `Grafana` or an external Alertmanager as your data source. {{< figure max-width="40%" src="/static/img/docs/alerting/unified/contact-points-select-am-8-0.gif" caption="Select Alertmanager" >}} @@ -68,7 +70,6 @@ Grafana alerting UI supports managing external Alertmanager configuration. Once To edit global configuration options for an alertmanager, like SMTP server that is used by default for all email contact types: - 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. In the dropdown at the top of the page, select an Alertmanager data source. 1. Click **Edit global config** button at the bottom of the page. diff --git a/docs/sources/alerting/unified-alerting/grafana-managed-numeric-rule.md b/docs/sources/alerting/unified-alerting/grafana-managed-numeric-rule.md index d1389a545e3..2b5e4727662 100644 --- a/docs/sources/alerting/unified-alerting/grafana-managed-numeric-rule.md +++ b/docs/sources/alerting/unified-alerting/grafana-managed-numeric-rule.md @@ -28,40 +28,40 @@ If there are string columns then those columns become labels. The name of column For a MySQL table called "DiskSpace": -| Time | Host | Disk | PercentFree -| ----------- | --- | -----| -------- -| 2021-June-7 | web1 | /etc | 3 -| 2021-June-7 | web2 | /var | 4 -| 2021-June-7 | web3 | /var | 8 -| ... | ... | ... | ... +| Time | Host | Disk | PercentFree | +| ----------- | ---- | ---- | ----------- | +| 2021-June-7 | web1 | /etc | 3 | +| 2021-June-7 | web2 | /var | 4 | +| 2021-June-7 | web3 | /var | 8 | +| ... | ... | ... | ... | You can query the data filtering on time, but without returning the time series to Grafana. For example, an alert that would trigger per Host, Disk when there is less than 5% free space: ```sql SELECT Host, Disk, CASE WHEN PercentFree < 5.0 THEN PercentFree ELSE 0 END FROM ( - SELECT - Host, - Disk, - Avg(PercentFree) + SELECT + Host, + Disk, + Avg(PercentFree) FROM DiskSpace - Group By - Host, + Group By + Host, Disk Where __timeFilter(Time) ``` This query returns the following Table response to Grafana: -| Host | Disk | PercentFree -| --- | -----| -------- -| web1 | /etc | 3 -| web2 | /var | 4 -| web3 | /var | 0 +| Host | Disk | PercentFree | +| ---- | ---- | ----------- | +| web1 | /etc | 3 | +| web2 | /var | 4 | +| web3 | /var | 0 | When this query is used as the **condition** in an alert rule, then the non-zero will be alerting. As a result, three alert instances are produced: -| Labels | Status -| ----------------------| ------ -| {Host=web1,disk=/etc} | Alerting -| {Host=web2,disk=/var} | Alerting -| {Host=web3,disk=/var} | Normal +| Labels | Status | +| --------------------- | -------- | +| {Host=web1,disk=/etc} | Alerting | +| {Host=web2,disk=/var} | Alerting | +| {Host=web3,disk=/var} | Normal | diff --git a/docs/sources/alerting/unified-alerting/message-templating/_index.md b/docs/sources/alerting/unified-alerting/message-templating/_index.md index 57d57720246..6d281ce3cae 100644 --- a/docs/sources/alerting/unified-alerting/message-templating/_index.md +++ b/docs/sources/alerting/unified-alerting/message-templating/_index.md @@ -25,6 +25,7 @@ Grafana alerting UI allows you to configure templates for the Grafana managed al > **Note:** Currently the configuration of the embedded Alertmanager is shared across organisations. Therefore users are advised to use the new Grafana 8 Alerts only if they have one organisation otherwise templates for the Grafana managed alerts will be visible by all organizations ### Create a template + 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. Click **Add template**. 1. Fill in **Name** and **Content** fields. @@ -32,18 +33,19 @@ Grafana alerting UI allows you to configure templates for the Grafana managed al **Note** The template name used to reference this template in templating is not the value of the **Name** field, but the parameter to `define` tag in the content. When creating a template you can omit `define` entirely and it will be added automatically with same value as **Name** field. It's recommended to use the same name for `define` and **Name** field to avoid confusion. - ### Edit a template + 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. Find the template you want to edit in the templates table and click the **pen icon** on the right side. 1. Make any changes and click **Save template** button at the bottom of the page. ### Delete a template + 1. In the Grafana side bar, hover your cursor over the **Alerting** (bell) icon and then click **Contact points**. 1. Find the template you want to edit in the templates table and click the **trash can icon** on the right side. -1. A confirmation dialog will open. Click **Yes, delete**. +1. A confirmation dialog will open. Click **Yes, delete**. **Note** You are not prevented from deleting templates that are in use somewhere in contact points or other templates. Be careful! @@ -51,23 +53,23 @@ Grafana alerting UI allows you to configure templates for the Grafana managed al To use a template: -Enter `{{ template "templatename" . }}` into a contact point field, where `templatename` is the `define` parameter of a template. +Enter `{{ template "templatename" . }}` into a contact point field, where `templatename` is the `define` parameter of a template. - ### Template examples Here is an example of a template to render a single alert: + ``` {{ define "alert" }} [{{.Status}}] {{ .Labels.alertname }} - + Labels: {{ range .Labels.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} - + {{ if gt (len .Annotations) 0 }} Annotations: {{ range .Annotations.SortedPairs }} @@ -85,6 +87,7 @@ Here is an example of a template to render a single alert: ``` Template to render entire notification message: + ``` {{ define "message" }} {{ if gt (len .Alerts.Firing) 0 }} @@ -100,6 +103,6 @@ Template to render entire notification message: ## Manage templates for an external Alertmanager -Grafana alerting UI supports managing external Alertmanager configuration. Once you add an [Alertmanager data source]({{< relref "../../../datasources/alertmanager.md" >}}), a dropdown displays at the top of the page, allowing you to select either `Grafana` or an external Alertmanager data source. +Grafana alerting UI supports managing external Alertmanager configuration. Once you add an [Alertmanager data source]({{< relref "../../../datasources/alertmanager.md" >}}), a dropdown displays at the top of the page, allowing you to select either `Grafana` or an external Alertmanager data source. {{< figure max-width="40%" src="/static/img/docs/alerting/unified/contact-points-select-am-8-0.gif" caption="Select Alertmanager" >}} diff --git a/docs/sources/alerting/unified-alerting/message-templating/template-data.md b/docs/sources/alerting/unified-alerting/message-templating/template-data.md index f549a38b655..22684b221c7 100644 --- a/docs/sources/alerting/unified-alerting/message-templating/template-data.md +++ b/docs/sources/alerting/unified-alerting/message-templating/template-data.md @@ -3,41 +3,40 @@ title = "Template data" keywords = ["grafana", "alerting", "guide", "contact point", "templating"] +++ - # Template data Template data is passed on to [message templates]({{< relref "./_index.md" >}}) as well as sent as payload to webhook pushes. -Name | Type | Notes -------------------|----------|----------------------------------------------------------------- -Receiver | string | Name of the contact point that the notification is being sent to. -Status | string | `firing` if at least one alert is firing, otherwise `resolved`. -Alerts | Alert | List of alert objects that are included in this notification (see below). -GroupLabels | KeyValue | Labels these alerts were grouped by. -CommonLabels | KeyValue | Labels common to all the alerts included in this notification. -CommonAnnotations | KeyValue | Annotations common to all the alerts included in this notification. -ExternalURL | string | Back link to the Grafana that sent the notification. If using external Alertmanager, back link to this Alertmanager. +| Name | Type | Notes | +| ----------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | +| Receiver | string | Name of the contact point that the notification is being sent to. | +| Status | string | `firing` if at least one alert is firing, otherwise `resolved`. | +| Alerts | Alert | List of alert objects that are included in this notification (see below). | +| GroupLabels | KeyValue | Labels these alerts were grouped by. | +| CommonLabels | KeyValue | Labels common to all the alerts included in this notification. | +| CommonAnnotations | KeyValue | Annotations common to all the alerts included in this notification. | +| ExternalURL | string | Back link to the Grafana that sent the notification. If using external Alertmanager, back link to this Alertmanager. | The `Alerts` type exposes functions for filtering alerts: -* `Alerts.Firing` returns a list of firing alerts. -* `Alerts.Resolved` returns a list of resolved alerts. +- `Alerts.Firing` returns a list of firing alerts. +- `Alerts.Resolved` returns a list of resolved alerts. ## Alert -Name | Type | Notes --------------|-----------|--------------------------------------------------------------------- -Status | string | `firing` or `resolved`. -Labels | KeyValue | A set of labels attached to the alert. -Annotations | KeyValue | A set of annotations attached to the alert. -StartsAt | time.Time | Time the alert started firing. -EndsAt | time.Time | Only set if the end time of an alert is known. Otherwise set to a configurable timeout period from the time since the last alert was received. -GeneratorURL | string | A back link to Grafana or external Alertmanager. -SilenceURL | string | Link to grafana silence for with labels for this alert pre-filled. Only for Grafana managed alerts. -DashboardURL | string | Link to grafana dashboard, if alert rule belongs to one. Only for Grafana managed alerts. -PanelURL | string | Link to grafana dashboard panel, if alert rule belongs to one. Only for Grafana managed alerts. -Fingerprint | string | Fingerprint that can be used to identify the alert. -ValueString | string | A string that contains the labels and value of each reduced expression in the alert. +| Name | Type | Notes | +| ------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| Status | string | `firing` or `resolved`. | +| Labels | KeyValue | A set of labels attached to the alert. | +| Annotations | KeyValue | A set of annotations attached to the alert. | +| StartsAt | time.Time | Time the alert started firing. | +| EndsAt | time.Time | Only set if the end time of an alert is known. Otherwise set to a configurable timeout period from the time since the last alert was received. | +| GeneratorURL | string | A back link to Grafana or external Alertmanager. | +| SilenceURL | string | Link to grafana silence for with labels for this alert pre-filled. Only for Grafana managed alerts. | +| DashboardURL | string | Link to grafana dashboard, if alert rule belongs to one. Only for Grafana managed alerts. | +| PanelURL | string | Link to grafana dashboard panel, if alert rule belongs to one. Only for Grafana managed alerts. | +| Fingerprint | string | Fingerprint that can be used to identify the alert. | +| ValueString | string | A string that contains the labels and value of each reduced expression in the alert. | ## KeyValue @@ -54,23 +53,23 @@ Here is an example containing two annotations: In addition to direct access of data (labels and annotations) stored as KeyValue, there are also methods for sorting, removing and transforming. -Name | Arguments | Returns | Notes -------------|-----------|-----------------------------------------|---------------- -SortedPairs | | Sorted list of key & value string pairs | -Remove | []string | KeyValue | Returns a copy of the Key/Value map without the given keys. -Names | | []string | List of label names -Values | | []string | List of label values +| Name | Arguments | Returns | Notes | +| ----------- | --------- | --------------------------------------- | ----------------------------------------------------------- | +| SortedPairs | | Sorted list of key & value string pairs | +| Remove | []string | KeyValue | Returns a copy of the Key/Value map without the given keys. | +| Names | | []string | List of label names | +| Values | | []string | List of label values | ## Functions Some functions to transform values are also available, along with [default functions provided by Go templating](https://golang.org/pkg/text/template/#hdr-Functions). -Name | Arguments | Returns --------------|------------------------------|---------------------------------------------- -title | string | Capitalizes first character of each word. -toUpper | string | Converts all characters to upper case. -match | pattern, string | Match a string using RegExp. -reReplaceAll | pattern, replacement, string | RegExp substitution, unanchored. -join | string, []string | Concatenates the elements of the second argument to create a single string. First argument is the separator. -safeHtml | string | Marks string as HTML, not requiring auto-escaping. -stringSlice | ...string | Returns passed strings as slice of strings. \ No newline at end of file +| Name | Arguments | Returns | +| ------------ | ---------------------------- | ------------------------------------------------------------------------------------------------------------ | +| title | string | Capitalizes first character of each word. | +| toUpper | string | Converts all characters to upper case. | +| match | pattern, string | Match a string using RegExp. | +| reReplaceAll | pattern, replacement, string | RegExp substitution, unanchored. | +| join | string, []string | Concatenates the elements of the second argument to create a single string. First argument is the separator. | +| safeHtml | string | Marks string as HTML, not requiring auto-escaping. | +| stringSlice | ...string | Returns passed strings as slice of strings. | diff --git a/docs/sources/alerting/unified-alerting/notification-policies.md b/docs/sources/alerting/unified-alerting/notification-policies.md index 40bfbda24c6..579e2ebab9a 100644 --- a/docs/sources/alerting/unified-alerting/notification-policies.md +++ b/docs/sources/alerting/unified-alerting/notification-policies.md @@ -20,7 +20,7 @@ To access notification policy editing page, In the Grafana side bar, hover your ### Edit root notification policy 1. Click **edit** button on the top right of the root policy box. -1. Make changes and click **save** button. +1. Make changes and click **save** button. ### Add new specific policy @@ -32,7 +32,6 @@ To add a nested policy to an existing specific policy, expand the parent policy To edit a specific policy, find it in the specific routing table and click **Edit** button. Make your changes and click **Save policy**. - ### Root policy fields - **Default contact point -** The [contact point]({{< relref "./contact-points.md" >}}) to send notifications to that did not match any specific policy. @@ -44,16 +43,14 @@ Group timing options - **Group interval -** - How long to wait before sending an notification when an alert has been added to a group for which there has already been a notification. Default is 5 minutes. - **Repeat interval -** - How long to wait before re-sending a notification after one has already been sent and no new alerts were added to the group. Default is 4 hours. - ### Specific policy fields - **Contact point -** The [contact point]({{< relref "./contact-points.md" >}}) to send notification to if alert matched this specific policy but did not match any of it's nested policies, or there were no nested specific policies. - **Matching labels -** Rules for matching alert labels. See ["How label matching works"](#how-label-matching-works) below for details. -- **Continue matching subsequent sibling nodes -** If not enabled and an alert matches this policy but not any of it's nested policies, matching will stop and a notification will be sent to the contact point defined on this policy. If enabled, notification will be sent but alert will continue matching subsequent siblings of this policy, thus sending more than one notification. Use this if for example you want to send notification to a catch-all contact point as well as to one of more specific contact points handled by subsequent policies. -- **Override grouping** - Toggle if you want to override grouping for this policy. If toggled, you will be able to specify grouping same as for root policy described above. If not toggled, root policy grouping will be used. +- **Continue matching subsequent sibling nodes -** If not enabled and an alert matches this policy but not any of it's nested policies, matching will stop and a notification will be sent to the contact point defined on this policy. If enabled, notification will be sent but alert will continue matching subsequent siblings of this policy, thus sending more than one notification. Use this if for example you want to send notification to a catch-all contact point as well as to one of more specific contact points handled by subsequent policies. +- **Override grouping** - Toggle if you want to override grouping for this policy. If toggled, you will be able to specify grouping same as for root policy described above. If not toggled, root policy grouping will be used. - **Override group timings** Toggle if you want to override group timings for this policy. If toggled, you will be able to specify group timings same as for root policy described above. If not toggled, root policy group timings will be used. - ### How label matching works A policy will match an alert if alert's labels match all of the "Matching Labels" specified on the policy. @@ -63,15 +60,14 @@ A policy will match an alert if alert's labels match all of the "Matching Labels - The **Regex** checkbox specifies if the inputted **Value** should be matched against labels as a regular expression. The regular expression is always anchored. If not selected it is an exact string match. - The **Equal** checkbox specifies if the match should include alert instances that match or do not match. If not checked, the silence includes alert instances _do not_ match. - ## Example setup One usage example would be: -* Create a "default" contact point for most alerts with a non invasive contact point type, like a slack message, and set it on root policy -* Edit root policy grouping to group alerts by `cluster`, `namespace` and `alertname` so you get a notification per alert rule and specific k8s cluster & namespace. -* Create specific route for alerts coming from development cluster with an appropriate contact point -* Create a specific route for alerts with "critical" severity with a more invasive contact point type, like pager duty notification -* Create specific routes for particular teams that handle their own onduty rotations -![Notification policies screenshot](/static/img/docs/alerting/unified/notification-policies-8-0.png 'Notification policies screenshot') +- Create a "default" contact point for most alerts with a non invasive contact point type, like a slack message, and set it on root policy +- Edit root policy grouping to group alerts by `cluster`, `namespace` and `alertname` so you get a notification per alert rule and specific k8s cluster & namespace. +- Create specific route for alerts coming from development cluster with an appropriate contact point +- Create a specific route for alerts with "critical" severity with a more invasive contact point type, like pager duty notification +- Create specific routes for particular teams that handle their own onduty rotations +![Notification policies screenshot](/static/img/docs/alerting/unified/notification-policies-8-0.png 'Notification policies screenshot') diff --git a/docs/sources/alerting/unified-alerting/opt-in.md b/docs/sources/alerting/unified-alerting/opt-in.md index dbd8edea798..dfbcab2e8b9 100644 --- a/docs/sources/alerting/unified-alerting/opt-in.md +++ b/docs/sources/alerting/unified-alerting/opt-in.md @@ -8,11 +8,11 @@ weight = 128 Setting the `ngalert` feature toggle enables the new Grafana 8 alerting system. ->**Note:** We recommend that you backup Grafana's database before enabling this feature. If you are using PostgreSQL as the backend data source, then the minimum required version is 9.5. +> **Note:** We recommend that you backup Grafana's database before enabling this feature. If you are using PostgreSQL as the backend data source, then the minimum required version is 9.5. At startup, when [the feature toggle is enabled]({{< relref "../../administration/configuration.md">}}#feature_toggles), the legacy Grafana dashboard alerting is disabled and existing dashboard alerts are migrated into a format that is compatible with the Grafana 8 alerting system. You can view these migrated rules, alongside any new alerts you create after the migration, from the Alerting page of your Grafana instance. ->**Note:** Since the new system stores the notification log and silences on disk, we require the use of persistent disks for using Grafana 8 alerts. Otherwise, the silences and notification log will get lost on a restart, and you might get unwanted or duplicate notifications. +> **Note:** Since the new system stores the notification log and silences on disk, we require the use of persistent disks for using Grafana 8 alerts. Otherwise, the silences and notification log will get lost on a restart, and you might get unwanted or duplicate notifications. Read and write access to dashboard alerts in Grafana versions 7 and earlier were governed by the dashboard and folder permissions under which the alerts were stored. In Grafana 8, alerts are stored in folders and inherit the permissions of those folders. During the migration, dashboard alert permissions are matched to the new rules permissions as follows: @@ -20,7 +20,7 @@ Read and write access to dashboard alerts in Grafana versions 7 and earlier were - If there are no dashboard permissions and the dashboard is under a folder, then the rule is linked to this folder and inherits its permissions. - If there are no dashboard permissions and the dashboard is under the General folder, then the rule is linked to the `General Alerting` folder and the rule inherits the default permissions. -During beta, Grafana 8 alerting system can retrieve rules from all available Prometheus, Loki, and Alertmanager data sources. It might not be able to fetch rules from all other supported data sources at this time. +During beta, Grafana 8 alerting system can retrieve rules from all available Prometheus, Loki, and Alertmanager data sources. It might not be able to fetch rules from all other supported data sources at this time. Also notification channels are migrated to an Alertmanager configuration with the appropriate routes and receivers. Default notification channels are added as contact points to the default route. Notification channels not associated with any Dashboard alert go to the `autogen-unlinked-channel-recv` route. @@ -28,6 +28,7 @@ Since `Hipchat` and `Sensu` are discontinued, they are not migrated to the new a Finally, silences (expiring after one year) are created for all paused dashboard alerts. ## Disabling Grafana 8 Alerting after migration + To disable Grafana 8 Alerting, remove or disable the `ngalert` feature toggle. Dashboard alerts will be re-enabled and any alerts created during or after the migration are deleted. ->**Note:** Any alerting rules created in the Grafana 8 Alerting system will be lost when migrating back to dashboard alerts +> **Note:** Any alerting rules created in the Grafana 8 Alerting system will be lost when migrating back to dashboard alerts diff --git a/docs/sources/alerting/unified-alerting/silences.md b/docs/sources/alerting/unified-alerting/silences.md index 949939e3157..0b892496480 100644 --- a/docs/sources/alerting/unified-alerting/silences.md +++ b/docs/sources/alerting/unified-alerting/silences.md @@ -23,7 +23,7 @@ To add a silence: 1. Click the **New Silence** button. 1. Select the start and end date in **Silence start and end** to indicate when the silence should go into effect and expire. 1. Optionally, update the **Duration** to alter the time for the end of silence in the previous step to correspond to the start plus the duration. -1. Enter one or more *Matching Labels* by filling out the **Name** and **Value** fields. Matchers determine which rules the silence will apply to. +1. Enter one or more _Matching Labels_ by filling out the **Name** and **Value** fields. Matchers determine which rules the silence will apply to. 1. Enter a **Comment**. 1. Enter the name of the owner in **Creator**. 1. Click **Create**. @@ -46,12 +46,12 @@ Alert instances that have labels that match all of the "Matching Labels" specifi ## Manage silences for an external Alertmanager -Grafana alerting UI supports managing external Alertmanager silences. Once you add an [Alertmanager data source]({{< relref "../../datasources/alertmanager.md" >}}), a dropdown displays at the top of the page where you can select either `Grafana` or an external Alertmanager as your data source. +Grafana alerting UI supports managing external Alertmanager silences. Once you add an [Alertmanager data source]({{< relref "../../datasources/alertmanager.md" >}}), a dropdown displays at the top of the page where you can select either `Grafana` or an external Alertmanager as your data source. ## Create a URL to silence form with defaults filled in When linking to silence form, you can provide default matching labels and comment via `matchers` and `comment` query parameters. `matchers` expects one more matching labels of type `[label][operator][value]` joined by a comma. `operator` can be one of `=` (equals, not regex), `!=` (not equals, not regex), `=~` (equals, regex), `!~` (not equals, not regex). -For example, to link to silence form with matching labels `severity=critical` & `cluster!~europe-.*` and comment `Silence critical EU alerts`, create a URL `https://mygrafana/aleting/silence/new?matchers=severity%3Dcritical%2Ccluster!~europe-*&comment=Silence%20critical%20EU%20alert`. +For example, to link to silence form with matching labels `severity=critical` & `cluster!~europe-.*` and comment `Silence critical EU alerts`, create a URL `https://mygrafana/aleting/silence/new?matchers=severity%3Dcritical%2Ccluster!~europe-*&comment=Silence%20critical%20EU%20alert`. To link to a new silence page for an [external Alertmanager]({{< relref "../../datasources/alertmanager.md" >}}), add a `alertmanager` query parameter with the Alertmanager data source name. diff --git a/docs/sources/auth/_index.md b/docs/sources/auth/_index.md index b73023209d9..719b5c758aa 100644 --- a/docs/sources/auth/_index.md +++ b/docs/sources/auth/_index.md @@ -12,14 +12,14 @@ Here is a table showing all supported authentication providers and the features See also, [Grafana Authentication]({{< relref "grafana.md" >}}). -Provider | Support | Role mapping | Team sync
*(Enterprise only)* | Active sync
*(Enterprise only)* --------- | :-----: | :----------: | :-------: | :---------: -[Auth Proxy]({{< relref "auth-proxy.md" >}}) | v2.1+ | - | v6.3+ | - -[Azure AD OAuth]({{< relref "azuread.md" >}}) | v6.7+ | v6.7+ | v6.7+ | - -[Generic OAuth]({{< relref "generic-oauth.md" >}}) | v4.0+ | v6.5+ | - | - -[GitHub OAuth]({{< relref "github.md" >}}) | v2.0+ | - | v6.3+ | - -[GitLab OAuth]({{< relref "gitlab.md" >}}) | v5.3+ | - | v6.4+ | - -[Google OAuth]({{< relref "google.md" >}}) | v2.0+ | - | - | - -[LDAP]({{< relref "ldap.md" >}}) | v2.1+ | v2.1+ | v5.3+ | v6.3+ -[Okta OAuth]({{< relref "okta.md" >}}) | v7.0+ | v7.0+ | v7.0+ | - -[SAML]({{< relref "../enterprise/saml.md" >}}) (Enterprise only) | v6.3+ | v7.0+ | v7.0+ | - +| Provider | Support | Role mapping | Team sync
_(Enterprise only)_ | Active sync
_(Enterprise only)_ | +| ---------------------------------------------------------------- | :-----: | :----------: | :-------------------------------: | :---------------------------------: | +| [Auth Proxy]({{< relref "auth-proxy.md" >}}) | v2.1+ | - | v6.3+ | - | +| [Azure AD OAuth]({{< relref "azuread.md" >}}) | v6.7+ | v6.7+ | v6.7+ | - | +| [Generic OAuth]({{< relref "generic-oauth.md" >}}) | v4.0+ | v6.5+ | - | - | +| [GitHub OAuth]({{< relref "github.md" >}}) | v2.0+ | - | v6.3+ | - | +| [GitLab OAuth]({{< relref "gitlab.md" >}}) | v5.3+ | - | v6.4+ | - | +| [Google OAuth]({{< relref "google.md" >}}) | v2.0+ | - | - | - | +| [LDAP]({{< relref "ldap.md" >}}) | v2.1+ | v2.1+ | v5.3+ | v6.3+ | +| [Okta OAuth]({{< relref "okta.md" >}}) | v7.0+ | v7.0+ | v7.0+ | - | +| [SAML]({{< relref "../enterprise/saml.md" >}}) (Enterprise only) | v6.3+ | v7.0+ | v7.0+ | - | diff --git a/docs/sources/auth/auth-proxy.md b/docs/sources/auth/auth-proxy.md index 5e5b8449952..b01a2efb451 100755 --- a/docs/sources/auth/auth-proxy.md +++ b/docs/sources/auth/auth-proxy.md @@ -73,7 +73,6 @@ I’ll demonstrate how to use Apache for authenticating users. In this example w In this example we use Apache as a reverse proxy in front of Grafana. Apache handles the Authentication of users before forwarding requests to the Grafana backend service. - #### Apache configuration ```bash @@ -107,11 +106,11 @@ In this example we use Apache as a reverse proxy in front of Grafana. Apache han - We use a **\** configuration block for applying our authentication rules to every proxied request. These rules include requiring basic authentication where user:password credentials are stored in the **/etc/apache2/grafana_htpasswd** file. This file can be created with the `htpasswd` command. - - The next part of the configuration is the tricky part. We use Apache’s rewrite engine to create our **X-WEBAUTH-USER header**, populated with the authenticated user. + - The next part of the configuration is the tricky part. We use Apache’s rewrite engine to create our **X-WEBAUTH-USER header**, populated with the authenticated user. - - **RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER}, NS]**: This line is a little bit of magic. What it does, is for every request use the rewriteEngines look-ahead (LA-U) feature to determine what the REMOTE_USER variable would be set to after processing the request. Then assign the result to the variable PROXY_USER. This is necessary as the REMOTE_USER variable is not available to the RequestHeader function. + - **RewriteRule .\* - [E=PROXY_USER:%{LA-U:REMOTE_USER}, NS]**: This line is a little bit of magic. What it does, is for every request use the rewriteEngines look-ahead (LA-U) feature to determine what the REMOTE_USER variable would be set to after processing the request. Then assign the result to the variable PROXY_USER. This is necessary as the REMOTE_USER variable is not available to the RequestHeader function. - - **RequestHeader set X-WEBAUTH-USER “%{PROXY_USER}e”**: With the authenticated username now stored in the PROXY_USER variable, we create a new HTTP request header that will be sent to our backend Grafana containing the username. + - **RequestHeader set X-WEBAUTH-USER “%{PROXY_USER}e”**: With the authenticated username now stored in the PROXY_USER variable, we create a new HTTP request header that will be sent to our backend Grafana containing the username. - The **RequestHeader unset Authorization** removes the Authorization header from the HTTP request before it is forwarded to Grafana. This ensures that Grafana does not try to authenticate the user using these credentials (BasicAuth is a supported authentication handler in Grafana). @@ -204,15 +203,15 @@ ProxyPassReverse / http://grafana:3000/ - Create a htpasswd file. We create a new user **anthony** with the password **password** - ```bash - htpasswd -bc htpasswd anthony password - ``` + ```bash + htpasswd -bc htpasswd anthony password + ``` - Launch the httpd container using our custom httpd.conf and our htpasswd file. The container will listen on port 80, and we create a link to the **grafana** container so that this container can resolve the hostname **grafana** to the Grafana container’s IP address. - ```bash - docker run -i -p 80:80 --link grafana:grafana -v $(pwd)/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $(pwd)/htpasswd:/tmp/htpasswd httpd:2.4 - ``` + ```bash + docker run -i -p 80:80 --link grafana:grafana -v $(pwd)/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $(pwd)/htpasswd:/tmp/htpasswd httpd:2.4 + ``` ### Use grafana. @@ -224,7 +223,7 @@ With our Grafana and Apache containers running, you can now connect to http://lo With Team Sync, it's possible to set up synchronization between teams in your authentication provider and Grafana. You can send Grafana values as part of an HTTP header and have Grafana map them to your team structure. This allows you to put users into specific teams automatically. -To support the feature, auth proxy allows optional headers to map additional user attributes. The specific attribute to support team sync is `Groups`. +To support the feature, auth proxy allows optional headers to map additional user attributes. The specific attribute to support team sync is `Groups`. ```bash # Optionally define more headers to sync other user attributes @@ -293,7 +292,6 @@ With this, the user `leonard` will be automatically placed into the Loki team as [Learn more about Team Sync]({{< relref "team-sync.md" >}}) - ## Login token and session cookie With `enable_login_token` set to `true` Grafana will, after successful auth proxy header validation, assign the user diff --git a/docs/sources/auth/azuread.md b/docs/sources/auth/azuread.md index 70d851c8d41..15209bcbd7e 100644 --- a/docs/sources/auth/azuread.md +++ b/docs/sources/auth/azuread.md @@ -42,49 +42,49 @@ To enable the Azure AD OAuth2 you must register your application with Azure AD. - Define the required Application Role values for Grafana: Viewer, Editor, Admin. Otherwise, all users will have the Viewer role. - Every role requires a unique ID. - Generate the unique ID on Linux with `uuidgen`, and on Windows through Microsoft - PowerShell with `New-Guid`. + PowerShell with `New-Guid`. - Include the unique ID in the configuration file: - ```json - "appRoles": [ - { - "allowedMemberTypes": [ - "User" - ], - "description": "Grafana admin Users", - "displayName": "Grafana Admin", - "id": "SOME_UNIQUE_ID", - "isEnabled": true, - "lang": null, - "origin": "Application", - "value": "Admin" - }, - { - "allowedMemberTypes": [ - "User" - ], - "description": "Grafana read only Users", - "displayName": "Grafana Viewer", - "id": "SOME_UNIQUE_ID", - "isEnabled": true, - "lang": null, - "origin": "Application", - "value": "Viewer" - }, - { - "allowedMemberTypes": [ - "User" - ], - "description": "Grafana Editor Users", - "displayName": "Grafana Editor", - "id": "SOME_UNIQUE_ID", - "isEnabled": true, - "lang": null, - "origin": "Application", - "value": "Editor" - } - ], - ``` + ```json + "appRoles": [ + { + "allowedMemberTypes": [ + "User" + ], + "description": "Grafana admin Users", + "displayName": "Grafana Admin", + "id": "SOME_UNIQUE_ID", + "isEnabled": true, + "lang": null, + "origin": "Application", + "value": "Admin" + }, + { + "allowedMemberTypes": [ + "User" + ], + "description": "Grafana read only Users", + "displayName": "Grafana Viewer", + "id": "SOME_UNIQUE_ID", + "isEnabled": true, + "lang": null, + "origin": "Application", + "value": "Viewer" + }, + { + "allowedMemberTypes": [ + "User" + ], + "description": "Grafana Editor Users", + "displayName": "Grafana Editor", + "id": "SOME_UNIQUE_ID", + "isEnabled": true, + "lang": null, + "origin": "Application", + "value": "Editor" + } + ], + ``` 1. Go to **Azure Active Directory** and then to **Enterprise Applications**. Search for your application and click on it. @@ -139,7 +139,7 @@ allowed_domains = mycompany.com mycompany.org ### Team Sync (Enterprise only) -> Only available in Grafana Enterprise v6.7+ +> Only available in Grafana Enterprise v6.7+ With Team Sync you can map your Azure AD groups to teams in Grafana so that your users will automatically be added to the correct teams. diff --git a/docs/sources/auth/generic-oauth.md b/docs/sources/auth/generic-oauth.md index b21e6ab2854..1b02f72cf04 100755 --- a/docs/sources/auth/generic-oauth.md +++ b/docs/sources/auth/generic-oauth.md @@ -8,6 +8,7 @@ weight = 500 # Generic OAuth authentication You can configure many different OAuth2 authentication services with Grafana using the generic OAuth2 feature. Examples: + - [Generic OAuth authentication](#generic-oauth-authentication) - [Set up OAuth2 with Auth0](#set-up-oauth2-with-auth0) - [Set up OAuth2 with Bitbucket](#set-up-oauth2-with-bitbucket) @@ -45,6 +46,7 @@ tls_client_ca = Set `api_url` to the resource that returns [OpenID UserInfo](https://connect2id.com/products/server/docs/api/userinfo) compatible information. You can also specify the SSL/TLS configuration used by the client. + - Set `tls_client_cert` to the path of the certificate. - Set `tls_client_key` to the path containing the key. - Set `tls_client_ca` to the path containing a trusted certificate authority list. @@ -57,7 +59,7 @@ Grafana will attempt to determine the user's e-mail address by querying the OAut 1. Check for the presence of an e-mail address via the `email` field encoded in the OAuth `id_token` parameter. 1. Check for the presence of an e-mail address using the [JMESPath](http://jmespath.org/examples.html) specified via the `email_attribute_path` configuration option. The JSON used for the path lookup is the HTTP response obtained from querying the UserInfo endpoint specified via the `api_url` configuration option. -**Note**: Only available in Grafana v6.4+. + **Note**: Only available in Grafana v6.4+. 1. Check for the presence of an e-mail address in the `attributes` map encoded in the OAuth `id_token` parameter. By default Grafana will perform a lookup into the attributes map using the `email:primary` key, however, this is configurable and can be adjusted by using the `email_attribute_name` configuration option. 1. Query the `/emails` endpoint of the OAuth provider's API (configured with `api_url`) and check for the presence of an e-mail address marked as a primary address. 1. If no e-mail address is found in steps (1-4), then the e-mail address of the user is set to the empty string. @@ -86,28 +88,30 @@ You can set the user's display name with JMESPath using the `name_attribute_path ## Set up OAuth2 with Auth0 1. Create a new Client in Auth0 - - Name: Grafana - - Type: Regular Web Application + + - Name: Grafana + - Type: Regular Web Application 1. Go to the Settings tab and set: - - Allowed Callback URLs: `https:///login/generic_oauth` + + - Allowed Callback URLs: `https:///login/generic_oauth` 1. Click Save Changes, then use the values at the top of the page to configure Grafana: - ```bash - [auth.generic_oauth] - enabled = true - allow_sign_up = true - team_ids = - allowed_organizations = - name = Auth0 - client_id = - client_secret = - scopes = openid profile email - auth_url = https:///authorize - token_url = https:///oauth/token - api_url = https:///userinfo - ``` + ```bash + [auth.generic_oauth] + enabled = true + allow_sign_up = true + team_ids = + allowed_organizations = + name = Auth0 + client_id = + client_secret = + scopes = openid profile email + auth_url = https:///authorize + token_url = https:///oauth/token + api_url = https:///userinfo + ``` ## Set up OAuth2 with Bitbucket @@ -144,53 +148,57 @@ allowed_organizations = 1. Configure Grafana as follows: - ```bash - [auth.generic_oauth] - name = Centrify - enabled = true - allow_sign_up = true - client_id = - client_secret = .my.centrify.com/OAuth2/Authorize/ - token_url = https://.my.centrify.com/OAuth2/Token/ - api_url = https://.my.centrify.com/OAuth2/UserInfo/ - ``` + ```bash + [auth.generic_oauth] + name = Centrify + enabled = true + allow_sign_up = true + client_id = + client_secret = .my.centrify.com/OAuth2/Authorize/ + token_url = https://.my.centrify.com/OAuth2/Token/ + api_url = https://.my.centrify.com/OAuth2/UserInfo/ + ``` ## Set up OAuth2 with OneLogin 1. Create a new Custom Connector with the following settings: - - Name: Grafana - - Sign On Method: OpenID Connect - - Redirect URI: `https:///login/generic_oauth` - - Signing Algorithm: RS256 - - Login URL: `https:///login/generic_oauth` - then: + - Name: Grafana + - Sign On Method: OpenID Connect + - Redirect URI: `https:///login/generic_oauth` + - Signing Algorithm: RS256 + - Login URL: `https:///login/generic_oauth` + + then: + 1. Add an App to the Grafana Connector: - - Display Name: Grafana - then: + - Display Name: Grafana + + then: + 1. Under the SSO tab on the Grafana App details page you'll find the Client ID and Client Secret. - Your OneLogin Domain will match the URL you use to access OneLogin. - - Configure Grafana as follows: - - ```bash - [auth.generic_oauth] - name = OneLogin - enabled = true - allow_sign_up = true - client_id = - client_secret = - scopes = openid email name - auth_url = https://.onelogin.com/oidc/2/auth - token_url = https://.onelogin.com/oidc/2/token - api_url = https://.onelogin.com/oidc/2/me - team_ids = - allowed_organizations = - ``` + Your OneLogin Domain will match the URL you use to access OneLogin. + + Configure Grafana as follows: + + ```bash + [auth.generic_oauth] + name = OneLogin + enabled = true + allow_sign_up = true + client_id = + client_secret = + scopes = openid email name + auth_url = https://.onelogin.com/oidc/2/auth + token_url = https://.onelogin.com/oidc/2/token + api_url = https://.onelogin.com/oidc/2/me + team_ids = + allowed_organizations = + ``` ## JMESPath examples @@ -205,6 +213,7 @@ If  the`role_attribute_path` property does not return a role, then the user is In the following example user will get `Editor` as role when authenticating. The value of the property `role` will be the resulting role if the role is a proper Grafana role, i.e. `Viewer`, `Editor` or `Admin`. Payload: + ```json { ... @@ -214,6 +223,7 @@ Payload: ``` Config: + ```bash role_attribute_path = role ``` @@ -223,6 +233,7 @@ role_attribute_path = role In the following example user will get `Admin` as role when authenticating since it has a role `admin`. If a user has a role `editor` it will get `Editor` as role, otherwise `Viewer`. Payload: + ```json { ... @@ -239,14 +250,14 @@ Payload: ``` Config: + ```bash role_attribute_path = contains(info.roles[*], 'admin') && 'Admin' || contains(info.roles[*], 'editor') && 'Editor' || 'Viewer' ``` - ### Groups mapping -> Available in Grafana Enterprise v8.1 and later versions. +> Available in Grafana Enterprise v8.1 and later versions. With Team Sync you can map your Generic OAuth groups to teams in Grafana so that the users are automatically added to the correct teams. @@ -261,6 +272,7 @@ groups_attribute_path = info.groups ``` Payload: + ```json { ... @@ -274,4 +286,4 @@ Payload: }, ... } -``` \ No newline at end of file +``` diff --git a/docs/sources/auth/github.md b/docs/sources/auth/github.md index b3753de676d..5cf1bbb5dfa 100644 --- a/docs/sources/auth/github.md +++ b/docs/sources/auth/github.md @@ -11,7 +11,7 @@ To enable the GitHub OAuth2 you must register your application with GitHub. GitH ## Configure GitHub OAuth application -You need to create a GitHub OAuth application (you will find this under the GitHub +You need to create a GitHub OAuth application (you will find this under the GitHub settings page). When you create the application you will need to specify a callback URL. Specify this as callback: @@ -96,7 +96,7 @@ allowed_organizations = github google ### Team Sync (Enterprise only) -> Only available in Grafana Enterprise v6.3+ +> Only available in Grafana Enterprise v6.3+ With Team Sync you can map your GitHub org teams to teams in Grafana so that your users will automatically be added to the correct teams. diff --git a/docs/sources/auth/gitlab.md b/docs/sources/auth/gitlab.md index 7ec1ff99ecc..56d4e5accbf 100644 --- a/docs/sources/auth/gitlab.md +++ b/docs/sources/auth/gitlab.md @@ -12,7 +12,7 @@ To enable GitLab OAuth2 you must register the application in GitLab. GitLab will ## Create GitLab OAuth keys You need to [create a GitLab OAuth application](https://docs.gitlab.com/ce/integration/oauth_provider.html). -Choose a descriptive *Name*, and use the following *Redirect URI*: +Choose a descriptive _Name_, and use the following _Redirect URI_: ``` https://grafana.example.com/login/gitlab @@ -26,12 +26,12 @@ instance, if you access Grafana at `http://203.0.113.31:3000`, you should use http://203.0.113.31:3000/login/gitlab ``` -Finally, select *read_api* as the *Scope* and submit the form. Note that if you're +Finally, select _read_api_ as the _Scope_ and submit the form. Note that if you're not going to use GitLab groups for authorization (i.e. not setting -`allowed_groups`, see below), you can select *read_user* instead of *read_api* as -the *Scope*, thus giving a more restricted access to your GitLab API. +`allowed_groups`, see below), you can select _read_user_ instead of _read_api_ as +the _Scope_, thus giving a more restricted access to your GitLab API. -You'll get an *Application Id* and a *Secret* in return; we'll call them +You'll get an _Application Id_ and a _Secret_ in return; we'll call them `GITLAB_APPLICATION_ID` and `GITLAB_SECRET` respectively for the rest of this section. @@ -63,7 +63,7 @@ If you use your own instance of GitLab instead of `gitlab.com`, adjust hostname with your own. With `allow_sign_up` set to `false`, only existing users will be able to login -using their GitLab account, but with `allow_sign_up` set to `true`, *any* user +using their GitLab account, but with `allow_sign_up` set to `true`, _any_ user who can authenticate on GitLab will be able to login on your Grafana instance; if you use the public `gitlab.com`, it means anyone in the world would be able to login on your Grafana instance. @@ -78,7 +78,6 @@ groups](https://docs.gitlab.com/ce/user/group/index.html), set `allowed_groups` to a comma- or space-separated list of groups. For instance, if you want to only give access to members of the `example` group, set - ```ini allowed_groups = example ``` diff --git a/docs/sources/auth/grafana.md b/docs/sources/auth/grafana.md index d73e233ad8e..0998df0546e 100644 --- a/docs/sources/auth/grafana.md +++ b/docs/sources/auth/grafana.md @@ -20,7 +20,7 @@ These short-lived tokens are rotated each `token_rotation_interval_minutes` for An active authenticated user that gets it token rotated will extend the `login_maximum_inactive_lifetime_duration` time from "now" that Grafana will remember the user. This means that a user can close its browser and come back before `now + login_maximum_inactive_lifetime_duration` and still being authenticated. - This is true as long as the time since user login is less than `login_maximum_lifetime_duration`. +This is true as long as the time since user login is less than `login_maximum_lifetime_duration`. #### Remote logout diff --git a/docs/sources/auth/jwt.md b/docs/sources/auth/jwt.md index c0f0e0dc83f..c484baac9fa 100644 --- a/docs/sources/auth/jwt.md +++ b/docs/sources/auth/jwt.md @@ -8,13 +8,15 @@ weight = 250 # JWT authentication You can configure Grafana to accept a JWT token provided in the HTTP header. The token is verified using any of the following: + - PEM-encoded key file -- JSON Web Key Set (JWKS) in a local file +- JSON Web Key Set (JWKS) in a local file - JWKS provided by the configured JWKS endpoint ## Enable JWT To use JWT authentication: + 1. Enable JWT in the [main config file]({{< relref "../administration/configuration.md" >}}). 1. Specify the header name that contains a token. diff --git a/docs/sources/auth/ldap.md b/docs/sources/auth/ldap.md index 06b6add47ea..ec161a2353e 100644 --- a/docs/sources/auth/ldap.md +++ b/docs/sources/auth/ldap.md @@ -45,6 +45,7 @@ Depending on which LDAP server you're using and how that's configured your Grafa See [configuration examples](#configuration-examples) for more information. **LDAP specific configuration file (ldap.toml) example:** + ```bash [[servers]] # Ldap server host (specify multiple hosts space separated) @@ -104,12 +105,11 @@ Within this view, you'll be able to see which LDAP servers are currently reachab {{< figure src="/static/img/docs/ldap_debug.png" class="docs-image--no-shadow" max-width="600px" >}} - To use the debug view: - 1. Type the username of a user that exists within any of your LDAP server(s) - 1. Then, press "Run" - 1. If the user is found within any of your LDAP instances, the mapping information is displayed +1. Type the username of a user that exists within any of your LDAP server(s) +1. Then, press "Run" +1. If the user is found within any of your LDAP instances, the mapping information is displayed {{< figure src="/static/img/docs/ldap_debug_mapping_testing.png" class="docs-image--no-shadow" max-width="600px" >}} @@ -138,6 +138,7 @@ In this case you skip providing a `bind_password` and instead provide a `bind_dn The search filter and search bases settings are still needed to perform the LDAP search to retrieve the other LDAP information (like LDAP groups and email). ### POSIX schema + If your LDAP server does not support the memberOf attribute add these options: ```bash @@ -151,13 +152,14 @@ group_search_filter_user_attribute = "uid" ### Group Mappings -In `[[servers.group_mappings]]` you can map an LDAP group to a Grafana organization and role. These will be synced every time the user logs in, with LDAP being +In `[[servers.group_mappings]]` you can map an LDAP group to a Grafana organization and role. These will be synced every time the user logs in, with LDAP being the authoritative source. So, if you change a user's role in the Grafana Org. Users page, this change will be reset the next time the user logs in. If you change the LDAP groups of a user, the change will take effect the next time the user logs in. The first group mapping that an LDAP user is matched to will be used for the sync. If you have LDAP users that fit multiple mappings, the topmost mapping in the TOML configuration will be used. **LDAP specific configuration file (ldap.toml) example:** + ```bash [[servers]] # other settings omitted for clarity @@ -180,12 +182,12 @@ group_dn = "*" org_role = "Viewer" ``` -Setting | Required | Description | Default ------------- | ------------ | ------------- | ------------- -`group_dn` | Yes | LDAP distinguished name (DN) of LDAP group. If you want to match all (or no LDAP groups) then you can use wildcard (`"*"`) | -`org_role` | Yes | Assign users of `group_dn` the organization role `"Admin"`, `"Editor"` or `"Viewer"` | -`org_id` | No | The Grafana organization database id. Setting this allows for multiple group_dn's to be assigned to the same `org_role` provided the `org_id` differs | `1` (default org id) -`grafana_admin` | No | When `true` makes user of `group_dn` Grafana server admin. A Grafana server admin has admin access over all organizations and users. Available in Grafana v5.3 and above | `false` +| Setting | Required | Description | Default | +| --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- | +| `group_dn` | Yes | LDAP distinguished name (DN) of LDAP group. If you want to match all (or no LDAP groups) then you can use wildcard (`"*"`) | +| `org_role` | Yes | Assign users of `group_dn` the organization role `"Admin"`, `"Editor"` or `"Viewer"` | +| `org_id` | No | The Grafana organization database id. Setting this allows for multiple group_dn's to be assigned to the same `org_role` provided the `org_id` differs | `1` (default org id) | +| `grafana_admin` | No | When `true` makes user of `group_dn` Grafana server admin. A Grafana server admin has admin access over all organizations and users. Available in Grafana v5.3 and above | `false` | ### Nested/recursive group membership @@ -193,6 +195,7 @@ Users with nested/recursive group membership must have an LDAP server that suppo and configure `group_search_filter` in a way that it returns the groups the submitted username is a member of. To configure `group_search_filter`: + - You can set `group_search_base_dns` to specify where the matching groups are defined. - If you do not use `group_search_base_dns`, then the previously defined `search_base_dns` is used. @@ -224,6 +227,7 @@ For troubleshooting, by changing `member_of` in `[servers.attributes]` to "dn" i [OpenLDAP](http://www.openldap.org/) is an open source directory service. **LDAP specific configuration file (ldap.toml):** + ```bash [[servers]] host = "127.0.0.1" @@ -248,6 +252,7 @@ email = "email" Grafana does support receiving information from multiple LDAP servers. **LDAP specific configuration file (ldap.toml):** + ```bash # --- First LDAP Server --- @@ -300,7 +305,7 @@ org_role = "Viewer" ### Active Directory -[Active Directory](https://technet.microsoft.com/en-us/library/hh831484(v=ws.11).aspx) is a directory service which is commonly used in Windows environments. +[Active Directory]() is a directory service which is commonly used in Windows environments. Assuming the following Active Directory server setup: @@ -309,6 +314,7 @@ Assuming the following Active Directory server setup: - DNS name: `corp.local` **LDAP specific configuration file (ldap.toml):** + ```bash [[servers]] host = "10.0.0.1" @@ -327,12 +333,10 @@ email = "mail" # [[servers.group_mappings]] omitted for clarity ``` - - #### Port requirements In above example SSL is enabled and an encrypted port have been configured. If your Active Directory don't support SSL please change `enable_ssl = false` and `port = 389`. -Please inspect your Active Directory configuration and documentation to find the correct settings. For more information about Active Directory and port requirements see [link](https://technet.microsoft.com/en-us/library/dd772723(v=ws.10)). +Please inspect your Active Directory configuration and documentation to find the correct settings. For more information about Active Directory and port requirements see [link](). ## Troubleshooting diff --git a/docs/sources/auth/overview.md b/docs/sources/auth/overview.md index 5c64172fa8c..22d365414be 100644 --- a/docs/sources/auth/overview.md +++ b/docs/sources/auth/overview.md @@ -10,18 +10,18 @@ Grafana provides many ways to authenticate users. Some authentication integratio Here is a table showing all supported authentication providers and the features available for them. [Team sync]({{< relref "../enterprise/team-sync.md" >}}) and [active sync]({{< relref "../enterprise/enhanced_ldap.md#active-ldap-synchronization" >}}) are only available in Grafana Enterprise. -Provider | Support | Role mapping | Team sync
*(Enterprise only)* | Active sync
*(Enterprise only)* --------- | :-----: | :----------: | :-------: | :---------: -[Auth Proxy]({{< relref "auth-proxy.md" >}}) | v2.1+ | - | v6.3+ | - -[Azure AD OAuth]({{< relref "azuread.md" >}}) | v6.7+ | v6.7+ | v6.7+ | - -[Generic OAuth]({{< relref "generic-oauth.md" >}}) | v4.0+ | v6.5+ | - | - -[GitHub OAuth]({{< relref "github.md" >}}) | v2.0+ | - | v6.3+ | - -[GitLab OAuth]({{< relref "gitlab.md" >}}) | v5.3+ | - | v6.4+ | - -[Google OAuth]({{< relref "google.md" >}}) | v2.0+ | - | - | - -[JWT]({{< relref "jwt.md" >}}) | v8.0+ | - | - | - -[LDAP]({{< relref "ldap.md" >}}) | v2.1+ | v2.1+ | v5.3+ | v6.3+ -[Okta OAuth]({{< relref "okta.md" >}}) | v7.0+ | v7.0+ | v7.0+ | - -[SAML]({{< relref "../enterprise/saml.md" >}}) (Enterprise only) | v6.3+ | v7.0+ | v7.0+ | - +| Provider | Support | Role mapping | Team sync
_(Enterprise only)_ | Active sync
_(Enterprise only)_ | +| ---------------------------------------------------------------- | :-----: | :----------: | :-------------------------------: | :---------------------------------: | +| [Auth Proxy]({{< relref "auth-proxy.md" >}}) | v2.1+ | - | v6.3+ | - | +| [Azure AD OAuth]({{< relref "azuread.md" >}}) | v6.7+ | v6.7+ | v6.7+ | - | +| [Generic OAuth]({{< relref "generic-oauth.md" >}}) | v4.0+ | v6.5+ | - | - | +| [GitHub OAuth]({{< relref "github.md" >}}) | v2.0+ | - | v6.3+ | - | +| [GitLab OAuth]({{< relref "gitlab.md" >}}) | v5.3+ | - | v6.4+ | - | +| [Google OAuth]({{< relref "google.md" >}}) | v2.0+ | - | - | - | +| [JWT]({{< relref "jwt.md" >}}) | v8.0+ | - | - | - | +| [LDAP]({{< relref "ldap.md" >}}) | v2.1+ | v2.1+ | v5.3+ | v6.3+ | +| [Okta OAuth]({{< relref "okta.md" >}}) | v7.0+ | v7.0+ | v7.0+ | - | +| [SAML]({{< relref "../enterprise/saml.md" >}}) (Enterprise only) | v6.3+ | v7.0+ | v7.0+ | - | ## Grafana Auth @@ -38,7 +38,7 @@ These short-lived tokens are rotated each `token_rotation_interval_minutes` for An active authenticated user that gets it token rotated will extend the `login_maximum_inactive_lifetime_duration` time from "now" that Grafana will remember the user. This means that a user can close its browser and come back before `now + login_maximum_inactive_lifetime_duration` and still being authenticated. - This is true as long as the time since user login is less than `login_maximum_lifetime_duration`. +This is true as long as the time since user login is less than `login_maximum_lifetime_duration`. #### Remote logout @@ -138,4 +138,3 @@ URL to redirect the user to after signing out from Grafana. This can for example [auth] signout_redirect_url = ``` - diff --git a/docs/sources/auth/team-sync.md b/docs/sources/auth/team-sync.md index e717420b014..416601fe9ed 100644 --- a/docs/sources/auth/team-sync.md +++ b/docs/sources/auth/team-sync.md @@ -19,4 +19,4 @@ This mechanism allows Grafana to remove an existing synchronized user from a tea
-> Team Sync is available in Grafana Enterprise Cloud Pro and Advanced and in Grafana Enterprise. For more information, refer to [Team sync]({{< relref "../enterprise/team-sync.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}). +> Team Sync is available in Grafana Enterprise Cloud Pro and Advanced and in Grafana Enterprise. For more information, refer to [Team sync]({{< relref "../enterprise/team-sync.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}). diff --git a/docs/sources/basics/exemplars/view-exemplars.md b/docs/sources/basics/exemplars/view-exemplars.md index 8b08766962f..cca394e7f0a 100644 --- a/docs/sources/basics/exemplars/view-exemplars.md +++ b/docs/sources/basics/exemplars/view-exemplars.md @@ -17,15 +17,14 @@ To examine the details of an exemplar trace: 1. Place your cursor over an exemplar (highlighted star). Depending on your backend trace data source, you will see a blue button with the label `Query with `. In the following example, the tracing data source is Tempo. - {{< figure src="/static/img/docs/basics/exemplar-details.png" class="docs-image--no-shadow" max-width= "275px" caption="Screenshot showing Exemplar details" >}} + {{< figure src="/static/img/docs/basics/exemplar-details.png" class="docs-image--no-shadow" max-width= "275px" caption="Screenshot showing Exemplar details" >}} 1. Click the **Query with Tempo** option next to the `traceID` property. The trace details, including the spans within the trace are listed in a separate panel on the right. - {{< figure src="/static/img/docs/basics/exemplar-explore-view.png" class="docs-image--no-shadow" max-width= "750px" caption="Explorer view with panel showing trace details" >}} + {{< figure src="/static/img/docs/basics/exemplar-explore-view.png" class="docs-image--no-shadow" max-width= "750px" caption="Explorer view with panel showing trace details" >}} For more information on how to drill down and analyze the trace and span details, refer to the [Analyze trace and span details](#analyze-trace-and-spans) section. - ## In logs You can also view exemplar trace details from the Loki logs in Explore. Use regex within the Derived fields links for Loki to extract the `traceID` information. Now when you expand Loki logs, you can see a `traceID` property under the **Detected fields** section. To learn more about how to extract a part of a log message into an internal or external link, refer to [using derived fields in Loki]({{< relref "../../explore/logs-integration.md" >}}). @@ -40,24 +39,24 @@ To view the details of an exemplar trace: For more information on how to drill down and analyze the trace and span details, refer to the [Analyze trace and span details](#analyze-trace-and-spans) section. - ## Analyze trace and spans +## Analyze trace and spans - This panel shows the details of the trace in different segments. +This panel shows the details of the trace in different segments. - - The top segment shows the Trace ID to indicate that the query results correspond to the specific trace. +- The top segment shows the Trace ID to indicate that the query results correspond to the specific trace. - You can add more traces to the results using the `Add query` button. + You can add more traces to the results using the `Add query` button. - The next segment shows the entire span for the specific trace as a narrow strip. All levels of the trace from the client all the way down to database query is displayed, which provides a bird's eye view of the time distribution across all layers over which the HTTP request was processed. - 1. You can click within this strip view to display a magnified view of a smaller time segment within the span. This magnified view shows up in the bottom segment of the panel. + 1. You can click within this strip view to display a magnified view of a smaller time segment within the span. This magnified view shows up in the bottom segment of the panel. - 1. In the magnified view, you can expand or collapse the various levels of the trace to drill down to the specific span of interest. + 1. In the magnified view, you can expand or collapse the various levels of the trace to drill down to the specific span of interest. - For example, if the strip view shows that most of the latency was within the app layer, you can expand the trace down the app layer to investigate the problem further. To expand a particular layer of span, click the icon on the left. The same button can collapse an expanded span. + For example, if the strip view shows that most of the latency was within the app layer, you can expand the trace down the app layer to investigate the problem further. To expand a particular layer of span, click the icon on the left. The same button can collapse an expanded span. - To see the details of the span at any level, click the span itself. - This displays additional metadata associated with the span. The metadata itself is initially shown in a narrow strip but you can see more details by clicking the metadata strip. + This displays additional metadata associated with the span. The metadata itself is initially shown in a narrow strip but you can see more details by clicking the metadata strip. - {{< figure src="/static/img/docs/basics/exemplar-span-details.png" class="docs-image--no-shadow" max-width= "750px" caption="Span details" >}} + {{< figure src="/static/img/docs/basics/exemplar-span-details.png" class="docs-image--no-shadow" max-width= "750px" caption="Span details" >}} diff --git a/docs/sources/basics/intro-histograms.md b/docs/sources/basics/intro-histograms.md index 555461282aa..f0d953627d7 100644 --- a/docs/sources/basics/intro-histograms.md +++ b/docs/sources/basics/intro-histograms.md @@ -43,7 +43,7 @@ For more information about heatmap visualization options, refer to [Heatmap]({{< There are a number of data sources supporting histogram over time like Elasticsearch (by using a Histogram bucket aggregation) or Prometheus (with [histogram](https://prometheus.io/docs/concepts/metric_types/#histogram) metric type -and *Format as* option set to Heatmap). But generally, any data source could be used if it meets the requirements: +and _Format as_ option set to Heatmap). But generally, any data source could be used if it meets the requirements: returns series with names representing bucket bound or returns series sorted by the bound in ascending order. ## Raw data vs aggregated diff --git a/docs/sources/basics/timeseries.md b/docs/sources/basics/timeseries.md index 959463cc791..27f74282337 100644 --- a/docs/sources/basics/timeseries.md +++ b/docs/sources/basics/timeseries.md @@ -15,7 +15,7 @@ Imagine you wanted to know how the temperature outside changes throughout the da | 10:00 | 26°C | | 11:00 | 27°C | -Temperature data like this is one example of what we call a *time series*—a sequence of measurements, ordered in time. Every row in the table represents one individual measurement at a specific time. +Temperature data like this is one example of what we call a _time series_—a sequence of measurements, ordered in time. Every row in the table represents one individual measurement at a specific time. Tables are useful when you want to identify individual measurements but make it difficult to see the big picture. A more common visualization for time series is the _graph_, which instead places each measurement along a time axis. Visual representations like the graph make it easier to discover patterns and features of the data that otherwise would be difficult to see. @@ -91,15 +91,15 @@ Here are some of the TSDBs supported by Grafana: - [InfluxDB](https://www.influxdata.com/products/influxdb-overview/) - [Prometheus](https://prometheus.io/) - ``` - weather,location=us-midwest temperature=82 1465839830100400200 - | -------------------- -------------- | - | | | | - | | | | - +-----------+--------+-+---------+-+---------+ - |measurement|,tag_set| |field_set| |timestamp| - +-----------+--------+-+---------+-+---------+ - ``` + ``` + weather,location=us-midwest temperature=82 1465839830100400200 + | -------------------- -------------- | + | | | | + | | | | + +-----------+--------+-+---------+-+---------+ + |measurement|,tag_set| |field_set| |timestamp| + +-----------+--------+-+---------+-+---------+ + ``` ### Collecting time series data @@ -114,10 +114,9 @@ Here are some examples of collectors: A collector either _pushes_ data to a database or lets the database _pull_ the data from it. Both methods come with their own set of pros and cons: -| | Pros | Cons | -| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| Push | Easier to replicate data to multiple destinations. | The TSDB has no control over how much data gets sent. | +| | Pros | Cons | +| ---- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------ | +| Push | Easier to replicate data to multiple destinations. | The TSDB has no control over how much data gets sent. | | Pull | Better control of how much data that gets ingested, and its authenticity. | Firewalls, VPNs or load balancers can make it hard to access the agents. | Since it would be inefficient to write every measurement to the database, collectors pre-aggregate the data and write to the time series database at regular intervals. - diff --git a/docs/sources/best-practices/best-practices-for-creating-dashboards.md b/docs/sources/best-practices/best-practices-for-creating-dashboards.md index f6153585276..dbf9c83d368 100644 --- a/docs/sources/best-practices/best-practices-for-creating-dashboards.md +++ b/docs/sources/best-practices/best-practices-for-creating-dashboards.md @@ -23,6 +23,7 @@ Keep your graphs simple and focused on answering the question that you are askin _Cognitive load_ is basically how hard you need to think about something in order to figure it out. Make your dashboard easy to interpret. Other users and future you (when you're trying to figure out what broke at 2AM) will appreciate it. Ask yourself: + - Can I tell what exactly each graph represents? Is it obvious, or do I have to think about it? - If I show this to someone else, how long will it take them to figure it out? Will they get lost? @@ -46,8 +47,8 @@ Once you have a strategy or design guidelines, write them down to help maintain - Grafana retrieves data from a data source. A basic understanding of [data sources]({{< relref "../datasources/_index.md" >}}) in general and your specific is important. - Avoid unnecessary dashboard refreshing to reduce the load on the network or backend. For example, if your data changes every hour, then you don't need to set the dashboard refresh rate to 30 seconds. - Use the left and right Y-axes when displaying time series with different units or ranges. -- Add documentation to dashboards and panels. - - To add documentation to a dashboard, add a [Text panel visualization]({{< relref "../panels/visualizations/text-panel.md" >}}) to the dashboard. Record things like the purpose of the dashboard, useful resource links, and any instructions users might need to interact with the dashboard. Check out this [Wikimedia example](https://grafana.wikimedia.org/d/000000066/resourceloader?orgId=1). - - To add documentation to a panel, [edit the panel settings]({{< relref "../panels/add-a-panel.md#edit-panel-settings" >}}) and add a description. Any text you add will appear if you hover your cursor over the small `i` in the top left corner of the panel. -- Reuse your dashboards and enforce consistency by using [templates and variables]({{< relref "../variables/_index.md" >}}). -- Be careful with stacking graph data. The visualizations can be misleading, and hide important data. We recommend turning it off in most cases. +- Add documentation to dashboards and panels. + - To add documentation to a dashboard, add a [Text panel visualization]({{< relref "../panels/visualizations/text-panel.md" >}}) to the dashboard. Record things like the purpose of the dashboard, useful resource links, and any instructions users might need to interact with the dashboard. Check out this [Wikimedia example](https://grafana.wikimedia.org/d/000000066/resourceloader?orgId=1). + - To add documentation to a panel, [edit the panel settings]({{< relref "../panels/add-a-panel.md#edit-panel-settings" >}}) and add a description. Any text you add will appear if you hover your cursor over the small `i` in the top left corner of the panel. +- Reuse your dashboards and enforce consistency by using [templates and variables]({{< relref "../variables/_index.md" >}}). +- Be careful with stacking graph data. The visualizations can be misleading, and hide important data. We recommend turning it off in most cases. diff --git a/docs/sources/best-practices/best-practices-for-managing-dashboards.md b/docs/sources/best-practices/best-practices-for-managing-dashboards.md index d3208b1f9ad..7cd041a1067 100644 --- a/docs/sources/best-practices/best-practices-for-managing-dashboards.md +++ b/docs/sources/best-practices/best-practices-for-managing-dashboards.md @@ -32,6 +32,6 @@ What is your dashboard maturity level? Analyze your current dashboard setup and - In many cases copies are being made to simply customize the view by setting template parameters. This should instead be done by maintaining a link to the master dashboard and customizing the view with [URL parameters]({{< relref "../linking/data-link-variables.md" >}}). - When you must copy a dashboard, clearly rename it and _do not_ copy the dashboard tags. Tags are important metadata for dashboards that are used during search. Copying tags can result in false matches. - Maintain a dashboard of dashboards or cross-reference dashboards. This can be done in several ways: - - Create dashboard links, panel, or data links. Links can go to other dashboards or to external systems. For more information, refer to [Linking]({{< relref "../linking/_index.md" >}}). - - Add a [Dashboard list panel]({{< relref "../panels/visualizations/dashboard-list-panel.md" >}}). You can then customize what you see by doing tag or folder searches. - - Add a [Text panel]({{< relref "../panels/visualizations/text-panel.md" >}}) and use markdown to customize the display. + - Create dashboard links, panel, or data links. Links can go to other dashboards or to external systems. For more information, refer to [Linking]({{< relref "../linking/_index.md" >}}). + - Add a [Dashboard list panel]({{< relref "../panels/visualizations/dashboard-list-panel.md" >}}). You can then customize what you see by doing tag or folder searches. + - Add a [Text panel]({{< relref "../panels/visualizations/text-panel.md" >}}) and use markdown to customize the display. diff --git a/docs/sources/dashboards/_index.md b/docs/sources/dashboards/_index.md index 08588f28e6d..160e7784049 100644 --- a/docs/sources/dashboards/_index.md +++ b/docs/sources/dashboards/_index.md @@ -48,13 +48,13 @@ Dashboards can be tagged, and the dashboard picker provides quick, searchable ac ## Rows -A *row* is a logical divider within a dashboard. It is used to group panels together. +A _row_ is a logical divider within a dashboard. It is used to group panels together. Rows are always 12 “units” wide. These units are automatically scaled dependent on the horizontal resolution of your browser. You can control the relative width of panels within a row by setting their specific width. We use a unit abstraction so that Grafana looks great on all screen sizes. - > **Note:** With MaxDataPoint functionality, Grafana can show you the perfect number of data points, regardless of resolution or time range. +> **Note:** With MaxDataPoint functionality, Grafana can show you the perfect number of data points, regardless of resolution or time range. Collapse a row by clicking on the row title. If you save a dashboard with a row collapsed, then it saves in that state and does not load those graphs until you expand the row. diff --git a/docs/sources/dashboards/annotations.md b/docs/sources/dashboards/annotations.md index 262c29f04a5..2bc1a8171a9 100644 --- a/docs/sources/dashboards/annotations.md +++ b/docs/sources/dashboards/annotations.md @@ -41,8 +41,7 @@ can still show them if you add a new **Annotation Query** and filter by tags. Bu ### Query by tag - -You can create new queries to fetch annotations from the native annotation store via the `-- Grafana --` data source by setting *Filter by* to `Tags`. +You can create new queries to fetch annotations from the native annotation store via the `-- Grafana --` data source by setting _Filter by_ to `Tags`. Grafana v8.1 and later versions also support typeahead of existing tags, provide at least one tag. @@ -61,6 +60,7 @@ open the dashboard settings menu, then select `Annotations`. This will open the settings view. To create a new annotation query hit the `New` button. + {{< figure src="/static/img/docs/v50/annotation_new_query.png" max-width="600px" >}} Specify a name for the annotation query. This name is given to the toggle (checkbox) that will allow diff --git a/docs/sources/dashboards/dashboard_folders.md b/docs/sources/dashboards/dashboard_folders.md index 1afd3c2c310..b861ebb4063 100644 --- a/docs/sources/dashboards/dashboard_folders.md +++ b/docs/sources/dashboards/dashboard_folders.md @@ -46,6 +46,5 @@ The Dashboard Folder Page is similar to the Manage Dashboards page and is where Permissions can be assigned to a folder and inherited by the containing dashboards. An Access Control List (ACL) is used where **Organization Role**, **Team** and Individual **User** can be assigned permissions. Read the - [Dashboard and Folder Permissions]({{< relref "../permissions/dashboard-folder-permissions.md" >}}) docs for more detail - on the permission system. - +[Dashboard and Folder Permissions]({{< relref "../permissions/dashboard-folder-permissions.md" >}}) docs for more detail +on the permission system. diff --git a/docs/sources/dashboards/dashboard_history.md b/docs/sources/dashboards/dashboard_history.md index 801baf99a14..187b9516da6 100644 --- a/docs/sources/dashboards/dashboard_history.md +++ b/docs/sources/dashboards/dashboard_history.md @@ -5,7 +5,6 @@ aliases = ["/docs/grafana/latest/reference/dashboard_history/"] weight = 100 +++ - # Dashboard Version History Whenever you save a version of your dashboard, a copy of that version is saved so that previous versions of your dashboard are never lost. A list of these versions is available by entering the dashboard settings and then selecting "Versions" in the left side menu. diff --git a/docs/sources/dashboards/export-import.md b/docs/sources/dashboards/export-import.md index 4e0930d1c98..fee19cde605 100644 --- a/docs/sources/dashboards/export-import.md +++ b/docs/sources/dashboards/export-import.md @@ -56,6 +56,7 @@ Dashboards exported from Grafana 3.1+ have a new json section `__inputs` that define what data sources and metric prefixes the dashboard uses. Example: + ```json { "__inputs": [ @@ -76,7 +77,6 @@ Example: } ] } - ``` These are then referenced in the dashboard panels like this: @@ -84,14 +84,14 @@ These are then referenced in the dashboard panels like this: ```json { "rows": [ - { - "panels": [ - { - "type": "graph", - "datasource": "${DS_GRAPHITE}" - } - ] - } + { + "panels": [ + { + "type": "graph", + "datasource": "${DS_GRAPHITE}" + } + ] + } ] } ``` @@ -106,4 +106,5 @@ data source. Another alternative is to open the json file in a text editor and u to value that matches a name of your data source. ## Note + In Grafana v5.3.4+ the export modal has new checkbox for sharing for external use (other instances). If the checkbox is not checked then the `__inputs` section will not be included in the exported JSON file. diff --git a/docs/sources/dashboards/json-model.md b/docs/sources/dashboards/json-model.md index f425eb8645d..b98295e14e5 100644 --- a/docs/sources/dashboards/json-model.md +++ b/docs/sources/dashboards/json-model.md @@ -11,9 +11,9 @@ A dashboard in Grafana is represented by a JSON object, which stores metadata of To view the JSON of a dashboard: - 1. Navigate to a dashboard. - 1. In the top navigation menu, click the **Dashboard settings** (gear) icon. - 1. Click **JSON Model**. +1. Navigate to a dashboard. +1. In the top navigation menu, click the **Dashboard settings** (gear) icon. +1. Click **JSON Model**. ## JSON fields @@ -53,6 +53,7 @@ When a user creates a new dashboard, a new dashboard JSON object is initialized "links": [] } ``` + Each field in the dashboard JSON is explained below with its usage: | Name | Usage | @@ -99,7 +100,7 @@ Panels are the building blocks of a dashboard. It consists of data source querie The gridPos property describes the panel size and position in grid coordinates. -- `w` 1-24 (the width of the dashboard is divided into 24 columns) +- `w` 1-24 (the width of the dashboard is divided into 24 columns) - `h` In grid height units, each represents 30 pixels. - `x` The x position, in same unit as `w`. - `y` The y position, in same unit as `h`. diff --git a/docs/sources/dashboards/playlist.md b/docs/sources/dashboards/playlist.md index 93fab44cbbb..404b9e08146 100644 --- a/docs/sources/dashboards/playlist.md +++ b/docs/sources/dashboards/playlist.md @@ -5,7 +5,6 @@ aliases = ["/docs/grafana/latest/reference/playlist/"] weight = 4 +++ - # Playlist A playlist is a list of dashboards that are displayed in a sequence. You might use a playlist to build situational awareness or to present your metrics to your team or visitors. @@ -87,7 +86,7 @@ You can save a playlist to add it to your **Playlists** page, where you can star 1. Click **Playlists**. 1. Click on the playlist. 1. Edit the playlist. - * Ensure that your playlist has a **Name**, **Interval**, and at least one **Dashboard** added to it. + - Ensure that your playlist has a **Name**, **Interval**, and at least one **Dashboard** added to it. 1. Click **Save**. ## Start a playlist @@ -100,38 +99,38 @@ By default, each dashboard is displayed for the amount of time entered in the In 1. Next to the playlist you want to start, click **Start playlist**. 1. In the dropdown, select the mode you want the playlist to display in. - **Normal mode:** - - The side menu remains visible. - - The navbar, row and panel controls appear at the top of the screen. + - The side menu remains visible. + - The navbar, row and panel controls appear at the top of the screen. - **TV mode:** - - The side menu is hidden/removed. - - The navbar, row and panel controls appear at the top of the screen. - - Enabled automatically after one minute of user inactivity. - - You can enable it manually using the `d v` sequence shortcut, or by appending the parameter `?inactive` to the dashboard URL. - - You can disable it with any mouse movement or keyboard action. + - The side menu is hidden/removed. + - The navbar, row and panel controls appear at the top of the screen. + - Enabled automatically after one minute of user inactivity. + - You can enable it manually using the `d v` sequence shortcut, or by appending the parameter `?inactive` to the dashboard URL. + - You can disable it with any mouse movement or keyboard action. - **TV mode (with auto fit panels):** - - The side menu is hidden/removed. - - The navbar, row and panel controls appear at the top of the screen. - - Dashboard panels automatically adjust to optimize space on screen. + - The side menu is hidden/removed. + - The navbar, row and panel controls appear at the top of the screen. + - Dashboard panels automatically adjust to optimize space on screen. - **Kiosk mode:** - - The side menu, navbar, row and panel controls are completely hidden/removed from view. - - You can enable it manually using the `d v` sequence shortcut after the playlist has started. - - You can disable it manually with the same shortcut. + - The side menu, navbar, row and panel controls are completely hidden/removed from view. + - You can enable it manually using the `d v` sequence shortcut after the playlist has started. + - You can disable it manually with the same shortcut. - **Kiosk mode (with auto fit panels):** - - The side menu, navbar, row and panel controls are completely hidden/removed from view. - - Dashboard panels automatically adjust to optimize space on screen. + - The side menu, navbar, row and panel controls are completely hidden/removed from view. + - Dashboard panels automatically adjust to optimize space on screen. ## Control a playlist You can control a playlist in **Normal** or **TV** mode after it's started, using the navigation bar at the top of your screen. -| Button | Result | -| --- | --- | -| Next (double-right arrow) | Advances to the next dashboard. | -| Back (left arrow) | Returns to the previous dashboard. | -| Stop (square) | Ends the playlist, and exits to the current dashboard. | -| Cycle view mode (monitor icon) | Rotates the display of the dashboards in different view modes. | -| Time range | Displays data within a time range. It can be set to display the last 5 minutes up to 5 years ago, or a custom time range, using the down arrow. | -| Refresh (circle arrow) | Reloads the dashboard, to display the current data. It can be set to reload automatically every 5 seconds to 1 day, using the drop down arrow. | +| Button | Result | +| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| Next (double-right arrow) | Advances to the next dashboard. | +| Back (left arrow) | Returns to the previous dashboard. | +| Stop (square) | Ends the playlist, and exits to the current dashboard. | +| Cycle view mode (monitor icon) | Rotates the display of the dashboards in different view modes. | +| Time range | Displays data within a time range. It can be set to display the last 5 minutes up to 5 years ago, or a custom time range, using the down arrow. | +| Refresh (circle arrow) | Reloads the dashboard, to display the current data. It can be set to reload automatically every 5 seconds to 1 day, using the drop down arrow. | > Shortcut: Press the Esc key to stop the playlist from your keyboard. @@ -139,11 +138,13 @@ You can control a playlist in **Normal** or **TV** mode after it's started, usin You can share a playlist by copying the link address on the view mode you prefer, and pasting the URL to your destination. -1. From the Dashboards submenu, click **Playlists**. -1. Next to the playlist you want to share, click **Start playlist**. -1. In the dropdown, right click the view mode you prefer. -1. Click **Copy Link Address** to copy the URL to your clipboard. +1. From the Dashboards submenu, click **Playlists**. +1. Next to the playlist you want to share, click **Start playlist**. +1. In the dropdown, right click the view mode you prefer. +1. Click **Copy Link Address** to copy the URL to your clipboard. + + Example: The URL for the first playlist on the Grafana Play site in Kiosk mode will look like this: + + [https://play.grafana.org/playlists/play/1?kiosk](https://play.grafana.org/playlists/play/1?kiosk). - Example: The URL for the first playlist on the Grafana Play site in Kiosk mode will look like this: -[https://play.grafana.org/playlists/play/1?kiosk](https://play.grafana.org/playlists/play/1?kiosk). -1. Paste the URL to your destination. +1. Paste the URL to your destination. diff --git a/docs/sources/dashboards/search.md b/docs/sources/dashboards/search.md index 4cf95cd8afe..ec6d2c793cb 100644 --- a/docs/sources/dashboards/search.md +++ b/docs/sources/dashboards/search.md @@ -5,7 +5,6 @@ aliases =["/docs/grafana/latest/reference/search/"] weight = 5 +++ - # Dashboard Search Dashboards can be searched by the dashboard name, filtered by one (or many) tags or filtered by starred status. The dashboard search is accessed through the dashboard picker, available in the dashboard top nav area. The dashboard search can also be opened by using the shortcut `F`. @@ -26,9 +25,10 @@ When using only a keyboard, you can use your keyboard arrow keys to navigate the Begin typing any part of the desired dashboard names in the search bar. Search will return results for any partial string match in real-time, as you type. Dashboard search is: + - Real-time -- *Not* case sensitive -- Functional across stored *and* file based dashboards. +- _Not_ case sensitive +- Functional across stored _and_ file based dashboards. ## Filter by Tag(s) @@ -38,6 +38,6 @@ To filter the dashboard list by tag, click on any tag appearing in the right col Alternately, to see a list of all available tags, click the tags dropdown menu. All tags will be shown, and when a tag is selected, the dashboard search will be instantly filtered: -When using only a keyboard: `tab` to focus on the *tags* link, `▼` down arrow key to find a tag and select with the `Enter` key. +When using only a keyboard: `tab` to focus on the _tags_ link, `▼` down arrow key to find a tag and select with the `Enter` key. > **Note:** When multiple tags are selected, Grafana will show dashboards that include **all**. diff --git a/docs/sources/datasources/add-a-data-source.md b/docs/sources/datasources/add-a-data-source.md index d3102e65815..afe47f82752 100644 --- a/docs/sources/datasources/add-a-data-source.md +++ b/docs/sources/datasources/add-a-data-source.md @@ -14,19 +14,19 @@ To add a data source: 1. Move your cursor to the cog icon on the side menu which will show the configuration options. - {{< figure src="/static/img/docs/v75/sidemenu-datasource-7-5.png" max-width="150px" class="docs-image--no-shadow">}} + {{< figure src="/static/img/docs/v75/sidemenu-datasource-7-5.png" max-width="150px" class="docs-image--no-shadow">}} 1. Click on **Data sources**. The data sources page opens showing a list of previously configured data sources for the Grafana instance. 1. Click **Add data source** to see a list of all supported data sources. - {{< figure src="/static/img/docs/v75/add-data-source-7-5.png" max-width="600px" class="docs-image--no-shadow">}} + {{< figure src="/static/img/docs/v75/add-data-source-7-5.png" max-width="600px" class="docs-image--no-shadow">}} 1. Search for a specific data source by entering the name in the search dialog. Or you can scroll through supported data sources grouped into time series, logging, tracing and other categories. 1. Move the cursor over the data source you want to add. - {{< figure src="/static/img/docs/v75/select-data-source-7-5.png" max-width="700px" class="docs-image--no-shadow">}} + {{< figure src="/static/img/docs/v75/select-data-source-7-5.png" max-width="700px" class="docs-image--no-shadow">}} 1. Click **Select**. The data source configuration page opens. diff --git a/docs/sources/datasources/alertmanager.md b/docs/sources/datasources/alertmanager.md index 0708440a004..ccfbc2f974d 100644 --- a/docs/sources/datasources/alertmanager.md +++ b/docs/sources/datasources/alertmanager.md @@ -10,9 +10,9 @@ weight = 1300 Grafana includes built-in support for Prometheus Alertmanager. It is presently in alpha and not accessible unless [alpha plugins are enabled in Grafana settings](https://grafana.com/docs/grafana/latest/administration/configuration/#enable_alpha). Once you add it as a data source, you can use the [Grafana alerting UI](https://grafana.com/docs/grafana/latest/alerting/) to manage silences, contact points as well as notification policies. A drop down option in these pages allows you to switch between Grafana and any configured Alertmanager data sources . ->**Note:** New in Grafana 8.0. +> **Note:** New in Grafana 8.0. ->**Note:** Currently only the [Cortex implementation of Prometheus alertmanager](https://cortexmetrics.io/docs/proposals/scalable-alertmanager/) is supported. +> **Note:** Currently only the [Cortex implementation of Prometheus alertmanager](https://cortexmetrics.io/docs/proposals/scalable-alertmanager/) is supported. ## Provision the Alertmanager data source diff --git a/docs/sources/datasources/elasticsearch.md b/docs/sources/datasources/elasticsearch.md index 2d4aa2ead4f..1c5eeb1d31e 100644 --- a/docs/sources/datasources/elasticsearch.md +++ b/docs/sources/datasources/elasticsearch.md @@ -61,7 +61,7 @@ Available Elasticsearch versions are `2.x`, `5.x`, `5.6+`, `6.0+`, `7.0+`, `7.7+ Grafana assumes that you are running the lowest possible version for a specified range. This ensures that new features or breaking changes in a future Elasticsearch release will not affect your configuration. -For example, suppose you are running Elasticsearch `7.6.1` and you selected `7.0+`. If a new feature is made available for Elasticsearch `7.5.0` or newer releases, then a `7.5+` option will be available. However, your configuration will not be affected until you explicitly select the new `7.5+` option in your settings. +For example, suppose you are running Elasticsearch `7.6.1` and you selected `7.0+`. If a new feature is made available for Elasticsearch `7.5.0` or newer releases, then a `7.5+` option will be available. However, your configuration will not be affected until you explicitly select the new `7.5+` option in your settings. ### Min time interval @@ -87,6 +87,7 @@ Enables `X-Pack` specific features and options, providing the query editor with #### Include frozen indices When `X-Pack enabled` is active and the configured Elasticsearch version is higher than `6.6.0`, you can configure Grafana to not ignore [frozen indices](https://www.elastic.co/guide/en/elasticsearch/reference/7.13/frozen-indices.html) when performing search requests. + ### Logs There are two parameters, `Message field name` and `Level field name`, that can optionally be configured from the data source settings page that determine @@ -94,7 +95,7 @@ which fields will be used for log messages and log levels when visualizing logs For example, if you're using a default setup of Filebeat for shipping logs to Elasticsearch the following configuration should work: -- **Message field name:** message +- **Message field name:** message - **Level field name:** fields.level ### Data links @@ -102,6 +103,7 @@ For example, if you're using a default setup of Filebeat for shipping logs to El Data links create a link from a specified field that can be accessed in logs view in Explore. Each data link configuration consists of: + - **Field -** Name of the field used by the data link. - **URL/query -** If the link is external, then enter the full link URL. If the link is internal link, then this input serves as query for the target data source. In both cases, you can interpolate the value from the field with `${__value.raw }` macro. - **URL Label -** (Optional) Set a custom display label for the link. The link label defaults to the full external URL or name of the linked internal data source and is overridden by this setting. @@ -126,7 +128,7 @@ You can control the name for time series via the `Alias` input field. ## Pipeline metrics -Some metric aggregations are called Pipeline aggregations, for example, *Moving Average* and *Derivative*. Elasticsearch pipeline metrics require another metric to be based on. Use the eye icon next to the metric to hide metrics from appearing in the graph. This is useful for metrics you only have in the query for use in a pipeline metric. +Some metric aggregations are called Pipeline aggregations, for example, _Moving Average_ and _Derivative_. Elasticsearch pipeline metrics require another metric to be based on. Use the eye icon next to the metric to hide metrics from appearing in the graph. This is useful for metrics you only have in the query for use in a pipeline metric. ![Pipeline aggregation editor](/static/img/docs/elasticsearch/pipeline-aggregation-editor-7-4.png) @@ -141,7 +143,7 @@ types of template variables. ### Query variable -The Elasticsearch data source supports two types of queries you can use in the *Query* field of *Query* variables. The query is written using a custom JSON string. +The Elasticsearch data source supports two types of queries you can use in the _Query_ field of _Query_ variables. The query is written using a custom JSON string. | Query | Description | | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -172,16 +174,16 @@ To keep terms in the doc count order, set the variable's Sort dropdown to **Disa There are two syntaxes: -- `$` Example: @hostname:$hostname +- `$` Example: @hostname:$hostname - `[[varname]]` Example: @hostname:[[hostname]] -Why two ways? The first syntax is easier to read and write but does not allow you to use a variable in the middle of a word. When the *Multi-value* or *Include all value* +Why two ways? The first syntax is easier to read and write but does not allow you to use a variable in the middle of a word. When the _Multi-value_ or _Include all value_ options are enabled, Grafana converts the labels from plain text to a lucene compatible condition. ![Query with template variables](/static/img/docs/elasticsearch/elastic-templating-query-7-4.png) -In the above example, we have a lucene query that filters documents based on the `@hostname` property using a variable named `$hostname`. It is also using -a variable in the *Terms* group by field input box. This allows you to use a variable to quickly change how the data is grouped. +In the above example, we have a lucene query that filters documents based on the `@hostname` property using a variable named `$hostname`. It is also using +a variable in the _Terms_ group by field input box. This allows you to use a variable to quickly change how the data is grouped. Example dashboard: [Elasticsearch Templated Dashboard](https://play.grafana.org/d/CknOEXDMk/elasticsearch-templated?orgId=1d) @@ -193,7 +195,7 @@ queries via the Dashboard menu / Annotations view. Grafana can query any Elastic for annotation events. | Name | Description | -| -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `Query` | You can leave the search query blank or specify a lucene query. | | `Time` | The name of the time field, needs to be date field. | | `Time End` | Optional name of the time end field needs to be date field. If set, then annotations will be marked as a region between time and time-end. | @@ -230,11 +232,11 @@ datasources: - name: Elastic type: elasticsearch access: proxy - database: "[metrics-]YYYY.MM.DD" + database: '[metrics-]YYYY.MM.DD' url: http://localhost:9200 jsonData: interval: Daily - timeField: "@timestamp" + timeField: '@timestamp' ``` or, for logs: @@ -246,18 +248,18 @@ datasources: - name: elasticsearch-v7-filebeat type: elasticsearch access: proxy - database: "[filebeat-]YYYY.MM.DD" + database: '[filebeat-]YYYY.MM.DD' url: http://localhost:9200 jsonData: interval: Daily - timeField: "@timestamp" - esVersion: "7.0.0" + timeField: '@timestamp' + esVersion: '7.0.0' logMessageField: message logLevelField: fields.level dataLinks: - datasourceUid: my_jaeger_uid # Target UID needs to be known field: traceID - url: "$${__value.raw}" # Careful about the double "$$" because of env var expansion + url: '$${__value.raw}' # Careful about the double "$$" because of env var expansion ``` ## Amazon Elasticsearch Service diff --git a/docs/sources/datasources/google-cloud-monitoring/preconfig-cloud-monitoring-dashboards.md b/docs/sources/datasources/google-cloud-monitoring/preconfig-cloud-monitoring-dashboards.md index 31f8f77e4bf..29c2d3581cb 100644 --- a/docs/sources/datasources/google-cloud-monitoring/preconfig-cloud-monitoring-dashboards.md +++ b/docs/sources/datasources/google-cloud-monitoring/preconfig-cloud-monitoring-dashboards.md @@ -9,6 +9,7 @@ weight = 10 # Preconfigured Cloud Monitoring dashboards Google Cloud Monitoring data source ships with pre-configured dashboards for some of the most popular GCP services. These curated dashboards are based on similar dashboards in the GCP dashboard samples repository. See also, [Using Google Cloud Monitoring in Grafana]({{< relref "./_index.md" >}}) for detailed instructions on how to add and configure the Google Cloud Monitoring data source. + ## Curated dashboards To import the curated dashboards: @@ -19,6 +20,6 @@ To import the curated dashboards: The data source of the newly created dashboard panels will be the one selected above. The dashboards have a template variable that is populated with the projects accessible by the configured service account every time the dashboard is loaded. After the dashboard is loaded, you can select the project you prefer from the drop-down list. -In case you want to customize a dashboard, we recommend that you save it under a different name. Otherwise the dashboard will be overwritten when a new version of the dashboard is released. +In case you want to customize a dashboard, we recommend that you save it under a different name. Otherwise the dashboard will be overwritten when a new version of the dashboard is released. {{< figure src="/static/img/docs/google-cloud-monitoring/curated-dashboards-7-4.png" max-width= "650px" >}} diff --git a/docs/sources/datasources/graphite.md b/docs/sources/datasources/graphite.md index e36bfbb7e3b..8cdd9ab4cb4 100644 --- a/docs/sources/datasources/graphite.md +++ b/docs/sources/datasources/graphite.md @@ -18,22 +18,22 @@ Refer to [Add a data source]({{< relref "add-a-data-source.md" >}}) for instruct To access Graphite settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Graphite data source. -Name | Description ---------------------- | ------------- -`Name` | The data source name. This is how you refer to the data source in panels and queries. -`Default` | Default data source means that it will be pre-selected for new panels. -`URL` | The HTTP protocol, IP, and port of your graphite-web or graphite-api install. -`Access` | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. -`Auth` | Refer to [Authentication]({{< relref "../auth/_index.md" >}}) for more information. -`Basic Auth` | Enable basic authentication to the data source. -`User` | User name for basic authentication. -`Password` | Password for basic authentication. -`Custom HTTP Headers` | Click **Add header** to add a custom HTTP header. -`Header` | Enter the custom header name. -`Value` | Enter the custom header value. -`Graphite details` | -`Version` | Select your version of Graphite. -`Type` | Select your type of Graphite. +| Name | Description | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. | +| `Default` | Default data source means that it will be pre-selected for new panels. | +| `URL` | The HTTP protocol, IP, and port of your graphite-web or graphite-api install. | +| `Access` | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. | +| `Auth` | Refer to [Authentication]({{< relref "../auth/_index.md" >}}) for more information. | +| `Basic Auth` | Enable basic authentication to the data source. | +| `User` | User name for basic authentication. | +| `Password` | Password for basic authentication. | +| `Custom HTTP Headers` | Click **Add header** to add a custom HTTP header. | +| `Header` | Enter the custom header name. | +| `Value` | Enter the custom header value. | +| `Graphite details` | +| `Version` | Select your version of Graphite. | +| `Type` | Select your type of Graphite. | Access mode controls how requests to the data source will be handled. Server should be the preferred way if nothing else is stated. @@ -62,6 +62,7 @@ Click **Select metric** to start navigating the metric space. Once you start, yo Click the plus icon next to **Function** to add a function. You can search for the function or select it from the menu. Once a function is selected, it will be added and your focus will be in the text box of the first parameter. + - To edit or change a parameter, click on it and it will turn into a text box. - To delete a function, click the function name followed by the x icon. @@ -78,13 +79,13 @@ If you want consistent ordering, use sortByName. This can be particularly annoyi ### Nested queries -You can reference queries by the row “letter” that they’re on (similar to Microsoft Excel). If you add a second query to a graph, you can reference the first query simply by typing in #A. This provides an easy and convenient way to build compounded queries. +You can reference queries by the row “letter” that they’re on (similar to Microsoft Excel). If you add a second query to a graph, you can reference the first query simply by typing in #A. This provides an easy and convenient way to build compounded queries. ### Avoiding many queries by using wildcards Occasionally one would like to see multiple time series plotted on the same graph. For example we might want to see how the CPU is being utilized on a machine. You might initially create the graph by adding a query for each time series, such as `cpu.percent.user.g`, -`cpu.percent.system.g`, and so on. This results in *n* queries made to the data source, which is inefficient. +`cpu.percent.system.g`, and so on. This results in _n_ queries made to the data source, which is inefficient. To be more efficient one can use wildcards in your search, returning all the time series in one query. For example, `cpu.percent.*.g`. @@ -114,7 +115,7 @@ When exploring data, previously-selected tags are used to filter the remaining r The Grafana query builder does this for you automatically when you select a tag. > **Tip:** The regular expression search can be quite slow on high-cardinality tags, so try to use other tags to reduce the scope first. -Starting off with a particular name/namespace can help reduce the results. +> Starting off with a particular name/namespace can help reduce the results. ## Template variables @@ -126,13 +127,13 @@ For more information, refer to [Variables and templates]({{< relref "../variable Graphite 1.1 introduced tags and Grafana added support for Graphite queries with tags in version 5.0. To create a variable using tag values, use the Grafana functions `tags` and `tag_values`. -Query | Description ------------------------------------------------------------ | ------------- -`tags()` | Returns all tags. -`tags(server=~backend\*)` | Returns only tags that occur in series matching the filter expression. -`tag_values(server)` | Return tag values for the specified tag. -`tag_values(server, server=~backend\*)` | Returns filtered tag values that occur for the specified tag in series matching those expressions. -`tag_values(server, server=~backend\*, app=~${apps:regex})` | Multiple filter expressions and expressions can contain other variables. +| Query | Description | +| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `tags()` | Returns all tags. | +| `tags(server=~backend\*)` | Returns only tags that occur in series matching the filter expression. | +| `tag_values(server)` | Return tag values for the specified tag. | +| `tag_values(server, server=~backend\*)` | Returns filtered tag values that occur for the specified tag in series matching those expressions. | +| `tag_values(server, server=~backend\*, app=~${apps:regex})` | Multiple filter expressions and expressions can contain other variables. | For more details, see the [Graphite docs on the autocomplete API for tags](http://graphite.readthedocs.io/en/latest/tags.html#auto-complete-support). @@ -149,20 +150,21 @@ use expand function (`expand(*.servers.*)`). The expanded query returns the full names of matching metrics. In combination with regex, it can extract any part of the metric name. By contrast, a non-expanded query only returns the last part of the metric name. It does not allow you to extract other parts of metric names. Here are some example metrics: + - `prod.servers.001.cpu` - `prod.servers.002.cpu` - `test.servers.001.cpu` The following examples show how expanded and non-expanded queries can be used to fetch specific parts of the metrics name. -| non-expanded query | results | expanded query | expanded results | -|--------------|---------|----------------|------------------| -| `*` | prod, test | `expand(*)` | prod, test -| `*.servers` | servers | `expand(*.servers)` | prod.servers, test.servers | -| `test.servers` | servers | `expand(test.servers)` | test.servers | -| `*.servers.*` | 001,002 | `expand(*.servers.*)` | prod.servers.001, prod.servers.002, test.servers.001 | -| `test.servers.*` | 001 | `expand(test.servers.*)` | test.servers.001 | -| `*.servers.*.cpu` | cpu | `expand(*.servers.*.cpu)` | prod.servers.001.cpu, prod.servers.002.cpu, test.servers.001.cpu | +| non-expanded query | results | expanded query | expanded results | +| ------------------ | ---------- | ------------------------- | ---------------------------------------------------------------- | +| `*` | prod, test | `expand(*)` | prod, test | +| `*.servers` | servers | `expand(*.servers)` | prod.servers, test.servers | +| `test.servers` | servers | `expand(test.servers)` | test.servers | +| `*.servers.*` | 001,002 | `expand(*.servers.*)` | prod.servers.001, prod.servers.002, test.servers.001 | +| `test.servers.*` | 001 | `expand(test.servers.*)` | test.servers.001 | +| `*.servers.*.cpu` | cpu | `expand(*.servers.*.cpu)` | prod.servers.001.cpu, prod.servers.002.cpu, test.servers.001.cpu | As you can see from the results, the non-expanded query is the same as an expanded query with a regex matching the last part of the name. @@ -170,6 +172,7 @@ You can also create nested variables that use other variables in their definitio `apps.$app.servers.*` uses the variable `$app` in its query definition. #### Using `__searchFilter` to filter query variable results + > Available from Grafana 6.5 and above Using `__searchFilter` in the query field will filter the query result based on what the user types in the dropdown select box. @@ -178,11 +181,13 @@ When nothing has been entered by the user the default value for `__searchFilter` The example below shows how to use `__searchFilter` as part of the query field to enable searching for `server` while the user types in the dropdown select box. Query + ```bash apps.$app.servers.$__searchFilter ``` TagValues + ```bash tag_values(server, server=~${__searchFilter:regex}) ``` @@ -194,11 +199,11 @@ You can use a variable in a metric node path or as a parameter to a function. There are two syntaxes: -- `$` Example: apps.frontend.$server.requests.count +- `$` Example: apps.frontend.$server.requests.count - `${varname}` Example: apps.frontend.${server}.requests.count Why two ways? The first syntax is easier to read and write but does not allow you to use a variable in the middle of a word. Use -the second syntax in expressions like `my.server${serverNumber}.count`. +the second syntax in expressions like `my.server${serverNumber}.count`. Example: [Graphite Templated Dashboard](https://play.grafana.org/dashboard/db/graphite-templated-nested) @@ -242,7 +247,7 @@ datasources: access: proxy url: http://localhost:8080 jsonData: - graphiteVersion: "1.1" + graphiteVersion: '1.1' ``` ## Integration with Loki diff --git a/docs/sources/datasources/influxdb/_index.md b/docs/sources/datasources/influxdb/_index.md index 21e557fd437..6e00876f856 100644 --- a/docs/sources/datasources/influxdb/_index.md +++ b/docs/sources/datasources/influxdb/_index.md @@ -19,25 +19,26 @@ To access data source settings, hover your mouse over the **Configuration** (gea InfluxDB data source options differ depending on which [query language](#query-languages) you select: InfluxQL or Flux. > **Note:** Though not required, it's a good practice to append the language choice to the data source name. For example: -> - - InfluxDB-InfluxQL - - InfluxDB-Flux + +- InfluxDB-InfluxQL +- InfluxDB-Flux ### InfluxQL (classic InfluxDB query) These options apply if you are using the InfluxQL query language. If you are using Flux, refer to [Flux support in Grafana]({{< relref "influxdb-flux.md" >}}). -Name | Description ------------ | ------------- -`Name` | The data source name. This is how you refer to the data source in panels and queries. We recommend something like `InfluxDB-InfluxQL`. -`Default` | Default data source means that it will be pre-selected for new panels. -`URL` | The HTTP protocol, IP address and port of your InfluxDB API. InfluxDB API port is by default 8086. -`Access` | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. +| Name | Description | +| --------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. We recommend something like `InfluxDB-InfluxQL`. | +| `Default` | Default data source means that it will be pre-selected for new panels. | +| `URL` | The HTTP protocol, IP address and port of your InfluxDB API. InfluxDB API port is by default 8086. | +| `Access` | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. | + **Note**: Browser access is deprecated and will be removed in a future release. `Whitelisted Cookies`| Cookies that will be forwarded to the data source. All other cookies will be deleted. -`Database` | The ID of the bucket you want to query from, copied from the [Buckets page](https://docs.influxdata.com/influxdb/v2.0/organizations/buckets/view-buckets/) of the InfluxDB UI. -`User` | The username you use to sign into InfluxDB. -`Password` | The token you use to query the bucket above, copied from the [Tokens page](https://docs.influxdata.com/influxdb/v2.0/security/tokens/view-tokens/) of the InfluxDB UI. +`Database` | The ID of the bucket you want to query from, copied from the [Buckets page](https://docs.influxdata.com/influxdb/v2.0/organizations/buckets/view-buckets/) of the InfluxDB UI. +`User` | The username you use to sign into InfluxDB. +`Password` | The token you use to query the bucket above, copied from the [Tokens page](https://docs.influxdata.com/influxdb/v2.0/security/tokens/view-tokens/) of the InfluxDB UI. `HTTP mode` | How to query the database (`GET` or `POST` HTTP verb). The `POST` verb allows heavy queries that would return an error using the `GET` verb. Default is `GET`. `Min time interval` | (Optional) Refer to [Min time interval]({{< relref "#min-time-interval" >}}). `Max series`| (Optional) Limits the number of series/tables that Grafana processes. Lower this number to prevent abuse, and increase it if you have lots of small time series and not all are shown. Defaults to 1000. @@ -51,16 +52,16 @@ For information on data source settings and using Flux in Grafana, refer to [Flu A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example `1m` if your data is written every minute. This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value _must_ be formatted as a number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported: -Identifier | Description ------------- | ------------- -`y` | year -`M` | month -`w` | week -`d` | day -`h` | hour -`m` | minute -`s` | second -`ms` | millisecond +| Identifier | Description | +| ---------- | ----------- | +| `y` | year | +| `M` | month | +| `w` | week | +| `d` | day | +| `h` | hour | +| `m` | minute | +| `s` | second | +| `ms` | millisecond | ## Query languages @@ -104,6 +105,7 @@ Use the plus button and select Field > field to add another SELECT clause. You c specify an asterix `*` to select all fields. ### Group By + To group by a tag, click the plus icon at the end of the GROUP BY row. Pick a tag from the dropdown that appears. You can remove the "Group By" by clicking on the `tag` and then click on the x icon. @@ -119,7 +121,7 @@ You can switch to raw query mode by clicking hamburger icon and then `Switch edi - $m = replaced with measurement name - $measurement = replaced with measurement name - $col = replaced with column name -- $tag_exampletag = replaced with the value of the `exampletag` tag. The syntax is `$tag_yourTagName` (must start with `$tag_`). To use your tag as an alias in the ALIAS BY field then the tag must be used to group by in the query. +- $tag_exampletag = replaced with the value of the `exampletag` tag. The syntax is `$tag*yourTagName`(must start with`$tag*`). To use your tag as an alias in the ALIAS BY field then the tag must be used to group by in the query. - You can also use [[tag_hostname]] pattern replacement syntax. For example, in the ALIAS BY field using this text `Host: [[tag_hostname]]` would substitute in the `hostname` tag value for each legend value and an example legend value would be: `Host: server1`. ## Querying logs @@ -147,4 +149,4 @@ An example query: SELECT title, description from events WHERE $timeFilter ORDER BY time ASC ``` -For InfluxDB, you need to enter a query like the one in the example above. The ```where $timeFilter``` component is required. If you only select one column, then you do not need to enter anything in the column mapping fields. The **Tags** field can be a comma-separated string. +For InfluxDB, you need to enter a query like the one in the example above. The `where $timeFilter` component is required. If you only select one column, then you do not need to enter anything in the column mapping fields. The **Tags** field can be a comma-separated string. diff --git a/docs/sources/datasources/influxdb/influxdb-flux.md b/docs/sources/datasources/influxdb/influxdb-flux.md index cfedb4d931a..edb5d62dd75 100644 --- a/docs/sources/datasources/influxdb/influxdb-flux.md +++ b/docs/sources/datasources/influxdb/influxdb-flux.md @@ -6,18 +6,18 @@ weight = 200 # Flux query language in Grafana -Grafana supports Flux running on InfluxDB 1.8+. See [1.8 compatibility](https://github.com/influxdata/influxdb-client-go/#influxdb-18-api-compatibility) for more information and connection details. - -Name | Description ----------------- | ------------- -`Name` | The data source name. This is how you refer to the data source in panels and queries. We recommend something like `InfluxDB-Flux`. -`Default` | Default data source means that it will be pre-selected for new panels. -`URL` | The HTTP protocol, IP address and port of your InfluxDB API. InfluxDB 2.0 API port is by default 8086. -`Organization` | The [Influx organization](https://v2.docs.influxdata.com/v2.0/organizations/) that will be used for Flux queries. This is also used to for the `v.organization` query macro. -`Token` | The authentication token used for Flux queries. With Influx 2.0, use the [influx authentication token to function](https://v2.docs.influxdata.com/v2.0/security/tokens/create-token/). For influx 1.8, the token is `username:password`. -`Default bucket` | (Optional) The [Influx bucket](https://v2.docs.influxdata.com/v2.0/organizations/buckets/) that will be used for the `v.defaultBucket` macro in Flux queries. -`Min time interval` | (Optional) Refer to [Min time interval]({{< relref "#min-time-interval" >}}). -`Max series`| (Optional) Limits the number of series/tables that Grafana processes. Lower this number to prevent abuse, and increase it if you have lots of small time series and not all are shown. Defaults to 1000. +Grafana supports Flux running on InfluxDB 1.8+. See [1.8 compatibility](https://github.com/influxdata/influxdb-client-go/#influxdb-18-api-compatibility) for more information and connection details. + +| Name | Description | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. We recommend something like `InfluxDB-Flux`. | +| `Default` | Default data source means that it will be pre-selected for new panels. | +| `URL` | The HTTP protocol, IP address and port of your InfluxDB API. InfluxDB 2.0 API port is by default 8086. | +| `Organization` | The [Influx organization](https://v2.docs.influxdata.com/v2.0/organizations/) that will be used for Flux queries. This is also used to for the `v.organization` query macro. | +| `Token` | The authentication token used for Flux queries. With Influx 2.0, use the [influx authentication token to function](https://v2.docs.influxdata.com/v2.0/security/tokens/create-token/). For influx 1.8, the token is `username:password`. | +| `Default bucket` | (Optional) The [Influx bucket](https://v2.docs.influxdata.com/v2.0/organizations/buckets/) that will be used for the `v.defaultBucket` macro in Flux queries. | +| `Min time interval` | (Optional) Refer to [Min time interval]({{< relref "#min-time-interval" >}}). | +| `Max series` | (Optional) Limits the number of series/tables that Grafana processes. Lower this number to prevent abuse, and increase it if you have lots of small time series and not all are shown. Defaults to 1000. | ## Min time interval @@ -25,16 +25,16 @@ A lower limit for the auto group by time interval. Recommended to be set to writ This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported: -Identifier | Description ------------- | ------------- -`y` | year -`M` | month -`w` | week -`d` | day -`h` | hour -`m` | minute -`s` | second -`ms` | millisecond +| Identifier | Description | +| ---------- | ----------- | +| `y` | year | +| `M` | month | +| `w` | week | +| `d` | day | +| `h` | hour | +| `m` | minute | +| `s` | second | +| `ms` | millisecond | You can use the [Flux query and scripting language](https://www.influxdata.com/products/flux/). Grafana's Flux query editor is a text editor for raw Flux queries with Macro support. @@ -42,13 +42,13 @@ You can use the [Flux query and scripting language](https://www.influxdata.com/p The macros support copying and pasting from [Chronograph](https://www.influxdata.com/time-series-platform/chronograf/). -Macro example | Description ------------- | ------------- -`v.timeRangeStart` | Will be replaced by the start of the currently active time selection. For example, *2020-06-11T13:31:00Z* -`v.timeRangeStop` | Will be replaced by the end of the currently active time selection. For example, *2020-06-11T14:31:00Z* -`v.windowPeriod` | Will be replaced with an interval string compatible with Flux that corresponds to Grafana's calculated interval based on the time range of the active time selection. For example, *5s* -`v.defaultBucket` | Will be replaced with the data source configuration's "Default Bucket" setting -`v.organization` | Will be replaced with the data source configuration's "Organization" setting +| Macro example | Description | +| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `v.timeRangeStart` | Will be replaced by the start of the currently active time selection. For example, _2020-06-11T13:31:00Z_ | +| `v.timeRangeStop` | Will be replaced by the end of the currently active time selection. For example, _2020-06-11T14:31:00Z_ | +| `v.windowPeriod` | Will be replaced with an interval string compatible with Flux that corresponds to Grafana's calculated interval based on the time range of the active time selection. For example, _5s_ | +| `v.defaultBucket` | Will be replaced with the data source configuration's "Default Bucket" setting | +| `v.organization` | Will be replaced with the data source configuration's "Organization" setting | For example, the following query will be interpolated as the query that follows it, with interval and time period values changing according to active time selection\): diff --git a/docs/sources/datasources/influxdb/influxdb-templates.md b/docs/sources/datasources/influxdb/influxdb-templates.md index 5f1989466f8..db0260ea3bd 100644 --- a/docs/sources/datasources/influxdb/influxdb-templates.md +++ b/docs/sources/datasources/influxdb/influxdb-templates.md @@ -8,19 +8,19 @@ weight = 300 Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place. -For more information, refer to [Templates and variables]({{< relref "../../variables/_index.md" >}}). +For more information, refer to [Templates and variables]({{< relref "../../variables/_index.md" >}}). ## Using variables in InfluxDB queries There are two syntaxes: -`$` Example: +`$` Example: ```sql SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^$host$/ AND $timeFilter GROUP BY time($__interval), "hostname" ``` -`[[varname]]` Example: +`[[varname]]` Example: ```sql SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^[[host]]$/ AND $timeFilter GROUP BY time($__interval), "hostname" @@ -40,6 +40,7 @@ For example, you can have a variable that contains all values for tag `hostname` ```sql SHOW TAG VALUES WITH KEY = "hostname" ``` + ## Chained or nested variables You can also create nested variables, sometimes called [chained variables]({{< relref "../../variables/variable-types/chained-variables.md" >}}). diff --git a/docs/sources/datasources/influxdb/provision-influxdb.md b/docs/sources/datasources/influxdb/provision-influxdb.md index 0f083aef087..1498906ce1a 100644 --- a/docs/sources/datasources/influxdb/provision-influxdb.md +++ b/docs/sources/datasources/influxdb/provision-influxdb.md @@ -63,5 +63,4 @@ datasources: httpHeaderName1: 'Authorization' secureJsonData: httpHeaderValue1: 'Token ' - ``` diff --git a/docs/sources/datasources/loki.md b/docs/sources/datasources/loki.md index 42de0f5b35d..facf63400bd 100644 --- a/docs/sources/datasources/loki.md +++ b/docs/sources/datasources/loki.md @@ -21,8 +21,8 @@ To access Loki settings, click the **Configuration** (gear) icon, then click **D | Name | Description | | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Name` | The data source name. This is how you refer to the data source in panels, queries, and Explore. | -| `Default` | Default data source that is pre-selected for new panels. | -| `URL` | URL of the Loki instance, e.g., `http://localhost:3100`. | +| `Default` | Default data source that is pre-selected for new panels. | +| `URL` | URL of the Loki instance, e.g., `http://localhost:3100`. | | `Whitelisted Cookies` | Grafana Proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source. | | `Maximum lines` | Upper limit for the number of log lines returned by Loki (default is 1000). Lower this limit if your browser is sluggish when displaying logs in Explore. | @@ -149,18 +149,20 @@ Check out the [Templating]({{< relref "../variables/_index.md" >}}) documentatio Variable of the type _Query_ allows you to query Loki for a list labels or label values. The Loki data source plugin provides the following functions you can use in the `Query` input field. -| Name | Description | -| -------------------------------------------| -------------------------------------------------------------------------------------| -| `label_names()` | Returns a list of label names. | -| `label_values(label)` | Returns a list of label values for the `label`. | -| `label_values(log stream selector, label)` | Returns a list of label values for the `label` in the specified `log stream selector`.| +| Name | Description | +| ------------------------------------------ | -------------------------------------------------------------------------------------- | +| `label_names()` | Returns a list of label names. | +| `label_values(label)` | Returns a list of label values for the `label`. | +| `label_values(log stream selector, label)` | Returns a list of label values for the `label` in the specified `log stream selector`. | ### Ad hoc filters variable + Loki supports the special ad hoc filters variable type. It allows you to specify any number of label/value filters on the fly. These filters are automatically applied to all your Loki queries. ### Using interval and range variables You can use some global built-in variables in query variables; `$__interval`, `$__interval_ms`, `$__range`, `$__range_s` and `$__range_ms`. For more information, refer to [Global built-in variables]({{< relref "../variables/variable-types/global-variables.md" >}}). + ## Annotations You can use any non-metric Loki query as a source for [annotations]({{< relref "../dashboards/annotations" >}}). Log content will be used as annotation text and your log stream labels as tags, so there is no need for additional mapping. diff --git a/docs/sources/datasources/mysql.md b/docs/sources/datasources/mysql.md index 3c54c231f8f..0a1736fd6bd 100644 --- a/docs/sources/datasources/mysql.md +++ b/docs/sources/datasources/mysql.md @@ -8,7 +8,7 @@ weight = 1000 # Using MySQL in Grafana -> Starting from Grafana v5.1 you can name the time column *time* in addition to earlier supported *time_sec*. Usage of *time_sec* will eventually be deprecated. +> Starting from Grafana v5.1 you can name the time column _time_ in addition to earlier supported _time_sec_. Usage of _time_sec_ will eventually be deprecated. Grafana ships with a built-in MySQL data source plugin that allows you to query and visualize data from a MySQL compatible database. @@ -17,22 +17,22 @@ Grafana ships with a built-in MySQL data source plugin that allows you to query 1. Open the side menu by clicking the Grafana icon in the top header. 1. In the side menu under the `Dashboards` link you should find a link named `Data Sources`. 1. Click the `+ Add data source` button in the top header. -1. Select *MySQL* from the *Type* dropdown. +1. Select _MySQL_ from the _Type_ dropdown. ### Data source options -Name | Description ------------------- | ------------- -`Name` | The data source name. This is how you refer to the data source in panels and queries. -`Default` | Default data source means that it will be pre-selected for new panels. -`Host` | The IP address/hostname and optional port of your MySQL instance. -`Database` | Name of your MySQL database. -`User` | Database user's login/username -`Password` | Database user's password -`Session Timezone` | Specify the time zone used in the database session, such as `Europe/Berlin` or `+02:00`. This is necessary, if the timezone of the database (or the host of the database) is set to something other than UTC. Set the value used in the session with `SET time_zone='...'`. If you leave this field empty, then the time zone is not updated. For more information, refer to the [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html). -`Max open` | The maximum number of open connections to the database, default `unlimited` (Grafana v5.4+). -`Max idle` | The maximum number of connections in the idle connection pool, default `2` (Grafana v5.4+). -`Max lifetime` | The maximum amount of time in seconds a connection may be reused, default `14400`/4 hours. This should always be lower than configured [wait_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout) in MySQL (Grafana v5.4+). +| Name | Description | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. | +| `Default` | Default data source means that it will be pre-selected for new panels. | +| `Host` | The IP address/hostname and optional port of your MySQL instance. | +| `Database` | Name of your MySQL database. | +| `User` | Database user's login/username | +| `Password` | Database user's password | +| `Session Timezone` | Specify the time zone used in the database session, such as `Europe/Berlin` or `+02:00`. This is necessary, if the timezone of the database (or the host of the database) is set to something other than UTC. Set the value used in the session with `SET time_zone='...'`. If you leave this field empty, then the time zone is not updated. For more information, refer to the [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html). | +| `Max open` | The maximum number of open connections to the database, default `unlimited` (Grafana v5.4+). | +| `Max idle` | The maximum number of connections in the idle connection pool, default `2` (Grafana v5.4+). | +| `Max lifetime` | The maximum amount of time in seconds a connection may be reused, default `14400`/4 hours. This should always be lower than configured [wait_timeout](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout) in MySQL (Grafana v5.4+). | ### Min time interval @@ -66,7 +66,7 @@ Example: GRANT SELECT ON mydatabase.mytable TO 'grafanaReader'; ``` -You can use wildcards (`*`) in place of database or table if you want to grant access to more databases and tables. +You can use wildcards (`*`) in place of database or table if you want to grant access to more databases and tables. ## Query Editor @@ -102,10 +102,12 @@ If you use aggregate functions you need to group your resultset. The editor will You may add further value columns by clicking the plus button and selecting `Column` from the menu. Multiple value columns will be plotted as separate series in the graph panel. ### Filter data (WHERE) + To add a filter click the plus icon to the right of the `WHERE` condition. You can remove filters by clicking on the filter and selecting `Remove`. A filter for the current selected timerange is automatically added to new queries. ### Group By + To group by time or any other columns click the plus icon at the end of the GROUP BY row. The suggestion dropdown will only show text columns of your currently selected table but you may manually enter any column. You can remove the group by clicking on the item and then selecting `Remove`. @@ -116,6 +118,7 @@ If you add any grouping, all selected columns need to have an aggregate function Grafana can fill in missing values when you group by time. The time function accepts two arguments. The first argument is the time window that you would like to group by, and the second argument is the value you want Grafana to fill missing items with. ### Text Editor Mode (RAW) + You can switch to the raw query editor mode by clicking the hamburger icon and selecting `Switch editor mode` or by clicking `Edit SQL` below the query. > If you use the raw query editor, be sure your query at minimum has `ORDER BY time` and a filter on the returned time range. @@ -124,26 +127,26 @@ You can switch to the raw query editor mode by clicking the hamburger icon and s To simplify syntax and to allow for dynamic parts, like date range filters, the query can contain macros. -Macro example | Description ------------------------------------------------------- | ------------- -`$__time(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec* -`$__timeEpoch(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec* -`$__timeFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name. For example, *dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)* -`$__timeFrom()` | Will be replaced by the start of the currently active time selection. For example, *FROM_UNIXTIME(1494410783)* -`$__timeTo()` | Will be replaced by the end of the currently active time selection. For example, *FROM_UNIXTIME(1494410983)* -`$__timeGroup(dateColumn,'5m')` | Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),* -`$__timeGroup(dateColumn,'5m', 0)` | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value. -`$__timeGroup(dateColumn,'5m', NULL)` | Same as above but NULL will be used as value for missing points. -`$__timeGroup(dateColumn,'5m', previous)` | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+). -`$__timeGroupAlias(dateColumn,'5m')` | Will be replaced identical to $__timeGroup but with an added column alias (only available in Grafana 5.3+). -`$__unixEpochFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, *dateColumn > 1494410783 AND dateColumn < 1494497183* -`$__unixEpochFrom()` | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783* -`$__unixEpochTo()` | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183* -`$__unixEpochNanoFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, *dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872* -`$__unixEpochNanoFrom()` | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214* -`$__unixEpochNanoTo()` | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, *1494497183142514872* -`$__unixEpochGroup(dateColumn,'5m', [fillmode])` | Same as $__timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+). -`$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])` | Same as above but also adds a column alias (only available in Grafana 5.3+). +| Macro example | Description | +| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `$__time(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, _UNIX_TIMESTAMP(dateColumn) as time_sec_ | +| `$__timeEpoch(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, _UNIX_TIMESTAMP(dateColumn) as time_sec_ | +| `$__timeFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name. For example, _dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)_ | +| `$__timeFrom()` | Will be replaced by the start of the currently active time selection. For example, _FROM_UNIXTIME(1494410783)_ | +| `$__timeTo()` | Will be replaced by the end of the currently active time selection. For example, _FROM_UNIXTIME(1494410983)_ | +| `$__timeGroup(dateColumn,'5m')` | Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),\* | +| `$__timeGroup(dateColumn,'5m', 0)` | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value. | +| `$__timeGroup(dateColumn,'5m', NULL)` | Same as above but NULL will be used as value for missing points. | +| `$__timeGroup(dateColumn,'5m', previous)` | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+). | +| `$__timeGroupAlias(dateColumn,'5m')` | Will be replaced identical to $\_\_timeGroup but with an added column alias (only available in Grafana 5.3+). | +| `$__unixEpochFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, _dateColumn > 1494410783 AND dateColumn < 1494497183_ | +| `$__unixEpochFrom()` | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, _1494410783_ | +| `$__unixEpochTo()` | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, _1494497183_ | +| `$__unixEpochNanoFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, _dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872_ | +| `$__unixEpochNanoFrom()` | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, _1494410783152415214_ | +| `$__unixEpochNanoTo()` | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, _1494497183142514872_ | +| `$__unixEpochGroup(dateColumn,'5m', [fillmode])` | Same as $\_\_timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+). | +| `$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])` | Same as above but also adds a column alias (only available in Grafana 5.3+). | We plan to add many more macros. If you have suggestions for what macros you would like to see, please [open an issue](https://github.com/grafana/grafana) in our GitHub repo. @@ -197,7 +200,7 @@ GROUP BY time ORDER BY time ``` -**Example using the fill parameter in the $__timeGroup macro to convert null values to be zero instead:** +**Example using the fill parameter in the $\_\_timeGroup macro to convert null values to be zero instead:** ```sql SELECT @@ -240,7 +243,7 @@ Check out the [Templating]({{< relref "../variables/_index.md" >}}) documentatio If you add a template variable of the type `Query`, you can write a MySQL query that can return things like measurement names, key names or key values that are shown as a dropdown select box. -For example, you can have a variable that contains all values for the `hostname` column in a table if you specify a query like this in the templating variable *Query* setting. +For example, you can have a variable that contains all values for the `hostname` column in a table if you specify a query like this in the templating variable _Query_ setting. ```sql SELECT hostname FROM my_host @@ -252,7 +255,7 @@ A query can return multiple columns and Grafana will automatically create a list SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city ``` -To use time range dependent macros like `$__timeFilter(column)` in your query the refresh mode of the template variable needs to be set to *On Time Range Change*. +To use time range dependent macros like `$__timeFilter(column)` in your query the refresh mode of the template variable needs to be set to _On Time Range Change_. ```sql SELECT event_name FROM event_log WHERE $__timeFilter(time_column) @@ -272,6 +275,7 @@ SELECT hostname FROM my_host WHERE region IN($region) ``` #### Using `__searchFilter` to filter results in Query Variable + > Available from Grafana 6.5 and above Using `__searchFilter` in the query field will filter the query result based on what the user types in the dropdown select box. @@ -282,6 +286,7 @@ When nothing has been entered by the user the default value for `__searchFilter` The example below shows how to use `__searchFilter` as part of the query field to enable searching for `hostname` while the user types in the dropdown select box. Query + ```sql SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter' ``` @@ -296,7 +301,7 @@ If the variable is a multi-value variable then use the `IN` comparison operator There are two syntaxes: -`$` Example with a template variable named `hostname`: +`$` Example with a template variable named `hostname`: ```sql SELECT @@ -308,7 +313,7 @@ WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC ``` -`[[varname]]` Example with a template variable named `hostname`: +`[[varname]]` Example with a template variable named `hostname`: ```sql SELECT @@ -374,12 +379,12 @@ WHERE $__timeFilter(native_date_time) ``` -Name | Description ------------ | ------------- -`time` | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value. -`timeend` | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value. (Grafana v6.6+) -`text` | Event description field. -`tags` | Optional field name to use for event tags as a comma separated string. +| Name | Description | +| --------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `time` | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value. | +| `timeend` | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value. (Grafana v6.6+) | +| `text` | Event description field. | +| `tags` | Optional field name to use for event tags as a comma separated string. | ## Alerting @@ -402,7 +407,7 @@ datasources: user: grafana password: password jsonData: - maxOpenConns: 0 # Grafana v5.4+ - maxIdleConns: 2 # Grafana v5.4+ - connMaxLifetime: 14400 # Grafana v5.4+ + maxOpenConns: 0 # Grafana v5.4+ + maxIdleConns: 2 # Grafana v5.4+ + connMaxLifetime: 14400 # Grafana v5.4+ ``` diff --git a/docs/sources/datasources/opentsdb.md b/docs/sources/datasources/opentsdb.md index 950fefbca8f..b5daf5df38c 100644 --- a/docs/sources/datasources/opentsdb.md +++ b/docs/sources/datasources/opentsdb.md @@ -14,15 +14,15 @@ Grafana ships with advanced support for OpenTSDB. This topic explains options, v To access OpenTSDB settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the OpenTSDB data source. -| Name | Description | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -| `Name` | The data source name. This is how you refer to the data source in panels and queries. | -| `Default` | Default data source means that it will be pre-selected for new panels. | -| `URL` | The HTTP protocol, IP, and port of your OpenTSDB server (default port is usually 4242) | -| `Whitelisted Cookies` | List the names of cookies to forward to the data source. | -| `Version` | Version = opentsdb version, either <=2.1 or 2.2 | -| `Resolution` | Metrics from opentsdb may have datapoints with either second or millisecond resolution. | -| `Lookup Limit`| Default is 1000. | +| Name | Description | +| --------------------- | --------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. | +| `Default` | Default data source means that it will be pre-selected for new panels. | +| `URL` | The HTTP protocol, IP, and port of your OpenTSDB server (default port is usually 4242) | +| `Whitelisted Cookies` | List the names of cookies to forward to the data source. | +| `Version` | Version = opentsdb version, either <=2.1 or 2.2 | +| `Resolution` | Metrics from opentsdb may have datapoints with either second or millisecond resolution. | +| `Lookup Limit` | Default is 1000. | ## Query editor diff --git a/docs/sources/datasources/postgres.md b/docs/sources/datasources/postgres.md index 3088151d0ef..4726676b89a 100644 --- a/docs/sources/datasources/postgres.md +++ b/docs/sources/datasources/postgres.md @@ -14,22 +14,22 @@ Grafana ships with a built-in PostgreSQL data source plugin that allows you to q To access PostgreSQL settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Prometheus data source. -Name | Description ------------------ | ------------- -`Name` | The data source name. This is how you refer to the data source in panels and queries. -`Default` | Default data source means that it will be pre-selected for new panels. -`Host` | The IP address/hostname and optional port of your PostgreSQL instance. _Do not_ include the database name. The connection string for connecting to Postgres will not be correct and it may cause errors. -`Database` | Name of your PostgreSQL database. -`User` | Database user's login/username -`Password` | Database user's password -`SSL Mode` | Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server. When SSL Mode is disabled, SSL Method and Auth Details would not be visible. -`SSL Auth Details Method` | Determines whether the SSL Auth details will be configured as a file path or file content. Grafana v7.5+ -`SSL Auth Details Value` | File path or file content of SSL root certificate, client certificate and client key -`Max open` | The maximum number of open connections to the database, default `unlimited` (Grafana v5.4+). -`Max idle` | The maximum number of connections in the idle connection pool, default `2` (Grafana v5.4+). -`Max lifetime` | The maximum amount of time in seconds a connection may be reused, default `14400`/4 hours (Grafana v5.4+). -`Version` |Determines which functions are available in the query builder (only available in Grafana 5.3+). -`TimescaleDB` |A time-series database built as a PostgreSQL extension. When enabled, Grafana uses `time_bucket` in the `$__timeGroup` macro to display TimescaleDB specific aggregate functions in the query builder (only available in Grafana 5.3+). +| Name | Description | +| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. | +| `Default` | Default data source means that it will be pre-selected for new panels. | +| `Host` | The IP address/hostname and optional port of your PostgreSQL instance. _Do not_ include the database name. The connection string for connecting to Postgres will not be correct and it may cause errors. | +| `Database` | Name of your PostgreSQL database. | +| `User` | Database user's login/username | +| `Password` | Database user's password | +| `SSL Mode` | Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server. When SSL Mode is disabled, SSL Method and Auth Details would not be visible. | +| `SSL Auth Details Method` | Determines whether the SSL Auth details will be configured as a file path or file content. Grafana v7.5+ | +| `SSL Auth Details Value` | File path or file content of SSL root certificate, client certificate and client key | +| `Max open` | The maximum number of open connections to the database, default `unlimited` (Grafana v5.4+). | +| `Max idle` | The maximum number of connections in the idle connection pool, default `2` (Grafana v5.4+). | +| `Max lifetime` | The maximum amount of time in seconds a connection may be reused, default `14400`/4 hours (Grafana v5.4+). | +| `Version` | Determines which functions are available in the query builder (only available in Grafana 5.3+). | +| `TimescaleDB` | A time-series database built as a PostgreSQL extension. When enabled, Grafana uses `time_bucket` in the `$__timeGroup` macro to display TimescaleDB specific aggregate functions in the query builder (only available in Grafana 5.3+). | ### Min time interval @@ -109,10 +109,12 @@ avg(tx_bytes) OVER (ORDER BY "time" ROWS 5 PRECEDING) AS "tx_bytes" You may add further value columns by clicking the plus button and selecting `Column` from the menu. Multiple value columns will be plotted as separate series in the graph panel. ### Filter data (WHERE) + To add a filter click the plus icon to the right of the `WHERE` condition. You can remove filters by clicking on the filter and selecting `Remove`. A filter for the current selected timerange is automatically added to new queries. ### Group by + To group by time or any other columns click the plus icon at the end of the GROUP BY row. The suggestion dropdown will only show text columns of your currently selected table but you may manually enter any column. You can remove the group by clicking on the item and then selecting `Remove`. @@ -123,6 +125,7 @@ If you add any grouping, all selected columns need to have an aggregate function Grafana can fill in missing values when you group by time. The time function accepts two arguments. The first argument is the time window that you would like to group by, and the second argument is the value you want Grafana to fill missing items with. ### Text editor mode (RAW) + You can switch to the raw query editor mode by clicking the hamburger icon and selecting `Switch editor mode` or by clicking `Edit SQL` below the query. > If you use the raw query editor, be sure your query at minimum has `ORDER BY time` and a filter on the returned time range. @@ -131,26 +134,26 @@ You can switch to the raw query editor mode by clicking the hamburger icon and s Macros can be used within a query to simplify syntax and allow for dynamic parts. -Macro example | Description ------------------------------------------------------- | ------------- -`$__time(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec* -`$__timeEpoch(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec* -`$__timeFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name. For example, *dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)* -`$__timeFrom()` | Will be replaced by the start of the currently active time selection. For example, *FROM_UNIXTIME(1494410783)* -`$__timeTo()` | Will be replaced by the end of the currently active time selection. For example, *FROM_UNIXTIME(1494410983)* -`$__timeGroup(dateColumn,'5m')` | Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),* -`$__timeGroup(dateColumn,'5m', 0)` | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value. -`$__timeGroup(dateColumn,'5m', NULL)` | Same as above but NULL will be used as value for missing points. -`$__timeGroup(dateColumn,'5m', previous)` | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+). -`$__timeGroupAlias(dateColumn,'5m')` | Will be replaced identical to $__timeGroup but with an added column alias (only available in Grafana 5.3+). -`$__unixEpochFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, *dateColumn > 1494410783 AND dateColumn < 1494497183* -`$__unixEpochFrom()` | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783* -`$__unixEpochTo()` | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183* -`$__unixEpochNanoFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, *dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872* -`$__unixEpochNanoFrom()` | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214* -`$__unixEpochNanoTo()` | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, *1494497183142514872* -`$__unixEpochGroup(dateColumn,'5m', [fillmode])` | Same as $__timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+). -`$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])` | Same as above but also adds a column alias (only available in Grafana 5.3+). +| Macro example | Description | +| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `$__time(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, _UNIX_TIMESTAMP(dateColumn) as time_sec_ | +| `$__timeEpoch(dateColumn)` | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, _UNIX_TIMESTAMP(dateColumn) as time_sec_ | +| `$__timeFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name. For example, _dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)_ | +| `$__timeFrom()` | Will be replaced by the start of the currently active time selection. For example, _FROM_UNIXTIME(1494410783)_ | +| `$__timeTo()` | Will be replaced by the end of the currently active time selection. For example, _FROM_UNIXTIME(1494410983)_ | +| `$__timeGroup(dateColumn,'5m')` | Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),\* | +| `$__timeGroup(dateColumn,'5m', 0)` | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value. | +| `$__timeGroup(dateColumn,'5m', NULL)` | Same as above but NULL will be used as value for missing points. | +| `$__timeGroup(dateColumn,'5m', previous)` | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+). | +| `$__timeGroupAlias(dateColumn,'5m')` | Will be replaced identical to $\_\_timeGroup but with an added column alias (only available in Grafana 5.3+). | +| `$__unixEpochFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, _dateColumn > 1494410783 AND dateColumn < 1494497183_ | +| `$__unixEpochFrom()` | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, _1494410783_ | +| `$__unixEpochTo()` | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, _1494497183_ | +| `$__unixEpochNanoFilter(dateColumn)` | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, _dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872_ | +| `$__unixEpochNanoFrom()` | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, _1494410783152415214_ | +| `$__unixEpochNanoTo()` | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, _1494497183142514872_ | +| `$__unixEpochGroup(dateColumn,'5m', [fillmode])` | Same as $\_\_timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+). | +| `$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])` | Same as above but also adds a column alias (only available in Grafana 5.3+). | We plan to add many more macros. If you have suggestions for what macros you would like to see, please [open an issue](https://github.com/grafana/grafana) in our GitHub repo. @@ -162,7 +165,6 @@ Query editor with example query: ![](/static/img/docs/v46/postgres_table_query.png) - The query: ```sql @@ -203,7 +205,7 @@ GROUP BY time ORDER BY time ``` -**Example using the fill parameter in the $__timeGroup macro to convert null values to be zero instead:** +**Example using the fill parameter in the $\_\_timeGroup macro to convert null values to be zero instead:** ```sql SELECT @@ -241,7 +243,7 @@ Refer to [Templates and variables]({{< relref "../variables/_index.md" >}}) for If you add a template variable of the type `Query`, you can write a PostgreSQL query that can return things like measurement names, key names or key values that are shown as a dropdown select box. -For example, you can have a variable that contains all values for the `hostname` column in a table if you specify a query like this in the templating variable *Query* setting. +For example, you can have a variable that contains all values for the `hostname` column in a table if you specify a query like this in the templating variable _Query_ setting. ```sql SELECT hostname FROM host @@ -253,7 +255,7 @@ A query can return multiple columns and Grafana will automatically create a list SELECT host.hostname, other_host.hostname2 FROM host JOIN other_host ON host.city = other_host.city ``` -To use time range dependent macros like `$__timeFilter(column)` in your query the refresh mode of the template variable needs to be set to *On Time Range Change*. +To use time range dependent macros like `$__timeFilter(column)` in your query the refresh mode of the template variable needs to be set to _On Time Range Change_. ```sql SELECT event_name FROM event_log WHERE $__timeFilter(time_column) @@ -273,6 +275,7 @@ SELECT hostname FROM host WHERE region IN($region) ``` #### Using `__searchFilter` to filter results in Query Variable + > Available from Grafana 6.5 and above Using `__searchFilter` in the query field will filter the query result based on what the user types in the dropdown select box. @@ -283,6 +286,7 @@ When nothing has been entered by the user the default value for `__searchFilter` The example below shows how to use `__searchFilter` as part of the query field to enable searching for `hostname` while the user types in the dropdown select box. Query + ```sql SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter' ``` @@ -297,7 +301,7 @@ If the variable is a multi-value variable then use the `IN` comparison operator There are two syntaxes: -`$` Example with a template variable named `hostname`: +`$` Example with a template variable named `hostname`: ```sql SELECT @@ -308,7 +312,7 @@ WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC ``` -`[[varname]]` Example with a template variable named `hostname`: +`[[varname]]` Example with a template variable named `hostname`: ```sql SELECT @@ -373,12 +377,12 @@ WHERE $__timeFilter(native_date_time) ``` -Name | Description ------------ | ------------- -`time` | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value. -`timeend` | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value. (Grafana v6.6+) -`text` | Event description field. -`tags` | Optional field name to use for event tags as a comma separated string. +| Name | Description | +| --------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `time` | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value. | +| `timeend` | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value. (Grafana v6.6+) | +| `text` | Event description field. | +| `tags` | Optional field name to use for event tags as a comma separated string. | ## Alerting @@ -401,17 +405,19 @@ datasources: database: grafana user: grafana secureJsonData: - password: "Password!" + password: 'Password!' jsonData: - sslmode: "disable" # disable/require/verify-ca/verify-full - maxOpenConns: 0 # Grafana v5.4+ - maxIdleConns: 2 # Grafana v5.4+ - connMaxLifetime: 14400 # Grafana v5.4+ + sslmode: 'disable' # disable/require/verify-ca/verify-full + maxOpenConns: 0 # Grafana v5.4+ + maxIdleConns: 2 # Grafana v5.4+ + connMaxLifetime: 14400 # Grafana v5.4+ postgresVersion: 903 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10 timescaledb: false ``` ->**Note:** In the above code, the `postgresVersion` value of `10` refers to version PotgreSQL 10 and above. + +> **Note:** In the above code, the `postgresVersion` value of `10` refers to version PotgreSQL 10 and above. If you encounter metric request errors or other issues: + - Make sure your data source YAML file parameters exactly match the example. This includes parameter names and use of quotation marks. - Make sure the `database` name is not included in the `url`. diff --git a/docs/sources/datasources/testdata.md b/docs/sources/datasources/testdata.md index 190e2f06360..daba5034055 100644 --- a/docs/sources/datasources/testdata.md +++ b/docs/sources/datasources/testdata.md @@ -36,6 +36,7 @@ Once you provided the numbers, `TestData DB` distributes them evenly based on th ## Dashboards `TestData DB` also contains some dashboards with examples. + 1. Click **Configuration** > **Data Sources** > **TestData DB** > **Dashboards**. 1. **Import** the **Simple Streaming Example** dashboard. diff --git a/docs/sources/developers/cla.md b/docs/sources/developers/cla.md index bb918e4f197..78572e56748 100644 --- a/docs/sources/developers/cla.md +++ b/docs/sources/developers/cla.md @@ -5,93 +5,107 @@ aliases = ["/docs/grafana/latest/project/cla", "docs/contributing/cla.html"] +++ # Grafana Labs Software Grant and Contributor License Agreement ("Agreement") + This agreement is based on the Apache Software Foundation Contributor License Agreement. (v r190612) Thank you for your interest in software projects stewarded by Raintank, Inc. dba Grafana Labs (“Grafana Labs”). In order to clarify the intellectual property license - granted with Contributions from any person or entity, Grafana Labs - must have a Contributor License Agreement (CLA) on file that has been - agreed to by each Contributor, indicating agreement to the license terms - below. This license is for your protection as a Contributor as well - as the protection of Grafana Labs and its users; it does not change - your rights to use your own Contributions for any other purpose. - This Agreement allows an individual to contribute to Grafana Labs on that individual’s own behalf, or an entity (the "Corporation") to - submit Contributions to Grafana Labs, to authorize Contributions - submitted by its designated employees to Grafana Labs, and to grant - copyright and patent licenses thereto. +granted with Contributions from any person or entity, Grafana Labs +must have a Contributor License Agreement (CLA) on file that has been +agreed to by each Contributor, indicating agreement to the license terms +below. This license is for your protection as a Contributor as well +as the protection of Grafana Labs and its users; it does not change +your rights to use your own Contributions for any other purpose. +This Agreement allows an individual to contribute to Grafana Labs on that individual’s own behalf, or an entity (the "Corporation") to +submit Contributions to Grafana Labs, to authorize Contributions +submitted by its designated employees to Grafana Labs, and to grant +copyright and patent licenses thereto. You accept and agree to the following terms and conditions for Your - present and future Contributions submitted to Grafana Labs. Except - for the license granted herein to Grafana Labs and recipients of - software distributed by Grafana Labs, You reserve all right, title, - and interest in and to Your Contributions. - ## 1. Definitions. - "You" (or "Your") shall mean the copyright owner or legal entity - authorized by the copyright owner that is making this Agreement - with Grafana Labs. For legal entities, the entity making a - Contribution and all other entities that control, are controlled by, - or are under common control with that entity are considered to be a - single Contributor. For the purposes of this definition, "control" - means (i) the power, direct or indirect, to cause the direction or - management of such entity, whether by contract or otherwise, or - (ii) ownership of fifty percent (50%) or more of the outstanding - shares, or (iii) beneficial ownership of such entity. - "Contribution" shall mean any work, as well as - any modifications or additions to an existing work, that is intentionally - submitted by You to Grafana Labs for inclusion in, or - documentation of, any of the products owned or managed by Grafana Labs (the "Work"). For the purposes of this definition, - "submitted" means any form of electronic, verbal, or written - communication sent to Grafana Labs or its representatives, - including but not limited to communication on electronic mailing - lists, source code control systems (such as GitHub), and issue tracking systems - that are managed by, or on behalf of, Grafana Labs for the - purpose of discussing and improving the Work, but excluding - communication that is conspicuously marked or otherwise designated - in writing by You as "Not a Contribution." - ## 2. Grant of Copyright License. Subject to the terms and conditions - of this Agreement, You hereby grant to Grafana Labs and to - recipients of software distributed by Grafana Labs a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare derivative works of, - publicly display, publicly perform, sublicense, and distribute - Your Contributions and such derivative works. - ## 3. Grant of Patent License. Subject to the terms and conditions of - this Agreement, You hereby grant to Grafana Labs and to recipients - of software distributed by Grafana Labs a perpetual, worldwide, - non-exclusive, no-charge, royalty-free, irrevocable (except as - stated in this section) patent license to make, have made, use, - offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by You that are necessarily infringed by Your Contribution(s) - alone or by combination of Your Contribution(s) with the Work to - which such Contribution(s) were submitted. If any entity institutes - patent litigation against You or any other entity (including a - cross-claim or counterclaim in a lawsuit) alleging that your - Contribution, or the Work to which you have contributed, constitutes - direct or contributory patent infringement, then any patent licenses - granted to that entity under this Agreement for that Contribution or - Work shall terminate as of the date such litigation is filed. - ## 4. You represent that You are legally entitled to grant the above - license. If You are an individual, and if Your employer(s) has rights to intellectual property - that you create that includes Your Contributions, you represent - that You have received permission to make Contributions on behalf - of that employer, or that Your employer has waived such rights for - your Contributions to Grafana Labs. If You are a Corporation, any individual who makes a contribution from an account associated with You will be considered authorized to Contribute on Your behalf. - ## 5. You represent that each of Your Contributions is Your original - creation (see section 7 for submissions on behalf of others). - ## 6. You are not expected to provide support for Your Contributions, - except to the extent You desire to provide support. You may provide - support for free, for a fee, or not at all. Unless required by - applicable law or agreed to in writing, You provide Your - Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - OF ANY KIND, either express or implied, including, without - limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, - MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. - ## 7. Should You wish to submit work that is not Your original creation, - You may submit it to Grafana Labs separately from any - Contribution, identifying the complete details of its source and - of any license or other restriction (including, but not limited - to, related patents, trademarks, and license agreements) of which - you are personally aware, and conspicuously marking the work as - "Submitted on behalf of a third-party: [named here]". +present and future Contributions submitted to Grafana Labs. Except +for the license granted herein to Grafana Labs and recipients of +software distributed by Grafana Labs, You reserve all right, title, +and interest in and to Your Contributions. + +## 1. Definitions. + +"You" (or "Your") shall mean the copyright owner or legal entity +authorized by the copyright owner that is making this Agreement +with Grafana Labs. For legal entities, the entity making a +Contribution and all other entities that control, are controlled by, +or are under common control with that entity are considered to be a +single Contributor. For the purposes of this definition, "control" +means (i) the power, direct or indirect, to cause the direction or +management of such entity, whether by contract or otherwise, or +(ii) ownership of fifty percent (50%) or more of the outstanding +shares, or (iii) beneficial ownership of such entity. +"Contribution" shall mean any work, as well as +any modifications or additions to an existing work, that is intentionally +submitted by You to Grafana Labs for inclusion in, or +documentation of, any of the products owned or managed by Grafana Labs (the "Work"). For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written +communication sent to Grafana Labs or its representatives, +including but not limited to communication on electronic mailing +lists, source code control systems (such as GitHub), and issue tracking systems +that are managed by, or on behalf of, Grafana Labs for the +purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by You as "Not a Contribution." + +## 2. Grant of Copyright License. Subject to the terms and conditions + +of this Agreement, You hereby grant to Grafana Labs and to +recipients of software distributed by Grafana Labs a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare derivative works of, +publicly display, publicly perform, sublicense, and distribute +Your Contributions and such derivative works. + +## 3. Grant of Patent License. Subject to the terms and conditions of + +this Agreement, You hereby grant to Grafana Labs and to recipients +of software distributed by Grafana Labs a perpetual, worldwide, +non-exclusive, no-charge, royalty-free, irrevocable (except as +stated in this section) patent license to make, have made, use, +offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by You that are necessarily infringed by Your Contribution(s) +alone or by combination of Your Contribution(s) with the Work to +which such Contribution(s) were submitted. If any entity institutes +patent litigation against You or any other entity (including a +cross-claim or counterclaim in a lawsuit) alleging that your +Contribution, or the Work to which you have contributed, constitutes +direct or contributory patent infringement, then any patent licenses +granted to that entity under this Agreement for that Contribution or +Work shall terminate as of the date such litigation is filed. + +## 4. You represent that You are legally entitled to grant the above + +license. If You are an individual, and if Your employer(s) has rights to intellectual property +that you create that includes Your Contributions, you represent +that You have received permission to make Contributions on behalf +of that employer, or that Your employer has waived such rights for +your Contributions to Grafana Labs. If You are a Corporation, any individual who makes a contribution from an account associated with You will be considered authorized to Contribute on Your behalf. + +## 5. You represent that each of Your Contributions is Your original + +creation (see section 7 for submissions on behalf of others). + +## 6. You are not expected to provide support for Your Contributions, + +except to the extent You desire to provide support. You may provide +support for free, for a fee, or not at all. Unless required by +applicable law or agreed to in writing, You provide Your +Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS +OF ANY KIND, either express or implied, including, without +limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. + +## 7. Should You wish to submit work that is not Your original creation, +You may submit it to Grafana Labs separately from any +Contribution, identifying the complete details of its source and +of any license or other restriction (including, but not limited +to, related patents, trademarks, and license agreements) of which +you are personally aware, and conspicuously marking the work as +"Submitted on behalf of a third-party: [named here]". diff --git a/docs/sources/developers/plugins/_index.md b/docs/sources/developers/plugins/_index.md index cfe7a0d3181..b5cbf57da68 100644 --- a/docs/sources/developers/plugins/_index.md +++ b/docs/sources/developers/plugins/_index.md @@ -83,5 +83,3 @@ Learn more about Grafana options and packages. #### Go - [Grafana Plugin SDK for Go]({{< relref "backend/grafana-plugin-sdk-for-go" >}}) - - diff --git a/docs/sources/developers/plugins/add-authentication-for-data-source-plugins.md b/docs/sources/developers/plugins/add-authentication-for-data-source-plugins.md index c0fbdcccc88..d0c5c2c4a70 100644 --- a/docs/sources/developers/plugins/add-authentication-for-data-source-plugins.md +++ b/docs/sources/developers/plugins/add-authentication-for-data-source-plugins.md @@ -3,7 +3,7 @@ title = "Add authentication for data source plugins" aliases = ["/docs/grafana/latest/plugins/developing/auth-for-datasources/", "/docs/grafana/next/developers/plugins/authentication/"] +++ - # Add authentication for data source plugins +# Add authentication for data source plugins This page explains how to configure your data source plugin to authenticate against a third-party API. @@ -146,11 +146,10 @@ To forward requests through the Grafana proxy, you need to configure one or more ```ts const routePath = '/example'; - getBackendSrv() - .datasourceRequest({ - url: this.url + routePath + '/v1/users', - method: 'GET', - }); + getBackendSrv().datasourceRequest({ + url: this.url + routePath + '/v1/users', + method: 'GET', + }); ``` ### Add a dynamic proxy route to your plugin diff --git a/docs/sources/developers/plugins/add-query-editor-help.md b/docs/sources/developers/plugins/add-query-editor-help.md index 03ccd89f82f..6eca73a4687 100644 --- a/docs/sources/developers/plugins/add-query-editor-help.md +++ b/docs/sources/developers/plugins/add-query-editor-help.md @@ -13,9 +13,7 @@ By adding a help component to your plugin, you can for example create "cheat she import { QueryEditorHelpProps } from '@grafana/data'; export default (props: QueryEditorHelpProps) => { - return ( -

My cheat sheet

- ); + return

My cheat sheet

; }; ``` @@ -62,7 +60,7 @@ By adding a help component to your plugin, you can for example create "cheat she {item.expression ? (
props.onClickExample({ refId: 'A', queryText: item.expression } as DataQuery)} + onClick={(e) => props.onClickExample({ refId: 'A', queryText: item.expression } as DataQuery)} > {item.expression}
diff --git a/docs/sources/developers/plugins/add-support-for-annotations.md b/docs/sources/developers/plugins/add-support-for-annotations.md index 5f0f4c8d5aa..201cf5bab50 100644 --- a/docs/sources/developers/plugins/add-support-for-annotations.md +++ b/docs/sources/developers/plugins/add-support-for-annotations.md @@ -29,5 +29,6 @@ To enable annotation support for your data source, add the following two lines o **datasource.ts** ```ts - annotations: {}; + annotations: { + } ``` diff --git a/docs/sources/developers/plugins/add-support-for-explore-queries.md b/docs/sources/developers/plugins/add-support-for-explore-queries.md index 438ef07b78b..525a833c876 100644 --- a/docs/sources/developers/plugins/add-support-for-explore-queries.md +++ b/docs/sources/developers/plugins/add-support-for-explore-queries.md @@ -29,9 +29,7 @@ The query editor for Explore is similar to the query editor for the data source export type Props = ExploreQueryFieldProps; export default (props: Props) => { - return ( -

My query editor

- ); + return

My query editor

; }; ``` @@ -92,6 +90,7 @@ Explore should by default select a reasonable visualization for your data so use If this does not work for you or you want to show some data in a specific visualization, add a hint to your returned data frame using the `preferredVisualisationType` meta attribute. You can construct a data frame with specific metadata: + ``` const firstResult = new MutableDataFrame({ fields: [...], diff --git a/docs/sources/developers/plugins/add-support-for-variables.md b/docs/sources/developers/plugins/add-support-for-variables.md index cfcdd3eda98..02b8ce0576f 100644 --- a/docs/sources/developers/plugins/add-support-for-variables.md +++ b/docs/sources/developers/plugins/add-support-for-variables.md @@ -30,10 +30,10 @@ Add `replaceVariables` to the argument list, and pass it a user-defined template ```ts export const SimplePanel: React.FC = ({ options, data, width, height, replaceVariables }) => { - const query = replaceVariables('Now displaying $service') + const query = replaceVariables('Now displaying $service'); - return
{ query }
-} + return
{query}
; +}; ``` ## Interpolate variables in data source plugins @@ -67,7 +67,7 @@ A data source can define the default format option when no format is specified b Let's change the SQL query to use CSV format by default: ```ts -getTemplateSrv().replace('SELECT * FROM services WHERE id IN ($service)', options.scopedVars, "csv"); +getTemplateSrv().replace('SELECT * FROM services WHERE id IN ($service)', options.scopedVars, 'csv'); ``` Now, when users write `$service`, the query looks like this: @@ -177,7 +177,13 @@ Let's create a custom query editor to allow the user to edit the query model.
Query - +
); diff --git a/docs/sources/developers/plugins/backend/plugin-protocol.md b/docs/sources/developers/plugins/backend/plugin-protocol.md index 6abd367d6a1..675c96927ed 100644 --- a/docs/sources/developers/plugins/backend/plugin-protocol.md +++ b/docs/sources/developers/plugins/backend/plugin-protocol.md @@ -20,6 +20,7 @@ Because Grafana maintains the plugin protocol, the plugin protocol attempts to f ## Writing plugins without Go If you want to write a backend plugin in another language than Go, then it’s possible as long as the language supports [gRPC](https://grpc.io/). However, writing a plugin in Go is recommended and has several advantages that should be carefully taken into account before proceeding: + - There's an official [SDK]({{< relref "grafana-plugin-sdk-for-go.md" >}}) available. - Single binary as the compiled output. - Building and compiling for multiple platforms is easy. diff --git a/docs/sources/developers/plugins/build-a-streaming-data-source-plugin.md b/docs/sources/developers/plugins/build-a-streaming-data-source-plugin.md index c68e5dfdd76..8bf01cf26c7 100644 --- a/docs/sources/developers/plugins/build-a-streaming-data-source-plugin.md +++ b/docs/sources/developers/plugins/build-a-streaming-data-source-plugin.md @@ -45,8 +45,8 @@ Grafana uses [RxJS](https://rxjs.dev/) to continuously send data from a data sou ``` ```ts - const observables = options.targets.map(target => { - return new Observable(subscriber => { + const observables = options.targets.map((target) => { + return new Observable((subscriber) => { // ... }); }); @@ -99,38 +99,38 @@ Grafana uses [RxJS](https://rxjs.dev/) to continuously send data from a data sou Here's the final `query` method. - ```ts - query(options: DataQueryRequest): Observable { - const streams = options.targets.map(target => { - const query = defaults(target, defaultQuery); - - return new Observable(subscriber => { - const frame = new CircularDataFrame({ - append: 'tail', - capacity: 1000, - }); - - frame.refId = query.refId; - frame.addField({ name: 'time', type: FieldType.time }); - frame.addField({ name: 'value', type: FieldType.number }); - - const intervalId = setInterval(() => { - frame.add({ time: Date.now(), value: Math.random() }); - - subscriber.next({ - data: [frame], - key: query.refId, - }); - }, 100); - - return () => { - clearInterval(intervalId); - }; - }); - }); - - return merge(...streams); - } - ``` +```ts +query(options: DataQueryRequest): Observable { + const streams = options.targets.map(target => { + const query = defaults(target, defaultQuery); + + return new Observable(subscriber => { + const frame = new CircularDataFrame({ + append: 'tail', + capacity: 1000, + }); + + frame.refId = query.refId; + frame.addField({ name: 'time', type: FieldType.time }); + frame.addField({ name: 'value', type: FieldType.number }); + + const intervalId = setInterval(() => { + frame.add({ time: Date.now(), value: Math.random() }); + + subscriber.next({ + data: [frame], + key: query.refId, + }); + }, 100); + + return () => { + clearInterval(intervalId); + }; + }); + }); + + return merge(...streams); +} +``` One limitation with this example is that the panel visualization is cleared every time you update the dashboard. If you have access to historical data, you can add, or _backfill_, it to the data frame before the first call to `subscriber.next()`. diff --git a/docs/sources/developers/plugins/custom-panel-option-editors.md b/docs/sources/developers/plugins/custom-panel-option-editors.md index aa2569244e1..f0aa18b4fcb 100644 --- a/docs/sources/developers/plugins/custom-panel-option-editors.md +++ b/docs/sources/developers/plugins/custom-panel-option-editors.md @@ -27,14 +27,13 @@ To use a custom panel option editor, use the `addCustomEditor` on the `OptionsUI **module.ts** ```ts -export const plugin = new PanelPlugin(SimplePanel).setPanelOptions(builder => { - return builder - .addCustomEditor({ - id: 'label', - path: 'label', - name: 'Label', - editor: SimpleEditor, - }); +export const plugin = new PanelPlugin(SimplePanel).setPanelOptions((builder) => { + return builder.addCustomEditor({ + id: 'label', + path: 'label', + name: 'Label', + editor: SimpleEditor, + }); }); ``` @@ -52,7 +51,7 @@ interface Settings { to: number; } -export const SimpleEditor: React.FC> = ({ item, value, onChange }) => { +export const SimpleEditor: React.FC> = ({ item, value, onChange }) => { const options: Array> = []; // Default values @@ -66,25 +65,24 @@ export const SimpleEditor: React.FC> = ({ }); } - return onChange(selectableValue.value)} />; }; ``` You can now configure the editor for each option, by configuring the `settings` property in the call to `addCustomEditor`. ```ts -export const plugin = new PanelPlugin(SimplePanel).setPanelOptions(builder => { - return builder - .addCustomEditor({ - id: 'index', - path: 'index', - name: 'Index', - editor: SimpleEditor, - settings: { - from: 1, - to: 10, - } - }); +export const plugin = new PanelPlugin(SimplePanel).setPanelOptions((builder) => { + return builder.addCustomEditor({ + id: 'index', + path: 'index', + name: 'Index', + editor: SimpleEditor, + settings: { + from: 1, + to: 10, + }, + }); }); ``` @@ -113,7 +111,7 @@ export const SimpleEditor: React.FC> = ({ item, valu } } - return onChange(selectableValue.value)} />; }; ``` diff --git a/docs/sources/developers/plugins/error-handling.md b/docs/sources/developers/plugins/error-handling.md index f11935f2d89..4125ab4a5f8 100644 --- a/docs/sources/developers/plugins/error-handling.md +++ b/docs/sources/developers/plugins/error-handling.md @@ -16,7 +16,7 @@ Allow the user to learn your plugin in small steps. Provide a useful default con For example, by selecting the first field of an expected type, the panel can display a visualization without any user configuration. If a user explicitly selects a field, then use that one. Otherwise, default to the first field of type `string`: ```ts -const numberField = frame.fields.find(field => +const numberField = frame.fields.find((field) => options.numberFieldName ? field.name === options.numberFieldName : field.type === FieldType.number ); ``` @@ -54,10 +54,10 @@ Users have full freedom when they create data source queries for panels. If your ```ts if (!numberField) { - throw new Error('Query result is missing a number field') + throw new Error('Query result is missing a number field'); } if (frame.length === 0) { - throw new Error('Query returned an empty result') + throw new Error('Query returned an empty result'); } ``` diff --git a/docs/sources/developers/plugins/legacy/data-sources.md b/docs/sources/developers/plugins/legacy/data-sources.md index 77ec4f13273..53538398bce 100644 --- a/docs/sources/developers/plugins/legacy/data-sources.md +++ b/docs/sources/developers/plugins/legacy/data-sources.md @@ -45,15 +45,15 @@ The javascript object that communicates with the database and transforms data to The Data source should contain the following functions: ```javascript -query(options) // used by panels to get data -testDatasource() // used by data source configuration page to make sure the connection is working -annotationQuery(options) // used by dashboards to get annotations -metricFindQuery(options) // used by query editor to get metric suggestions. +query(options); // used by panels to get data +testDatasource(); // used by data source configuration page to make sure the connection is working +annotationQuery(options); // used by dashboards to get annotations +metricFindQuery(options); // used by query editor to get metric suggestions. ``` ### testDatasource -When a user clicks on the *Save & Test* button when adding a new data source, the details are first saved to the database and then the `testDatasource` function that is defined in your data source plugin will be called. It is recommended that this function makes a query to the data source that will also test that the authentication details are correct. This is so the data source is correctly configured when the user tries to write a query in a new dashboard. +When a user clicks on the _Save & Test_ button when adding a new data source, the details are first saved to the database and then the `testDatasource` function that is defined in your data source plugin will be called. It is recommended that this function makes a query to the data source that will also test that the authentication details are correct. This is so the data source is correctly configured when the user tries to write a query in a new dashboard. ### Query @@ -81,15 +81,15 @@ An array of: ```json [ { - "target":"upper_75", - "datapoints":[ + "target": "upper_75", + "datapoints": [ [622, 1450754160000], [365, 1450754220000] ] }, { - "target":"upper_90", - "datapoints":[ + "target": "upper_90", + "datapoints": [ [861, 1450754160000], [767, 1450754220000] ] @@ -118,16 +118,8 @@ An array of: } ], "rows": [ - [ - 1457425380000, - null, - null - ], - [ - 1457425370000, - 1002.76215352, - 1002.76215352 - ] + [1457425380000, null, null], + [1457425370000, 1002.76215352, 1002.76215352] ], "type": "table" } @@ -141,7 +133,7 @@ Request object passed to datasource.annotationQuery function: ```json { "range": { "from": "2016-03-04T04:07:55.144Z", "to": "2016-03-04T07:07:55.144Z" }, - "rangeRaw": { "from": "now-3h", to: "now" }, + "rangeRaw": { "from": "now-3h", "to": "now" }, "annotation": { "datasource": "generic datasource", "enable": true, @@ -160,7 +152,7 @@ Expected result from datasource.annotationQuery: "name": "annotation name", //should match the annotation name in grafana "enabled": true, "datasource": "generic datasource" - }, + }, "title": "Cluster outage", "time": 1457075272576, "text": "Joe causes brain split", diff --git a/docs/sources/developers/plugins/legacy/defaults-and-editor-mode.md b/docs/sources/developers/plugins/legacy/defaults-and-editor-mode.md index 215eaa3bcbf..682e250ac01 100644 --- a/docs/sources/developers/plugins/legacy/defaults-and-editor-mode.md +++ b/docs/sources/developers/plugins/legacy/defaults-and-editor-mode.md @@ -61,13 +61,13 @@ Grafana conventions mean all you need to do is to hook up an Angular template wi ## Using Events -To add an editor tab you need to hook into the event model so that the tab is added when the *init-edit-mode* event is triggered. The following code should be added to the constructor of the plugin Ctrl class: +To add an editor tab you need to hook into the event model so that the tab is added when the _init-edit-mode_ event is triggered. The following code should be added to the constructor of the plugin Ctrl class: ```javascript this.events.on('init-edit-mode', this.onInitEditMode.bind(this)); ``` -Then you need to create a handler function that is bound to the event. In the example above, the handler is called onInitEditMode. The tab is added by calling the controller function, *addEditorTab*. This function has three parameters; the tab name, the path to a html template for the new editor tab and the tab number. It can be a bit tricky to figure out the path, the path name will be based on the id that is specified in the plugin.json file - for example **grafana-clock-panel**. The code below hooks up an Angular template called editor.html that is located in the `src/partials` directory. +Then you need to create a handler function that is bound to the event. In the example above, the handler is called onInitEditMode. The tab is added by calling the controller function, _addEditorTab_. This function has three parameters; the tab name, the path to a html template for the new editor tab and the tab number. It can be a bit tricky to figure out the path, the path name will be based on the id that is specified in the plugin.json file - for example **grafana-clock-panel**. The code below hooks up an Angular template called editor.html that is located in the `src/partials` directory. ```javascript onInitEditMode() { @@ -82,31 +82,42 @@ For editor tabs html, it is best to use Grafana css styles rather than custom st Most editor tabs should use the [gf-form css class](https://github.com/grafana/grafana/blob/main/public/sass/components/_gf-form.scss) from Grafana. The example below has one row with a couple of columns and each column is wrapped in a div like this: ```html -
- ``` +
+``` Then each pair, label and field is wrapped in a div with a gf-form class. ```html
- +
``` -Note that there are some Angular attributes here. *ng-model* will update the panel data. *ng-change* will render the panel when you change the value. This change will occur on the onblur event due to the *ng-model-onblur* attribute. This means you can see the effect of your changes on the panel while editing. +Note that there are some Angular attributes here. _ng-model_ will update the panel data. _ng-change_ will render the panel when you change the value. This change will occur on the onblur event due to the _ng-model-onblur_ attribute. This means you can see the effect of your changes on the panel while editing. {{< figure class="float-right" src="/assets/img/blog/clock-panel-editor.png" caption="Panel Editor" >}} On the editor tab we use a drop down for 12/24 hour clock, an input field for font size and a color picker for the background color. -The drop down/select has its own *gf-form-select-wrapper* css class and looks like this: +The drop down/select has its own _gf-form-select-wrapper_ css class and looks like this: ```html
- +
``` @@ -114,11 +125,11 @@ The drop down/select has its own *gf-form-select-wrapper* css class and looks li The color picker (or spectrum picker) is a component that already exists in Grafana. We use it like this for the background color: ```html - + ``` ## Editor Tab Finished To reiterate, this all ties together quite neatly. We specify properties and panel defaults in the constructor for the panel controller and these can then be changed in the editor. Grafana takes care of saving the changes. -One thing to be aware of is that panel defaults are used the first time a panel is created to set the initial values of the panel properties. After the panel is saved then the saved value will be used instead. So beware if you update panel defaults they will not automatically update the property in an existing panel. For example, if you set the default font size to 60px first and then in version 2 of the plugin change it to 50px, existing panels will still have 60px and only new panels will get the new 50px value. +One thing to be aware of is that panel defaults are used the first time a panel is created to set the initial values of the panel properties. After the panel is saved then the saved value will be used instead. So beware if you update panel defaults they will not automatically update the property in an existing panel. For example, if you set the default font size to 60px first and then in version 2 of the plugin change it to 50px, existing panels will still have 60px and only new panels will get the new 50px value. diff --git a/docs/sources/developers/plugins/legacy/panels.md b/docs/sources/developers/plugins/legacy/panels.md index 1b908a26b7e..1b99d94b786 100644 --- a/docs/sources/developers/plugins/legacy/panels.md +++ b/docs/sources/developers/plugins/legacy/panels.md @@ -11,7 +11,8 @@ Panels are the main building blocks of dashboards. ## Panel development ### Scrolling -The grafana dashboard framework controls the panel height. To enable a scrollbar within the panel the PanelCtrl needs to set the scrollable static variable: + +The grafana dashboard framework controls the panel height. To enable a scrollbar within the panel the PanelCtrl needs to set the scrollable static variable: ```javascript export class MyPanelCtrl extends PanelCtrl { @@ -19,7 +20,7 @@ export class MyPanelCtrl extends PanelCtrl { ... ``` -In this case, make sure the template has a single `
...
` root. The plugin loader will modify that element adding a scrollbar. +In this case, make sure the template has a single `
...
` root. The plugin loader will modify that element adding a scrollbar. ### Examples diff --git a/docs/sources/developers/plugins/legacy/review-guidelines.md b/docs/sources/developers/plugins/legacy/review-guidelines.md index 7449b5f6318..ba3bfc3be49 100644 --- a/docs/sources/developers/plugins/legacy/review-guidelines.md +++ b/docs/sources/developers/plugins/legacy/review-guidelines.md @@ -48,20 +48,19 @@ A minimal `plugin.json` file: "dependencies": { "grafanaVersion": "3.x.x", - "plugins": [ ] + "plugins": [] } } ``` - The convention for the plugin id is **[grafana.com username/org]-[plugin name]-[datasource|app|panel]** and it has to be unique. The org **cannot** be `grafana` unless it is a plugin created by the Grafana core team. - Examples: - - - raintank-worldping-app - - ryantxu-ajax-panel - - alexanderzobnin-zabbix-app - - hawkular-datasource + Examples: + - raintank-worldping-app + - ryantxu-ajax-panel + - alexanderzobnin-zabbix-app + - hawkular-datasource - The `type` field should be either `datasource` `app` or `panel`. - The `version` field should be in the form: x.x.x e.g. `1.0.0` or `0.4.1`. @@ -118,11 +117,23 @@ Below is a minimal example of an editor row with one form group and two fields,
- +
- +
@@ -132,22 +143,19 @@ Below is a minimal example of an editor row with one form group and two fields, Use the `width-x` and `max-width-x` classes to control the width of your labels and input fields. Try to get labels and input fields to line up neatly by having the same width for all the labels in a group and the same width for all inputs in a group if possible. ## Data Sources + For more information about data sources, refer to the [basic guide for data sources](http://docs.grafana.org/plugins/developing/datasources/). ### Configuration Page Guidelines - It should be as easy as possible for a user to configure a URL. If the data source is using the `datasource-http-settings` component, it should use the `suggest-url` attribute to suggest the default URL or a URL that is similar to what it should be (especially important if the URL refers to a REST endpoint that is not common knowledge for most users e.g. `https://yourserver:4000/api/custom-endpoint`). - ```html - - - ``` + ```html + + ``` - The `testDatasource` function should make a query to the data source that will also test that the authentication details are correct. This is so the data source is correctly configured when the user tries to write a query in a new dashboard. - #### Password Security If possible, any passwords or secrets should be saved in the `secureJsonData` blob. To encrypt sensitive data, the Grafana server's proxy feature must be used. The Grafana server has support for token authentication (OAuth) and HTTP Header authentication. If the calls have to be sent directly from the browser to a third-party API, this will not be possible and sensitive data will not be encrypted. @@ -156,9 +164,8 @@ Read more here about how [authentication for data sources]({{< relref "../add-au If using the proxy feature, the Configuration page should use the `secureJsonData` blob like this: - - good: `` - - bad: `` - +- good: `` +- bad: `` ### Query Editor diff --git a/docs/sources/developers/plugins/metadata.md b/docs/sources/developers/plugins/metadata.md index 8f7d4c82293..ee0a31de9ff 100644 --- a/docs/sources/developers/plugins/metadata.md +++ b/docs/sources/developers/plugins/metadata.md @@ -14,7 +14,7 @@ The plugin.json file is required for all plugins. When Grafana starts, it scans ## Properties | Property | Type | Required | Description | -|-----------------|-------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| --------------- | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dependencies` | [object](#dependencies) | **Yes** | Dependencies needed by the plugin. | | `id` | string | **Yes** | Unique name of the plugin. If the plugin is published on grafana.com, then the plugin id has to follow the naming conventions. | | `info` | [object](#info) | **Yes** | Metadata for the plugin. Some fields are used on the plugins page in Grafana and others on grafana.com if the plugin is published. | @@ -33,7 +33,7 @@ The plugin.json file is required for all plugins. When Grafana starts, it scans | `metrics` | boolean | No | For data source plugins. If the plugin supports metric queries. Used in the Explore feature. | | `preload` | boolean | No | Initialize plugin on startup. By default, the plugin initializes on first use. | | `queryOptions` | [object](#queryoptions) | No | For data source plugins. There is a query options section in the plugin's query editor and these options can be turned on if needed. | -| `routes` | [object](#routes)[] | No | For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Add authentication for data source plugins]({{< relref "add-authentication-for-data-source-plugins.md">}}). | +| `routes` | [object](#routes)[] | No | For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Add authentication for data source plugins]({{< relref "add-authentication-for-data-source-plugins.md">}}). | | `skipDataQuery` | boolean | No | For panel plugins. Hides the query editor. | | `state` | string | No | Marks a plugin as a pre-release. Possible values are: `alpha`, `beta`. | | `streaming` | boolean | No | For data source plugins. If the plugin supports streaming. | @@ -47,7 +47,7 @@ Dependencies needed by the plugin. ### Properties | Property | Type | Required | Description | -|---------------------|----------------------|----------|-------------------------------------------------------------------------------------------------------------------------------| +| ------------------- | -------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `grafanaDependency` | string | **Yes** | Required Grafana version for this plugin. Validated using https://github.com/npm/node-semver. | | `grafanaVersion` | string | No | (Deprecated) Required Grafana version for this plugin, e.g. `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or v7.x.x. | | `plugins` | [object](#plugins)[] | No | An array of required plugins on which this plugin depends. | @@ -59,7 +59,7 @@ Plugin dependency. Used to display information about plugin dependencies in the #### Properties | Property | Type | Required | Description | -|-----------|--------|----------|----------------------------------------------------| +| --------- | ------ | -------- | -------------------------------------------------- | | `id` | string | **Yes** | | | `name` | string | **Yes** | | | `type` | string | **Yes** | Possible values are: `app`, `datasource`, `panel`. | @@ -70,7 +70,7 @@ Plugin dependency. Used to display information about plugin dependencies in the ### Properties | Property | Type | Required | Description | -|--------------|---------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ------------ | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `addToNav` | boolean | No | Add the include to the side menu. | | `component` | string | No | (Legacy) The Angular component to use for a page. | | `defaultNav` | boolean | No | Page or dashboard when user clicks the icon in the side menu. | @@ -87,7 +87,7 @@ Metadata for the plugin. Some fields are used on the plugins page in Grafana and ### Properties | Property | Type | Required | Description | -|---------------|--------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------| +| ------------- | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- | | `keywords` | string[] | **Yes** | Array of plugin keywords. Used for search on grafana.com. | | `logos` | [object](#logos) | **Yes** | SVG images that are used as plugin icons. | | `updated` | string | **Yes** | Date when this plugin was built. | @@ -105,7 +105,7 @@ Information about the plugin author. #### Properties | Property | Type | Required | Description | -|----------|--------|----------|---------------------------| +| -------- | ------ | -------- | ------------------------- | | `email` | string | No | Author's name. | | `name` | string | No | Author's name. | | `url` | string | No | Link to author's website. | @@ -117,7 +117,7 @@ Build information #### Properties | Property | Type | Required | Description | -|----------|--------|----------|------------------------------------------------------| +| -------- | ------ | -------- | ---------------------------------------------------- | | `branch` | string | No | Git branch the plugin was built from. | | `hash` | string | No | Git hash of the commit the plugin was built from | | `number` | number | No | | @@ -130,7 +130,7 @@ Build information #### Properties | Property | Type | Required | Description | -|----------|--------|----------|-------------| +| -------- | ------ | -------- | ----------- | | `name` | string | No | | | `url` | string | No | | @@ -141,7 +141,7 @@ SVG images that are used as plugin icons. #### Properties | Property | Type | Required | Description | -|----------|--------|----------|------------------------------------------------------------------------------------------------------------------------------| +| -------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------------- | | `large` | string | **Yes** | Link to the "large" version of the plugin logo, which must be an SVG image. "Large" and "small" logos can be the same image. | | `small` | string | **Yes** | Link to the "small" version of the plugin logo, which must be an SVG image. "Large" and "small" logos can be the same image. | @@ -150,7 +150,7 @@ SVG images that are used as plugin icons. #### Properties | Property | Type | Required | Description | -|----------|--------|----------|-------------| +| -------- | ------ | -------- | ----------- | | `name` | string | No | | | `path` | string | No | | @@ -161,7 +161,7 @@ For data source plugins. There is a query options section in the plugin's query ### Properties | Property | Type | Required | Description | -|-----------------|---------|----------|----------------------------------------------------------------------------------------------------------------------------| +| --------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | | `cacheTimeout` | boolean | No | For data source plugins. If the `cache timeout` option should be shown in the query options section in the query editor. | | `maxDataPoints` | boolean | No | For data source plugins. If the `max data points` option should be shown in the query options section in the query editor. | | `minInterval` | boolean | No | For data source plugins. If the `min interval` option should be shown in the query options section in the query editor. | @@ -173,7 +173,7 @@ For data source plugins. Proxy routes used for plugin authentication and adding ### Properties | Property | Type | Required | Description | -|----------------|-------------------------|----------|---------------------------------------------------------------------------------------------------------| +| -------------- | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------- | | `body` | [object](#body) | No | For data source plugins. Route headers set the body content and length to the proxied request. | | `headers` | array | No | For data source plugins. Route headers adds HTTP headers to the proxied request. | | `jwtTokenAuth` | [object](#jwttokenauth) | No | For data source plugins. Token authentication section used with an JWT OAuth API. | @@ -189,7 +189,7 @@ For data source plugins. Proxy routes used for plugin authentication and adding For data source plugins. Route headers set the body content and length to the proxied request. | Property | Type | Required | Description | -|----------|------|----------|-------------| +| -------- | ---- | -------- | ----------- | ### jwtTokenAuth @@ -198,7 +198,7 @@ For data source plugins. Token authentication section used with an JWT OAuth API #### Properties | Property | Type | Required | Description | -|----------|-------------------|----------|------------------------------------------------------| +| -------- | ----------------- | -------- | ---------------------------------------------------- | | `params` | [object](#params) | No | Parameters for the JWT token authentication request. | | `scopes` | string | No | | | `url` | string | No | URL to fetch the JWT token. | @@ -210,7 +210,7 @@ Parameters for the JWT token authentication request. ##### Properties | Property | Type | Required | Description | -|----------------|----------|----------|-------------| +| -------------- | -------- | -------- | ----------- | | `client_email` | string | No | | | `private_key` | string | No | | | `scopes` | string[] | No | | @@ -223,7 +223,7 @@ For data source plugins. Token authentication section used with an OAuth API. #### Properties | Property | Type | Required | Description | -|----------|-------------------|----------|--------------------------------------------------| +| -------- | ----------------- | -------- | ------------------------------------------------ | | `params` | [object](#params) | No | Parameters for the token authentication request. | | `scopes` | string | No | | | `url` | string | No | URL to fetch the authentication token. | @@ -235,10 +235,8 @@ Parameters for the token authentication request. ##### Properties | Property | Type | Required | Description | -|-----------------|--------|----------|-------------------------------------------------------------------------------------------| +| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------- | | `client_id` | string | No | OAuth client ID | | `client_secret` | string | No | OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob. | | `grant_type` | string | No | OAuth grant type | | `resource` | string | No | OAuth resource | - - diff --git a/docs/sources/developers/plugins/sign-a-plugin.md b/docs/sources/developers/plugins/sign-a-plugin.md index 042954371c1..8cbc70c615a 100644 --- a/docs/sources/developers/plugins/sign-a-plugin.md +++ b/docs/sources/developers/plugins/sign-a-plugin.md @@ -59,7 +59,7 @@ To sign a plugin, you need to decide the _signature level_ you want to sign it u You can sign your plugin under three different _signature levels_. | **Plugin Level** | **Paid Subscription Required?** | **Description** | -|------------------|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ---------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Private | No;
Free of charge |

You can create and sign a Private Plugin for any technology at no charge.

Private Plugins are for use on your own Grafana. They may not be distributed to the Grafana community, and are not published in the Grafana catalog.

| | Community | No;
Free of charge |

You can create, sign and distribute plugins at no charge, provided that all dependent technologies are open source and not for profit.

Community Plugins are published in the official Grafana catalog, and are available to the Grafana community.

| | Commercial | Yes;
Commercial Plugin Subscription required |

You can create, sign and distribute plugins with dependent technologies that are closed source or commercially backed, by entering into a Commercial Plugin Subscription with Grafana Labs.

Commercial Plugins are published on the official Grafana catalog, and are available to the Grafana community.

| @@ -73,7 +73,7 @@ For instructions on how to sign a plugin under the Private signature level, refe For Grafana to verify the digital signature of a plugin, the plugin must include a signed manifest file, _MANIFEST.txt_. The signed manifest file contains two sections: - **Signed message -** The signed message contains plugin metadata and plugin files with their respective checksums (SHA256). -- **Digital signature -** The digital signature is created by encrypting the signed message using a private key. Grafana has a public key built-in that can be used to verify that the digital signature have been encrypted using expected private key. +- **Digital signature -** The digital signature is created by encrypting the signed message using a private key. Grafana has a public key built-in that can be used to verify that the digital signature have been encrypted using expected private key. **Example manifest file:** diff --git a/docs/sources/developers/plugins/working-with-data-frames.md b/docs/sources/developers/plugins/working-with-data-frames.md index cb113da55e3..1c67a8c7aba 100644 --- a/docs/sources/developers/plugins/working-with-data-frames.md +++ b/docs/sources/developers/plugins/working-with-data-frames.md @@ -23,11 +23,11 @@ const numberValues = [12.3, 28.6]; // Create data frame from values. const frame = toDataFrame({ - name: "http_requests_total", - fields: [ - { name: "Time", type: FieldType.time, values: timeValues }, - { name: "Value", type: FieldType.number, values: numberValues } - ] + name: 'http_requests_total', + fields: [ + { name: 'Time', type: FieldType.time, values: timeValues }, + { name: 'Value', type: FieldType.number, values: numberValues }, + ], }); ``` @@ -37,12 +37,12 @@ As you can see from the example, creating data frames like this requires that yo ```ts const series = [ - { Time: 1599471973065, Value: 12.3 }, - { Time: 1599471975729, Value: 28.6 } + { Time: 1599471973065, Value: 12.3 }, + { Time: 1599471975729, Value: 28.6 }, ]; const frame = toDataFrame(series); -frame.name = 'http_requests_total' +frame.name = 'http_requests_total'; ``` ## Read values from a data frame @@ -54,22 +54,22 @@ const SimplePanel: React.FC = ({ data }) => { const frame = data.series[0]; // ... -} +}; ``` Before you start reading the data, think about what data you expect. For example, to visualize a time series we'd need at least one time field, and one number field. ```ts -const timeField = frame.fields.find(field => field.type === FieldType.time); -const valueField = frame.fields.find(field => field.type === FieldType.number); +const timeField = frame.fields.find((field) => field.type === FieldType.time); +const valueField = frame.fields.find((field) => field.type === FieldType.number); ``` Other types of visualizations might need multiple dimensions. For example, a bubble chart that uses three numeric fields: the X-axis, Y-axis, and one for the radius of each bubble. In this case, instead of hard coding the field names, we recommend that you let the user choose the field to use for each dimension. ```ts -const x = frame.fields.find(field => field.name === xField); -const y = frame.fields.find(field => field.name === yField); -const size = frame.fields.find(field => field.name === sizeField); +const x = frame.fields.find((field) => field.name === xField); +const y = frame.fields.find((field) => field.name === yField); +const size = frame.fields.find((field) => field.name === sizeField); for (let i = 0; i < frame.length; i++) { const row = [x?.values.get(i), y?.values.get(i), size?.values.get(i)]; @@ -83,9 +83,9 @@ Alternatively, you can use the [DataFrameView]({{< relref "../../packages_api/da ```ts const view = new DataFrameView(frame); -view.forEach(row => { +view.forEach((row) => { console.log(row[options.xField], row[options.yField], row[options.sizeField]); -}) +}); ``` ## Display values from a data frame @@ -95,12 +95,12 @@ Field options let the user control how Grafana displays the data in a data frame To apply the field options to a value, use the `display` method on the corresponding field. The result contains information such as the color and suffix to use when display the value. ```ts -const valueField = frame.fields.find(field => field.type === FieldType.number); +const valueField = frame.fields.find((field) => field.type === FieldType.number); return (
{valueField - ? valueField.values.toArray().map(value => { + ? valueField.values.toArray().map((value) => { const displayValue = valueField.display!(value); return (

@@ -116,7 +116,6 @@ return ( To apply field options to the name of a field, use [getFieldDisplayName]({{< relref "../../packages_api/data/getfielddisplayname.md" >}}). ```ts -const valueField = frame.fields.find(field => field.type === FieldType.number); +const valueField = frame.fields.find((field) => field.type === FieldType.number); const valueFieldName = getFieldDisplayName(valueField, frame); ``` - diff --git a/docs/sources/enterprise/access-control/_index.md b/docs/sources/enterprise/access-control/_index.md index 41a5b4e1a40..14b959bb0d7 100644 --- a/docs/sources/enterprise/access-control/_index.md +++ b/docs/sources/enterprise/access-control/_index.md @@ -9,7 +9,7 @@ weight = 100 > **Note:** Fine-grained access control is in beta, and you can expect changes in future releases. -Fine-grained access control provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as users and reports. +Fine-grained access control provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as users and reports. Fine-grained access control works alongside the current [Grafana permissions]({{< relref "../../permissions/_index.md" >}}), and it allows you granular control of users’ actions. To learn more about how fine-grained access control works, refer to [Roles]({{< relref "./roles.md" >}}) and [Permissions]({{< relref "./permissions.md" >}}). diff --git a/docs/sources/enterprise/access-control/fine-grained-access-control-references.md b/docs/sources/enterprise/access-control/fine-grained-access-control-references.md index f553aec8829..59aae3cb63a 100644 --- a/docs/sources/enterprise/access-control/fine-grained-access-control-references.md +++ b/docs/sources/enterprise/access-control/fine-grained-access-control-references.md @@ -6,31 +6,32 @@ weight = 130 +++ # Fine-grained access control references + The reference information that follows complements conceptual information about [Roles]({{< relref "./roles.md" >}}). ## Fine-grained access fixed roles -Fixed roles | Permissions | Descriptions ---- | --- | --- -`fixed:permissions:admin:read` | `roles:read`
`roles:list`
`roles.builtin:list` | Allows to list and get available roles and built-in role assignments. -`fixed:permissions:admin:edit` | All permissions from `fixed:permissions:admin:read` and
`roles:write`
`roles:delete`
`roles.builtin:add`
`roles.builtin:remove` | Allows every read action and in addition allows to create, change and delete custom roles and create or remove built-in role assignments. -`fixed:reporting:admin:read` | `reports:read`
`reports:send`
`reports.settings:read` | Allows to read reports and report settings. -`fixed:reporting:admin:edit` | All permissions from `fixed:reporting:admin:read` and
`reports.admin:write`
`reports:delete`
`reports.settings:write` | Allows every read action for reports and in addition allows to administer reports. -`fixed:users:admin:read` | `users.authtoken:list`
`users.quotas:list`
`users:read`
`users.teams:read` | Allows to list and get users and related information. -`fixed:users:admin:edit` | All permissions from `fixed:users:admin:read` and
`users.password:update`
`users:write`
`users:create`
`users:delete`
`users:enable`
`users:disable`
`users.permissions:update`
`users:logout`
`users.authtoken:update`
`users.quotas:update` | Allows every read action for users and in addition allows to administer users. -`fixed:users:org:read` | `org.users:read` | Allows to get user organizations. -`fixed:users:org:edit` | All permissions from `fixed:users:org:read` and
`org.users:add`
`org.users:remove`
`org.users.role:update` | Allows every read action for user organizations and in addition allows to administer user organizations. -`fixed:ldap:admin:read` | `ldap.user:read`
`ldap.status:read` | Allows to read LDAP information and status. -`fixed:ldap:admin:edit` | All permissions from `fixed:ldap:admin:read` and
`ldap.user:sync`
`ldap.config:reload` | Allows every read action for LDAP and in addition allows to administer LDAP. -`fixed:server:admin:read` | `server.stats:read` | Read server stats -`fixed:settings:admin:read` | `settings:read` | Read settings -`fixed:settings:admin:edit` | All permissions from `fixed:settings:admin:read` and
`settings:write` | Update settings -`fixed:datasource:editor:read` | `datasources:explore` | Explore datasources +| Fixed roles | Permissions | Descriptions | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `fixed:permissions:admin:read` | `roles:read`
`roles:list`
`roles.builtin:list` | Allows to list and get available roles and built-in role assignments. | +| `fixed:permissions:admin:edit` | All permissions from `fixed:permissions:admin:read` and
`roles:write`
`roles:delete`
`roles.builtin:add`
`roles.builtin:remove` | Allows every read action and in addition allows to create, change and delete custom roles and create or remove built-in role assignments. | +| `fixed:reporting:admin:read` | `reports:read`
`reports:send`
`reports.settings:read` | Allows to read reports and report settings. | +| `fixed:reporting:admin:edit` | All permissions from `fixed:reporting:admin:read` and
`reports.admin:write`
`reports:delete`
`reports.settings:write` | Allows every read action for reports and in addition allows to administer reports. | +| `fixed:users:admin:read` | `users.authtoken:list`
`users.quotas:list`
`users:read`
`users.teams:read` | Allows to list and get users and related information. | +| `fixed:users:admin:edit` | All permissions from `fixed:users:admin:read` and
`users.password:update`
`users:write`
`users:create`
`users:delete`
`users:enable`
`users:disable`
`users.permissions:update`
`users:logout`
`users.authtoken:update`
`users.quotas:update` | Allows every read action for users and in addition allows to administer users. | +| `fixed:users:org:read` | `org.users:read` | Allows to get user organizations. | +| `fixed:users:org:edit` | All permissions from `fixed:users:org:read` and
`org.users:add`
`org.users:remove`
`org.users.role:update` | Allows every read action for user organizations and in addition allows to administer user organizations. | +| `fixed:ldap:admin:read` | `ldap.user:read`
`ldap.status:read` | Allows to read LDAP information and status. | +| `fixed:ldap:admin:edit` | All permissions from `fixed:ldap:admin:read` and
`ldap.user:sync`
`ldap.config:reload` | Allows every read action for LDAP and in addition allows to administer LDAP. | +| `fixed:server:admin:read` | `server.stats:read` | Read server stats | +| `fixed:settings:admin:read` | `settings:read` | Read settings | +| `fixed:settings:admin:edit` | All permissions from `fixed:settings:admin:read` and
`settings:write` | Update settings | +| `fixed:datasource:editor:read` | `datasources:explore` | Explore datasources | ## Default built-in role assignments -Built-in roles | Associated roles | Descriptions ---- | --- | --- -Grafana Admin | `fixed:permissions:admin:edit`
`fixed:permissions:admin:read`
`fixed:reporting:admin:edit`
`fixed:reporting:admin:read`
`fixed:users:admin:edit`
`fixed:users:admin:read`
`fixed:users:org:edit`
`fixed:users:org:read`
`fixed:ldap:admin:edit`
`fixed:ldap:admin:read`
`fixed:server:admin:read`
`fixed:settings:admin:read`
`fixed:settings:admin:edit` | Allows access to resources which [Grafana Server Admin]({{< relref "../../permissions/_index.md#grafana-server-admin-role" >}}) has permissions by default. -Admin | `fixed:users:org:edit`
`fixed:users:org:read`
`fixed:reporting:admin:edit`
`fixed:reporting:admin:read` | Allows access to resource which [Admin]({{< relref "../../permissions/organization_roles.md" >}}) has permissions by default. -Editor | `fixed:datasource:editor:read` +| Built-in roles | Associated roles | Descriptions | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Grafana Admin | `fixed:permissions:admin:edit`
`fixed:permissions:admin:read`
`fixed:reporting:admin:edit`
`fixed:reporting:admin:read`
`fixed:users:admin:edit`
`fixed:users:admin:read`
`fixed:users:org:edit`
`fixed:users:org:read`
`fixed:ldap:admin:edit`
`fixed:ldap:admin:read`
`fixed:server:admin:read`
`fixed:settings:admin:read`
`fixed:settings:admin:edit` | Allows access to resources which [Grafana Server Admin]({{< relref "../../permissions/_index.md#grafana-server-admin-role" >}}) has permissions by default. | +| Admin | `fixed:users:org:edit`
`fixed:users:org:read`
`fixed:reporting:admin:edit`
`fixed:reporting:admin:read` | Allows access to resource which [Admin]({{< relref "../../permissions/organization_roles.md" >}}) has permissions by default. | +| Editor | `fixed:datasource:editor:read` | diff --git a/docs/sources/enterprise/access-control/permissions.md b/docs/sources/enterprise/access-control/permissions.md index 974ac635c4e..6b0996b5474 100644 --- a/docs/sources/enterprise/access-control/permissions.md +++ b/docs/sources/enterprise/access-control/permissions.md @@ -9,7 +9,7 @@ weight = 115 A permission is an action and a scope. When creating a fine-grained access control, consider what specific action a user should be allowed to perform, and on what resources (its scope). -To grant permissions to a user, you create a built-in role assignment to map a role to a built-in role. A built-in role assignment *modifies* to one of the existing built-in roles in Grafana (Viewer, Editor, Admin). For more information, refer to [Built-in role assignments]({{< relref "./roles.md#built-in-role-assignments" >}}). +To grant permissions to a user, you create a built-in role assignment to map a role to a built-in role. A built-in role assignment _modifies_ to one of the existing built-in roles in Grafana (Viewer, Editor, Admin). For more information, refer to [Built-in role assignments]({{< relref "./roles.md#built-in-role-assignments" >}}). To learn more about which permissions are used for which resources, refer to [Resources with fine-grained permissions]({{< relref "./_index.md#resources-with-fine-grained-permissions" >}}). @@ -23,61 +23,61 @@ scope The following list contains fine-grained access control actions. -Actions | Applicable scopes | Descriptions ---- | --- | --- -`roles:list` | `roles:*` | List available roles without permissions. -`roles:read` | `roles:*` | Read a specific role with it's permissions. -`roles:write` | `permissions:delegate` | Create or update a custom role. -`roles:delete` | `permissions:delegate` | Delete a custom role. -`roles.builtin:list` | `roles:*` | List built-in role assignments. -`roles.builtin:add` | `permissions:delegate` | Create a built-in role assignment. -`roles.builtin:remove` | `permissions:delegate` | Delete a built-in role assignment. -`reports.admin:create` | `reports:*` | Create reports. -`reports.admin:write` | `reports:*` | Update reports. -`reports:delete` | `reports:*` | Delete reports. -`reports:read` | `reports:*` | List all available reports or get a specific report. -`reports:send` | `reports:*` | Send a report email. -`reports.settings:write` | n/a | Update report settings. -`reports.settings:read` | n/a | Read report settings. -`provisioning:reload` | `service:accesscontrol` | Reload provisioning files. -`users:read` | `global:users:*` | Read or search user profiles. -`users:write` | `global:users:*` | Update a user’s profile. -`users.teams:read` | `global:users:*` | Read a user’s teams. -`users.authtoken:list` | `global:users:*` | List authentication tokens that are assigned to a user. -`users.authtoken:update` | `global:users:*` | Update authentication tokens that are assigned to a user. -`users.password:update` | `global:users:*` | Update a user’s password. -`users:delete` | `global:users:*` | Delete a user. -`users:create` | n/a | Create a user. -`users:enable` | `global:users:*` | Enable a user. -`users:disable` | `global:users:*` | Disable a user. -`users.permissions:update` | `global:users:*` | Update a user’s organization-level permissions. -`users:logout` | `global:users:*` | Log out a user. -`users.quotas:list` | `global:users:*` | List a user’s quotas. -`users.quotas:update` | `global:users:*` | Update a user’s quotas. -`org.users.read` | `users:*` | Get user profiles within an organization. -`org.users.add` | `users:*` | Add a user to an organization. -`org.users.remove` | `users:*` | Remove a user from an organization. -`org.users.role:update` | `users:*` | Update the organization role (`Viewer`, `Editor`, `Admin`) for an organization. -`ldap.user:read` | n/a | Get a user via LDAP. -`ldap.user:sync` | n/a | Sync a user via LDAP. -`ldap.status:read` | n/a | Verify the LDAP servers’ availability. -`ldap.config:reload` | n/a | Reload the LDAP configuration. -`status:accesscontrol` | `service:accesscontrol` | Get access-control enabled status. -`settings:read` | `settings:**`
`settings:auth.saml:*`
`settings:auth.saml:enabled` (property level) | Read settings -`settings:write` | `settings:**`
`settings:auth.saml:*`
`settings:auth.saml:enabled` (property level) | Update settings -`server.stats:read` | n/a | Read server stats -`datasources:explore` | n/a | Enable explore +| Actions | Applicable scopes | Descriptions | +| -------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `roles:list` | `roles:*` | List available roles without permissions. | +| `roles:read` | `roles:*` | Read a specific role with it's permissions. | +| `roles:write` | `permissions:delegate` | Create or update a custom role. | +| `roles:delete` | `permissions:delegate` | Delete a custom role. | +| `roles.builtin:list` | `roles:*` | List built-in role assignments. | +| `roles.builtin:add` | `permissions:delegate` | Create a built-in role assignment. | +| `roles.builtin:remove` | `permissions:delegate` | Delete a built-in role assignment. | +| `reports.admin:create` | `reports:*` | Create reports. | +| `reports.admin:write` | `reports:*` | Update reports. | +| `reports:delete` | `reports:*` | Delete reports. | +| `reports:read` | `reports:*` | List all available reports or get a specific report. | +| `reports:send` | `reports:*` | Send a report email. | +| `reports.settings:write` | n/a | Update report settings. | +| `reports.settings:read` | n/a | Read report settings. | +| `provisioning:reload` | `service:accesscontrol` | Reload provisioning files. | +| `users:read` | `global:users:*` | Read or search user profiles. | +| `users:write` | `global:users:*` | Update a user’s profile. | +| `users.teams:read` | `global:users:*` | Read a user’s teams. | +| `users.authtoken:list` | `global:users:*` | List authentication tokens that are assigned to a user. | +| `users.authtoken:update` | `global:users:*` | Update authentication tokens that are assigned to a user. | +| `users.password:update` | `global:users:*` | Update a user’s password. | +| `users:delete` | `global:users:*` | Delete a user. | +| `users:create` | n/a | Create a user. | +| `users:enable` | `global:users:*` | Enable a user. | +| `users:disable` | `global:users:*` | Disable a user. | +| `users.permissions:update` | `global:users:*` | Update a user’s organization-level permissions. | +| `users:logout` | `global:users:*` | Log out a user. | +| `users.quotas:list` | `global:users:*` | List a user’s quotas. | +| `users.quotas:update` | `global:users:*` | Update a user’s quotas. | +| `org.users.read` | `users:*` | Get user profiles within an organization. | +| `org.users.add` | `users:*` | Add a user to an organization. | +| `org.users.remove` | `users:*` | Remove a user from an organization. | +| `org.users.role:update` | `users:*` | Update the organization role (`Viewer`, `Editor`, `Admin`) for an organization. | +| `ldap.user:read` | n/a | Get a user via LDAP. | +| `ldap.user:sync` | n/a | Sync a user via LDAP. | +| `ldap.status:read` | n/a | Verify the LDAP servers’ availability. | +| `ldap.config:reload` | n/a | Reload the LDAP configuration. | +| `status:accesscontrol` | `service:accesscontrol` | Get access-control enabled status. | +| `settings:read` | `settings:**`
`settings:auth.saml:*`
`settings:auth.saml:enabled` (property level) | Read settings | +| `settings:write` | `settings:**`
`settings:auth.saml:*`
`settings:auth.saml:enabled` (property level) | Update settings | +| `server.stats:read` | n/a | Read server stats | +| `datasources:explore` | n/a | Enable explore | ## Scope definitions The following list contains fine-grained access control scopes. -Scopes | Descriptions ---- | --- -`roles:*` | Restrict an action to a set of roles. For example, `roles:*` matches any role, `roles:randomuid` matches only the role with UID `randomuid` and `roles:custom:reports:{editor,viewer}` matches both `custom:reports:editor` and `custom:reports:viewer` roles. -`permissions:delegate` | The scope is only applicable for roles associated with the Access Control itself and indicates that you can delegate your permissions only, or a subset of it, by creating a new role or making an assignment. -`reports:*` | Restrict an action to a set of reports. For example, `reports:*` matches any report and `reports:1` matches the report with id `1`. -`service:accesscontrol` | Restrict an action to target only the fine-grained access control service. For example, you can use this in conjunction with the `provisioning:reload` or the `status:accesscontrol` actions. -`global:users:*` | Restrict an action to a set of global users. -`users:*` | Restrict an action to a set of users from an organization. -`settings:**` | Restrict an action to a subset of settings. For example, `settings:**` matches all settings, `settings:auth.saml:*` matches all SAML settings, and `settings:auth.saml:enabled` matches the enable property on the SAML settings. +| Scopes | Descriptions | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `roles:*` | Restrict an action to a set of roles. For example, `roles:*` matches any role, `roles:randomuid` matches only the role with UID `randomuid` and `roles:custom:reports:{editor,viewer}` matches both `custom:reports:editor` and `custom:reports:viewer` roles. | +| `permissions:delegate` | The scope is only applicable for roles associated with the Access Control itself and indicates that you can delegate your permissions only, or a subset of it, by creating a new role or making an assignment. | +| `reports:*` | Restrict an action to a set of reports. For example, `reports:*` matches any report and `reports:1` matches the report with id `1`. | +| `service:accesscontrol` | Restrict an action to target only the fine-grained access control service. For example, you can use this in conjunction with the `provisioning:reload` or the `status:accesscontrol` actions. | +| `global:users:*` | Restrict an action to a set of global users. | +| `users:*` | Restrict an action to a set of users from an organization. | +| `settings:**` | Restrict an action to a subset of settings. For example, `settings:**` matches all settings, `settings:auth.saml:*` matches all SAML settings, and `settings:auth.saml:enabled` matches the enable property on the SAML settings. | diff --git a/docs/sources/enterprise/access-control/provisioning.md b/docs/sources/enterprise/access-control/provisioning.md index 303da0e2f7c..2c096b9cd19 100644 --- a/docs/sources/enterprise/access-control/provisioning.md +++ b/docs/sources/enterprise/access-control/provisioning.md @@ -6,7 +6,7 @@ weight = 120 +++ # Provisioning - + You can create, change or remove [Custom roles]({{< relref "./roles.md#custom-roles" >}}) and create or remove [built-in role assignments]({{< relref "./roles.md#built-in-role-assignments" >}}), by adding one or more YAML configuration files in the [`provisioning/access-control/`]({{< relref "../../administration/configuration/#provisioning" >}}) directory. Refer to [Grafana provisioning]({{< relref "../../administration/configuration/#provisioning" >}}) to learn more about provisioning. @@ -38,16 +38,16 @@ apiVersion: 1 # Roles to insert into the database, or roles to update in the database roles: - name: custom:users:editor - description: "This role allows users to list, create, or update other users within the organization." + description: 'This role allows users to list, create, or update other users within the organization.' version: 1 orgId: 1 permissions: - - action: "users:read" - scope: "users:*" - - action: "users:write" - scope: "users:*" - - action: "users:create" - scope: "users:*" + - action: 'users:read' + scope: 'users:*' + - action: 'users:write' + scope: 'users:*' + - action: 'users:create' + scope: 'users:*' ``` Here is an example YAML file to create a global role with a set of permissions, where the `global:true` option makes a role global: @@ -59,26 +59,28 @@ apiVersion: 1 # Roles to insert into the database, or roles to update in the database roles: - name: custom:users:editor - description: "This role allows users to list, create, or update other users within the organization." + description: 'This role allows users to list, create, or update other users within the organization.' version: 1 global: true permissions: - - action: "users:read" - scope: "users:*" - - action: "users:write" - scope: "users:*" - - action: "users:create" - scope: "users:*" + - action: 'users:read' + scope: 'users:*' + - action: 'users:write' + scope: 'users:*' + - action: 'users:create' + scope: 'users:*' ``` + The `orgId` is lost when the role is set to global. -### Delete roles +### Delete roles -To delete a role, add a list of roles under the `deleteRoles` section in the configuration file. +To delete a role, add a list of roles under the `deleteRoles` section in the configuration file. > **Note:** Any role in the `deleteRoles` section is deleted before any role in the `roles` section is saved. Here is an example YAML file to delete a role: + ```yaml # config file version apiVersion: 1 @@ -105,19 +107,19 @@ apiVersion: 1 # Roles to insert/update in the database roles: - name: custom:users:editor - description: "This role allows users to list/create/update other users in the organization" + description: 'This role allows users to list/create/update other users in the organization' version: 1 orgId: 1 permissions: - - action: "users:read" - scope: "users:*" - - action: "users:write" - scope: "users:*" - - action: "users:create" - scope: "users:*" + - action: 'users:read' + scope: 'users:*' + - action: 'users:write' + scope: 'users:*' + - action: 'users:create' + scope: 'users:*' builtInRoles: - - name: "Editor" - - name: "Admin" + - name: 'Editor' + - name: 'Admin' ``` ## Manage default built-in role assignments @@ -129,15 +131,15 @@ During startup, Grafana creates [default built-in role assignments]({{< relref " To remove default built-in role assignments, use the `removeDefaultAssignments` element in the configuration file. You need to provide the built-in role name and fixed role name. Here is an example: + ```yaml # config file version apiVersion: 1 # list of default built-in role assignments that should be removed removeDefaultAssignments: - - builtInRole: "Grafana Admin" - fixedRole: "fixed:permissions:admin" - + - builtInRole: 'Grafana Admin' + fixedRole: 'fixed:permissions:admin' ``` ### Restore default assignment @@ -145,14 +147,15 @@ removeDefaultAssignments: To restore the default built-in role assignment, use the `addDefaultAssignments` element in the configuration file. You need to provide the built-in role name and the fixed-role name. Here is an example: + ```yaml # config file version apiVersion: 1 # list of default built-in role assignments that should be added back addDefaultAssignments: - - builtInRole: "Admin" - fixedRole: "fixed:reporting:admin:read" + - builtInRole: 'Admin' + fixedRole: 'fixed:reporting:admin:read' ``` ## Full example of a role configuration file @@ -164,29 +167,29 @@ apiVersion: 1 # list of default built-in role assignments that should be removed removeDefaultAssignments: # , must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin` - - builtInRole: "Grafana Admin" + - builtInRole: 'Grafana Admin' # , must be one of the existing fixed roles - fixedRole: "fixed:permissions:admin" + fixedRole: 'fixed:permissions:admin' # list of default built-in role assignments that should be added back addDefaultAssignments: # , must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin` - - builtInRole: "Admin" + - builtInRole: 'Admin' # , must be one of the existing fixed roles - fixedRole: "fixed:reporting:admin:read" - + fixedRole: 'fixed:reporting:admin:read' + # list of roles that should be deleted deleteRoles: # name of the role you want to create. Required if no uid is set - - name: "custom:reports:editor" + - name: 'custom:reports:editor' # uid of the role. Required if no name - uid: "customreportseditor1" + uid: 'customreportseditor1' # org id. will default to Grafana's default if not specified orgId: 1 # force deletion revoking all grants of the role force: true - - name: "custom:global:reports:reader" - uid: "customglobalreportsreader1" + - name: 'custom:global:reports:reader' + uid: 'customglobalreportsreader1' # overwrite org id and removes a global role global: true force: true @@ -194,44 +197,44 @@ deleteRoles: # list of roles to insert/update depending on what is available in the database roles: # name of the role you want to create. Required - - name: "custom:users:editor" + - name: 'custom:users:editor' # uid of the role. Has to be unique for all orgs. uid: customuserseditor1 # description of the role, informative purpose only. - description: "Role for our custom user editors" + description: 'Role for our custom user editors' # version of the role, Grafana will update the role when increased version: 2 # org id. will default to Grafana's default if not specified - orgId: 1 + orgId: 1 # list of the permissions granted by this role permissions: # action allowed - - action: "users:read" + - action: 'users:read' # scope it applies to - scope: "users:*" - - action: "users:write" - scope: "users:*" - - action: "users:create" - scope: "users:*" + scope: 'users:*' + - action: 'users:write' + scope: 'users:*' + - action: 'users:create' + scope: 'users:*' # list of builtIn roles the role should be assigned to builtInRoles: # name of the builtin role you want to assign the role to - - name: "Editor" + - name: 'Editor' # org id. will default to the role org id - orgId: 1 - - name: "custom:global:users:reader" - uid: "customglobalusersreader1" - description: "Global Role for custom user readers" + orgId: 1 + - name: 'custom:global:users:reader' + uid: 'customglobalusersreader1' + description: 'Global Role for custom user readers' version: 1 # overwrite org id and creates a global role global: true permissions: - - action: "users:read" - scope: "users:*" + - action: 'users:read' + scope: 'users:*' builtInRoles: - - name: "Viewer" - orgId: 1 - - name: "Editor" + - name: 'Viewer' + orgId: 1 + - name: 'Editor' # overwrite org id and assign role globally global: true ``` @@ -251,7 +254,7 @@ A basic set of validation rules are applied to the input `yaml` files. ### Roles - `name` must not be empty -- `name` must not have `fixed:` prefix. +- `name` must not have `fixed:` prefix. ### Permissions @@ -259,9 +262,9 @@ A basic set of validation rules are applied to the input `yaml` files. ### Built-in role assignments -- `name` must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin`. +- `name` must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin`. - When `orgId` is not specified, it inherits the `orgId` from `role`. For global roles the default `orgId` is used. -- `orgId` in the `role` and in the assignment must be the same for none global roles. +- `orgId` in the `role` and in the assignment must be the same for none global roles. ### Role deletion diff --git a/docs/sources/enterprise/access-control/roles.md b/docs/sources/enterprise/access-control/roles.md index 9758957ef3c..f8578088820 100644 --- a/docs/sources/enterprise/access-control/roles.md +++ b/docs/sources/enterprise/access-control/roles.md @@ -10,6 +10,7 @@ weight = 105 A role represents set of permissions that allow you to perform specific actions on Grafana resources. Refer to [Permissions]({{< relref "./permissions.md" >}}) to understand how permissions work. There are two types of roles: + - [Fixed roles]({{< relref "./roles.md#fixed-roles" >}}), which provide granular access for specific resources within Grafana and are managed by the Grafana itself. - [Custom roles]({{< relref "./roles.md#custom-roles.md" >}}), which provide granular access based on the user specified set of permissions. @@ -25,7 +26,7 @@ Fixed roles provide convenience and guarantee of consistent behaviour by combini There are few basic rules for fixed roles: - All fixed roles are _global_. -- All fixed roles have a `fixed:` prefix. +- All fixed roles have a `fixed:` prefix. - You can’t change or delete a fixed role. For more information, refer to [Fine-grained access control references]({{< relref "./fine-grained-access-control-references.md#fine-grained-access-fixed-roles" >}}). @@ -68,7 +69,7 @@ Note that you won't be able to create, update or delete a custom role with permi ## Built-in role assignments -To control what your users can access or not, you can assign or unassign [Custom roles]({{< ref "#custom-roles" >}}) or [Fixed roles]({{< ref "#fixed-roles" >}}) to the existing [Organization roles]({{< relref "../../permissions/organization_roles.md" >}}) or to [Grafana Server Admin]({{< relref "../../permissions/_index.md#grafana-server-admin-role" >}}) role. +To control what your users can access or not, you can assign or unassign [Custom roles]({{< ref "#custom-roles" >}}) or [Fixed roles]({{< ref "#fixed-roles" >}}) to the existing [Organization roles]({{< relref "../../permissions/organization_roles.md" >}}) or to [Grafana Server Admin]({{< relref "../../permissions/_index.md#grafana-server-admin-role" >}}) role. These assignments are called built-in role assignments. During startup, Grafana will create default assignments for you. When you make any changes to the built-on role assignments, Grafana will take them into account and won’t overwrite during next start. @@ -82,4 +83,4 @@ You can create or remove built-in role assignments using [Fine-grained access co ### Scope of assignments A built-in role assignment can be either _global_ or _organization local_. _Global_ assignments are not mapped to any specific organization and will be applied to all organizations, whereas _organization local_ assignments are only applied for that specific organization. -You can only create _organization local_ assignments for _organization local_ roles. \ No newline at end of file +You can only create _organization local_ assignments for _organization local_ roles. diff --git a/docs/sources/enterprise/access-control/usage-scenarios.md b/docs/sources/enterprise/access-control/usage-scenarios.md index b375f6a75a5..7b31ed21f47 100644 --- a/docs/sources/enterprise/access-control/usage-scenarios.md +++ b/docs/sources/enterprise/access-control/usage-scenarios.md @@ -13,15 +13,17 @@ Before you get started, make sure to [enable fine-grained access control]({{< re ## Check all built-in role assignments -You can use the [Fine-grained access control HTTP API]({{< relref "../../http_api/access_control.md#get-all-built-in-role-assignments" >}}) to see all available built-in role assignments. +You can use the [Fine-grained access control HTTP API]({{< relref "../../http_api/access_control.md#get-all-built-in-role-assignments" >}}) to see all available built-in role assignments. The response contains a mapping between one of the organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin` to the custom or fixed roles. Example request: + ``` curl --location --request GET '/api/access-control/builtin-roles' --header 'Authorization: Basic YWRtaW46cGFzc3dvcmQ=' ``` Example response: + ``` { "Admin": [ @@ -34,7 +36,7 @@ Example response: "global": true, "updated": "2021-05-17T20:49:18+02:00", "created": "2021-05-13T16:24:26+02:00" - }, + }, { "version": 1, "uid": "Kz9m_YjGz", @@ -56,7 +58,7 @@ Example response: "global": true, "updated": "2021-05-17T20:49:18+02:00", "created": "2021-05-13T16:24:26+02:00" - }, + }, { "version": 2, "uid": "ajum_YjGk", @@ -74,8 +76,8 @@ Example response: "global": true, "updated": "2021-05-17T20:49:17+02:00", "created": "2021-05-13T16:24:26+02:00" - }, - ... + }, + ... ] } ``` @@ -134,6 +136,7 @@ You can create your custom role by either using an [HTTP API]({{< relref "../../ You can take a look at [actions and scopes]({{< relref "./provisioning.md#action-definitions" >}}) to decide what permissions would you like to map to your role. Example HTTP request: + ``` curl --location --request POST '/api/access-control/roles/' \ --header 'Authorization: Basic YWRtaW46cGFzc3dvcmQ=' \ @@ -163,7 +166,7 @@ Example response: "global": true, "permissions": [ { - "action": "users:create" + "action": "users:create" "updated": "2021-05-17T22:07:31.569936+02:00", "created": "2021-05-17T22:07:31.569935+02:00" } @@ -173,7 +176,7 @@ Example response: } ``` -Once the custom role is created, you can create a built-in role assignment by using an [HTTP API]({{< relref "../../http_api/access_control.md#create-a-built-in-role-assignment" >}}). +Once the custom role is created, you can create a built-in role assignment by using an [HTTP API]({{< relref "../../http_api/access_control.md#create-a-built-in-role-assignment" >}}). If you created your role using [Grafana provisioning]({{< relref "./provisioning.md" >}}), you can also create the assignment with it. Example HTTP request: @@ -212,8 +215,8 @@ In order to create users, you would need to have `users:create` permission. By d If you want to prevent Grafana Admin from creating users, you can do the following: -1. [Check all built-in role assignments]({{< ref "#check-all-built-in-role-assignments" >}}) to see what built-in role assignments are available. -1. From built-in role assignments, find the role which gives `users:create` permission. Refer to [fixed roles]({{< relref "./roles.md#fixed-roles" >}}) for full list of permission assignments. +1. [Check all built-in role assignments]({{< ref "#check-all-built-in-role-assignments" >}}) to see what built-in role assignments are available. +1. From built-in role assignments, find the role which gives `users:create` permission. Refer to [fixed roles]({{< relref "./roles.md#fixed-roles" >}}) for full list of permission assignments. 1. Remove the built-in role assignment by using an [Fine-grained access control HTTP API]({{< relref "../../http_api/access_control.md" >}}) or by using [Grafana provisioning]({{< relref "./provisioning" >}}). ## Allow Editors to create new custom roles @@ -223,4 +226,4 @@ By default, Grafana Server Admin is the only user who can create and manage cust 1. First option is to create a built-in role assignment and map `fixed:permissions:admin:edit` and `fixed:permissions:admin:read` fixed roles to the `Editor` built-in role. 1. Second option is to [create a custom role]({{< ref "#create-your-custom-role" >}}) with `roles.builtin:add` and `roles:write` permissions, and create a built-in role assignment for `Editor` organization role. -Note that in any scenario, your `Editor` would be able to create and manage roles only with the permissions they have, or with a subset of them. +Note that in any scenario, your `Editor` would be able to create and manage roles only with the permissions they have, or with a subset of them. diff --git a/docs/sources/enterprise/auditing.md b/docs/sources/enterprise/auditing.md index b7a2ede145c..5e49a08974b 100644 --- a/docs/sources/enterprise/auditing.md +++ b/docs/sources/enterprise/auditing.md @@ -22,43 +22,43 @@ Audit logs are JSON objects representing user actions like: Audit logs contain the following fields. The fields followed by **\*** are always available, the others depend on the type of action logged. -| Field name | Type | Description | -| ---------- | ---- | ----------- | -| `timestamp`\* | string | The date and time the request was made, in coordinated universal time (UTC) using the [RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6) format. | -| `user`\* | object | Information about the user that made the request. Either one of the `UserID` or `ApiKeyID` fields will contain content if `isAnonymous=false`. | -| `user.userId` | number | ID of the Grafana user that made the request. | -| `user.orgId`\* | number | Current organization of the user that made the request. | -| `user.orgRole` | string | Current role of the user that made the request. | -| `user.name` | string | Name of the Grafana user that made the request. | -| `user.tokenId` | number | ID of the user authentication token. | -| `user.apiKeyId` | number | ID of the Grafana API key used to make the request. | -| `user.isAnonymous`\* | boolean | If an anonymous user made the request, `true`. Otherwise, `false`. | -| `action`\* | string | The request action. For example, `create`, `update`, or `manage-permissions`. | -| `request`\* | object | Information about the HTTP request. | -| `request.params` | object | Request’s path parameters. | -| `request.query` | object | Request’s query parameters. | -| `request.body` | string | Request’s body. | -| `result`\* | object | Information about the HTTP response. | -| `result.statusType` | string | If the request action was successful, `success`. Otherwise, `failure`. | -| `result.statusCode` | number | HTTP status of the request. | -| `result.failureMessage` | string | HTTP error message. | -| `result.body` | string | Response body. | -| `resources` | array | Information about the resources that the request action affected. This field can be null for non-resource actions such as `login` or `logout`. | -| `resources[x].id`\* | number | ID of the resource. | -| `resources[x].type`\* | string | The type of the resource that was logged: `alert`, `alert-notification`, `annotation`, `api-key`, `auth-token`, `dashboard`, `datasource`, `folder`, `org`, `panel`, `playlist`, `report`, `team`, `user`, or `version`. | -| `requestUri`\* | string | Request URI. | -| `ipAddress`\* | string | IP address that the request was made from. | -| `userAgent`\* | string | Agent through which the request was made. | -| `grafanaVersion`\* | string | Current version of Grafana when this log is created. | -| `additionalData` | object | Additional information that can be provided about the request. | +| Field name | Type | Description | +| ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `timestamp`\* | string | The date and time the request was made, in coordinated universal time (UTC) using the [RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6) format. | +| `user`\* | object | Information about the user that made the request. Either one of the `UserID` or `ApiKeyID` fields will contain content if `isAnonymous=false`. | +| `user.userId` | number | ID of the Grafana user that made the request. | +| `user.orgId`\* | number | Current organization of the user that made the request. | +| `user.orgRole` | string | Current role of the user that made the request. | +| `user.name` | string | Name of the Grafana user that made the request. | +| `user.tokenId` | number | ID of the user authentication token. | +| `user.apiKeyId` | number | ID of the Grafana API key used to make the request. | +| `user.isAnonymous`\* | boolean | If an anonymous user made the request, `true`. Otherwise, `false`. | +| `action`\* | string | The request action. For example, `create`, `update`, or `manage-permissions`. | +| `request`\* | object | Information about the HTTP request. | +| `request.params` | object | Request’s path parameters. | +| `request.query` | object | Request’s query parameters. | +| `request.body` | string | Request’s body. | +| `result`\* | object | Information about the HTTP response. | +| `result.statusType` | string | If the request action was successful, `success`. Otherwise, `failure`. | +| `result.statusCode` | number | HTTP status of the request. | +| `result.failureMessage` | string | HTTP error message. | +| `result.body` | string | Response body. | +| `resources` | array | Information about the resources that the request action affected. This field can be null for non-resource actions such as `login` or `logout`. | +| `resources[x].id`\* | number | ID of the resource. | +| `resources[x].type`\* | string | The type of the resource that was logged: `alert`, `alert-notification`, `annotation`, `api-key`, `auth-token`, `dashboard`, `datasource`, `folder`, `org`, `panel`, `playlist`, `report`, `team`, `user`, or `version`. | +| `requestUri`\* | string | Request URI. | +| `ipAddress`\* | string | IP address that the request was made from. | +| `userAgent`\* | string | Agent through which the request was made. | +| `grafanaVersion`\* | string | Current version of Grafana when this log is created. | +| `additionalData` | object | Additional information that can be provided about the request. | The `additionalData` field can contain the following information: | Field name | Action | Description | | ---------- | ------ | ----------- | | `loginUsername` | `login` | Login used in the Grafana authentication form. | -| `extUserInfo` | `login` | User information provided by the external system that was used to log in. | +| `extUserInfo` | `login` | User information provided by the external system that was used to log in. | | `authTokenCount` | `login` | Number of active authentication tokens for the user that logged in. | -| `terminationReason` | `logout` | The reason why the user logged out, such as a manual logout or a token expiring. | +| `terminationReason` | `logout` | The reason why the user logged out, such as a manual logout or a token expiring. | ### Recorded actions diff --git a/docs/sources/enterprise/datasource_permissions.md b/docs/sources/enterprise/datasource_permissions.md index 475ebb8c87a..8a2b8d63d80 100644 --- a/docs/sources/enterprise/datasource_permissions.md +++ b/docs/sources/enterprise/datasource_permissions.md @@ -52,7 +52,7 @@ After you have enabled permissions for a data source you can assign query permis If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button. -Note that *all* existing permissions created for the data source will be deleted. +Note that _all_ existing permissions created for the data source will be deleted. **Disable permissions for a data source:** diff --git a/docs/sources/enterprise/enterprise-configuration.md b/docs/sources/enterprise/enterprise-configuration.md index c37dba6ff22..78edef25efb 100644 --- a/docs/sources/enterprise/enterprise-configuration.md +++ b/docs/sources/enterprise/enterprise-configuration.md @@ -362,6 +362,7 @@ This value limits the size of a single cache value. If a cache value (or query r The default is `1`. ## [caching.encryption] + ### enabled When 'enabled' is `true`, query values in the cache are encrypted. diff --git a/docs/sources/enterprise/license/activate-license.md b/docs/sources/enterprise/license/activate-license.md index fdd4947867a..f049db9c14b 100644 --- a/docs/sources/enterprise/license/activate-license.md +++ b/docs/sources/enterprise/license/activate-license.md @@ -17,7 +17,7 @@ To download your Grafana Enterprise license: 1. Log in to your [Grafana Cloud Account](https://grafana.com). 1. Go to your **Org Profile**. 1. Go to the section for Grafana Enterprise licenses in the side menu. -1. At the bottom of the license details page there is **Download Token** link that will download the *license.jwt* file containing your license to your computer. +1. At the bottom of the license details page there is **Download Token** link that will download the _license.jwt_ file containing your license to your computer. ## Step 2. Add your license to a Grafana instance @@ -34,29 +34,29 @@ This is the preferred option for single instance installations of Grafana Enterp ### Place the license.jwt file in Grafana's data folder - The data folder is usually `/var/lib/grafana` on Linux systems. +The data folder is usually `/var/lib/grafana` on Linux systems. - You can also configure a custom location for the license file using the grafana.ini setting: +You can also configure a custom location for the license file using the grafana.ini setting: - ```bash - [enterprise] - license_path = /company/secrets/license.jwt - ``` +```bash +[enterprise] +license_path = /company/secrets/license.jwt +``` - This setting can also be set with an environment variable, which is useful if you're running Grafana with Docker and have a custom volume where you have placed the license file. In this case, set the environment variable `GF_ENTERPRISE_LICENSE_PATH` to point to the location of your license file. +This setting can also be set with an environment variable, which is useful if you're running Grafana with Docker and have a custom volume where you have placed the license file. In this case, set the environment variable `GF_ENTERPRISE_LICENSE_PATH` to point to the location of your license file. ### Set the content of the license file as a configuration option - You can add a license by pasting the content of the `license.jwt` - to the grafana.ini configuration file: +You can add a license by pasting the content of the `license.jwt` +to the grafana.ini configuration file: + +```bash +[enterprise] +license_text = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aGlzIjoiaXMiLCJub3QiOiJhIiwidmFsaWQiOiJsaWNlbnNlIn0.bxDzxIoJlYMwiEYKYT_l2s42z0Y30tY-6KKoyz9RuLE +``` - ```bash - [enterprise] - license_text = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aGlzIjoiaXMiLCJub3QiOiJhIiwidmFsaWQiOiJsaWNlbnNlIn0.bxDzxIoJlYMwiEYKYT_l2s42z0Y30tY-6KKoyz9RuLE - ``` - - This option can be set using the `GF_ENTERPRISE_LICENSE_TEXT` - environment variable. +This option can be set using the `GF_ENTERPRISE_LICENSE_TEXT` +environment variable. ## Step 3. Ensure that the license file's root URL matches the root_url configuration option diff --git a/docs/sources/enterprise/license/license-restrictions.md b/docs/sources/enterprise/license/license-restrictions.md index 14cff3e5ec8..023c7a138d2 100644 --- a/docs/sources/enterprise/license/license-restrictions.md +++ b/docs/sources/enterprise/license/license-restrictions.md @@ -21,13 +21,14 @@ Grafana licenses allow for a certain number of active users per instance. An act In the context of licensing, each user is classified as either a viewer or an editor/admin. This classification is the user's **licensed role**, and it can be different from that user's [organization role]({{< relref "../../permissions/organization_roles.md" >}}) in Grafana. - An editor/admin is a user who has permission to edit and save a dashboard. Examples of editors are as follows: - - Grafana server administrators. - - Users who are assigned an organization role of Editor or Admin. - - Users who have been granted admin or edit permissions at the dashboard or folder level. Refer to [Dashboard and folder permissions]({{< relref "../../permissions/dashboard-folder-permissions.md" >}}). This means that even if a user is assigned to an organization role of Viewer they will be counted as an editor. + - Grafana server administrators. + - Users who are assigned an organization role of Editor or Admin. + - Users who have been granted admin or edit permissions at the dashboard or folder level. Refer to [Dashboard and folder permissions]({{< relref "../../permissions/dashboard-folder-permissions.md" >}}). This means that even if a user is assigned to an organization role of Viewer they will be counted as an editor. - A viewer is a user with the Viewer role, which does not permit the user to save a dashboard. Additional details: -- When the number of maximum active viewers or editor/admins is reached, only those currently active users can sign in. New users or non-active users cannot sign in. + +- When the number of maximum active viewers or editor/admins is reached, only those currently active users can sign in. New users or non-active users cannot sign in. - A license limit banner will appear to admins when Grafana reaches its active user limit. Editor/admins and viewers will not see the banner. - To see how many active users you have in each licensed role (Viewer or Editor/Admin), refer to the Licensing page in the Server Admin section of Grafana, which is located at `[your-grafana-url.com]/admin/licensing`. Please note that _licensed_ roles can differ from the Active Viewer/Editor/Admin counts on the /admin/stats page in Grafana. This is because the Stats page only counts a user's assigned organization role and does not account for dashboard and folder permissions. - Restrictions are applied separately for viewers and editor/admins. If a Grafana instance reaches its limit of active viewers but not its limit of active editor/admins, new editors and admins will still be able to sign in. @@ -59,6 +60,7 @@ License URL is the root URL of your Grafana instance. The license will not work This CSV report helps to identify users, teams, and roles that have been granted Admin or Edit permissions at the dashboard or folder level. To download the report: + 1. Hover your cursor over the **Server Admin** (shield) icon in the side menu and then click **Licensing**. 1. At the bottom of the page, click **Download report**. diff --git a/docs/sources/enterprise/query-caching.md b/docs/sources/enterprise/query-caching.md index d57c3d8c8c7..a4ec257fcd3 100644 --- a/docs/sources/enterprise/query-caching.md +++ b/docs/sources/enterprise/query-caching.md @@ -30,6 +30,7 @@ You can make a panel retrieve fresh data more frequently by increasing the **Max ## Data sources that work with query caching Query caching works for all [Enterprise data sources](https://grafana.com/grafana/plugins/?type=datasource&enterprise=1), and it works for the following [built-in data sources]({{< relref "../datasources/_index.md" >}}): + - CloudWatch - Google Cloud Monitoring - InfluxDB @@ -49,11 +50,12 @@ To tell if a data source works with query caching, follow the instructions below You must be an Org admin or Grafana admin to enable query caching for a data source. For more information on Grafana roles and permissions, visit the [Permissions page]({{< relref "../permissions/_index.md" >}}). By default, data source queries are not cached. To enable query caching for a single data source: + 1. On the side menu, click Configuration > Data Sources. 1. In the data source list, click the data source that you want to turn on caching for. 1. In the Cache tab, click Enable. 1. Open the Cache tab. -1. Press the Enable button. +1. Press the Enable button. 1. (Optional) Choose a custom TTL for that data source. If you skip this step, then Grafana uses the default TTL. > **Note:** If query caching is enabled and the Cache tab is not visible in a data source's settings, then query caching is not available for that data source. @@ -62,7 +64,8 @@ To configure global settings for query caching, refer the the [Query caching sec ## Disable query caching -To disable query caching for a single data source: +To disable query caching for a single data source: + 1. On the side menu, click Configuration > Data Sources. 1. In the data source list, click the data source that you want to turn off caching for. 1. In the Cache tab, click Disable. diff --git a/docs/sources/enterprise/reporting.md b/docs/sources/enterprise/reporting.md index 3df33d26a94..c64c5d691bc 100644 --- a/docs/sources/enterprise/reporting.md +++ b/docs/sources/enterprise/reporting.md @@ -11,7 +11,7 @@ weight = 800 Reporting allows you to automatically generate PDFs from any of your dashboards and have Grafana email them to interested parties on a schedule. This is available in Grafana Cloud Pro and Advanced and in Grafana Enterprise. > If you have [Fine-grained access Control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, for some actions you would need to have relevant permissions. -Refer to specific guides to understand what permissions are required. +> Refer to specific guides to understand what permissions are required. {{< figure src="/static/img/docs/enterprise/reports_list_8.1.png" max-width="500px" class="docs-image--no-shadow" >}} @@ -86,12 +86,12 @@ If the time zone is set differently between your Grafana server and its remote i > We're actively working on developing new report layout options. [Contact us](https://grafana.com/contact?about=grafana-enterprise&topic=design-process&value=reporting) if you would like to get involved in the design process. -Layout | Orientation | Support | Description | Preview ------- | ----------- | ------- | ----------- | ------- -Simple | Portrait | v6.4+ | Generates an A4 page in portrait mode with three panels per page. | {{< figure src="/static/img/docs/enterprise/reports_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}} -Simple | Landscape | v6.7+ | Generates an A4 page in landscape mode with a single panel per page. | {{< figure src="/static/img/docs/enterprise/reports_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}} -Grid | Portrait | v7.2+ | Generates an A4 page in portrait mode with panels arranged in the same way as at the original dashboard. | {{< figure src="/static/img/docs/enterprise/reports_grid_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}} -Grid | Landscape | v7.2+ | Generates an A4 page in landscape mode with panels arranged in the same way as at the original dashboard. | {{< figure src="/static/img/docs/enterprise/reports_grid_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}} +| Layout | Orientation | Support | Description | Preview | +| ------ | ----------- | ------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| Simple | Portrait | v6.4+ | Generates an A4 page in portrait mode with three panels per page. | {{< figure src="/static/img/docs/enterprise/reports_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}} | +| Simple | Landscape | v6.7+ | Generates an A4 page in landscape mode with a single panel per page. | {{< figure src="/static/img/docs/enterprise/reports_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}} | +| Grid | Portrait | v7.2+ | Generates an A4 page in portrait mode with panels arranged in the same way as at the original dashboard. | {{< figure src="/static/img/docs/enterprise/reports_grid_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}} | +| Grid | Landscape | v7.2+ | Generates an A4 page in landscape mode with panels arranged in the same way as at the original dashboard. | {{< figure src="/static/img/docs/enterprise/reports_grid_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}} | ### CSV export @@ -106,13 +106,13 @@ When the CSV file is generated, it is temporarily written to the `csv` folder in A background job runs every 10 minutes and removes temporary CSV files. You can configure how long a CSV file should be stored before being removed by configuring the [temp-data-lifetime]({{< relref "../administration/configuration/#temp-data-lifetime" >}}) setting. This setting also affects how long a renderer PNG file should be stored. ### Scheduling + > Note: Scheduler has been significantly changed in Grafana Enterprise v8.1. Scheduled reports can be sent once or repeatedly on an hourly, daily, weekly, or monthly basis, or at custom intervals. You can also disable scheduling by selecting **Never**: for example, if you want to send the report via the API. {{< figure src="/static/img/docs/enterprise/reports_scheduler_8.1.png" max-width="500px" class="docs-image--no-shadow" >}} - **Send now or schedule for later** - **Send now** sends the report immediately after you save it. To stop sending the report at some point in the future, add an end date. If you leave the end date empty, the report is sent out indefinitely. @@ -133,7 +133,7 @@ When you schedule a report with a monthly frequency, and set the start date betw 1. In the report, click **Send test email**. 1. In the Email field, enter the email address or addresses that you want to test, separated by semicolon. -If you want to use email addresses from the report, then select the **Use emails from report** check box. + If you want to use email addresses from the report, then select the **Use emails from report** check box. 1. Click **Send**. The last saved version of the report will be sent to selected emails. You can use this to verify emails are working and to make sure the report is generated and displayed as you expect. @@ -144,7 +144,7 @@ The last saved version of the report will be sent to selected emails. You can us > **Note:** Available in Grafana Enterprise v8+. -You can pause sending of reports from the report list view by clicking the pause icon. The report will not be sent according to its schedule until it is resumed by clicking the resume button on the report row. +You can pause sending of reports from the report list view by clicking the pause icon. The report will not be sent according to its schedule until it is resumed by clicking the resume button on the report row. ## Send report via the API @@ -193,6 +193,7 @@ Report branding: **Company logo URL** - Company logo displayed in the report PDF. Defaults to the Grafana logo. Email branding: + - **Company logo URL** - Company logo displayed in the report PDF. Defaults to the Grafana logo. - **Email footer** - Toggle to enable report email footer. Select **Sent by** or **None**. - **Footer link text** - Text for the link in the report email footer. Defaults to "Grafana". diff --git a/docs/sources/enterprise/request-security.md b/docs/sources/enterprise/request-security.md index 4e6af243d5a..6d64bbb6b07 100644 --- a/docs/sources/enterprise/request-security.md +++ b/docs/sources/enterprise/request-security.md @@ -12,6 +12,7 @@ weight = 400 Request security makes it possible to limit requests from the Grafana server, and it targets requests that are generated by users. For example: + - Data source metric queries - Alert notifications diff --git a/docs/sources/enterprise/saml.md b/docs/sources/enterprise/saml.md index 22a4f7e9d79..df41235b560 100644 --- a/docs/sources/enterprise/saml.md +++ b/docs/sources/enterprise/saml.md @@ -19,6 +19,7 @@ The SAML single sign-on (SSO) standard is varied and flexible. Our implementatio Grafana supports the following SAML 2.0 bindings: - From the Service Provider (SP) to the Identity Provider (IdP): + - `HTTP-POST` binding - `HTTP-Redirect` binding @@ -26,10 +27,12 @@ Grafana supports the following SAML 2.0 bindings: - `HTTP-POST` binding In terms of security: + - Grafana supports signed and encrypted assertions. - Grafana does not support signed or encrypted requests. In terms of initiation: + - Grafana supports SP-initiated requests. - Grafana does not support IdP-initiated request. @@ -37,29 +40,29 @@ In terms of initiation: The table below describes all SAML configuration options. Continue reading below for details on specific options. Like any other Grafana configuration, you can apply these options as [environment variables]({{< relref "../administration/configuration.md#configure-with-environment-variables" >}}). -| Setting | Required | Description | Default | -| ----------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------- | ------------- | -| `enabled` | No | Whether SAML authentication is allowed | `false` | -| `single_logout` | No | Whether SAML Single Logout enabled | `false` | -| `allow_idp_initiated` | No | Whether SAML IdP-initiated login is allowed | `false` | -| `certificate` or `certificate_path` | Yes | Base64-encoded string or Path for the SP X.509 certificate | | -| `private_key` or `private_key_path` | Yes | Base64-encoded string or Path for the SP private key | | -| `signature_algorithm` | No | Signature algorithm used for signing requests to the IdP. Supported values are rsa-sha1, rsa-sha256, rsa-sha512. | | -| `idp_metadata`, `idp_metadata_path`, or `idp_metadata_url` | Yes | Base64-encoded string, Path or URL for the IdP SAML metadata XML | | -| `max_issue_delay` | No | Duration, since the IdP issued a response and the SP is allowed to process it | `90s` | -| `metadata_valid_duration` | No | Duration, for how long the SP metadata is valid | `48h` | -| `relay_state` | No | Relay state for IdP-initiated login. Should match relay state configured in IdP | | -| `assertion_attribute_name` | No | Friendly name or name of the attribute within the SAML assertion to use as the user name | `displayName` | -| `assertion_attribute_login` | No | Friendly name or name of the attribute within the SAML assertion to use as the user login handle | `mail` | -| `assertion_attribute_email` | No | Friendly name or name of the attribute within the SAML assertion to use as the user email | `mail` | -| `assertion_attribute_groups` | No | Friendly name or name of the attribute within the SAML assertion to use as the user groups | | -| `assertion_attribute_role` | No | Friendly name or name of the attribute within the SAML assertion to use as the user roles | | -| `assertion_attribute_org` | No | Friendly name or name of the attribute within the SAML assertion to use as the user organization | | -| `allowed_organizations` | No | List of comma- or space-separated organizations. User should be a member of at least one organization to log in. | | -| `org_mapping` | No | List of comma- or space-separated Organization:OrgId mappings | | -| `role_values_editor` | No | List of comma- or space-separated roles which will be mapped into the Editor role | | -| `role_values_admin` | No | List of comma- or space-separated roles which will be mapped into the Admin role | | -| `role_values_grafana_admin` | No | List of comma- or space-separated roles which will be mapped into the Grafana Admin (Super Admin) role | | +| Setting | Required | Description | Default | +| ---------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------- | ------------- | +| `enabled` | No | Whether SAML authentication is allowed | `false` | +| `single_logout` | No | Whether SAML Single Logout enabled | `false` | +| `allow_idp_initiated` | No | Whether SAML IdP-initiated login is allowed | `false` | +| `certificate` or `certificate_path` | Yes | Base64-encoded string or Path for the SP X.509 certificate | | +| `private_key` or `private_key_path` | Yes | Base64-encoded string or Path for the SP private key | | +| `signature_algorithm` | No | Signature algorithm used for signing requests to the IdP. Supported values are rsa-sha1, rsa-sha256, rsa-sha512. | | +| `idp_metadata`, `idp_metadata_path`, or `idp_metadata_url` | Yes | Base64-encoded string, Path or URL for the IdP SAML metadata XML | | +| `max_issue_delay` | No | Duration, since the IdP issued a response and the SP is allowed to process it | `90s` | +| `metadata_valid_duration` | No | Duration, for how long the SP metadata is valid | `48h` | +| `relay_state` | No | Relay state for IdP-initiated login. Should match relay state configured in IdP | | +| `assertion_attribute_name` | No | Friendly name or name of the attribute within the SAML assertion to use as the user name | `displayName` | +| `assertion_attribute_login` | No | Friendly name or name of the attribute within the SAML assertion to use as the user login handle | `mail` | +| `assertion_attribute_email` | No | Friendly name or name of the attribute within the SAML assertion to use as the user email | `mail` | +| `assertion_attribute_groups` | No | Friendly name or name of the attribute within the SAML assertion to use as the user groups | | +| `assertion_attribute_role` | No | Friendly name or name of the attribute within the SAML assertion to use as the user roles | | +| `assertion_attribute_org` | No | Friendly name or name of the attribute within the SAML assertion to use as the user organization | | +| `allowed_organizations` | No | List of comma- or space-separated organizations. User should be a member of at least one organization to log in. | | +| `org_mapping` | No | List of comma- or space-separated Organization:OrgId mappings | | +| `role_values_editor` | No | List of comma- or space-separated roles which will be mapped into the Editor role | | +| `role_values_admin` | No | List of comma- or space-separated roles which will be mapped into the Admin role | | +| `role_values_grafana_admin` | No | List of comma- or space-separated roles which will be mapped into the Grafana Admin (Super Admin) role | | ### Enable SAML authentication @@ -72,6 +75,7 @@ Refer to [Configuration]({{< relref "../administration/configuration.md" >}}) fo The SAML SSO standard uses asymmetric encryption to exchange information between the SP (Grafana) and the IdP. To perform such encryption, you need a public part and a private part. In this case, the X.509 certificate provides the public part, while the private key provides the private part. Grafana supports two ways of specifying both the `certificate` and `private_key`. + - Without a suffix (`certificate` or `private_key`), the configuration assumes you've supplied the base64-encoded file contents. - With the `_path` suffix (`certificate_path` or `private_key_path`), then Grafana treats the value entered as a file path and attempts to read the file from the file system. @@ -88,6 +92,7 @@ The SAML standard recommends using a digital signature for some types of message You also need to define the public part of the IdP for message verification. The SAML IdP metadata XML defines where and how Grafana exchanges user information. Grafana supports three ways of specifying the IdP metadata. + - Without a suffix `idp_metadata`, Grafana assumes base64-encoded XML file contents. - With the `_path` suffix, Grafana assumes a file path and attempts to read the file from the file system. - With the `_url` suffix, Grafana assumes a URL and attempts to load the metadata from the given location. @@ -135,7 +140,6 @@ For Grafana to map the user information, it looks at the individual attributes w Grafana provides configuration options that let you modify which keys to look at for these values. The data we need to create the user in Grafana is Name, Login handle, and email. - ### Configure team sync > Team sync support for SAML only available in Grafana v7.0+ @@ -241,18 +245,20 @@ To configure SAML integration with Okta, create integration inside the Okta orga 1. Click **Create**. 1. On the **General Settings** tab, enter a name for your Grafana integration. You can also upload a logo. 1. On the **Configure SAML** tab, enter the SAML information related to your Grafana instance: - - In the **Single sign on URL** field, use the `/saml/acs` endpoint URL of your Grafana instance, for example, `https://grafana.example.com/saml/acs`. - - In the **Audience URI (SP Entity ID)** field, use the `/saml/metadata` endpoint URL, for example, `https://grafana.example.com/saml/metadata`. - - Leave the default values for **Name ID format** and **Application username**. - - In the **ATTRIBUTE STATEMENTS (OPTIONAL)** section, enter the SAML attributes to be shared with Grafana, for example: - - | Attribute name (in Grafana) | Value (in Okta profile) | - | --------------------------- | -------------------------------------- | - | Login | `user.login` | - | Email | `user.email` | - | DisplayName | `user.firstName + " " + user.lastName` | - - - In the **GROUP ATTRIBUTE STATEMENTS (OPTIONAL)** section, enter a group attribute name (for example, `Group`) and set filter to `Matches regex .*` to return all user groups. + + - In the **Single sign on URL** field, use the `/saml/acs` endpoint URL of your Grafana instance, for example, `https://grafana.example.com/saml/acs`. + - In the **Audience URI (SP Entity ID)** field, use the `/saml/metadata` endpoint URL, for example, `https://grafana.example.com/saml/metadata`. + - Leave the default values for **Name ID format** and **Application username**. + - In the **ATTRIBUTE STATEMENTS (OPTIONAL)** section, enter the SAML attributes to be shared with Grafana, for example: + + | Attribute name (in Grafana) | Value (in Okta profile) | + | --------------------------- | -------------------------------------- | + | Login | `user.login` | + | Email | `user.email` | + | DisplayName | `user.firstName + " " + user.lastName` | + + - In the **GROUP ATTRIBUTE STATEMENTS (OPTIONAL)** section, enter a group attribute name (for example, `Group`) and set filter to `Matches regex .*` to return all user groups. + 1. Click **Next**. 1. On the final Feedback tab, fill out the form and then click **Finish**. @@ -265,10 +271,10 @@ Once the application is created, configure Grafana to use it for SAML authentica 1. On the Okta application page where you have been redirected after application created, navigate to the **Sign On** tab and find **Identity Provider metadata** link in the **Settings** section. 1. Set the [`idp_metadata_url`]({{< relref "./enterprise-configuration.md#idp-metadata-url" >}}) to the URL obtained from the previous step. The URL should look like `https://.okta.com/app//sso/saml/metadata`. 1. Set the following options to the attribute names configured at the **step 10** of the SAML integration setup. You can find this attributes on the **General** tab of the application page (**ATTRIBUTE STATEMENTS** and **GROUP ATTRIBUTE STATEMENTS** in the **SAML Settings** section). - - [`assertion_attribute_login`]({{< relref "./enterprise-configuration.md#assertion-attribute-login" >}}) - - [`assertion_attribute_email`]({{< relref "./enterprise-configuration.md#assertion-attribute-email" >}}) - - [`assertion_attribute_name`]({{< relref "./enterprise-configuration.md#assertion-attribute-name" >}}) - - [`assertion_attribute_groups`]({{< relref "./enterprise-configuration.md#assertion-attribute-groups" >}}) + - [`assertion_attribute_login`]({{< relref "./enterprise-configuration.md#assertion-attribute-login" >}}) + - [`assertion_attribute_email`]({{< relref "./enterprise-configuration.md#assertion-attribute-email" >}}) + - [`assertion_attribute_name`]({{< relref "./enterprise-configuration.md#assertion-attribute-name" >}}) + - [`assertion_attribute_groups`]({{< relref "./enterprise-configuration.md#assertion-attribute-groups" >}}) 1. Save the configuration file and and then restart the Grafana server. When you are finished, the Grafana configuration might look like this example: diff --git a/docs/sources/enterprise/settings-updates.md b/docs/sources/enterprise/settings-updates.md index f270a512afd..37155eef489 100644 --- a/docs/sources/enterprise/settings-updates.md +++ b/docs/sources/enterprise/settings-updates.md @@ -14,11 +14,11 @@ Settings updates at runtime allows you to update Grafana settings with no need t Updates that happen at runtime are stored in the database and override [settings from the other sources](https://grafana.com/docs/grafana/latest/administration/configuration/) (arguments, environment variables, settings file, etc). Therefore, every time a specific setting key is removed at runtime, -the value used for that key is the inherited one from the other sources in the reverse order of precedence +the value used for that key is the inherited one from the other sources in the reverse order of precedence (`arguments > environment variables > settings file`), being the application default the value used when no one provided through one of these, at least. -Currently, **it only supports updates on the `auth.saml` section.** +Currently, **it only supports updates on the `auth.saml` section.** ## Update settings via the API @@ -27,8 +27,9 @@ You can update settings through the [Admin API]({{< relref "../http_api/admin.md When you submit a settings update via API, Grafana verifies if the given settings updates are allowed and valid. If they are, then Grafana stores the settings in the database and reloads Grafana services with no need to restart the instance. -So, the payload of a `PUT` request to the update settings endpoint (`/api/admin/settings`) +So, the payload of a `PUT` request to the update settings endpoint (`/api/admin/settings`) should contain (either one or both): + - An `updates` map with a key, and a value per section you want to set. - A `removals` list with keys per section you want to unset. @@ -44,7 +45,9 @@ For example, if you provide the following `updates`: } } ``` + it would enable SAML and disable single logouts. And, if you provide the following `removals`: + ```json { "auth.saml": ["allow_idp_initiated"] @@ -77,12 +80,12 @@ won't be persisted into the database. ## Background job (high availability set-ups) Grafana Enterprise has a built-in scheduled background job that looks into the database every minute for -settings updates. If there are updates, it reloads the Grafana services affected by the detected changes. +settings updates. If there are updates, it reloads the Grafana services affected by the detected changes. The background job synchronizes settings between instances in high availability set-ups. So, after you perform some changes through the HTTP API, then the other instances are synchronized through the database and the background job. ## Control access with fine-grained access control -If you have [Fine-grained access Control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, you can control who can read or update settings. +If you have [Fine-grained access Control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, you can control who can read or update settings. Refer to the [Admin API]({{< relref "../http_api/admin.md#update-settings" >}}) for more information. diff --git a/docs/sources/enterprise/team-sync.md b/docs/sources/enterprise/team-sync.md index f719d636e10..735cb260c6e 100644 --- a/docs/sources/enterprise/team-sync.md +++ b/docs/sources/enterprise/team-sync.md @@ -43,7 +43,7 @@ If you have already grouped some users into a team, then you can synchronize tha 1. Insert the value of the group you want to sync with. This becomes the Grafana `GroupID`. Examples: - - For LDAP, this is the LDAP distinguished name (DN) of LDAP group you want to synchronize with the team. - - For Auth Proxy, this is the value we receive as part of the custom `Groups` header. + - For LDAP, this is the LDAP distinguished name (DN) of LDAP group you want to synchronize with the team. + - For Auth Proxy, this is the value we receive as part of the custom `Groups` header. 1. Click `Add group` to save. diff --git a/docs/sources/enterprise/usage-insights/_index.md b/docs/sources/enterprise/usage-insights/_index.md index f536826d1ec..77e529e03af 100644 --- a/docs/sources/enterprise/usage-insights/_index.md +++ b/docs/sources/enterprise/usage-insights/_index.md @@ -8,14 +8,16 @@ weight = 200 # Usage insights -Usage insights allow you to have a better understanding of how your Grafana instance is used. +Usage insights allow you to have a better understanding of how your Grafana instance is used. The usage insights feature collects a number of aggregated data and stores them in the database: + - Dashboard views (aggregated and per user) - Data source errors - Data source queries These aggregated data give you access to several features: + - [Dashboard and data source insights]({{< relref "dashboard-datasource-insights.md" >}}) - [Presence indicator]({{< relref "presence-indicator.md" >}}) - [Sort dashboards by using insights data]({{< relref "improved-search.md" >}}) diff --git a/docs/sources/enterprise/usage-insights/dashboard-datasource-insights.md b/docs/sources/enterprise/usage-insights/dashboard-datasource-insights.md index c95410d3373..946d7d522e5 100644 --- a/docs/sources/enterprise/usage-insights/dashboard-datasource-insights.md +++ b/docs/sources/enterprise/usage-insights/dashboard-datasource-insights.md @@ -36,6 +36,7 @@ Data source insights give you information about how a data source has been used - Query load time per day (averaged in ms) To find data source insights: + 1. Go to the Data source list view. 1. Click on a data source. 1. Click the **Insights** tab. diff --git a/docs/sources/enterprise/usage-insights/export-logs.md b/docs/sources/enterprise/usage-insights/export-logs.md index 7c5cee14f35..9080f69f05b 100644 --- a/docs/sources/enterprise/usage-insights/export-logs.md +++ b/docs/sources/enterprise/usage-insights/export-logs.md @@ -15,6 +15,7 @@ By exporting usage logs to Loki, you can directly query them and create dashboar ## Usage insights logs Usage insights logs are JSON objects that represent certain user activities, such as: + - A user opens a dashboard. - A query is sent to a data source. @@ -23,7 +24,8 @@ Usage insights logs are JSON objects that represent certain user activities, suc A log is created every time a user opens a dashboard or when a query is sent to a data source in the dashboard view. A query that is performed via Explore does not generate a log. ### Format -Logs of usage insights contain the following fields, where the fields followed by * are always available, and the others depend on the logged event: + +Logs of usage insights contain the following fields, where the fields followed by \* are always available, and the others depend on the logged event: | Field name | Type | Description | | ---------- | ---- | ----------- | | `eventName`\* | string | Type of the event, which can be either `data-request` or `dashboard-view`. | @@ -69,11 +71,12 @@ tls = true ## Visualize Loki usage insights in Grafana Now that your logs are exported into Loki, you can build Grafana dashboards to understand your Grafana instance usage. + 1. Add Loki as a data source. Refer to [Grafana fundamentals tutorial](/tutorials/grafana-fundamentals/#6). 1. Import one of the following dashboards: - * [Usage insights](/grafana/dashboards/13785) - * [Usage insights datasource details](/grafana/dashboards/13786) + - [Usage insights](/grafana/dashboards/13785) + - [Usage insights datasource details](/grafana/dashboards/13786) 1. Play with usage insights to understand them: - * In Explore, you can use the query `{datasource="gdev-loki",kind="usage_insights"}` to retrieve all logs related to your `gdev-loki` data source. - * In a dashboard, you can build a table panel with the query `topk(10, sum by (error) (count_over_time({kind="usage_insights", datasource="gdev-prometheus"} | json | error != "" [$__interval])))` to display the 10 most common errors your users see using the `gdev-prometheus` data source. - * In a dashboard, you can build a graph panel with the queries `sum by(host) (count_over_time({kind="usage_insights"} | json | eventName="data-request" | error != "" [$__interval]))` and `sum by(host) (count_over_time({kind="usage_insights"} | json | eventName="data-request" | error = "" [$__interval]))` to show the evolution of the data request count over time. Using `by (host)` allows you to have more information for each Grafana server you have if you have set up Grafana for [high availability](<{{< relref "../../administration/set-up-for-high-availability.md" >}}>). + - In Explore, you can use the query `{datasource="gdev-loki",kind="usage_insights"}` to retrieve all logs related to your `gdev-loki` data source. + - In a dashboard, you can build a table panel with the query `topk(10, sum by (error) (count_over_time({kind="usage_insights", datasource="gdev-prometheus"} | json | error != "" [$__interval])))` to display the 10 most common errors your users see using the `gdev-prometheus` data source. + - In a dashboard, you can build a graph panel with the queries `sum by(host) (count_over_time({kind="usage_insights"} | json | eventName="data-request" | error != "" [$__interval]))` and `sum by(host) (count_over_time({kind="usage_insights"} | json | eventName="data-request" | error = "" [$__interval]))` to show the evolution of the data request count over time. Using `by (host)` allows you to have more information for each Grafana server you have if you have set up Grafana for [high availability](<{{< relref "../../administration/set-up-for-high-availability.md" >}}>). diff --git a/docs/sources/enterprise/usage-insights/improved-search.md b/docs/sources/enterprise/usage-insights/improved-search.md index 675d37b5132..3b24f3590f4 100644 --- a/docs/sources/enterprise/usage-insights/improved-search.md +++ b/docs/sources/enterprise/usage-insights/improved-search.md @@ -13,6 +13,7 @@ weight = 400 In the search view, you can sort dashboards by using insights data. Doing so helps you find unused or broken dashboards or discover those that are most viewed. There are several sort options: + - Errors total - Errors 30 days - Views total diff --git a/docs/sources/enterprise/usage-insights/presence-indicator.md b/docs/sources/enterprise/usage-insights/presence-indicator.md index 75b8a575d29..e4dfac62338 100644 --- a/docs/sources/enterprise/usage-insights/presence-indicator.md +++ b/docs/sources/enterprise/usage-insights/presence-indicator.md @@ -12,7 +12,7 @@ weight = 300 When you are signed in and looking at any given dashboard, you can know who is looking at the same dashboard as you are via a presence indicator, which displays avatars of users who have interacted with the dashboard recently. The default time frame is within the past 10 minutes. To see the user's name, hover over the user's avatar. The avatars come from [Gravatar](https://gravatar.com) based on the user's email. -When there are more active users on a dashboard than can fit within the presence indicator, click the **+X** icon. Doing so opens [dashboard insights]({{< relref "dashboard-datasource-insights.md" >}}), which contains more details about recent user activity. +When there are more active users on a dashboard than can fit within the presence indicator, click the **+X** icon. Doing so opens [dashboard insights]({{< relref "dashboard-datasource-insights.md" >}}), which contains more details about recent user activity. {{< figure src="/static/img/docs/enterprise/presence_indicators.png" max-width="400px" class="docs-image--no-shadow" >}} diff --git a/docs/sources/enterprise/vault.md b/docs/sources/enterprise/vault.md index 04462e168e7..7720c92ac88 100644 --- a/docs/sources/enterprise/vault.md +++ b/docs/sources/enterprise/vault.md @@ -58,6 +58,7 @@ use Vault. Vault configuration is an extension of configuration's [variable expa `$__vault{}` syntax. The argument to Vault consists of three parts separated by a colon: + - The first part specifies which secrets engine should be used. - The second part specifies which secret should be accessed. - The third part specifies which field of that secret should be used. diff --git a/docs/sources/enterprise/white-labeling.md b/docs/sources/enterprise/white-labeling.md index e8b84edb60f..018f4b0af55 100644 --- a/docs/sources/enterprise/white-labeling.md +++ b/docs/sources/enterprise/white-labeling.md @@ -67,6 +67,7 @@ The configuration file in Grafana Enterprise contains the following options. Eac # Set to complete URL to override loading logo ;loading_logo = ``` + You can replace the default footer links (Documentation, Support, Community) and even add your own custom links. An example follows for replacing the default footer and help links with new custom links. @@ -93,6 +94,7 @@ GF_WHITE_LABELING_FOOTER_LINKS_EXTRACUSTOM_URL=http://your.custom.site ``` > **Note:** The following two links are always present in the footer: + - Grafana edition - Grafana version with build number diff --git a/docs/sources/explore/trace-integration.md b/docs/sources/explore/trace-integration.md index 1a19785e156..19cf7be30fb 100644 --- a/docs/sources/explore/trace-integration.md +++ b/docs/sources/explore/trace-integration.md @@ -61,7 +61,7 @@ Clicking anywhere on the span row shows span details. You can optionally expand the node graph for the displayed trace. Depending on the data source, this can show spans of the trace as nodes in the graph, or as some additional context like service map based on the current trace. -![Node graph](/static/img/docs/explore/explore-trace-view-node-graph-8-0.png "Node graph") +![Node graph](/static/img/docs/explore/explore-trace-view-node-graph-8-0.png 'Node graph') ##### Trace to logs @@ -83,15 +83,15 @@ Data source needs to return data frame and set `frame.meta.preferredVisualisatio Required fields: -| Field name | Type | Description | -| ------------ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| traceID | string | Identifier for the entire trace. There should be only one trace in the data frame. | -| spanID | string | Identifier for the current span. SpanIDs should be unique per trace. | +| Field name | Type | Description | +| ------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| traceID | string | Identifier for the entire trace. There should be only one trace in the data frame. | +| spanID | string | Identifier for the current span. SpanIDs should be unique per trace. | | parentSpanID | string | SpanID of the parent span to create child parent relationship in the trace view. Can be `undefined` for root span without a parent. | -| serviceName | string | Name of the service this span is part of. | -| serviceTags | TraceKeyValuePair[] | List of tags relevant for the service. | -| startTime | number | Start time of the span in millisecond epoch time. | -| duration | number | Duration of the span in milliseconds. | +| serviceName | string | Name of the service this span is part of. | +| serviceTags | TraceKeyValuePair[] | List of tags relevant for the service. | +| startTime | number | Start time of the span in millisecond epoch time. | +| duration | number | Duration of the span in milliseconds. | Optional fields: diff --git a/docs/sources/getting-started/getting-started-influxdb.md b/docs/sources/getting-started/getting-started-influxdb.md index 6e1549ca36d..d8657dbf891 100644 --- a/docs/sources/getting-started/getting-started-influxdb.md +++ b/docs/sources/getting-started/getting-started-influxdb.md @@ -48,7 +48,7 @@ InfluxDB publishes guidance for connecting different versions of their product t - **InfluxDB OSS or Enterprise 1.8+.** To turn on Flux, refer to [Configure InfluxDB](https://docs.influxdata.com/influxdb/v1.8/administration/config/#flux-enabled-false.). Select your InfluxDB version in the upper right corner. - **InfluxDB OSS or Enterprise 2.x.** Refer to [Use Grafana with InfluxDB](https://docs.influxdata.com/influxdb/v2.0/tools/grafana/). Select your InfluxDB version in the upper right corner. -- **InfluxDB Cloud.** Refer to [Use Grafana with InfluxDB Cloud](https://docs.influxdata.com/influxdb/cloud/tools/grafana/). +- **InfluxDB Cloud.** Refer to [Use Grafana with InfluxDB Cloud](https://docs.influxdata.com/influxdb/cloud/tools/grafana/). ### Important tips @@ -106,5 +106,6 @@ In your Grafana instance, go to the [Explore]({{< relref "../explore/_index.md" There you go! Use Explore and Data Explorer to experiment with your data, and add the queries that you like to your dashboard as panels. Have fun! Here are some resources to learn more: + - Grafana documentation: [InfluxDB data source](../datasources/influxdb/_index.md) - InfluxDB documentation: [Comparison of Flux vs InfluxQL](https://docs.influxdata.com/influxdb/v1.8/flux/flux-vs-influxql/) diff --git a/docs/sources/getting-started/getting-started-prometheus.md b/docs/sources/getting-started/getting-started-prometheus.md index 576f0dd00b7..02e587cb083 100644 --- a/docs/sources/getting-started/getting-started-prometheus.md +++ b/docs/sources/getting-started/getting-started-prometheus.md @@ -18,8 +18,8 @@ You can also configure a [Grafana Cloud](https://grafana.com/docs/grafana-cloud/ Prometheus, like Grafana, can be installed on many different operating systems. Refer to the [Prometheus download page](https://prometheus.io/download/), which lists all stable versions of Prometheus components. Download the following components: - - [Prometheus](https://prometheus.io/download/#prometheus) - - [node_exporter](https://prometheus.io/download/#node_exporter) +- [Prometheus](https://prometheus.io/download/#prometheus) +- [node_exporter](https://prometheus.io/download/#node_exporter) ## Step 3. Install Prometheus node_exporter diff --git a/docs/sources/getting-started/getting-started-sql.md b/docs/sources/getting-started/getting-started-sql.md index 1957dbe461f..9bf14aa4a4f 100644 --- a/docs/sources/getting-started/getting-started-sql.md +++ b/docs/sources/getting-started/getting-started-sql.md @@ -17,11 +17,13 @@ Microsoft SQL Server is a popular relational database management system that is ## Step 2. Download MS SQL Server MS SQL Server can be installed on Windows or Linux operating systems and also on Docker containers. Refer to the [MS SQL Server downloads page](https://www.microsoft.com/en-us/sql-server/sql-server-downloads), for a complete list of all available options. + ## Step 3. Install MS SQL Server You can install MS SQL Server on the host running Grafana or on a remote server. To install the software from the [downloads page](https://www.microsoft.com/en-us/sql-server/sql-server-downloads), follow their setup prompts. If you are on a Windows host but want to use Grafana and MS SQL data source on a Linux environment, refer to the [WSL to set up your Grafana development environment](https://grafana.com/blog/2021/03/03/.how-to-set-up-a-grafana-development-environment-on-a-windows-pc-using-wsl). This will allow you to leverage the resources available in [grafana/grafana](https://github.com/grafana/grafana) GitHub repository. Here you will find a collection of supported data sources, including MS SQL Server, along with test data and pre-configured dashboards for use. + ## Step 4. Adding the MS SQL data source To add MS SQL Server data source: @@ -31,19 +33,20 @@ To add MS SQL Server data source: 1. Click **Add data source** in the top right header to open the configuration page. 1. Enter the information specified in the table below, then click **Save & Test**. - Name | Description ------------- | ------------- -`Name` | The data source name. This is how you refer to the data source in panels and queries. -`Host` | The IP address/hostname and optional port of your MS SQL instance. If port is omitted, the default 1433 will be used. -`Database` | Name of your MS SQL database. -`User` | Database user's login/username. -`Password` | Database user's password. +| Name | Description | +| ---------- | --------------------------------------------------------------------------------------------------------------------- | +| `Name` | The data source name. This is how you refer to the data source in panels and queries. | +| `Host` | The IP address/hostname and optional port of your MS SQL instance. If port is omitted, the default 1433 will be used. | +| `Database` | Name of your MS SQL database. | +| `User` | Database user's login/username. | +| `Password` | Database user's password. | For installations from the [grafana/grafana](https://github.com/grafana/grafana/tree/main) repository, `gdev-mssql` data source is available. Once you add this data source, you can use the `Datasource tests - MSSQL` dashboard with three panels showing metrics generated from a test database. Optionally, play around this dashboard and customize it to: + - Create different panels. - Change titles for panels. - Change frequency of data polling. diff --git a/docs/sources/getting-started/getting-started.md b/docs/sources/getting-started/getting-started.md index e70b547599d..2d88761f29c 100644 --- a/docs/sources/getting-started/getting-started.md +++ b/docs/sources/getting-started/getting-started.md @@ -34,15 +34,15 @@ To create your first dashboard: 1. Click the **+** icon on the side menu. 1. On the dashboard, click **Add an empty panel**. 1. In the New dashboard/Edit panel view, go to the **Query** tab. -1. Configure your [query]({{< relref "../panels/queries.md" >}}) by selecting ``-- Grafana --`` from the [data source selector]({{< relref "../panels/queries.md/#data-source-selector" >}}). This generates the Random Walk dashboard. -1. Click the **Save** icon in the top right corner of your screen to save the dashboard. +1. Configure your [query]({{< relref "../panels/queries.md" >}}) by selecting `-- Grafana --` from the [data source selector]({{< relref "../panels/queries.md/#data-source-selector" >}}). This generates the Random Walk dashboard. +1. Click the **Save** icon in the top right corner of your screen to save the dashboard. 1. Add a descriptive name, and then click **Save**. - Congratulations, you have created your first dashboard and it is displaying results. +Congratulations, you have created your first dashboard and it is displaying results. ## Next steps - Continue to experiment with what you have built, try the [explore workflow]({{< relref "../explore/_index.md" >}}) or another visualization feature. Refer to [Data sources]({{< relref "../datasources" >}}) for a list of supported data sources and instructions on how to [add a data source]({{< relref "../datasources/add-a-data-source.md" >}}). The following topics will be of interest to you: +Continue to experiment with what you have built, try the [explore workflow]({{< relref "../explore/_index.md" >}}) or another visualization feature. Refer to [Data sources]({{< relref "../datasources" >}}) for a list of supported data sources and instructions on how to [add a data source]({{< relref "../datasources/add-a-data-source.md" >}}). The following topics will be of interest to you: - [Panels]({{< relref "../panels/_index.md" >}}) - [Dashboards]({{< relref "../dashboards/_index.md" >}}) diff --git a/docs/sources/http_api/_index.md b/docs/sources/http_api/_index.md index b3b6cdac669..c5873e0eb3e 100644 --- a/docs/sources/http_api/_index.md +++ b/docs/sources/http_api/_index.md @@ -42,4 +42,3 @@ Grafana Enterprise includes all of the Grafana OSS APIs as well as those that fo - [External Group Sync API]({{< relref "external_group_sync.md" >}}) - [License API]({{< relref "licensing.md" >}}) - [Reporting API]({{< relref "reporting.md" >}}) - diff --git a/docs/sources/http_api/access_control.md b/docs/sources/http_api/access_control.md index acc819e512b..cbb021dde4b 100644 --- a/docs/sources/http_api/access_control.md +++ b/docs/sources/http_api/access_control.md @@ -9,7 +9,7 @@ aliases = ["/docs/grafana/latest/http_api/accesscontrol/"] > Fine-grained access control API is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}). -The API can be used to create, update, get and list roles, and create or remove built-in role assignments. +The API can be used to create, update, get and list roles, and create or remove built-in role assignments. To use the API, you would need to [enable fine-grained access control]({{< relref "../enterprise/access-control/_index.md#enable-fine-grained-access-control" >}}). The API does not currently work with an API Token. So in order to use these API endpoints you will have to use [Basic auth]({{< relref "./auth/#basic-auth" >}}). @@ -22,9 +22,9 @@ Returns an indicator to check if fine-grained access control is enabled or not. ### Required permissions -Action | Scope ---- | --- | -status:accesscontrol | services:accesscontrol +| Action | Scope | +| -------------------- | ---------------------- | +| status:accesscontrol | services:accesscontrol | #### Example request @@ -47,12 +47,12 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Returned a flag indicating if the fine-grained access control is enabled or no. -403 | Access denied -404 | Not found, an indication that fine-grained access control is not available at all. -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | ---------------------------------------------------------------------------------- | +| 200 | Returned a flag indicating if the fine-grained access control is enabled or no. | +| 403 | Access denied | +| 404 | Not found, an indication that fine-grained access control is not available at all. | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ## Create and manage custom roles @@ -60,14 +60,14 @@ Code | Description `GET /api/access-control/roles` -Gets all existing roles. The response contains all global and organization local roles, for the organization which user is signed in. -Refer to the [Role scopes]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) for more information. +Gets all existing roles. The response contains all global and organization local roles, for the organization which user is signed in. +Refer to the [Role scopes]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) for more information. #### Required permissions -Action | Scope ---- | --- | -roles:list | roles:* +| Action | Scope | +| ---------- | -------- | +| roles:list | roles:\* | #### Example request @@ -107,11 +107,11 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Global and organization local roles are returned. -403 | Access denied -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | -------------------------------------------------------------------- | +| 200 | Global and organization local roles are returned. | +| 403 | Access denied | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ### Get a role @@ -121,9 +121,9 @@ Get a role for the given UID. #### Required permissions -Action | Scope ---- | --- | -roles:read | roles:* +| Action | Scope | +| ---------- | -------- | +| roles:read | roles:\* | #### Example request @@ -166,11 +166,11 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Role is returned. -403 | Access denied -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | -------------------------------------------------------------------- | +| 200 | Role is returned. | +| 403 | Access denied | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ### Create a new custom role @@ -183,9 +183,9 @@ Creates a new custom role and maps given permissions to that role. Note that rol `permission:delegate` scope ensures that users can only create custom roles with the same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won't be able to create a custom role which allows to do that. This is done to prevent escalation of privileges. -Action | Scope ---- | --- | -roles:write | permissions:delegate +| Action | Scope | +| ----------- | -------------------- | +| roles:write | permissions:delegate | #### Example request @@ -211,21 +211,21 @@ Content-Type: application/json #### JSON body schema -Field Name | Date Type | Required | Description ---- | --- | --- | --- -uid | string | No | UID of the role. If not present, the UID will be automatically created for you and returned in response. Refer to the [Custom roles]({{< relref "../enterprise/access-control/roles.md#custom-roles" >}}) for more information. -global | boolean | No | A flag indicating if the role is global or not. If set to `false`, the default org ID of the authenticated user will be used from the request. Refer to the [Role scopes]({{< relref "../enterprise/access-control/roles.md#role-scopes" >}}) for more information. -version | number | No | Version of the role. If not present, version 0 will be assigned to the role and returned in the response. Refer to the [Custom roles]({{< relref "../enterprise/access-control/roles.md#custom-roles" >}}) for more information. -name | string | Yes | Name of the role. Refer to [Custom roles]({{< relref "../enterprise/access-control/roles.md#custom-roles" >}}) for more information. -description | string | No | Description of the role. -permissions | Permission | No | If not present, the role will be created without any permissions. +| Field Name | Date Type | Required | Description | +| ----------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| uid | string | No | UID of the role. If not present, the UID will be automatically created for you and returned in response. Refer to the [Custom roles]({{< relref "../enterprise/access-control/roles.md#custom-roles" >}}) for more information. | +| global | boolean | No | A flag indicating if the role is global or not. If set to `false`, the default org ID of the authenticated user will be used from the request. Refer to the [Role scopes]({{< relref "../enterprise/access-control/roles.md#role-scopes" >}}) for more information. | +| version | number | No | Version of the role. If not present, version 0 will be assigned to the role and returned in the response. Refer to the [Custom roles]({{< relref "../enterprise/access-control/roles.md#custom-roles" >}}) for more information. | +| name | string | Yes | Name of the role. Refer to [Custom roles]({{< relref "../enterprise/access-control/roles.md#custom-roles" >}}) for more information. | +| description | string | No | Description of the role. | +| permissions | Permission | No | If not present, the role will be created without any permissions. | **Permission** -Field Name | Data Type | Required | Description ---- | --- | --- | --- -action | string | Yes | Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md" >}}) for full list of available actions. -scope | string | No | If not present, no scope will be mapped to the permission. Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md#scope-definitions" >}}) for full list of available scopes. +| Field Name | Data Type | Required | Description | +| ---------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | Yes | Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md" >}}) for full list of available actions. | +| scope | string | No | If not present, no scope will be mapped to the permission. Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md#scope-definitions" >}}) for full list of available scopes. | #### Example response @@ -254,12 +254,12 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Role is updated. -400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). -403 | Access denied -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | ---------------------------------------------------------------------------------- | +| 200 | Role is updated. | +| 400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). | +| 403 | Access denied | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ### Update a custom role @@ -272,9 +272,9 @@ Update the role with the given UID, and it's permissions with the given UID. The `permission:delegate` scope ensures that users can only update custom roles with the same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won't be able to update a custom role which allows to do that. This is done to prevent escalation of privileges. -Action | Scope ---- | --- | -roles:write | permissions:delegate +| Action | Scope | +| ----------- | -------------------- | +| roles:write | permissions:delegate | #### Example request @@ -284,9 +284,9 @@ Accept: application/json Content-Type: application/json { - "version": 2, + "version": 2, "name": "custom:delete:create:roles", - "description": "My custom role which gives users permissions to delete and create roles", + "description": "My custom role which gives users permissions to delete and create roles", "permissions": [ { "action": "roles:delete", @@ -302,19 +302,19 @@ Content-Type: application/json #### JSON body schema -Field Name | Data Type | Required | Description ---- | --- | --- | --- -version | number | Yes | Version of the role. Must be incremented for update to work. -name | string | Yes | Name of the role. -description | string | No | Description of the role. -permissions | List of Permissions | No | The full list of permissions the role should have after the update. +| Field Name | Data Type | Required | Description | +| ----------- | ------------------- | -------- | ------------------------------------------------------------------- | +| version | number | Yes | Version of the role. Must be incremented for update to work. | +| name | string | Yes | Name of the role. | +| description | string | No | Description of the role. | +| permissions | List of Permissions | No | The full list of permissions the role should have after the update. | **Permission** -Field Name | Data Type | Required | Description ---- | --- | --- | --- -action | string | Yes | Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md" >}}) for full list of available actions. -scope | string | No | If not present, no scope will be mapped to the permission. Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md#scope-definitions" >}}) for full list of available scopes. +| Field Name | Data Type | Required | Description | +| ---------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | Yes | Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md" >}}) for full list of available actions. | +| scope | string | No | If not present, no scope will be mapped to the permission. Refer to [Permissions]({{< relref "../enterprise/access-control/permissions.md#scope-definitions" >}}) for full list of available scopes. | #### Example response @@ -323,9 +323,9 @@ HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 { - "version": 3, + "version": 3, "name": "custom:delete:create:roles", - "description": "My custom role which gives users permissions to delete and create roles", + "description": "My custom role which gives users permissions to delete and create roles", "permissions": [ { "action": "roles:delete", @@ -347,13 +347,13 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Role is updated. -400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). -403 | Access denied -404 | Role was not found to update. -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | ---------------------------------------------------------------------------------- | +| 200 | Role is updated. | +| 400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). | +| 403 | Access denied | +| 404 | Role was not found to update. | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ### Delete a custom role @@ -366,9 +366,9 @@ Delete a role with the given UID, and it's permissions. If the role is assigned `permission:delegate` scope ensures that users can only delete a custom role with the same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won't be able to delete a custom role which allows to do that. -Action | Scope ---- | --- | -roles:delete | permissions:delegate +| Action | Scope | +| ------------ | -------------------- | +| roles:delete | permissions:delegate | #### Example request @@ -379,9 +379,9 @@ Accept: application/json #### Query parameters -Param | Type | Required | Description ---- | --- | --- | --- -force | boolean | No | When set to `true`, the role will be deleted with all it's assignments. +| Param | Type | Required | Description | +| ----- | ------- | -------- | ----------------------------------------------------------------------- | +| force | boolean | No | When set to `true`, the role will be deleted with all it's assignments. | #### Example response @@ -396,16 +396,16 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Role is deleted. -400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). -403 | Access denied -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | ---------------------------------------------------------------------------------- | +| 200 | Role is deleted. | +| 400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). | +| 403 | Access denied | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ## Create and remove built-in role assignments -API set allows to create or remove [built-in role assignments]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) and list current assignments. +API set allows to create or remove [built-in role assignments]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) and list current assignments. ### Get all built-in role assignments @@ -415,9 +415,9 @@ Gets all built-in role assignments. #### Required permissions -Action | Scope ---- | --- | -roles.builtin:list | roles:* +| Action | Scope | +| ------------------ | -------- | +| roles.builtin:list | roles:\* | #### Example request @@ -470,11 +470,11 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Built-in role assignments are returned. -403 | Access denied -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | -------------------------------------------------------------------- | +| 200 | Built-in role assignments are returned. | +| 403 | Access denied | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ### Create a built-in role assignment @@ -484,12 +484,12 @@ Creates a new built-in role assignment. #### Required permissions -`permission:delegate` scope ensures that users can only create built-in role assignments with the roles which have same, or a subset of permissions which the user has. +`permission:delegate` scope ensures that users can only create built-in role assignments with the roles which have same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won't be able to create a built-in role assignment which will allow to do that. This is done to prevent escalation of privileges. -Action | Scope ---- | --- | -roles.builtin:add | permissions:delegate +| Action | Scope | +| ----------------- | -------------------- | +| roles.builtin:add | permissions:delegate | #### Example request @@ -507,11 +507,11 @@ Content-Type: application/json #### JSON body schema -Field Name | Date Type | Required | Description ---- | --- | --- | --- -roleUid | string | Yes | UID of the role. -builtinRole | boolean | Yes | Can be one of `Viewer`, `Editor`, `Admin` or `Grafana Admin`. -global | boolean | No | A flag indicating if the assignment is global or not. If set to `false`, the default org ID of the authenticated user will be used from the request to create organization local assignment. Refer to the [Built-in role assignments]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) for more information. +| Field Name | Date Type | Required | Description | +| ----------- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| roleUid | string | Yes | UID of the role. | +| builtinRole | boolean | Yes | Can be one of `Viewer`, `Editor`, `Admin` or `Grafana Admin`. | +| global | boolean | No | A flag indicating if the assignment is global or not. If set to `false`, the default org ID of the authenticated user will be used from the request to create organization local assignment. Refer to the [Built-in role assignments]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) for more information. | #### Example response @@ -526,13 +526,13 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Role was assigned to built-in role. -400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). -403 | Access denied -404 | Role not found -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | ---------------------------------------------------------------------------------- | +| 200 | Role was assigned to built-in role. | +| 400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). | +| 403 | Access denied | +| 404 | Role not found | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | ### Remove a built-in role assignment @@ -545,9 +545,9 @@ Deletes a built-in role assignment (for one of _Viewer_, _Editor_, _Admin_, or _ `permission:delegate` scope ensures that users can only remove built-in role assignments with the roles which have same, or a subset of permissions which the user has. For example, if a user does not have required permissions for creating users, they won't be able to remove a built-in role assignment which allows to do that. -Action | Scope ---- | --- | -roles.builtin:remove | permissions:delegate +| Action | Scope | +| -------------------- | -------------------- | +| roles.builtin:remove | permissions:delegate | #### Example request @@ -558,9 +558,9 @@ Accept: application/json #### Query parameters -Param | Type | Required | Description ---- | --- | --- | --- -global | boolean | No | A flag indicating if the assignment is global or not. If set to `false`, the default org ID of the authenticated user will be used from the request to remove assignment. Refer to the [Built-in role assignments]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) for more information. +| Param | Type | Required | Description | +| ------ | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| global | boolean | No | A flag indicating if the assignment is global or not. If set to `false`, the default org ID of the authenticated user will be used from the request to remove assignment. Refer to the [Built-in role assignments]({{< relref "../enterprise/access-control/roles.md#built-in-role-assignments" >}}) for more information. | #### Example response @@ -575,10 +575,10 @@ Content-Type: application/json; charset=UTF-8 #### Status codes -Code | Description ---- | --- | -200 | Role was unassigned from built-in role. -400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). -403 | Access denied -404 | Role not found. -500 | Unexpected error. Refer to body and/or server logs for more details. +| Code | Description | +| ---- | ---------------------------------------------------------------------------------- | +| 200 | Role was unassigned from built-in role. | +| 400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). | +| 403 | Access denied | +| 404 | Role not found. | +| 500 | Unexpected error. Refer to body and/or server logs for more details. | diff --git a/docs/sources/http_api/admin.md b/docs/sources/http_api/admin.md index fec802f73e5..8a2fd007893 100644 --- a/docs/sources/http_api/admin.md +++ b/docs/sources/http_api/admin.md @@ -12,7 +12,7 @@ the permission of server admin, only users can be given that permission. So in o must have the Grafana Admin permission. (The default admin user is called `admin` and has permission to use this API.) > If you are running Grafana Enterprise and have [Fine-grained access control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, for some endpoints you would need to have relevant permissions. -Refer to specific resources to understand what permissions are required. +> Refer to specific resources to understand what permissions are required. ## Fetch settings @@ -24,9 +24,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -settings:read | settings:**
settings:auth.saml:*
settings:auth.saml:enabled (property level) +| Action | Scope | +| ------------- | ----------------------------------------------------------------------------------- | +| settings:read | settings:\*_
settings:auth.saml:_
settings:auth.saml:enabled (property level) | **Example Request**: @@ -196,9 +196,9 @@ This endpoint only supports changes to `auth.saml` configuration. See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -settings:write | settings:**
settings:auth.saml:*
settings:auth.saml:enabled (property level) +| Action | Scope | +| -------------- | ----------------------------------------------------------------------------------- | +| settings:write | settings:\*_
settings:auth.saml:_
settings:auth.saml:enabled (property level) | **Example request:** @@ -250,9 +250,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -server.stats:read | n/a +| Action | Scope | +| ----------------- | ----- | +| server.stats:read | n/a | **Example Request**: @@ -292,9 +292,9 @@ Create new user. Only works with Basic Authentication (username and password). S See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:create | n/a +| Action | Scope | +| ------------ | ----- | +| users:create | n/a | **Example Request**: @@ -334,9 +334,9 @@ Change password for a specific user. See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users.password:update | global:users:* +| Action | Scope | +| --------------------- | --------------- | +| users.password:update | global:users:\* | **Example Request**: @@ -367,9 +367,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users.permissions:update | global:users:* +| Action | Scope | +| ------------------------ | --------------- | +| users.permissions:update | global:users:\* | **Example Request**: @@ -400,9 +400,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:delete | global:users:* +| Action | Scope | +| ------------ | --------------- | +| users:delete | global:users:\* | **Example Request**: @@ -468,9 +468,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users.authtoken:list | global:users:* +| Action | Scope | +| -------------------- | --------------- | +| users.authtoken:list | global:users:\* | **Example Request**: @@ -527,9 +527,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users.authtoken:update | global:users:* +| Action | Scope | +| ---------------------- | --------------- | +| users.authtoken:update | global:users:\* | **Example Request**: @@ -567,9 +567,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope ---- | --- | -users.logout | global:users:* +| Action | Scope | +| ------------ | --------------- | +| users.logout | global:users:\* | **Example Request**: @@ -612,9 +612,9 @@ Only works with Basic Authentication (username and password). See [introduction] See note in the [introduction]({{< ref "#admin-api" >}}) for an explanation. -Action | Scope | Provision entity ---- | --- | --- -provisioning:reload | service:accesscontrol | accesscontrol +| Action | Scope | Provision entity | +| ------------------- | --------------------- | ---------------- | +| provisioning:reload | service:accesscontrol | accesscontrol | **Example Request**: diff --git a/docs/sources/http_api/alerting.md b/docs/sources/http_api/alerting.md index fa09325bdf3..7cf58c95638 100644 --- a/docs/sources/http_api/alerting.md +++ b/docs/sources/http_api/alerting.md @@ -7,9 +7,9 @@ aliases = ["/docs/grafana/latest/http_api/alerting/"] # Alerting API ->**Note:** This topic is relevant for the [legacy dashboard alerts]({{< relref "../alerting/old-alerting/_index.md" >}}) only. +> **Note:** This topic is relevant for the [legacy dashboard alerts]({{< relref "../alerting/old-alerting/_index.md" >}}) only. -You can find Grafana 8 alerts API specification details [here](https://editor.swagger.io/?url=https://raw.githubusercontent.com/grafana/grafana/main/pkg/services/ngalert/api/tooling/post.json). Also, refer to [Grafana 8 alerts documentation]({{< relref "../alerting/unified-alerting/_index.md" >}}) for details on how to create and manage new alerts. +You can find Grafana 8 alerts API specification details [here](https://editor.swagger.io/?url=https://raw.githubusercontent.com/grafana/grafana/main/pkg/services/ngalert/api/tooling/post.json). Also, refer to [Grafana 8 alerts documentation]({{< relref "../alerting/unified-alerting/_index.md" >}}) for details on how to create and manage new alerts. You can use the Alerting API to get information about legacy dashboard alerts and their states but this API cannot be used to modify the alert. To create new alerts or modify them you need to update the dashboard JSON that contains the alerts. @@ -26,21 +26,21 @@ Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk ``` - Querystring Parameters: - These parameters are used as querystring parameters. For example: +Querystring Parameters: - `/api/alerts?dashboardId=1` +These parameters are used as querystring parameters. For example: - - **dashboardId** – Limit response to alerts in specified dashboard(s). You can specify multiple dashboards, e.g. dashboardId=23&dashboardId=35. - - **panelId** – Limit response to alert for a specified panel on a dashboard. - - **query** - Limit response to alerts having a name like this value. - - **state** - Return alerts with one or more of the following alert states: `ALL`,`no_data`, `paused`, `alerting`, `ok`, `pending`. To specify multiple states use the following format: `?state=paused&state=alerting` - - **limit** - Limit response to *X* number of alerts. - - **folderId** – Limit response to alerts of dashboards in specified folder(s). You can specify multiple folders, e.g. folderId=23&folderId=35. - - **dashboardQuery** - Limit response to alerts having a dashboard name like this value. - - **dashboardTag** - Limit response to alerts of dashboards with specified tags. To do an "AND" filtering with multiple tags, specify the tags parameter multiple times e.g. dashboardTag=tag1&dashboardTag=tag2. +`/api/alerts?dashboardId=1` +- **dashboardId** – Limit response to alerts in specified dashboard(s). You can specify multiple dashboards, e.g. dashboardId=23&dashboardId=35. +- **panelId** – Limit response to alert for a specified panel on a dashboard. +- **query** - Limit response to alerts having a name like this value. +- **state** - Return alerts with one or more of the following alert states: `ALL`,`no_data`, `paused`, `alerting`, `ok`, `pending`. To specify multiple states use the following format: `?state=paused&state=alerting` +- **limit** - Limit response to _X_ number of alerts. +- **folderId** – Limit response to alerts of dashboards in specified folder(s). You can specify multiple folders, e.g. folderId=23&folderId=35. +- **dashboardQuery** - Limit response to alerts having a dashboard name like this value. +- **dashboardTag** - Limit response to alerts of dashboards with specified tags. To do an "AND" filtering with multiple tags, specify the tags parameter multiple times e.g. dashboardTag=tag1&dashboardTag=tag2. **Example Response**: diff --git a/docs/sources/http_api/annotations.md b/docs/sources/http_api/annotations.md index 6adbd29bd50..ee281b0dc69 100644 --- a/docs/sources/http_api/annotations.md +++ b/docs/sources/http_api/annotations.md @@ -86,9 +86,9 @@ Content-Type: application/json Creates an annotation in the Grafana database. The `dashboardId` and `panelId` fields are optional. If they are not specified then a global annotation is created and can be queried in any dashboard that adds -the Grafana annotations data source. When creating a region annotation include the timeEnd property. +the Grafana annotations data source. When creating a region annotation include the timeEnd property. -The format for `time` and `timeEnd` should be epoch numbers in millisecond resolution. +The format for `time` and `timeEnd` should be epoch numbers in millisecond resolution. `POST /api/annotations` @@ -122,8 +122,8 @@ Content-Type: application/json ``` > The response for this HTTP request is slightly different in versions prior to v6.4. In prior versions you would -also get an endId if you where creating a region. But in 6.4 regions are represented using a single event with time and -timeEnd properties. +> also get an endId if you where creating a region. But in 6.4 regions are represented using a single event with time and +> timeEnd properties. ## Create Annotation in Graphite format @@ -193,6 +193,7 @@ Content-Type: application/json ``` ## Patch Annotation + > This is available in Grafana 6.0.0-beta2 and above. `PATCH /api/annotations/:id` diff --git a/docs/sources/http_api/auth.md b/docs/sources/http_api/auth.md index 3915cfd37b8..009eafd8def 100755 --- a/docs/sources/http_api/auth.md +++ b/docs/sources/http_api/auth.md @@ -13,7 +13,7 @@ Currently you can authenticate via an `API Token` or via a `Session cookie` (acq ## X-Grafana-Org-Id Header -**X-Grafana-Org-Id** is an optional property that specifies the organization to which the action is applied. If it is not set, the created key belongs to the current context org. Use this header in all requests except those regarding admin. +**X-Grafana-Org-Id** is an optional property that specifies the organization to which the action is applied. If it is not set, the created key belongs to the current context org. Use this header in all requests except those regarding admin. **Example Request**: @@ -31,13 +31,13 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk } ``` - ## Basic Auth If basic auth is enabled (it is enabled by default), then you can authenticate your HTTP request via standard basic auth. Basic auth will also authenticate LDAP users. curl example: + ```bash ?curl http://admin:admin@localhost:3000/api/org {"id":1,"name":"Main Org."} @@ -64,6 +64,7 @@ The `Authorization` header value should be `Bearer `. The API Token can also be passed as a Basic authorization password with the special username `api_key`: curl example: + ```bash ?curl http://api_key:eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk@localhost:3000/api/org {"id":1,"name":"Main Org."} @@ -160,6 +161,7 @@ Accept: application/json Content-Type: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk ``` + **Example Response**: ```http diff --git a/docs/sources/http_api/create-api-tokens-for-org.md b/docs/sources/http_api/create-api-tokens-for-org.md index d1e4adaf6e7..9743171dfb3 100644 --- a/docs/sources/http_api/create-api-tokens-for-org.md +++ b/docs/sources/http_api/create-api-tokens-for-org.md @@ -21,30 +21,34 @@ There are two authentication methods to access the API: The task is to create a new organization and then add a Token that can be used by other users. In the examples below which use basic auth, the user is `admin` and the password is `admin`. 1. [Create the org](http://docs.grafana.org/http_api/org/#create-organization). Here is an example using curl: - ```bash - curl -X POST -H "Content-Type: application/json" -d '{"name":"apiorg"}' http://admin:admin@localhost:3000/api/orgs - ``` - This should return a response: `{"message":"Organization created","orgId":6}`. Use the orgId for the next steps. + ```bash + curl -X POST -H "Content-Type: application/json" -d '{"name":"apiorg"}' http://admin:admin@localhost:3000/api/orgs + ``` + + This should return a response: `{"message":"Organization created","orgId":6}`. Use the orgId for the next steps. 1. Optional step. If the org was created previously and/or step 3 fails then first [add your Admin user to the org](http://docs.grafana.org/http_api/org/#add-user-in-organization): - ```bash - curl -X POST -H "Content-Type: application/json" -d '{"loginOrEmail":"admin", "role": "Admin"}' http://admin:admin@localhost:3000/api/orgs//users - ``` + + ```bash + curl -X POST -H "Content-Type: application/json" -d '{"loginOrEmail":"admin", "role": "Admin"}' http://admin:admin@localhost:3000/api/orgs//users + ``` 1. [Switch the org context for the Admin user to the new org](http://docs.grafana.org/http_api/user/#switch-user-context-for-signed-in-user): - ```bash - curl -X POST http://admin:admin@localhost:3000/api/user/using/ - ``` + + ```bash + curl -X POST http://admin:admin@localhost:3000/api/user/using/ + ``` 1. [Create the API token](http://docs.grafana.org/http_api/auth/#create-api-key): - ```bash - curl -X POST -H "Content-Type: application/json" -d '{"name":"apikeycurl", "role": "Admin"}' http://admin:admin@localhost:3000/api/auth/keys - ``` - This should return a response: `{"name":"apikeycurl","key":"eyJrIjoiR0ZXZmt1UFc0OEpIOGN5RWdUalBJTllUTk83VlhtVGwiLCJuIjoiYXBpa2V5Y3VybCIsImlkIjo2fQ=="}`. + ```bash + curl -X POST -H "Content-Type: application/json" -d '{"name":"apikeycurl", "role": "Admin"}' http://admin:admin@localhost:3000/api/auth/keys + ``` + + This should return a response: `{"name":"apikeycurl","key":"eyJrIjoiR0ZXZmt1UFc0OEpIOGN5RWdUalBJTllUTk83VlhtVGwiLCJuIjoiYXBpa2V5Y3VybCIsImlkIjo2fQ=="}`. - Save the key returned here in your password manager as it is not possible to fetch again it in the future. + Save the key returned here in your password manager as it is not possible to fetch again it in the future. ## How to add a dashboard @@ -52,22 +56,22 @@ Using the Token that was created in the previous step, you can create a dashboar 1. [Add a dashboard](http://docs.grafana.org/http_api/dashboard/#create-update-dashboard) using the key (or bearer token as it is also called): - ```bash - curl -X POST --insecure -H "Authorization: Bearer eyJrIjoiR0ZXZmt1UFc0OEpIOGN5RWdUalBJTllUTk83VlhtVGwiLCJuIjoiYXBpa2V5Y3VybCIsImlkIjo2fQ==" -H "Content-Type: application/json" -d '{ - "dashboard": { - "id": null, - "title": "Production Overview", - "tags": [ "templated" ], - "timezone": "browser", - "rows": [ - { - } - ], - "schemaVersion": 6, - "version": 0 - }, - "overwrite": false - }' http://localhost:3000/api/dashboards/db - ``` - - > **Note:** If you export a dashboard for sharing externally using the Share > Export menu in the Grafana UI, you cannot import that dashboard. Instead, click **View JSON** and save it to a file or fetch the JSON output through the API. +```bash +curl -X POST --insecure -H "Authorization: Bearer eyJrIjoiR0ZXZmt1UFc0OEpIOGN5RWdUalBJTllUTk83VlhtVGwiLCJuIjoiYXBpa2V5Y3VybCIsImlkIjo2fQ==" -H "Content-Type: application/json" -d '{ + "dashboard": { + "id": null, + "title": "Production Overview", + "tags": [ "templated" ], + "timezone": "browser", + "rows": [ + { + } + ], + "schemaVersion": 6, + "version": 0 + }, + "overwrite": false +}' http://localhost:3000/api/dashboards/db +``` + +> **Note:** If you export a dashboard for sharing externally using the Share > Export menu in the Grafana UI, you cannot import that dashboard. Instead, click **View JSON** and save it to a file or fetch the JSON output through the API. diff --git a/docs/sources/http_api/curl-examples.md b/docs/sources/http_api/curl-examples.md index 20d77a7b6f7..7cf522dc27e 100644 --- a/docs/sources/http_api/curl-examples.md +++ b/docs/sources/http_api/curl-examples.md @@ -18,4 +18,4 @@ Here’s a cURL command that works for getting the home dashboard when you are r ``` curl http://admin:admin@localhost:3000/api/search -``` \ No newline at end of file +``` diff --git a/docs/sources/http_api/dashboard.md b/docs/sources/http_api/dashboard.md index d287803b23a..aeb1253af60 100644 --- a/docs/sources/http_api/dashboard.md +++ b/docs/sources/http_api/dashboard.md @@ -251,7 +251,7 @@ There can be different reasons for this: - A dashboard with the same uid already exists, `status=name-exists` - The dashboard belongs to plugin ``, `status=plugin-dashboard` - The response body will have the following properties: +The response body will have the following properties: ```http HTTP/1.1 412 Precondition Failed @@ -438,4 +438,5 @@ Content-Type: application/json ``` ## Dashboard Search + See [Folder/Dashboard Search API]({{< relref "folder_dashboard_search.md" >}}). diff --git a/docs/sources/http_api/data_source.md b/docs/sources/http_api/data_source.md index 1d16e50a93f..e9e7aff2366 100644 --- a/docs/sources/http_api/data_source.md +++ b/docs/sources/http_api/data_source.md @@ -5,7 +5,6 @@ keywords = ["grafana", "http", "documentation", "api", "data source"] aliases = ["/docs/grafana/latest/http_api/datasource/"] +++ - # Data source API ## Get all data sources @@ -293,6 +292,7 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk } } ``` + **Example Response with basic auth enabled**: ```http @@ -528,6 +528,7 @@ Content-Type: application/json ] } ``` + > **Note:** The `from`, `to`, and `queries` properties are required. JSON Body schema: @@ -564,6 +565,7 @@ Content-Type: application/json ``` **Example MySQL time series query response:** + ```http HTTP/1.1 200 Content-Type: application/json diff --git a/docs/sources/http_api/folder.md b/docs/sources/http_api/folder.md index 75389516e35..f6b5411030c 100644 --- a/docs/sources/http_api/folder.md +++ b/docs/sources/http_api/folder.md @@ -220,7 +220,7 @@ There can be different reasons for this: - The folder has been changed by someone else, `status=version-mismatch` - The response body will have the following properties: +The response body will have the following properties: ```http HTTP/1.1 412 Precondition Failed diff --git a/docs/sources/http_api/org.md b/docs/sources/http_api/org.md index cfd56262e7b..16da11450dc 100644 --- a/docs/sources/http_api/org.md +++ b/docs/sources/http_api/org.md @@ -12,7 +12,7 @@ and `/api/orgs` (admin organizations). One big difference between these are that the admin of all organizations API only works with basic authentication, see [Admin Organizations API](#admin-organizations-api) for more information. > If you are running Grafana Enterprise and have [Fine-grained access control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, for some endpoints you would need to have relevant permissions. -Refer to specific resources to understand what permissions are required. +> Refer to specific resources to understand what permissions are required. ## Current Organization API @@ -52,9 +52,9 @@ Accessible to users with org admin role. See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users:read | users:* +| Action | Scope | +| -------------- | -------- | +| org.users:read | users:\* | **Example Request**: @@ -126,9 +126,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users.role:update | users:* +| Action | Scope | +| --------------------- | -------- | +| org.users.role:update | users:\* | **Example Request**: @@ -160,9 +160,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users:remove | users:* +| Action | Scope | +| ---------------- | -------- | +| org.users:remove | users:\* | **Example Request**: @@ -218,9 +218,9 @@ Adds a global user to the current organization. See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users:add | users:* +| Action | Scope | +| ------------- | -------- | +| org.users:add | users:\* | **Example Request**: @@ -286,6 +286,7 @@ Content-Type: application/json } } ``` + ### Get Organization by Name `GET /api/orgs/name/:orgName` @@ -337,9 +338,11 @@ Content-Type: application/json "name":"New Org." } ``` + Note: The api will work in the following two ways -1) Need to set GF_USERS_ALLOW_ORG_CREATE=true -2) Set the config value users.allow_org_create to true in ini file + +1. Need to set GF_USERS_ALLOW_ORG_CREATE=true +2. Set the config value users.allow_org_create to true in ini file **Example Response**: @@ -366,6 +369,7 @@ GET /api/orgs HTTP/1.1 Accept: application/json Content-Type: application/json ``` + Note: The api will only work when you pass the admin name and password to the request HTTP URL, like http://admin:admin@localhost:3000/api/orgs @@ -389,7 +393,7 @@ Content-Type: application/json `PUT /api/orgs/:orgId` -Update Organization, fields *Address 1*, *Address 2*, *City* are not implemented yet. +Update Organization, fields _Address 1_, _Address 2_, _City_ are not implemented yet. Only works with Basic Authentication (username and password), see [introduction](#admin-organizations-api). **Example Request**: @@ -445,9 +449,9 @@ Only works with Basic Authentication (username and password), see [introduction] See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users:read | users:* +| Action | Scope | +| -------------- | -------- | +| org.users:read | users:\* | **Example Request**: @@ -456,10 +460,10 @@ GET /api/orgs/1/users HTTP/1.1 Accept: application/json Content-Type: application/json ``` + Note: The api will only work when you pass the admin name and password to the request HTTP URL, like http://admin:admin@localhost:3000/api/orgs/1/users - **Example Response**: ```http @@ -486,9 +490,9 @@ Only works with Basic Authentication (username and password), see [introduction] See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users:add | users:* +| Action | Scope | +| ------------- | -------- | +| org.users:add | users:\* | **Example Request**: @@ -522,9 +526,9 @@ Only works with Basic Authentication (username and password), see [introduction] See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users.role:update | users:* +| Action | Scope | +| --------------------- | -------- | +| org.users.role:update | users:\* | **Example Request**: @@ -557,9 +561,9 @@ Only works with Basic Authentication (username and password), see [introduction] See note in the [introduction]({{< ref "#organization-api" >}}) for an explanation. -Action | Scope ---- | --- | -org.users:remove | users:* +| Action | Scope | +| ---------------- | -------- | +| org.users:remove | users:\* | **Example Request**: diff --git a/docs/sources/http_api/other.md b/docs/sources/http_api/other.md index 005d8fb3422..da76aa6dc58 100644 --- a/docs/sources/http_api/other.md +++ b/docs/sources/http_api/other.md @@ -5,7 +5,6 @@ keywords = ["grafana", "http", "documentation", "api", "other"] aliases = ["/docs/grafana/latest/http_api/other/"] +++ - # Frontend Settings API ## Get Settings diff --git a/docs/sources/http_api/playlist.md b/docs/sources/http_api/playlist.md index 5f94c513141..ada15045760 100644 --- a/docs/sources/http_api/playlist.md +++ b/docs/sources/http_api/playlist.md @@ -21,12 +21,12 @@ Accept: application/json Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk ``` - Querystring Parameters: +Querystring Parameters: - These parameters are used as querystring parameters. +These parameters are used as querystring parameters. - - **query** - Limit response to playlist having a name like this value. - - **limit** - Limit response to *X* number of playlist. +- **query** - Limit response to playlist having a name like this value. +- **limit** - Limit response to _X_ number of playlist. **Example Response**: diff --git a/docs/sources/http_api/preferences.md b/docs/sources/http_api/preferences.md index c624fad8359..665064b214e 100644 --- a/docs/sources/http_api/preferences.md +++ b/docs/sources/http_api/preferences.md @@ -9,9 +9,9 @@ aliases = ["/docs/grafana/latest/http_api/preferences/"] Keys: -- **theme** - One of: ``light``, ``dark``, or an empty string for the default theme -- **homeDashboardId** - The numerical ``:id`` of a favorited dashboard, default: ``0`` -- **timezone** - One of: ``utc``, ``browser``, or an empty string for the default +- **theme** - One of: `light`, `dark`, or an empty string for the default theme +- **homeDashboardId** - The numerical `:id` of a favorited dashboard, default: `0` +- **timezone** - One of: `utc`, `browser`, or an empty string for the default Omitting a key will cause the current value to be replaced with the system default value. @@ -114,4 +114,4 @@ HTTP/1.1 200 Content-Type: text/plain; charset=utf-8 {"message":"Preferences updated"} -``` \ No newline at end of file +``` diff --git a/docs/sources/http_api/reporting.md b/docs/sources/http_api/reporting.md index 254c58863d5..09c721532ff 100644 --- a/docs/sources/http_api/reporting.md +++ b/docs/sources/http_api/reporting.md @@ -12,8 +12,8 @@ This API allows you to interact programmatically with the [Reporting]({{< relref > Reporting is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}). > If you have [Fine-grained access Control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, for some endpoints you would need to have relevant permissions. -Refer to specific resources to understand what permissions are required. - +> Refer to specific resources to understand what permissions are required. + ## Send a report > Only available in Grafana Enterprise v7.0+. @@ -28,9 +28,9 @@ Generate and send a report. This API waits for the report to be generated before See note in the [introduction]({{< ref "#reporting-api" >}}) for an explanation. -Action | Scope ---- | --- | -reports:send | n/a +| Action | Scope | +| ------------ | ----- | +| reports:send | n/a | ### Example request @@ -48,11 +48,11 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk ### JSON Body Schema -Field name | Data type | Description ----------- | ---- | ----------- -id | string | ID of the report to send. It is the same as in the URL when editing a report, not to be confused with the ID of the dashboard. Required. -emails | string | Comma-separated list of emails to which to send the report to. Overrides the emails from the report. Required if **useEmailsFromReport** is not present. -useEmailsFromReport | boolean | Send the report to the emails specified in the report. Required if **emails** is not present. +| Field name | Data type | Description | +| ------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | ID of the report to send. It is the same as in the URL when editing a report, not to be confused with the ID of the dashboard. Required. | +| emails | string | Comma-separated list of emails to which to send the report to. Overrides the emails from the report. Required if **useEmailsFromReport** is not present. | +| useEmailsFromReport | boolean | Send the report to the emails specified in the report. Required if **emails** is not present. | ### Example response @@ -66,11 +66,11 @@ Content-Length: 29 ### Status Codes -Code | Description ----- | ----------- -200 | Report was sent. -400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). -401 | Authentication failed, refer to [Authentication API]({{< relref "../http_api/auth.md" >}}). -403 | User is authenticated but is not authorized to generate the report. -404 | Report not found. -500 | Unexpected error or server misconfiguration. Refer to server logs for more details. +| Code | Description | +| ---- | ------------------------------------------------------------------------------------------- | +| 200 | Report was sent. | +| 400 | Bad request (invalid json, missing content-type, missing or invalid fields, etc.). | +| 401 | Authentication failed, refer to [Authentication API]({{< relref "../http_api/auth.md" >}}). | +| 403 | User is authenticated but is not authorized to generate the report. | +| 404 | Report not found. | +| 500 | Unexpected error or server misconfiguration. Refer to server logs for more details. | diff --git a/docs/sources/http_api/team.md b/docs/sources/http_api/team.md index 866a3acecb8..d9d0135fdc6 100644 --- a/docs/sources/http_api/team.md +++ b/docs/sources/http_api/team.md @@ -360,9 +360,9 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk JSON Body Schema: -- **theme** - One of: ``light``, ``dark``, or an empty string for the default theme -- **homeDashboardId** - The numerical ``:id`` of a dashboard, default: ``0`` -- **timezone** - One of: ``utc``, ``browser``, or an empty string for the default +- **theme** - One of: `light`, `dark`, or an empty string for the default theme +- **homeDashboardId** - The numerical `:id` of a dashboard, default: `0` +- **timezone** - One of: `utc`, `browser`, or an empty string for the default Omitting a key will cause the current value to be replaced with the system default value. diff --git a/docs/sources/http_api/user.md b/docs/sources/http_api/user.md index e3e16070c5c..f989a906b50 100644 --- a/docs/sources/http_api/user.md +++ b/docs/sources/http_api/user.md @@ -8,8 +8,8 @@ aliases = ["/docs/grafana/latest/http_api/user/"] # User API > If you are running Grafana Enterprise and have [Fine-grained access control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, for some endpoints you would need to have relevant permissions. -Refer to specific resources to understand what permissions are required. - +> Refer to specific resources to understand what permissions are required. + ## Search Users `GET /api/users?perpage=10&page=1` @@ -18,9 +18,9 @@ Refer to specific resources to understand what permissions are required. See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:read | global:users:* +| Action | Scope | +| ---------- | --------------- | +| users:read | global:users:\* | **Example Request**: @@ -73,9 +73,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:read | global:users:* +| Action | Scope | +| ---------- | --------------- | +| users:read | global:users:\* | **Example Request**: @@ -134,9 +134,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:read | users:* +| Action | Scope | +| ---------- | -------- | +| users:read | users:\* | **Example Request**: @@ -146,6 +146,7 @@ Accept: application/json Content-Type: application/json Authorization: Basic YWRtaW46YWRtaW4= ``` + Requires basic authentication and that the authenticated user is a Grafana Admin. **Example Response**: @@ -179,9 +180,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:read | global:users:* +| Action | Scope | +| ---------- | --------------- | +| users:read | global:users:\* | **Example Request using the email as option**: @@ -234,9 +235,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:write | users:* +| Action | Scope | +| ----------- | -------- | +| users:write | users:\* | **Example Request**: @@ -273,9 +274,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users:read | users:* +| Action | Scope | +| ---------- | -------- | +| users:read | users:\* | **Example Request**: @@ -311,9 +312,9 @@ Content-Type: application/json See note in the [introduction]({{< ref "#user-api" >}}) for an explanation. -Action | Scope ---- | --- | -users.teams:read | users:* +| Action | Scope | +| ---------------- | -------- | +| users.teams:read | users:\* | **Example Request**: @@ -344,7 +345,6 @@ Content-Type: application/json ] ``` - ## User ## Actual User diff --git a/docs/sources/installation/debian.md b/docs/sources/installation/debian.md index edc53a8125f..013293455f8 100644 --- a/docs/sources/installation/debian.md +++ b/docs/sources/installation/debian.md @@ -20,12 +20,12 @@ You can install Grafana using our official APT repository, by downloading a `.de If you install from the APT repository, then Grafana is automatically updated every time you run `apt-get update`. -| Grafana Version | Package | Repository | -|-----------------|---------|------------| -| Grafana OSS | grafana | `https://packages.grafana.com/oss/deb stable main` | -| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/deb beta main` | -| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/deb stable main` | -| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/deb beta main` | +| Grafana Version | Package | Repository | +| ------------------------- | ------------------ | --------------------------------------------------------- | +| Grafana OSS | grafana | `https://packages.grafana.com/oss/deb stable main` | +| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/deb beta main` | +| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/deb stable main` | +| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/deb beta main` | > We recommend all users install the Enterprise Edition of Grafana, which can be seamlessly upgraded with a Grafana Enterprise [subscription](https://grafana.com/products/enterprise/?utm_source=grafana-install-page). @@ -44,6 +44,7 @@ echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a ``` Add this repository if you want beta releases: + ```bash echo "deb https://packages.grafana.com/enterprise/deb beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list ``` @@ -70,6 +71,7 @@ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/a ``` Add this repository if you want beta releases: + ```bash echo "deb https://packages.grafana.com/oss/deb beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list ``` @@ -86,8 +88,8 @@ sudo apt-get install grafana If you install the `.deb` package, then you will need to manually update Grafana for each new version. 1. On the [Grafana download page](https://grafana.com/grafana/download), select the Grafana version you want to install. - * The most recent Grafana version is selected by default. - * The **Version** field displays only finished releases. If you want to install a beta version, click **Nightly Builds** and then select a version. + - The most recent Grafana version is selected by default. + - The **Version** field displays only finished releases. If you want to install a beta version, click **Nightly Builds** and then select a version. 1. Select an **Edition**. - **Enterprise** - Recommended download. Functionally identical to the open source version, but includes features you can unlock with a license if you so choose. - **Open Source** - Functionally identical to the Enterprise version, but you will need to download the Enterprise version if you want Enterprise features. @@ -151,6 +153,7 @@ sudo update-rc.d grafana-server defaults The `grafana-server` binary .tar.gz needs the working directory to be the root install directory where the binary and the `public` folder are located. Start Grafana by running: + ```bash ./bin/grafana-server web ``` diff --git a/docs/sources/installation/docker.md b/docs/sources/installation/docker.md index 513f717cc75..ffda52df0c3 100755 --- a/docs/sources/installation/docker.md +++ b/docs/sources/installation/docker.md @@ -12,6 +12,7 @@ You can install and run Grafana using the official Docker image. It comes in two This page also contains important information about [migrating from earlier Docker image versions](#migrate-from-previous-docker-containers-versions). ## Alpine image (recommended) + `grafana/grafana:` This is the default image. It's based on the popular [Alpine Linux project](http://alpinelinux.org), available in [the Alpine official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images, and thus leads to slimmer and more secure images. @@ -21,6 +22,7 @@ This variant is highly recommended when security and final image size being as s > **Note:** The `grafana/grafana:` image was based on [Ubuntu](https://ubuntu.com/) before version 6.4.0. ## Ubuntu image + `grafana/grafana:-ubuntu` This image is based on [Ubuntu](https://ubuntu.com/), available in [the Ubuntu official image](https://hub.docker.com/_/ubuntu). It is an alternative image for those who prefer an [Ubuntu](https://ubuntu.com/) based image and/or are dependent on certain tooling not available for Alpine. @@ -28,6 +30,7 @@ This image is based on [Ubuntu](https://ubuntu.com/), available in [the Ubuntu o > **Note:** The `grafana/grafana:-ubuntu` image is available for Grafana version 6.5.0 and later. ## Run Grafana + You can run the latest Grafana version, run a specific version, or run an unstable version based on the main branch of the [grafana/grafana GitHub repository](https://github.com/grafana/grafana). ### Run the latest stable version of Grafana @@ -47,15 +50,16 @@ docker run -d -p 3000:3000 --name grafana grafana/grafana: ``` **Example:** + ```bash docker run -d -p 3000:3000 --name grafana grafana/grafana:6.5.0 ``` ### Run the Grafana main branch -For every successful build of the main branch, we update the `grafana/grafana:main` and `grafana/grafana:main-ubuntu` tags. Additionally, two new tags are created, `grafana/grafana-dev:-pre` and `grafana/grafana-dev:-pre-ubuntu`, where *version* is the next version of Grafana and *build ID* is the ID of the corresponding CI build. Use these to get access to the latest main builds of Grafana. +For every successful build of the main branch, we update the `grafana/grafana:main` and `grafana/grafana:main-ubuntu` tags. Additionally, two new tags are created, `grafana/grafana-dev:-pre` and `grafana/grafana-dev:-pre-ubuntu`, where _version_ is the next version of Grafana and _build ID_ is the ID of the corresponding CI build. Use these to get access to the latest main builds of Grafana. -When running Grafana main in production, we *strongly* recommend that you use the `grafana/grafana-dev:-pre` tag. This tag guarantees that you use a specific version of Grafana instead of whatever was the most recent commit at the time. +When running Grafana main in production, we _strongly_ recommend that you use the `grafana/grafana-dev:-pre` tag. This tag guarantees that you use a specific version of Grafana instead of whatever was the most recent commit at the time. For a list of available tags, check out [grafana/grafana](https://hub.docker.com/r/grafana/grafana/tags/) and [grafana/grafana-dev](https://hub.docker.com/r/grafana/grafana-dev/tags/). @@ -91,7 +95,7 @@ docker run -d \ grafana/grafana ``` - ## Build and run a Docker image with pre-installed plugins +## Build and run a Docker image with pre-installed plugins You can build your own customized image that includes plugins. This saves time if you are creating multiple images and you want them all to have the same plugins installed on build. @@ -102,6 +106,7 @@ In the [Grafana GitHub repository](https://github.com/grafana/grafana) there is > If you need to specify the version of a plugin, you can add it to the `GF_INSTALL_PLUGINS` build argument. Otherwise, the latest will be assumed. For example: `--build-arg "GF_INSTALL_PLUGINS=grafana-clock-panel 1.0.1,grafana-simple-json-datasource 1.3.5"` Example of how to build and run: + ```bash cd packaging/docker/custom docker build \ @@ -135,6 +140,7 @@ Replace `Dockerfile` in above example with `ubuntu.Dockerfile` to build a custom The [Grafana Image Renderer plugin]({{< relref "../administration/image_rendering/#grafana-image-renderer-plugin" >}}) does not currently work if it is installed in a Grafana Docker image. You can build a custom Docker image by using the `GF_INSTALL_IMAGE_RENDERER_PLUGIN` build argument. This installs additional dependencies needed for the Grafana Image Renderer plugin to run. Example of how to build and run: + ```bash cd packaging/docker/custom docker build \ @@ -159,7 +165,6 @@ The Grafana Docker image runs with the `root` group (id 0) instead of the `grafa Grafana Docker image now comes in two variants, one [Alpine](http://alpinelinux.org) based and one [Ubuntu](https://ubuntu.com/) based, see [Image Variants](#image-variants) for details. - ### Migrate to v6.4 or later Grafana Docker image was changed to be based on [Alpine](http://alpinelinux.org) instead of [Ubuntu](https://ubuntu.com/). @@ -189,11 +194,11 @@ You should always be careful to define your own named volume for storage, but if In Grafana v5.1, we changed the ID and group of the Grafana user and in v7.3 we changed the group. Unfortunately this means that files created prior to v5.1 won't have the correct permissions for later versions. We made this change so that it would be more likely that the Grafana users ID would be unique to Grafana. For example, on Ubuntu 16.04 `104` is already in use by the syslog user. -Version | User | User ID | Group | Group ID ---------|---------|---------|---------|--------- -< 5.1 | grafana | 104 | grafana | 107 -\>= 5.1 | grafana | 472 | grafana | 472 -\>= 7.3 | grafana | 472 | root | 0 +| Version | User | User ID | Group | Group ID | +| ------- | ------- | ------- | ------- | -------- | +| < 5.1 | grafana | 104 | grafana | 107 | +| \>= 5.1 | grafana | 472 | grafana | 472 | +| \>= 7.3 | grafana | 472 | root | 0 | There are two possible solutions to this problem. Either you start the new container as the root user and change ownership from `104` to `472`, or you start the upgraded container as user `104`. @@ -204,15 +209,16 @@ docker run --user 104 --volume "" grafana/grafana:5.1. ``` ##### Specify a user in docker-compose.yml + ```yaml -version: "2" +version: '2' services: grafana: image: grafana/grafana:5.1.0 ports: - 3000:3000 - user: "104" + user: '104' ``` #### Modify permissions @@ -240,4 +246,3 @@ Refer to [Configure a Grafana Docker image]({{< relref "../administration/config ## Configure Grafana Refer to the [Configuration]({{< relref "../administration/configuration.md" >}}) page for details on options for customizing your environment, logging, database, and so on. - diff --git a/docs/sources/installation/kubernetes.md b/docs/sources/installation/kubernetes.md index 298c0ce83b3..a4394dcefe9 100644 --- a/docs/sources/installation/kubernetes.md +++ b/docs/sources/installation/kubernetes.md @@ -7,12 +7,13 @@ weight = 700 ## Deploy Grafana on Kubernetes -This page explains how to install and run Grafana on Kubernetes (K8S). It uses Kubernetes manifests for the setup. If you prefer Helm, refer to the [Grafana Helm community charts](https://github.com/grafana/helm-charts). +This page explains how to install and run Grafana on Kubernetes (K8S). It uses Kubernetes manifests for the setup. If you prefer Helm, refer to the [Grafana Helm community charts](https://github.com/grafana/helm-charts). If you are interested in Grafana Enterprise (not Grafana OS), jump to [Deploy Grafana Enterprise on Kubernetes](#deploy-grafana-enterprise-on-kubernetes) section. ### Create Grafana Kubernetes manifest -1. Create a file called `grafana.yaml`, then paste the contents below. + +1. Create a file called `grafana.yaml`, then paste the contents below. ```yaml --- @@ -45,7 +46,7 @@ spec: securityContext: fsGroup: 472 supplementalGroups: - - 0 + - 0 containers: - name: grafana image: grafana/grafana:7.5.2 @@ -71,7 +72,7 @@ spec: successThreshold: 1 tcpSocket: port: 3000 - timeoutSeconds: 1 + timeoutSeconds: 1 resources: requests: cpu: 250m @@ -99,34 +100,40 @@ spec: type: LoadBalancer ``` - ### Send manifest to Kubernetes API server -1. Run the following command: -`kubectl apply -f grafana.yaml` +1. Run the following command: + `kubectl apply -f grafana.yaml` 1. Check that it worked by running the following: -`kubectl port-forward service/grafana 3000:3000` + `kubectl port-forward service/grafana 3000:3000` -1. Navigate to `localhost:3000` in your browser. You should see a Grafana login page. +1. Navigate to `localhost:3000` in your browser. You should see a Grafana login page. 1. Use `admin` for both the username and password to login. ## Deploy Grafana Enterprise on Kubernetes + The process for deploying Grafana Enterprise is almost identical to the process above, except for some extra steps required to add in your license file. They are described in the following sections. ### Obtain Grafana Enterprise license -To run Grafana Enterprise, you need a valid license. [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise) to obtain the license. This topic assumes that you already have done this and have a `license.jwt` file. Your license should also be associated with a URL, which we will use later in the topic. + +To run Grafana Enterprise, you need a valid license. [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise) to obtain the license. This topic assumes that you already have done this and have a `license.jwt` file. Your license should also be associated with a URL, which we will use later in the topic. ### Create License Secret + Create a Kubernetes secret from your license file using the following command: + ```bash kubectl create secret generic ge-license --from-file=/path/to/your/license.jwt ``` ### Create Grafana Enterprise configuration -Create a Grafana configuration file with the name `grafana.ini`. Then paste the content below. ->**Note:** You will have to update the `root_url` field to the url associated with the license you were given. + +Create a Grafana configuration file with the name `grafana.ini`. Then paste the content below. + +> **Note:** You will have to update the `root_url` field to the url associated with the license you were given. + ```yaml [enterprise] license_path = /etc/grafana/license/license.jwt @@ -136,12 +143,16 @@ root_url =/your/license/root/url ``` ### Create Configmap for Grafana Enterprise Config + Create a Kubernetes Configmap from your `grafana.ini` file with the following command: + ```bash kubectl create configmap ge-config --from-file=/path/to/your/config.ini ``` + ### Create Grafana Enterprise Kubernetes manifest -Create a `grafana.yaml` file, then paste the content below. This YAML is identical to the one for Grafana OS install except for the additional references to the Configmap which has your Grafana configuration file and the Secret that has your license. + +Create a `grafana.yaml` file, then paste the content below. This YAML is identical to the one for Grafana OS install except for the additional references to the Configmap which has your Grafana configuration file and the Secret that has your license. ```yaml --- @@ -228,14 +239,14 @@ spec: sessionAffinity: None type: LoadBalancer ``` - + 1. Send manifest to Kubernetes API Server -`kubectl apply -f grafana.yaml` + `kubectl apply -f grafana.yaml` 1. Check that it worked by running the following: -`kubectl port-forward service/grafana 3000:3000` + `kubectl port-forward service/grafana 3000:3000` -1. Navigate to `localhost:3000` in your browser. You should see the Grafana login page. +1. Navigate to `localhost:3000` in your browser. You should see the Grafana login page. 1. Use `admin` for both the username and password to login. -If it worked, you should see `Enterprise (Licensed)` at the bottom of the page. + If it worked, you should see `Enterprise (Licensed)` at the bottom of the page. diff --git a/docs/sources/installation/mac.md b/docs/sources/installation/mac.md index a4465d93c00..7ee862a79cd 100755 --- a/docs/sources/installation/mac.md +++ b/docs/sources/installation/mac.md @@ -17,7 +17,8 @@ Use [Homebrew](http://brew.sh/) to install the most recent released version of G 1. On the Homebrew homepage, search for Grafana. The last stable and released version is listed. 1. Open a terminal and enter: - ``` + + ``` brew update brew install grafana ``` @@ -31,25 +32,25 @@ Use [Homebrew](http://brew.sh/) to install the most recent released version of G ## Install standalone macOS binaries -To install a nightly build, or to install the latest version of Grafana without Homebrew, go to the [Grafana download page](https://grafana.com/grafana/download/7.3.0-381ff45epre?platform=mac). +To install a nightly build, or to install the latest version of Grafana without Homebrew, go to the [Grafana download page](https://grafana.com/grafana/download/7.3.0-381ff45epre?platform=mac). 1. Select the Grafana version you want to install. By default, the most recent released version is selected. > **Note:** The downloads page lists only finished releases. If you want to install a beta version, click [Nightly ] **Nightly Builds** and then select a version. 1. Select an **Edition**. - * **Open Source** - Functionally identical to the enterprise version, but you will need to download the enterprise version if you want enterprise features. - * **Enterprise** - Recommended download. Functionally identical to the open source version, but includes features you can unlock with a license if you so choose. + - **Open Source** - Functionally identical to the enterprise version, but you will need to download the enterprise version if you want enterprise features. + - **Enterprise** - Recommended download. Functionally identical to the open source version, but includes features you can unlock with a license if you so choose. 1. Click **Mac**. 1. Open a terminal and download the binary using the cURL command. The following example shows Grafana 7.1.5 version: ```bash curl -O https://dl.grafana.com/oss/release/grafana-7.1.5.darwin-amd64.tar.gz - ``` -1. Untar the gz file and copy the files to the location of your preference. -1. To start Grafana service, go to the directory and run the command: - ```bash - ./bin/grafana-server web - ``` + ``` +1. Untar the gz file and copy the files to the location of your preference. +1. To start Grafana service, go to the directory and run the command: + ```bash + ./bin/grafana-server web + ``` ## Next steps diff --git a/docs/sources/installation/restart-grafana.md b/docs/sources/installation/restart-grafana.md index 017799a5168..5e7b714c50b 100644 --- a/docs/sources/installation/restart-grafana.md +++ b/docs/sources/installation/restart-grafana.md @@ -33,6 +33,7 @@ Use the [Homebrew](http://brew.sh/) restart command: ```bash brew services restart grafana ``` + ### Restart standalone macOS binaries To restart Grafana: @@ -43,6 +44,7 @@ To restart Grafana: ```bash ./bin/grafana-server web ``` + ## Linux Restart methods differ depending on whether your Linux system uses `systemd` or `init.d`. @@ -95,6 +97,7 @@ Alternately, you can configure the Grafana server to restart at boot: ```bash sudo update-rc.d grafana-server defaults ``` + ## Docker To restart the Grafana service, use the `docker restart` command. diff --git a/docs/sources/installation/rpm.md b/docs/sources/installation/rpm.md index 47f3ed7aa83..4ea4eb2ad33 100755 --- a/docs/sources/installation/rpm.md +++ b/docs/sources/installation/rpm.md @@ -12,7 +12,6 @@ This page explains how to install Grafana dependencies, download and install Gra **Note on upgrading:** While the process for upgrading Grafana is very similar to installing Grafana, there are some key backup steps you should perform. Read [Upgrading Grafana]({{< relref "upgrading.md" >}}) for tips and guidance on updating an existing installation. - ## 1. Download and install You can install Grafana from a YUM repository, manually using YUM, manually using RPM, or by downloading a binary `.tar.gz` file. @@ -21,13 +20,12 @@ You can install Grafana from a YUM repository, manually using YUM, manually usin If you install from the YUM repository, then Grafana is automatically updated every time you run `sudo yum update`. -| Grafana Version | Package | Repository | -|----------------------------|--------------------|----------------------------------------------------| -| Grafana OSS | grafana | `https://packages.grafana.com/oss/rpm` | -| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/rpm-beta` | -| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm` | -| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm-beta` | - +| Grafana Version | Package | Repository | +| ------------------------- | ------------------ | -------------------------------------------------- | +| Grafana OSS | grafana | `https://packages.grafana.com/oss/rpm` | +| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/rpm-beta` | +| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm` | +| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm-beta` | Add a new file to your YUM repo using the method of your choice. The command below uses `nano`. @@ -40,6 +38,7 @@ Choose if you want to install the Open Source or Enterprise edition of Grafana a > We recommend all users to install the Enterprise Edition of Grafana, which can be seamlessly upgraded with a Grafana Enterprise [subscription](https://grafana.com/products/enterprise/?utm_source=grafana-install-page). For Enterprise releases: + ```bash [grafana] name=grafana @@ -53,6 +52,7 @@ sslcacert=/etc/pki/tls/certs/ca-bundle.crt ``` For OSS releases: + ```bash [grafana] name=grafana @@ -92,7 +92,8 @@ If you install manually with YUM, then you will need to manually update Grafana wget sudo yum localinstall ``` - You can also install Grafana using YUM directly: + +You can also install Grafana using YUM directly: ```bash sudo yum install @@ -181,6 +182,7 @@ sudo /sbin/chkconfig --add grafana-server The `grafana-server` binary needs the working directory to be the root install directory where the binary and the `public` folder are located. Start Grafana by running: + ```bash ./bin/grafana-server web ``` diff --git a/docs/sources/installation/upgrading.md b/docs/sources/installation/upgrading.md index c5ba863ebd1..745c9478564 100755 --- a/docs/sources/installation/upgrading.md +++ b/docs/sources/installation/upgrading.md @@ -15,6 +15,7 @@ Upgrading is generally safe (between many minor and one major version) and dashb ## Backup We recommend that you backup a few things in case you have to rollback the upgrade. + - Installed plugins - Back them up before you upgrade them in case you want to rollback the Grafana version and want to get the exact same versions you were running before the upgrade. - Configuration files do not need to be backed up. However, you might want to in case you add new configuration options after upgrade and then rollback. @@ -47,6 +48,7 @@ backup: restore: > psql grafana < grafana_backup ``` + ### Ubuntu or Debian You can upgrade Grafana by following the same procedure as when you installed it. @@ -170,10 +172,10 @@ will keep working with unencrypted passwords. If you want to migrate to encrypte you can do that by: - For data sources created through UI, you need to go to data source config, re-enter the password or basic auth -password and save the data source. + password and save the data source. - For data sources created by provisioning, you need to update your config file and use secureJsonData.password or -secureJsonData.basicAuthPassword field. See [provisioning docs]({{< relref "../administration/provisioning" >}}) for example of current -configuration. + secureJsonData.basicAuthPassword field. See [provisioning docs]({{< relref "../administration/provisioning" >}}) for example of current + configuration. ### Embedding Grafana @@ -243,7 +245,7 @@ A global minimum dashboard refresh interval is now enforced and defaults to 5 se ### Backend plugins -Grafana now requires backend plugins to be signed. If a backend plugin is not signed Grafana will not load/start it. This is an additional security measure to make sure backend plugin binaries and files haven't been tampered with. All Grafana Labs authored backend plugins, including Enterprise plugins, are now signed. It's possible to allow unsigned plugins using a configuration setting, but is something we strongly advise against doing. For more information about this setting, refer to [allow loading unsigned plugins]({{< relref "../administration/#allow_loading_unsigned_plugins" >}}). +Grafana now requires backend plugins to be signed. If a backend plugin is not signed Grafana will not load/start it. This is an additional security measure to make sure backend plugin binaries and files haven't been tampered with. All Grafana Labs authored backend plugins, including Enterprise plugins, are now signed. It's possible to allow unsigned plugins using a configuration setting, but is something we strongly advise against doing. For more information about this setting, refer to [allow loading unsigned plugins]({{< relref "../administration/#allow_loading_unsigned_plugins" >}}). ### Cookie path @@ -256,6 +258,7 @@ Starting from Grafana v7.0.0, the cookie path does not include the trailing slas Before Grafana v7.2 alert notification channels did not store sensitive settings/secrets such as API tokens and password encrypted in the database. In Grafana v7.2, creating a new alert notification channel will store sensitive settings encrypted in the database. The following alert notifiers have been updated to support storing their sensitive settings encrypted: + - Slack (URL and Token) - Pagerduty (Integration Key) - Webhook (Password) @@ -294,7 +297,7 @@ For more information and details, please refer to [Using AWS CloudWatch in Grafa ### User invites database migration -The database table _temp\_user_, that tracks user invites, is subject to a database migration that changes the data type of the _created_ and _updated_ columns: +The database table _temp_user_, that tracks user invites, is subject to a database migration that changes the data type of the _created_ and _updated_ columns: | Database | Old data type | New data type | | -------- | ------------- | ------------- | @@ -306,12 +309,12 @@ The database table _temp\_user_, that tracks user invites, is subject to a datab ### Snapshots database migration -The database table _dashboard\_snapshot_, that stores dashboard snapshots, adds a new column _dashboard\_encrypted_ for storing an encrypted snapshot. +The database table _dashboard_snapshot_, that stores dashboard snapshots, adds a new column _dashboard_encrypted_ for storing an encrypted snapshot. NOTE: Only snapshots created on Grafana 7.3 or later will use this column to store snapshot data as encrypted. Snapshots created before this version will be unaffected and remain unencrypted. ### Use of the root group in the Docker images -The Grafana Docker images use the `root` group instead of the `grafana` group. This change can cause builds to break for users who extend the Grafana Docker image. Learn more about this change in the [Docker migration instructions]({{< relref "docker/#migrate-to-v73-or-later">}}) +The Grafana Docker images use the `root` group instead of the `grafana` group. This change can cause builds to break for users who extend the Grafana Docker image. Learn more about this change in the [Docker migration instructions]({{< relref "docker/#migrate-to-v73-or-later">}}) ## Upgrading to v7.5 @@ -342,5 +345,4 @@ Refer to [Grafana Live configuration]({{< relref "../live/configure-grafana-live Grafana v8.0 changes the underlying data structure to [data frames]({{< relref "../developers/plugins/data-frames.md" >}}) for the Postgres, MySQL, Microsoft SQL Server data sources. As a result, a _Time series_ query result gets returned in a [wide format]({{< relref "../developers/plugins/data-frames.md#wide-format" >}}). To make the visualizations work as they did before, you might have to do some manual migrations. For any existing panels/visualizations using a _Time series_ query, where the time column is only needed for filtering the time range, for example, using the bar gauge or pie chart panel, we recommend that you use a _Table query_ instead and exclude the time column as a field in the response. - Refer to this [issue comment](https://github.com/grafana/grafana/issues/35534#issuecomment-861519658) for detailed instructions and workarounds. diff --git a/docs/sources/installation/windows.md b/docs/sources/installation/windows.md index aaa7be44255..888214e138b 100644 --- a/docs/sources/installation/windows.md +++ b/docs/sources/installation/windows.md @@ -38,12 +38,12 @@ To run Grafana, open your browser and go to the Grafana port (http://localhost:3 1. Extract this folder to anywhere you want Grafana to run from. 1. Start Grafana by executing `grafana-server.exe`, located in the `bin` directory, preferably from the command line. If you want to run Grafana as a Windows service, then download -[NSSM](https://nssm.cc/). It is very easy to add Grafana as a Windows service using that tool. + [NSSM](https://nssm.cc/). It is very easy to add Grafana as a Windows service using that tool. To run Grafana, open your browser and go to the Grafana port (http://localhost:3000/ is default) and then follow the instructions in [Getting Started]({{< relref "../getting-started/getting-started/" >}}). > **Note:** The default Grafana port is `3000`. This port might require extra permissions on Windows. If it does not appear in the default port, you can try changing to a different port. > -> 1. Go into the `conf` directory and copy `sample.ini` to `custom.ini`. **Note:** You should edit `custom.ini`, never `defaults.ini`. +> 1. Go into the `conf` directory and copy `sample.ini` to `custom.ini`. **Note:** You should edit `custom.ini`, never `defaults.ini`. > 1. Edit `custom.ini` and uncomment the `http_port` configuration option (`;` is the comment character in ini files) and change it to something like `8080` or similar. That port should not require extra Windows privileges. -> Read more about the [configuration options]({{< relref "../administration/configuration.md" >}}). +> Read more about the [configuration options]({{< relref "../administration/configuration.md" >}}). diff --git a/docs/sources/linking/_index.md b/docs/sources/linking/_index.md index b013a335c1b..6eb62dfe862 100644 --- a/docs/sources/linking/_index.md +++ b/docs/sources/linking/_index.md @@ -27,4 +27,3 @@ You can control the time range of a panel or dashboard by providing following qu - `from` - defines lower limit of the time range, specified in ms epoch - `to` - defines upper limit of the time range, specified in ms epoch - `time` and `time.window` - defines a time range from `time-time.window/2` to `time+time.window/2`. Both params should be specified in ms. For example `?time=1500000000000&time.window=10000` will result in 10s time range from 1499999995000 to 1500000005000 - diff --git a/docs/sources/linking/dashboard-links.md b/docs/sources/linking/dashboard-links.md index bb327e5464f..c5a884f6543 100644 --- a/docs/sources/linking/dashboard-links.md +++ b/docs/sources/linking/dashboard-links.md @@ -12,6 +12,7 @@ When you create a dashboard link, you can include the time range and current tem Dashboard links can also be used as shortcuts to external systems, such as submitting [a GitHub issue with the current dashboard name](https://github.com/grafana/grafana/issues/new?title=Dashboard%3A%20HTTP%20Requests). To see an example of dashboard links in action, check out: + - [Dashboard links with variables](https://play.grafana.org/d/rUpVRdamz/dashboard-links-with-variables?orgId=1) - [Prometheus repeat](https://play.grafana.org/d/000000036/prometheus-repeat?orgId=1) diff --git a/docs/sources/linking/data-link-variables.md b/docs/sources/linking/data-link-variables.md index 7e1d72448ef..02cb71fd636 100644 --- a/docs/sources/linking/data-link-variables.md +++ b/docs/sources/linking/data-link-variables.md @@ -19,36 +19,36 @@ You can also use template variables in your data links URLs, refer to [Templates These variables allow you to include the current time range in the data link URL. -- ``__url_time_range`` - current dashboard's time range (i.e. ``?from=now-6h&to=now``) +- `__url_time_range` - current dashboard's time range (i.e. `?from=now-6h&to=now`) - `$__from and $__to` - For more information, refer to [Global variables]({{< relref "../variables/variable-types/global-variables.md#__from-and-__to" >}}). ## Series variables -Series specific variables are available under ``__series`` namespace: +Series specific variables are available under `__series` namespace: -- ``__series.name`` - series name to the URL +- `__series.name` - series name to the URL ## Field variables -Field-specific variables are available under ``__field`` namespace: +Field-specific variables are available under `__field` namespace: -- ``__field.name`` - the name of the field -- ``__field.labels.

  • Can configure app plugins
  • Can install/uninstall/update plugins
| -| ✓ | × |
  • Can configure app plugins
  • Cannot install/uninstall/update plugins
| -| × | ✓ |
  • Cannot configure app plugins
  • Can install/uninstall/update plugins
| +| ✓ | ✓ |
  • Can configure app plugins
  • Can install/uninstall/update plugins
| +| ✓ | × |
  • Can configure app plugins
  • Cannot install/uninstall/update plugins
| +| × | ✓ |
  • Cannot configure app plugins
  • Can install/uninstall/update plugins
| > **Note:** The Plugin catalog is designed to work with a single Grafana server instance only. Support for Grafana clusters will be added in future Grafana releases. @@ -27,9 +27,10 @@ Before you can use the Plugin catalog, you must enable it in the Grafana [config Before following the steps below, make sure you are logged in as a Grafana administrator. -Currently, there are two entry points to the Plugin catalog. -- Grafana server administrators can find it at **Server Admin > -Plugins**. +Currently, there are two entry points to the Plugin catalog. + +- Grafana server administrators can find it at **Server Admin > + Plugins**. - Organization administrators can find it at **Configuration > Plugins**. ## Browse plugins diff --git a/docs/sources/plugins/plugin-signatures.md b/docs/sources/plugins/plugin-signatures.md index 790f64ae683..b0c81e5df59 100644 --- a/docs/sources/plugins/plugin-signatures.md +++ b/docs/sources/plugins/plugin-signatures.md @@ -18,23 +18,23 @@ WARN[05-26|12:00:00] Some plugin scanning errors were found errors="plugin '

}}). -| Signature status | Description | -| ---------------- | ----------- | -| Core | Core plugin built into Grafana. | -| Invalid signature | The plugin has a invalid signature. | +| Signature status | Description | +| ------------------ | ------------------------------------------------------------------------------- | +| Core | Core plugin built into Grafana. | +| Invalid signature | The plugin has a invalid signature. | | Modified signature | The plugin has changed since it was signed. This may indicate malicious intent. | -| Unsigned | The plugin is not signed. | -| Signed | The plugin signature was successfully verified. | +| Unsigned | The plugin is not signed. | +| Signed | The plugin signature was successfully verified. | ## Plugin signature levels All plugins is signed under a _signature level_. The signature level determines how the plugin can be distributed. -|**Plugin Level**|**Description**| -|---|---| -|Private|

Private plugins are for use on your own Grafana. They may not be distributed to the Grafana community, and are not published in the Grafana catalog.

| -|Community|

Community plugins have dependent technologies that are open source and not for profit.

Community plugins are published in the official Grafana catalog, and are available to the Grafana community.

| -|Commercial|

Commercial plugins have dependent technologies that are closed source or commercially backed.

Commercial Plugins are published on the official Grafana catalog, and are available to the Grafana community.

| +| **Plugin Level** | **Description** | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Private |

Private plugins are for use on your own Grafana. They may not be distributed to the Grafana community, and are not published in the Grafana catalog.

| +| Community |

Community plugins have dependent technologies that are open source and not for profit.

Community plugins are published in the official Grafana catalog, and are available to the Grafana community.

| +| Commercial |

Commercial plugins have dependent technologies that are closed source or commercially backed.

Commercial Plugins are published on the official Grafana catalog, and are available to the Grafana community.

| ## Allow unsigned plugins diff --git a/docs/sources/release-notes/release-notes-7-3-0.md b/docs/sources/release-notes/release-notes-7-3-0.md index b674f42e8fd..9eb98b4a3c6 100644 --- a/docs/sources/release-notes/release-notes-7-3-0.md +++ b/docs/sources/release-notes/release-notes-7-3-0.md @@ -10,95 +10,101 @@ list = false ## 7.3.0 Stable ----- +--- ### Features and enhancements -* **AzureMonitor**: Support decimal (as float64) type in analytics/logs. [#28480](https://github.com/grafana/grafana/pull/28480), [@kylebrandt](https://github.com/kylebrandt) -* **Plugins signing**: UI information. [#28469](https://github.com/grafana/grafana/pull/28469), [@dprokop](https://github.com/dprokop) -* **Short URL**: Update last seen at when visiting a short URL. [#28565](https://github.com/grafana/grafana/pull/28565), [@marefr](https://github.com/marefr) + +- **AzureMonitor**: Support decimal (as float64) type in analytics/logs. [#28480](https://github.com/grafana/grafana/pull/28480), [@kylebrandt](https://github.com/kylebrandt) +- **Plugins signing**: UI information. [#28469](https://github.com/grafana/grafana/pull/28469), [@dprokop](https://github.com/dprokop) +- **Short URL**: Update last seen at when visiting a short URL. [#28565](https://github.com/grafana/grafana/pull/28565), [@marefr](https://github.com/marefr) ### Bug fixes -* **Alerting**: Log warnings for obsolete notifiers when extracting alerts and remove frequent error log messages. [#28162](https://github.com/grafana/grafana/pull/28162), [@papagian](https://github.com/papagian) -* **Auth**: Fix SigV4 request verification step for Amazon Elasticsearch Service. [#28481](https://github.com/grafana/grafana/pull/28481), [@wbrowne](https://github.com/wbrowne) -* **Auth**: Should redirect to login when anonymous enabled and URL with different org than anonymous specified. [#28158](https://github.com/grafana/grafana/pull/28158), [@marefr](https://github.com/marefr) -* **Elasticsearch**: Fix handling of errors when testing data source. [#28498](https://github.com/grafana/grafana/pull/28498), [@marefr](https://github.com/marefr) -* **Graphite**: Fix default version to be 1.1. [#28471](https://github.com/grafana/grafana/pull/28471), [@ivanahuckova](https://github.com/ivanahuckova) -* **StatPanel**: Fixes BizChart error max: yyy should not be less than min zzz. [#28587](https://github.com/grafana/grafana/pull/28587), [@hugohaggmark](https://github.com/hugohaggmark) + +- **Alerting**: Log warnings for obsolete notifiers when extracting alerts and remove frequent error log messages. [#28162](https://github.com/grafana/grafana/pull/28162), [@papagian](https://github.com/papagian) +- **Auth**: Fix SigV4 request verification step for Amazon Elasticsearch Service. [#28481](https://github.com/grafana/grafana/pull/28481), [@wbrowne](https://github.com/wbrowne) +- **Auth**: Should redirect to login when anonymous enabled and URL with different org than anonymous specified. [#28158](https://github.com/grafana/grafana/pull/28158), [@marefr](https://github.com/marefr) +- **Elasticsearch**: Fix handling of errors when testing data source. [#28498](https://github.com/grafana/grafana/pull/28498), [@marefr](https://github.com/marefr) +- **Graphite**: Fix default version to be 1.1. [#28471](https://github.com/grafana/grafana/pull/28471), [@ivanahuckova](https://github.com/ivanahuckova) +- **StatPanel**: Fixes BizChart error max: yyy should not be less than min zzz. [#28587](https://github.com/grafana/grafana/pull/28587), [@hugohaggmark](https://github.com/hugohaggmark) ## 7.3.0-beta2 ----- +--- ### Features and enhancements -* **Add monitoring mixing for Grafana**. [#28285](https://github.com/grafana/grafana/pull/28285), [@bergquist](https://github.com/bergquist) -* **CloudWatch**: Missing Namespace AWS/EC2CapacityReservations. [#28309](https://github.com/grafana/grafana/pull/28309), [@nonamef](https://github.com/nonamef) -* **Explore**: Support wide data frames. [#28393](https://github.com/grafana/grafana/pull/28393), [@aocenas](https://github.com/aocenas) -* **Instrumentation**: Add counters and histograms for database queries. [#28236](https://github.com/grafana/grafana/pull/28236), [@bergquist](https://github.com/bergquist) -* **Loki**: Visually distinguish error logs for LogQL2. [#28359](https://github.com/grafana/grafana/pull/28359), [@ivanahuckova](https://github.com/ivanahuckova) + +- **Add monitoring mixing for Grafana**. [#28285](https://github.com/grafana/grafana/pull/28285), [@bergquist](https://github.com/bergquist) +- **CloudWatch**: Missing Namespace AWS/EC2CapacityReservations. [#28309](https://github.com/grafana/grafana/pull/28309), [@nonamef](https://github.com/nonamef) +- **Explore**: Support wide data frames. [#28393](https://github.com/grafana/grafana/pull/28393), [@aocenas](https://github.com/aocenas) +- **Instrumentation**: Add counters and histograms for database queries. [#28236](https://github.com/grafana/grafana/pull/28236), [@bergquist](https://github.com/bergquist) +- **Loki**: Visually distinguish error logs for LogQL2. [#28359](https://github.com/grafana/grafana/pull/28359), [@ivanahuckova](https://github.com/ivanahuckova) ### Bug fixes -* **API**: Fix short URLs. [#28300](https://github.com/grafana/grafana/pull/28300), [@aknuds1](https://github.com/aknuds1) -* **BackendSrv**: Fixes queue countdown when unsubscribe is before response. [#28323](https://github.com/grafana/grafana/pull/28323), [@hugohaggmark](https://github.com/hugohaggmark) -* **CloudWatch/Athena - valid metrics and dimensions.**. [#28436](https://github.com/grafana/grafana/pull/28436), [@kwarunek](https://github.com/kwarunek) -* **Dashboard links**: Places drop down list so it's always visible. [#28330](https://github.com/grafana/grafana/pull/28330), [@maknik](https://github.com/maknik) -* **Graph**: Fix for graph size not taking up full height or width. [#28314](https://github.com/grafana/grafana/pull/28314), [@jackw](https://github.com/jackw) -* **Loki**: Base maxDataPoints limits on query type. [#28298](https://github.com/grafana/grafana/pull/28298), [@aocenas](https://github.com/aocenas) -* **Loki**: Run instant query only when doing metric query. [#28325](https://github.com/grafana/grafana/pull/28325), [@aocenas](https://github.com/aocenas) -* **Plugins**: Don't exit on duplicate plugin. [#28390](https://github.com/grafana/grafana/pull/28390), [@aknuds1](https://github.com/aknuds1) + +- **API**: Fix short URLs. [#28300](https://github.com/grafana/grafana/pull/28300), [@aknuds1](https://github.com/aknuds1) +- **BackendSrv**: Fixes queue countdown when unsubscribe is before response. [#28323](https://github.com/grafana/grafana/pull/28323), [@hugohaggmark](https://github.com/hugohaggmark) +- **CloudWatch/Athena - valid metrics and dimensions.**. [#28436](https://github.com/grafana/grafana/pull/28436), [@kwarunek](https://github.com/kwarunek) +- **Dashboard links**: Places drop down list so it's always visible. [#28330](https://github.com/grafana/grafana/pull/28330), [@maknik](https://github.com/maknik) +- **Graph**: Fix for graph size not taking up full height or width. [#28314](https://github.com/grafana/grafana/pull/28314), [@jackw](https://github.com/jackw) +- **Loki**: Base maxDataPoints limits on query type. [#28298](https://github.com/grafana/grafana/pull/28298), [@aocenas](https://github.com/aocenas) +- **Loki**: Run instant query only when doing metric query. [#28325](https://github.com/grafana/grafana/pull/28325), [@aocenas](https://github.com/aocenas) +- **Plugins**: Don't exit on duplicate plugin. [#28390](https://github.com/grafana/grafana/pull/28390), [@aknuds1](https://github.com/aknuds1) ## 7.3.0-beta1 ----- +--- ### Breaking changes - **CloudWatch**: The AWS CloudWatch data source's authentication scheme has changed. See the [upgrade notes]{{< relref "../installation/upgrading.md#upgrading-to-v73" >}}) for details and how this may affect you. ### Features and enhancements -* **Alerting**: Add labels to name when converting data frame to series. [#28085](https://github.com/grafana/grafana/pull/28085), [@kylebrandt](https://github.com/kylebrandt) -* **Alerting**: Ensuring LINE Notify notifications are sent for all alert states. [#27639](https://github.com/grafana/grafana/pull/27639), [@haraldkubota](https://github.com/haraldkubota) -* **Auth**: Add SigV4 auth option to data sources. [#27552](https://github.com/grafana/grafana/pull/27552), [@wbrowne](https://github.com/wbrowne) -* **AzureMonitor**: Pass through null values instead of setting 0. [#28126](https://github.com/grafana/grafana/pull/28126), [@kylebrandt](https://github.com/kylebrandt) -* **Cloud Monitoring**: Out-of-the-box dashboards. [#27864](https://github.com/grafana/grafana/pull/27864), [@papagian](https://github.com/papagian) -* **CloudWatch**: Add support for AWS DirectConnect virtual interface metrics and add missing dimensions. [#28008](https://github.com/grafana/grafana/pull/28008), [@jgulick48](https://github.com/jgulick48) -* **CloudWatch**: Adding support for Amazon ElastiCache Redis metrics. [#28040](https://github.com/grafana/grafana/pull/28040), [@jgulick48](https://github.com/jgulick48) -* **CloudWatch**: Adding support for additional Amazon CloudFront metrics. [#28069](https://github.com/grafana/grafana/pull/28069), [@darrylsepeda](https://github.com/darrylsepeda) -* **CloudWatch**: Re-implement authentication. [#25548](https://github.com/grafana/grafana/pull/25548), [@aknuds1](https://github.com/aknuds1),[@patstrom](https://github.com/patstrom) -* **Dashboard**: Allow shortlink generation. [#27409](https://github.com/grafana/grafana/pull/27409), [@MisterSquishy](https://github.com/MisterSquishy) -* **Docker**: OpenShift compatibility. [#27813](https://github.com/grafana/grafana/pull/27813), [@xlson](https://github.com/xlson) -* **Elasticsearch**: Support multiple pipeline aggregations for a query. [#27945](https://github.com/grafana/grafana/pull/27945), [@simianhacker](https://github.com/simianhacker) -* **Explore**: Allow shortlink generation. [#28222](https://github.com/grafana/grafana/pull/28222), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore**: Remove collapsing of visualisations. [#27026](https://github.com/grafana/grafana/pull/27026), [@ivanahuckova](https://github.com/ivanahuckova) -* **FieldColor**: Adds new standard color option for color. [#28039](https://github.com/grafana/grafana/pull/28039), [@torkelo](https://github.com/torkelo) -* **Gauge**: Improve text sizing and support non threshold color modes. [#28256](https://github.com/grafana/grafana/pull/28256), [@torkelo](https://github.com/torkelo) -* **NamedColors**: Named colors refactors. [#28235](https://github.com/grafana/grafana/pull/28235), [@torkelo](https://github.com/torkelo) -* **Panel Inspect**: Allow CSV download for Excel. [#27284](https://github.com/grafana/grafana/pull/27284), [@tomdaly](https://github.com/tomdaly) -* **Prometheus**: Add time range parameters to labels API. [#27548](https://github.com/grafana/grafana/pull/27548), [@kakkoyun](https://github.com/kakkoyun) -* **Snapshots**: Store dashboard data encrypted in the database. [#28129](https://github.com/grafana/grafana/pull/28129), [@wbrowne](https://github.com/wbrowne) -* **Table**: New cell hover behavior and image cell display mode. [#27669](https://github.com/grafana/grafana/pull/27669), [@torkelo](https://github.com/torkelo) -* **Timezones**: Include IANA timezone canonical name in TimeZoneInfo. [#27591](https://github.com/grafana/grafana/pull/27591), [@dprokop](https://github.com/dprokop) -* **Tracing**: Add Tempo data source. [#28204](https://github.com/grafana/grafana/pull/28204), [@aocenas](https://github.com/aocenas) -* **Transformations**: Add Concatenate fields transformer. [#28237](https://github.com/grafana/grafana/pull/28237), [@ryantxu](https://github.com/ryantxu) -* **Transformations**: improve the reduce transformer. [#27875](https://github.com/grafana/grafana/pull/27875), [@ryantxu](https://github.com/ryantxu) -* **Users**: Expire old user invites. [#27361](https://github.com/grafana/grafana/pull/27361), [@wbrowne](https://github.com/wbrowne) -* **Variables**: Adds loading state and indicators. [#27917](https://github.com/grafana/grafana/pull/27917), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Adds support for key/value mapping in Custom variable. [#27829](https://github.com/grafana/grafana/pull/27829), [@sartaj10](https://github.com/sartaj10) -* **grafana/toolkit**: expose Jest maxWorkers arg for plugin test & build tasks. [#27724](https://github.com/grafana/grafana/pull/27724), [@domasx2](https://github.com/domasx2) + +- **Alerting**: Add labels to name when converting data frame to series. [#28085](https://github.com/grafana/grafana/pull/28085), [@kylebrandt](https://github.com/kylebrandt) +- **Alerting**: Ensuring LINE Notify notifications are sent for all alert states. [#27639](https://github.com/grafana/grafana/pull/27639), [@haraldkubota](https://github.com/haraldkubota) +- **Auth**: Add SigV4 auth option to data sources. [#27552](https://github.com/grafana/grafana/pull/27552), [@wbrowne](https://github.com/wbrowne) +- **AzureMonitor**: Pass through null values instead of setting 0. [#28126](https://github.com/grafana/grafana/pull/28126), [@kylebrandt](https://github.com/kylebrandt) +- **Cloud Monitoring**: Out-of-the-box dashboards. [#27864](https://github.com/grafana/grafana/pull/27864), [@papagian](https://github.com/papagian) +- **CloudWatch**: Add support for AWS DirectConnect virtual interface metrics and add missing dimensions. [#28008](https://github.com/grafana/grafana/pull/28008), [@jgulick48](https://github.com/jgulick48) +- **CloudWatch**: Adding support for Amazon ElastiCache Redis metrics. [#28040](https://github.com/grafana/grafana/pull/28040), [@jgulick48](https://github.com/jgulick48) +- **CloudWatch**: Adding support for additional Amazon CloudFront metrics. [#28069](https://github.com/grafana/grafana/pull/28069), [@darrylsepeda](https://github.com/darrylsepeda) +- **CloudWatch**: Re-implement authentication. [#25548](https://github.com/grafana/grafana/pull/25548), [@aknuds1](https://github.com/aknuds1),[@patstrom](https://github.com/patstrom) +- **Dashboard**: Allow shortlink generation. [#27409](https://github.com/grafana/grafana/pull/27409), [@MisterSquishy](https://github.com/MisterSquishy) +- **Docker**: OpenShift compatibility. [#27813](https://github.com/grafana/grafana/pull/27813), [@xlson](https://github.com/xlson) +- **Elasticsearch**: Support multiple pipeline aggregations for a query. [#27945](https://github.com/grafana/grafana/pull/27945), [@simianhacker](https://github.com/simianhacker) +- **Explore**: Allow shortlink generation. [#28222](https://github.com/grafana/grafana/pull/28222), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore**: Remove collapsing of visualisations. [#27026](https://github.com/grafana/grafana/pull/27026), [@ivanahuckova](https://github.com/ivanahuckova) +- **FieldColor**: Adds new standard color option for color. [#28039](https://github.com/grafana/grafana/pull/28039), [@torkelo](https://github.com/torkelo) +- **Gauge**: Improve text sizing and support non threshold color modes. [#28256](https://github.com/grafana/grafana/pull/28256), [@torkelo](https://github.com/torkelo) +- **NamedColors**: Named colors refactors. [#28235](https://github.com/grafana/grafana/pull/28235), [@torkelo](https://github.com/torkelo) +- **Panel Inspect**: Allow CSV download for Excel. [#27284](https://github.com/grafana/grafana/pull/27284), [@tomdaly](https://github.com/tomdaly) +- **Prometheus**: Add time range parameters to labels API. [#27548](https://github.com/grafana/grafana/pull/27548), [@kakkoyun](https://github.com/kakkoyun) +- **Snapshots**: Store dashboard data encrypted in the database. [#28129](https://github.com/grafana/grafana/pull/28129), [@wbrowne](https://github.com/wbrowne) +- **Table**: New cell hover behavior and image cell display mode. [#27669](https://github.com/grafana/grafana/pull/27669), [@torkelo](https://github.com/torkelo) +- **Timezones**: Include IANA timezone canonical name in TimeZoneInfo. [#27591](https://github.com/grafana/grafana/pull/27591), [@dprokop](https://github.com/dprokop) +- **Tracing**: Add Tempo data source. [#28204](https://github.com/grafana/grafana/pull/28204), [@aocenas](https://github.com/aocenas) +- **Transformations**: Add Concatenate fields transformer. [#28237](https://github.com/grafana/grafana/pull/28237), [@ryantxu](https://github.com/ryantxu) +- **Transformations**: improve the reduce transformer. [#27875](https://github.com/grafana/grafana/pull/27875), [@ryantxu](https://github.com/ryantxu) +- **Users**: Expire old user invites. [#27361](https://github.com/grafana/grafana/pull/27361), [@wbrowne](https://github.com/wbrowne) +- **Variables**: Adds loading state and indicators. [#27917](https://github.com/grafana/grafana/pull/27917), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Adds support for key/value mapping in Custom variable. [#27829](https://github.com/grafana/grafana/pull/27829), [@sartaj10](https://github.com/sartaj10) +- **grafana/toolkit**: expose Jest maxWorkers arg for plugin test & build tasks. [#27724](https://github.com/grafana/grafana/pull/27724), [@domasx2](https://github.com/domasx2) ### Bug fixes -* **Azure Analytics**: FormatAs Time series groups bool columns wrong. [#27713](https://github.com/grafana/grafana/issues/27713) -* **Azure**: Fixes cancellation of requests with different Azure sources. [#28180](https://github.com/grafana/grafana/pull/28180), [@hugohaggmark](https://github.com/hugohaggmark) -* **BackendSrv**: Reloads page instead of redirect on Unauthorized Error. [#28276](https://github.com/grafana/grafana/pull/28276), [@hugohaggmark](https://github.com/hugohaggmark) -* **Dashboard**: Do not allow users without edit permission to a folder to see new dashboard page. [#28249](https://github.com/grafana/grafana/pull/28249), [@torkelo](https://github.com/torkelo) -* **Dashboard**: Fixed issue accessing horizontal table scrollbar when placed at bottom of dashboard. [#28250](https://github.com/grafana/grafana/pull/28250), [@torkelo](https://github.com/torkelo) -* **DataProxy**: Add additional settings for dataproxy to help with network proxy timeouts. [#27841](https://github.com/grafana/grafana/pull/27841), [@kahinton](https://github.com/kahinton) -* **Database**: Adds new indices to alert_notification_state and alert_rule_tag tables. [#28166](https://github.com/grafana/grafana/pull/28166), [@KarineValenca](https://github.com/KarineValenca) -* **Explore**: Fix showing of Prometheus data in Query inspector. [#28128](https://github.com/grafana/grafana/pull/28128), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore**: Show results of Prometheus instant queries in formatted table. [#27767](https://github.com/grafana/grafana/pull/27767), [@ivanahuckova](https://github.com/ivanahuckova) -* **Graph**: Prevent legend from overflowing container. [#28254](https://github.com/grafana/grafana/pull/28254), [@jackw](https://github.com/jackw) -* **OAuth**: Fix token refresh failure when custom SSL settings are configured for OAuth provider. [#27523](https://github.com/grafana/grafana/pull/27523), [@billoley](https://github.com/billoley) -* **Plugins**: Let descendant plugins inherit their root's signature. [#27970](https://github.com/grafana/grafana/pull/27970), [@aknuds1](https://github.com/aknuds1) -* **Runtime**: Fix handling of short-lived background services. [#28025](https://github.com/grafana/grafana/pull/28025), [@ahlaw](https://github.com/ahlaw) -* **TemplateSrv**: Fix interpolating strings with object variables. [#28171](https://github.com/grafana/grafana/pull/28171), [@torkelo](https://github.com/torkelo) -* **Variables**: Fixes so constants set from url get completed state. [#28257](https://github.com/grafana/grafana/pull/28257), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Prevent adhoc filters from crashing when they are not loaded properly. [#28226](https://github.com/grafana/grafana/pull/28226), [@mckn](https://github.com/mckn) + +- **Azure Analytics**: FormatAs Time series groups bool columns wrong. [#27713](https://github.com/grafana/grafana/issues/27713) +- **Azure**: Fixes cancellation of requests with different Azure sources. [#28180](https://github.com/grafana/grafana/pull/28180), [@hugohaggmark](https://github.com/hugohaggmark) +- **BackendSrv**: Reloads page instead of redirect on Unauthorized Error. [#28276](https://github.com/grafana/grafana/pull/28276), [@hugohaggmark](https://github.com/hugohaggmark) +- **Dashboard**: Do not allow users without edit permission to a folder to see new dashboard page. [#28249](https://github.com/grafana/grafana/pull/28249), [@torkelo](https://github.com/torkelo) +- **Dashboard**: Fixed issue accessing horizontal table scrollbar when placed at bottom of dashboard. [#28250](https://github.com/grafana/grafana/pull/28250), [@torkelo](https://github.com/torkelo) +- **DataProxy**: Add additional settings for dataproxy to help with network proxy timeouts. [#27841](https://github.com/grafana/grafana/pull/27841), [@kahinton](https://github.com/kahinton) +- **Database**: Adds new indices to alert_notification_state and alert_rule_tag tables. [#28166](https://github.com/grafana/grafana/pull/28166), [@KarineValenca](https://github.com/KarineValenca) +- **Explore**: Fix showing of Prometheus data in Query inspector. [#28128](https://github.com/grafana/grafana/pull/28128), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore**: Show results of Prometheus instant queries in formatted table. [#27767](https://github.com/grafana/grafana/pull/27767), [@ivanahuckova](https://github.com/ivanahuckova) +- **Graph**: Prevent legend from overflowing container. [#28254](https://github.com/grafana/grafana/pull/28254), [@jackw](https://github.com/jackw) +- **OAuth**: Fix token refresh failure when custom SSL settings are configured for OAuth provider. [#27523](https://github.com/grafana/grafana/pull/27523), [@billoley](https://github.com/billoley) +- **Plugins**: Let descendant plugins inherit their root's signature. [#27970](https://github.com/grafana/grafana/pull/27970), [@aknuds1](https://github.com/aknuds1) +- **Runtime**: Fix handling of short-lived background services. [#28025](https://github.com/grafana/grafana/pull/28025), [@ahlaw](https://github.com/ahlaw) +- **TemplateSrv**: Fix interpolating strings with object variables. [#28171](https://github.com/grafana/grafana/pull/28171), [@torkelo](https://github.com/torkelo) +- **Variables**: Fixes so constants set from url get completed state. [#28257](https://github.com/grafana/grafana/pull/28257), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Prevent adhoc filters from crashing when they are not loaded properly. [#28226](https://github.com/grafana/grafana/pull/28226), [@mckn](https://github.com/mckn) diff --git a/docs/sources/release-notes/release-notes-7-3-1.md b/docs/sources/release-notes/release-notes-7-3-1.md index 6e0e4b50284..5892d34174f 100644 --- a/docs/sources/release-notes/release-notes-7-3-1.md +++ b/docs/sources/release-notes/release-notes-7-3-1.md @@ -9,10 +9,10 @@ list = false # Release notes for Grafana 7.3.1 ### Bug fixes -* **Cloudwatch**: Fix duplicate metric data. [#28642](https://github.com/grafana/grafana/pull/28642), [@zoltanbedi](https://github.com/zoltanbedi) -* **Loki**: Fix error when some queries return zero results. [#28645](https://github.com/grafana/grafana/pull/28645), [@ivanahuckova](https://github.com/ivanahuckova) -* **PanelMenu**: Fix panel submenu not being accessible for panels close to the right edge of the screen. [#28666](https://github.com/grafana/grafana/pull/28666), [@torkelo](https://github.com/torkelo) -* **Plugins**: Fix descendent frontend plugin signature validation. [#28638](https://github.com/grafana/grafana/pull/28638), [@wbrowne](https://github.com/wbrowne) -* **StatPanel**: Fix value being under graph and reduced likelihood for white and dark value text mixing. [#28641](https://github.com/grafana/grafana/pull/28641), [@torkelo](https://github.com/torkelo) -* **TextPanel**: Fix problems where text panel would show old content. [#28643](https://github.com/grafana/grafana/pull/28643), [@torkelo](https://github.com/torkelo) +- **Cloudwatch**: Fix duplicate metric data. [#28642](https://github.com/grafana/grafana/pull/28642), [@zoltanbedi](https://github.com/zoltanbedi) +- **Loki**: Fix error when some queries return zero results. [#28645](https://github.com/grafana/grafana/pull/28645), [@ivanahuckova](https://github.com/ivanahuckova) +- **PanelMenu**: Fix panel submenu not being accessible for panels close to the right edge of the screen. [#28666](https://github.com/grafana/grafana/pull/28666), [@torkelo](https://github.com/torkelo) +- **Plugins**: Fix descendent frontend plugin signature validation. [#28638](https://github.com/grafana/grafana/pull/28638), [@wbrowne](https://github.com/wbrowne) +- **StatPanel**: Fix value being under graph and reduced likelihood for white and dark value text mixing. [#28641](https://github.com/grafana/grafana/pull/28641), [@torkelo](https://github.com/torkelo) +- **TextPanel**: Fix problems where text panel would show old content. [#28643](https://github.com/grafana/grafana/pull/28643), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-3-10.md b/docs/sources/release-notes/release-notes-7-3-10.md index 5d33a84469c..1cdb614f3e7 100644 --- a/docs/sources/release-notes/release-notes-7-3-10.md +++ b/docs/sources/release-notes/release-notes-7-3-10.md @@ -10,6 +10,5 @@ list = false ### Bug fixes -* **Security**: Fix API permissions issues related to team-sync CVE-2021-28146, CVE-2021-28147. (Enterprise) -* **Security**: Usage insights requires signed in users CVE-2021-28148. (Enterprise) - +- **Security**: Fix API permissions issues related to team-sync CVE-2021-28146, CVE-2021-28147. (Enterprise) +- **Security**: Usage insights requires signed in users CVE-2021-28148. (Enterprise) diff --git a/docs/sources/release-notes/release-notes-7-3-2.md b/docs/sources/release-notes/release-notes-7-3-2.md index 248f2627f17..f8e7162bfad 100644 --- a/docs/sources/release-notes/release-notes-7-3-2.md +++ b/docs/sources/release-notes/release-notes-7-3-2.md @@ -9,21 +9,22 @@ list = false # Release notes for Grafana 7.3.2 ### Features and enhancements -* **CloudWatch Logs**: Change how we measure query progress. [#28912](https://github.com/grafana/grafana/pull/28912), [@aocenas](https://github.com/aocenas) -* **Dashboards / Folders**: delete related data (permissions, stars, tags, versions, annotations) when deleting a dashboard or a folder. [#28826](https://github.com/grafana/grafana/pull/28826), [@AgnesToulet](https://github.com/AgnesToulet) -* **Gauge**: Improve font size auto sizing. [#28797](https://github.com/grafana/grafana/pull/28797), [@torkelo](https://github.com/torkelo) -* **Short URL**: Cleanup unvisited/stale short URLs. [#28867](https://github.com/grafana/grafana/pull/28867), [@wbrowne](https://github.com/wbrowne) -* **Templating**: Custom variable edit UI, change options input into textarea. [#28322](https://github.com/grafana/grafana/pull/28322), [@darrylsepeda](https://github.com/darrylsepeda) + +- **CloudWatch Logs**: Change how we measure query progress. [#28912](https://github.com/grafana/grafana/pull/28912), [@aocenas](https://github.com/aocenas) +- **Dashboards / Folders**: delete related data (permissions, stars, tags, versions, annotations) when deleting a dashboard or a folder. [#28826](https://github.com/grafana/grafana/pull/28826), [@AgnesToulet](https://github.com/AgnesToulet) +- **Gauge**: Improve font size auto sizing. [#28797](https://github.com/grafana/grafana/pull/28797), [@torkelo](https://github.com/torkelo) +- **Short URL**: Cleanup unvisited/stale short URLs. [#28867](https://github.com/grafana/grafana/pull/28867), [@wbrowne](https://github.com/wbrowne) +- **Templating**: Custom variable edit UI, change options input into textarea. [#28322](https://github.com/grafana/grafana/pull/28322), [@darrylsepeda](https://github.com/darrylsepeda) ### Bug fixes -* **Cloudwatch**: Fix issue with field calculation transform not working properly with Cloudwatch data. [#28761](https://github.com/grafana/grafana/pull/28761), [@torkelo](https://github.com/torkelo) -* **Dashboard**: fix view panel mode for Safari / iOS. [#28702](https://github.com/grafana/grafana/pull/28702), [@jackw](https://github.com/jackw) -* **Elasticsearch**: Exclude pipeline aggregations from order by options. [#28620](https://github.com/grafana/grafana/pull/28620), [@simianhacker](https://github.com/simianhacker) -* **Panel inspect**: Interpolate variables in panel inspect title. [#28779](https://github.com/grafana/grafana/pull/28779), [@dprokop](https://github.com/dprokop) -* **Prometheus**: Fix copy paste behaving as cut and paste. [#28622](https://github.com/grafana/grafana/pull/28622), [@aocenas](https://github.com/aocenas) -* **StatPanels**: Fixes auto min max when latest value is zero. [#28982](https://github.com/grafana/grafana/pull/28982), [@torkelo](https://github.com/torkelo) -* **TableFilters**: Fixes filtering with field overrides. [#28690](https://github.com/grafana/grafana/pull/28690), [@hugohaggmark](https://github.com/hugohaggmark) -* **Templating**: Speeds up certain variable queries for Postgres MySql MSSql. [#28686](https://github.com/grafana/grafana/pull/28686), [@hugohaggmark](https://github.com/hugohaggmark) -* **Units**: added support to handle negative fractional numbers. [#28849](https://github.com/grafana/grafana/pull/28849), [@mckn](https://github.com/mckn) -* **Variables**: Fix backward compatibility in custom variable options that contain colon. [#28896](https://github.com/grafana/grafana/pull/28896), [@mckn](https://github.com/mckn) +- **Cloudwatch**: Fix issue with field calculation transform not working properly with Cloudwatch data. [#28761](https://github.com/grafana/grafana/pull/28761), [@torkelo](https://github.com/torkelo) +- **Dashboard**: fix view panel mode for Safari / iOS. [#28702](https://github.com/grafana/grafana/pull/28702), [@jackw](https://github.com/jackw) +- **Elasticsearch**: Exclude pipeline aggregations from order by options. [#28620](https://github.com/grafana/grafana/pull/28620), [@simianhacker](https://github.com/simianhacker) +- **Panel inspect**: Interpolate variables in panel inspect title. [#28779](https://github.com/grafana/grafana/pull/28779), [@dprokop](https://github.com/dprokop) +- **Prometheus**: Fix copy paste behaving as cut and paste. [#28622](https://github.com/grafana/grafana/pull/28622), [@aocenas](https://github.com/aocenas) +- **StatPanels**: Fixes auto min max when latest value is zero. [#28982](https://github.com/grafana/grafana/pull/28982), [@torkelo](https://github.com/torkelo) +- **TableFilters**: Fixes filtering with field overrides. [#28690](https://github.com/grafana/grafana/pull/28690), [@hugohaggmark](https://github.com/hugohaggmark) +- **Templating**: Speeds up certain variable queries for Postgres MySql MSSql. [#28686](https://github.com/grafana/grafana/pull/28686), [@hugohaggmark](https://github.com/hugohaggmark) +- **Units**: added support to handle negative fractional numbers. [#28849](https://github.com/grafana/grafana/pull/28849), [@mckn](https://github.com/mckn) +- **Variables**: Fix backward compatibility in custom variable options that contain colon. [#28896](https://github.com/grafana/grafana/pull/28896), [@mckn](https://github.com/mckn) diff --git a/docs/sources/release-notes/release-notes-7-3-3.md b/docs/sources/release-notes/release-notes-7-3-3.md index a2f946ed7ff..4729436d98f 100644 --- a/docs/sources/release-notes/release-notes-7-3-3.md +++ b/docs/sources/release-notes/release-notes-7-3-3.md @@ -10,10 +10,8 @@ list = false ### Bug fixes -* **Cloud monitoring**: Fix for multi-value template variable for project selector. [#29042](https://github.com/grafana/grafana/pull/29042), [@papagian](https://github.com/papagian) -* **LogsPanel**: Fixes problem dragging scrollbar inside logs panel. [#28974](https://github.com/grafana/grafana/pull/28974), [@aocenas](https://github.com/aocenas) -* **Provisioning**: Fixes application not pinned to the sidebar when it's enabled. [#29084](https://github.com/grafana/grafana/pull/29084), [@alexanderzobnin](https://github.com/alexanderzobnin) -* **StatPanel**: Fixes hanging issue when all values are zero. [#29077](https://github.com/grafana/grafana/pull/29077), [@torkelo](https://github.com/torkelo) -* **Thresholds**: Fixes color assigned to null values. [#29010](https://github.com/grafana/grafana/pull/29010), [@torkelo](https://github.com/torkelo) - - \ No newline at end of file +- **Cloud monitoring**: Fix for multi-value template variable for project selector. [#29042](https://github.com/grafana/grafana/pull/29042), [@papagian](https://github.com/papagian) +- **LogsPanel**: Fixes problem dragging scrollbar inside logs panel. [#28974](https://github.com/grafana/grafana/pull/28974), [@aocenas](https://github.com/aocenas) +- **Provisioning**: Fixes application not pinned to the sidebar when it's enabled. [#29084](https://github.com/grafana/grafana/pull/29084), [@alexanderzobnin](https://github.com/alexanderzobnin) +- **StatPanel**: Fixes hanging issue when all values are zero. [#29077](https://github.com/grafana/grafana/pull/29077), [@torkelo](https://github.com/torkelo) +- **Thresholds**: Fixes color assigned to null values. [#29010](https://github.com/grafana/grafana/pull/29010), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-3-4.md b/docs/sources/release-notes/release-notes-7-3-4.md index 85ceb9dfbda..3083a7406bf 100644 --- a/docs/sources/release-notes/release-notes-7-3-4.md +++ b/docs/sources/release-notes/release-notes-7-3-4.md @@ -10,8 +10,7 @@ list = false ### Bug fixes -* **Dashboard**: Fixes kiosk state after being redirected to login page and back. [#29273](https://github.com/grafana/grafana/pull/29273), [@torkelo](https://github.com/torkelo) -* **InfluxDB**: Update flux library to fix support for boolean label values. [#29310](https://github.com/grafana/grafana/pull/29310), [@ryantxu](https://github.com/ryantxu) -* **Security**: Fixes minor security issue with alert notification webhooks that allowed GET & DELETE requests. [#29330](https://github.com/grafana/grafana/pull/29330), [@wbrowne](https://github.com/wbrowne) -* **Table**: Fixes issues with phantom extra 0 for zero values. [#29165](https://github.com/grafana/grafana/pull/29165), [@dprokop](https://github.com/dprokop) - +- **Dashboard**: Fixes kiosk state after being redirected to login page and back. [#29273](https://github.com/grafana/grafana/pull/29273), [@torkelo](https://github.com/torkelo) +- **InfluxDB**: Update flux library to fix support for boolean label values. [#29310](https://github.com/grafana/grafana/pull/29310), [@ryantxu](https://github.com/ryantxu) +- **Security**: Fixes minor security issue with alert notification webhooks that allowed GET & DELETE requests. [#29330](https://github.com/grafana/grafana/pull/29330), [@wbrowne](https://github.com/wbrowne) +- **Table**: Fixes issues with phantom extra 0 for zero values. [#29165](https://github.com/grafana/grafana/pull/29165), [@dprokop](https://github.com/dprokop) diff --git a/docs/sources/release-notes/release-notes-7-3-5.md b/docs/sources/release-notes/release-notes-7-3-5.md index 5b88e90f178..75e230ddd5e 100644 --- a/docs/sources/release-notes/release-notes-7-3-5.md +++ b/docs/sources/release-notes/release-notes-7-3-5.md @@ -10,13 +10,12 @@ list = false ### Features and enhancements -* **Alerting**: Improve Prometheus Alert Rule error message. [#29390](https://github.com/grafana/grafana/pull/29390), [@wbrowne](https://github.com/wbrowne) +- **Alerting**: Improve Prometheus Alert Rule error message. [#29390](https://github.com/grafana/grafana/pull/29390), [@wbrowne](https://github.com/wbrowne) ### Bug fixes -* **Alerting**: Fix alarm message formatting in Dingding. [#29482](https://github.com/grafana/grafana/pull/29482), [@tomowang](https://github.com/tomowang) -* **AzureMonitor**: Fix unit translation for MilliSeconds. [#29399](https://github.com/grafana/grafana/pull/29399), [@secustor](https://github.com/secustor) -* **Instrumentation**: Fix bug with invalid handler label value for HTTP request metrics. [#29529](https://github.com/grafana/grafana/pull/29529), [@bergquist](https://github.com/bergquist) -* **Prometheus**: Fixes problem where changing display name in Field tab had no effect. [#29441](https://github.com/grafana/grafana/pull/29441), [@zoltanbedi](https://github.com/zoltanbedi) -* **Tracing**: Fixed issue showing more than 300 spans. [#29377](https://github.com/grafana/grafana/pull/29377), [@zoltanbedi](https://github.com/zoltanbedi) - +- **Alerting**: Fix alarm message formatting in Dingding. [#29482](https://github.com/grafana/grafana/pull/29482), [@tomowang](https://github.com/tomowang) +- **AzureMonitor**: Fix unit translation for MilliSeconds. [#29399](https://github.com/grafana/grafana/pull/29399), [@secustor](https://github.com/secustor) +- **Instrumentation**: Fix bug with invalid handler label value for HTTP request metrics. [#29529](https://github.com/grafana/grafana/pull/29529), [@bergquist](https://github.com/bergquist) +- **Prometheus**: Fixes problem where changing display name in Field tab had no effect. [#29441](https://github.com/grafana/grafana/pull/29441), [@zoltanbedi](https://github.com/zoltanbedi) +- **Tracing**: Fixed issue showing more than 300 spans. [#29377](https://github.com/grafana/grafana/pull/29377), [@zoltanbedi](https://github.com/zoltanbedi) diff --git a/docs/sources/release-notes/release-notes-7-3-6.md b/docs/sources/release-notes/release-notes-7-3-6.md index 97bf006ea3f..09b73d03fea 100644 --- a/docs/sources/release-notes/release-notes-7-3-6.md +++ b/docs/sources/release-notes/release-notes-7-3-6.md @@ -10,5 +10,4 @@ list = false ### Security -* **SAML**: Fixes encoding/xml SAML vulnerability in Grafana Enterprise. [#29875](https://github.com/grafana/grafana/issues/29875) - +- **SAML**: Fixes encoding/xml SAML vulnerability in Grafana Enterprise. [#29875](https://github.com/grafana/grafana/issues/29875) diff --git a/docs/sources/release-notes/release-notes-7-3-7.md b/docs/sources/release-notes/release-notes-7-3-7.md index 3380d4a2b86..118028a8963 100644 --- a/docs/sources/release-notes/release-notes-7-3-7.md +++ b/docs/sources/release-notes/release-notes-7-3-7.md @@ -10,8 +10,7 @@ list = false ### Bug fixes -* **Auth**: Add missing request headers to SigV4 middleware allowlist. [#30115](https://github.com/grafana/grafana/pull/30115), [@wbrowne](https://github.com/wbrowne) -* **Elasticsearch**: Sort results by index order as well as @timestamp. [#29761](https://github.com/grafana/grafana/pull/29761), [@STEELBADGE](https://github.com/STEELBADGE) -* **SAML**: Fixes bug in processing SAML response with empty element by updating saml library (Enterprise). [#30179](https://github.com/grafana/grafana/pull/30179), [@alexanderzobnin](https://github.com/alexanderzobnin) -* **SeriesToRows**: Fixes issue in transform so that value field is always named Value. [#30054](https://github.com/grafana/grafana/pull/30054), [@torkelo](https://github.com/torkelo) - +- **Auth**: Add missing request headers to SigV4 middleware allowlist. [#30115](https://github.com/grafana/grafana/pull/30115), [@wbrowne](https://github.com/wbrowne) +- **Elasticsearch**: Sort results by index order as well as @timestamp. [#29761](https://github.com/grafana/grafana/pull/29761), [@STEELBADGE](https://github.com/STEELBADGE) +- **SAML**: Fixes bug in processing SAML response with empty element by updating saml library (Enterprise). [#30179](https://github.com/grafana/grafana/pull/30179), [@alexanderzobnin](https://github.com/alexanderzobnin) +- **SeriesToRows**: Fixes issue in transform so that value field is always named Value. [#30054](https://github.com/grafana/grafana/pull/30054), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-4-1.md b/docs/sources/release-notes/release-notes-7-4-1.md index 51fb3cf52d1..eaba9dfae74 100644 --- a/docs/sources/release-notes/release-notes-7-4-1.md +++ b/docs/sources/release-notes/release-notes-7-4-1.md @@ -10,21 +10,20 @@ list = false ### Features and enhancements -* **Influx**: Make max series limit configurable and show the limiting message if applied. [#31025](https://github.com/grafana/grafana/pull/31025), [@aocenas](https://github.com/aocenas) -* **Make value mappings correctly interpret numeric-like strings**. [#30893](https://github.com/grafana/grafana/pull/30893), [@dprokop](https://github.com/dprokop) -* **Variables**: Adds queryparam formatting option. [#30858](https://github.com/grafana/grafana/pull/30858), [@hugohaggmark](https://github.com/hugohaggmark) +- **Influx**: Make max series limit configurable and show the limiting message if applied. [#31025](https://github.com/grafana/grafana/pull/31025), [@aocenas](https://github.com/aocenas) +- **Make value mappings correctly interpret numeric-like strings**. [#30893](https://github.com/grafana/grafana/pull/30893), [@dprokop](https://github.com/dprokop) +- **Variables**: Adds queryparam formatting option. [#30858](https://github.com/grafana/grafana/pull/30858), [@hugohaggmark](https://github.com/hugohaggmark) ### Bug fixes -* **Alerting**: Fixes so notification channels are properly deleted. [#31040](https://github.com/grafana/grafana/pull/31040), [@hugohaggmark](https://github.com/hugohaggmark) -* **BarGauge**: Improvements to value sizing and table inner width calculations. [#30990](https://github.com/grafana/grafana/pull/30990), [@torkelo](https://github.com/torkelo) -* **DashboardLinks**: Fixes crash when link has no title. [#31008](https://github.com/grafana/grafana/pull/31008), [@hugohaggmark](https://github.com/hugohaggmark) -* **Elasticsearch**: Fix alias field value not being shown in query editor. [#30992](https://github.com/grafana/grafana/pull/30992), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Fix log row context errors. [#31088](https://github.com/grafana/grafana/pull/31088), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Show Size setting for raw_data metric. [#30980](https://github.com/grafana/grafana/pull/30980), [@Elfo404](https://github.com/Elfo404) -* **Graph**: Fixes so graph is shown for non numeric time values. [#30972](https://github.com/grafana/grafana/pull/30972), [@hugohaggmark](https://github.com/hugohaggmark) -* **Logging**: Ignore 'file already closed' error when closing file. [#31119](https://github.com/grafana/grafana/pull/31119), [@aknuds1](https://github.com/aknuds1) -* **Plugins**: Fix plugin signature validation for manifest v2 on Windows. [#31045](https://github.com/grafana/grafana/pull/31045), [@wbrowne](https://github.com/wbrowne) -* **TextPanel**: Fixes so panel title is updated when variables change. [#30884](https://github.com/grafana/grafana/pull/30884), [@hugohaggmark](https://github.com/hugohaggmark) -* **Transforms**: Fixes Outer join issue with duplicate field names not getting the same unique field names as before. [#31121](https://github.com/grafana/grafana/pull/31121), [@torkelo](https://github.com/torkelo) - +- **Alerting**: Fixes so notification channels are properly deleted. [#31040](https://github.com/grafana/grafana/pull/31040), [@hugohaggmark](https://github.com/hugohaggmark) +- **BarGauge**: Improvements to value sizing and table inner width calculations. [#30990](https://github.com/grafana/grafana/pull/30990), [@torkelo](https://github.com/torkelo) +- **DashboardLinks**: Fixes crash when link has no title. [#31008](https://github.com/grafana/grafana/pull/31008), [@hugohaggmark](https://github.com/hugohaggmark) +- **Elasticsearch**: Fix alias field value not being shown in query editor. [#30992](https://github.com/grafana/grafana/pull/30992), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Fix log row context errors. [#31088](https://github.com/grafana/grafana/pull/31088), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Show Size setting for raw_data metric. [#30980](https://github.com/grafana/grafana/pull/30980), [@Elfo404](https://github.com/Elfo404) +- **Graph**: Fixes so graph is shown for non numeric time values. [#30972](https://github.com/grafana/grafana/pull/30972), [@hugohaggmark](https://github.com/hugohaggmark) +- **Logging**: Ignore 'file already closed' error when closing file. [#31119](https://github.com/grafana/grafana/pull/31119), [@aknuds1](https://github.com/aknuds1) +- **Plugins**: Fix plugin signature validation for manifest v2 on Windows. [#31045](https://github.com/grafana/grafana/pull/31045), [@wbrowne](https://github.com/wbrowne) +- **TextPanel**: Fixes so panel title is updated when variables change. [#30884](https://github.com/grafana/grafana/pull/30884), [@hugohaggmark](https://github.com/hugohaggmark) +- **Transforms**: Fixes Outer join issue with duplicate field names not getting the same unique field names as before. [#31121](https://github.com/grafana/grafana/pull/31121), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-4-2.md b/docs/sources/release-notes/release-notes-7-4-2.md index 2f577840962..5de9565bc34 100644 --- a/docs/sources/release-notes/release-notes-7-4-2.md +++ b/docs/sources/release-notes/release-notes-7-4-2.md @@ -10,21 +10,20 @@ list = false ### Features and enhancements -* **Explore**: Do not show non queryable data sources in data source picker. [#31144](https://github.com/grafana/grafana/pull/31144), [@torkelo](https://github.com/torkelo) -* **Security**: Do not allow an anonymous user to create snapshots. CVE-2021-27358. [#31263](https://github.com/grafana/grafana/pull/31263), [@marefr](https://github.com/marefr) +- **Explore**: Do not show non queryable data sources in data source picker. [#31144](https://github.com/grafana/grafana/pull/31144), [@torkelo](https://github.com/torkelo) +- **Security**: Do not allow an anonymous user to create snapshots. CVE-2021-27358. [#31263](https://github.com/grafana/grafana/pull/31263), [@marefr](https://github.com/marefr) ### Bug fixes -* **CloudWatch**: Ensure empty query row errors are not passed to the panel. [#31172](https://github.com/grafana/grafana/pull/31172), [@sunker](https://github.com/sunker) -* **DashboardLinks**: Fix the links that always cause a full page to reload. [#31178](https://github.com/grafana/grafana/pull/31178), [@torkelo](https://github.com/torkelo) -* **DashboardListPanel**: Fix issue with folder picker always showing All and using old form styles. [#31160](https://github.com/grafana/grafana/pull/31160), [@torkelo](https://github.com/torkelo) -* **IPv6**: Support host address configured with enclosing square brackets. [#31226](https://github.com/grafana/grafana/pull/31226), [@aknuds1](https://github.com/aknuds1) -* **Permissions**: Fix team and role permissions on folders/dashboards not displayed for non Grafana Admin users. [#31132](https://github.com/grafana/grafana/pull/31132), [@AgnesToulet](https://github.com/AgnesToulet) -* **Postgres**: Fix timeGroup macro converts long intervals to invalid numbers when TimescaleDB is enabled. [#31179](https://github.com/grafana/grafana/pull/31179), [@kurokochin](https://github.com/kurokochin) -* **Prometheus**: Fix enabling of disabled queries when editing in dashboard. [#31055](https://github.com/grafana/grafana/pull/31055), [@ivanahuckova](https://github.com/ivanahuckova) -* **QueryEditors**: Fix an issue that happens after moving queries then editing would update other queries. [#31193](https://github.com/grafana/grafana/pull/31193), [@torkelo](https://github.com/torkelo) -* **SqlDataSources**: Fix the Show Generated SQL button in query editors. [#31236](https://github.com/grafana/grafana/pull/31236), [@torkelo](https://github.com/torkelo) -* **StatPanels**: Fix an issue where the palette color scheme is not cleared when loading panel. [#31126](https://github.com/grafana/grafana/pull/31126), [@torkelo](https://github.com/torkelo) -* **Variables**: Add the default option back for the data source variable. [#31208](https://github.com/grafana/grafana/pull/31208), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Fix missing empty elements from regex filters. [#31156](https://github.com/grafana/grafana/pull/31156), [@hugohaggmark](https://github.com/hugohaggmark) - +- **CloudWatch**: Ensure empty query row errors are not passed to the panel. [#31172](https://github.com/grafana/grafana/pull/31172), [@sunker](https://github.com/sunker) +- **DashboardLinks**: Fix the links that always cause a full page to reload. [#31178](https://github.com/grafana/grafana/pull/31178), [@torkelo](https://github.com/torkelo) +- **DashboardListPanel**: Fix issue with folder picker always showing All and using old form styles. [#31160](https://github.com/grafana/grafana/pull/31160), [@torkelo](https://github.com/torkelo) +- **IPv6**: Support host address configured with enclosing square brackets. [#31226](https://github.com/grafana/grafana/pull/31226), [@aknuds1](https://github.com/aknuds1) +- **Permissions**: Fix team and role permissions on folders/dashboards not displayed for non Grafana Admin users. [#31132](https://github.com/grafana/grafana/pull/31132), [@AgnesToulet](https://github.com/AgnesToulet) +- **Postgres**: Fix timeGroup macro converts long intervals to invalid numbers when TimescaleDB is enabled. [#31179](https://github.com/grafana/grafana/pull/31179), [@kurokochin](https://github.com/kurokochin) +- **Prometheus**: Fix enabling of disabled queries when editing in dashboard. [#31055](https://github.com/grafana/grafana/pull/31055), [@ivanahuckova](https://github.com/ivanahuckova) +- **QueryEditors**: Fix an issue that happens after moving queries then editing would update other queries. [#31193](https://github.com/grafana/grafana/pull/31193), [@torkelo](https://github.com/torkelo) +- **SqlDataSources**: Fix the Show Generated SQL button in query editors. [#31236](https://github.com/grafana/grafana/pull/31236), [@torkelo](https://github.com/torkelo) +- **StatPanels**: Fix an issue where the palette color scheme is not cleared when loading panel. [#31126](https://github.com/grafana/grafana/pull/31126), [@torkelo](https://github.com/torkelo) +- **Variables**: Add the default option back for the data source variable. [#31208](https://github.com/grafana/grafana/pull/31208), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Fix missing empty elements from regex filters. [#31156](https://github.com/grafana/grafana/pull/31156), [@hugohaggmark](https://github.com/hugohaggmark) diff --git a/docs/sources/release-notes/release-notes-7-4-3.md b/docs/sources/release-notes/release-notes-7-4-3.md index 86fb9b38ca5..c858b0a73b3 100644 --- a/docs/sources/release-notes/release-notes-7-4-3.md +++ b/docs/sources/release-notes/release-notes-7-4-3.md @@ -10,10 +10,9 @@ list = false ### Bug fixes -* **AdHocVariables**: Fixes crash when values are stored as numbers. [#31382](https://github.com/grafana/grafana/pull/31382), [@hugohaggmark](https://github.com/hugohaggmark) -* **DashboardLinks**: Fix an issue where the dashboard links were causing a full page reload. [#31334](https://github.com/grafana/grafana/pull/31334), [@torkelo](https://github.com/torkelo) -* **Elasticsearch**: Fix query initialization logic & query transformation from Prometheus/Loki. [#31322](https://github.com/grafana/grafana/pull/31322), [@Elfo404](https://github.com/Elfo404) -* **QueryEditor**: Fix disabling queries in dashboards. [#31336](https://github.com/grafana/grafana/pull/31336), [@gabor](https://github.com/gabor) -* **Streaming**: Fix an issue with the time series panel and streaming data source when scrolling back from being out of view. [#31431](https://github.com/grafana/grafana/pull/31431), [@torkelo](https://github.com/torkelo) -* **Table**: Fix an issue regarding the fixed min and auto max values in bar gauge cell. [#31316](https://github.com/grafana/grafana/pull/31316), [@torkelo](https://github.com/torkelo) - +- **AdHocVariables**: Fixes crash when values are stored as numbers. [#31382](https://github.com/grafana/grafana/pull/31382), [@hugohaggmark](https://github.com/hugohaggmark) +- **DashboardLinks**: Fix an issue where the dashboard links were causing a full page reload. [#31334](https://github.com/grafana/grafana/pull/31334), [@torkelo](https://github.com/torkelo) +- **Elasticsearch**: Fix query initialization logic & query transformation from Prometheus/Loki. [#31322](https://github.com/grafana/grafana/pull/31322), [@Elfo404](https://github.com/Elfo404) +- **QueryEditor**: Fix disabling queries in dashboards. [#31336](https://github.com/grafana/grafana/pull/31336), [@gabor](https://github.com/gabor) +- **Streaming**: Fix an issue with the time series panel and streaming data source when scrolling back from being out of view. [#31431](https://github.com/grafana/grafana/pull/31431), [@torkelo](https://github.com/torkelo) +- **Table**: Fix an issue regarding the fixed min and auto max values in bar gauge cell. [#31316](https://github.com/grafana/grafana/pull/31316), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-4-5.md b/docs/sources/release-notes/release-notes-7-4-5.md index c44ca28de85..0953210972a 100644 --- a/docs/sources/release-notes/release-notes-7-4-5.md +++ b/docs/sources/release-notes/release-notes-7-4-5.md @@ -10,6 +10,6 @@ list = false ### Bug fixes -* **Security**: Fix API permissions issues related to team-sync CVE-2021-28146, CVE-2021-28147. (Enterprise) -* **Security**: Usage insights requires signed in users CVE-2021-28148. (Enterprise) -* **Security**: Do not allow editors to incorrectly bypass permissions on the default data source. CVE-2021-27962. (Enterprise) +- **Security**: Fix API permissions issues related to team-sync CVE-2021-28146, CVE-2021-28147. (Enterprise) +- **Security**: Usage insights requires signed in users CVE-2021-28148. (Enterprise) +- **Security**: Do not allow editors to incorrectly bypass permissions on the default data source. CVE-2021-27962. (Enterprise) diff --git a/docs/sources/release-notes/release-notes-7-5-0-beta1.md b/docs/sources/release-notes/release-notes-7-5-0-beta1.md index 6d89ebc80ee..3a8a80ffd8f 100644 --- a/docs/sources/release-notes/release-notes-7-5-0-beta1.md +++ b/docs/sources/release-notes/release-notes-7-5-0-beta1.md @@ -10,59 +10,58 @@ list = false ### Features and enhancements -* **Alerting**: Customise OK notification priorities for Pushover notifier. [#30169](https://github.com/grafana/grafana/pull/30169), [@acaire](https://github.com/acaire) -* **Alerting**: Improve default message for SensuGo notifier. [#31428](https://github.com/grafana/grafana/pull/31428), [@M4teo](https://github.com/M4teo) -* **Alerting**: PagerDuty: adding current state to the payload. [#29270](https://github.com/grafana/grafana/pull/29270), [@Eraac](https://github.com/Eraac) -* **AzureMonitor**: Add deprecation message for App Insights/Insights Analytics. [#30633](https://github.com/grafana/grafana/pull/30633), [@joshhunt](https://github.com/joshhunt) -* **CloudMonitoring**: Allow free text input for GCP project on dashboard variable query. [#28048](https://github.com/grafana/grafana/issues/28048) -* **CloudMonitoring**: Increase service api page size. [#30892](https://github.com/grafana/grafana/pull/30892), [@sunker](https://github.com/sunker) -* **CloudMonitoring**: Show service and SLO display name in SLO Query editor. [#30900](https://github.com/grafana/grafana/pull/30900), [@sunker](https://github.com/sunker) -* **CloudWatch**: Add AWS Ground Station metrics and dimensions. [#31362](https://github.com/grafana/grafana/pull/31362), [@ilyastoli](https://github.com/ilyastoli) -* **CloudWatch**: Add AWS Network Firewall metrics and dimensions. [#31498](https://github.com/grafana/grafana/pull/31498), [@ilyastoli](https://github.com/ilyastoli) -* **CloudWatch**: Add AWS Timestream Metrics and Dimensions. [#31624](https://github.com/grafana/grafana/pull/31624), [@ilyastoli](https://github.com/ilyastoli) -* **CloudWatch**: Add RDS Proxy metrics. [#31595](https://github.com/grafana/grafana/pull/31595), [@sunker](https://github.com/sunker) -* **CloudWatch**: Add eu-south-1 Cloudwatch region. [#31198](https://github.com/grafana/grafana/pull/31198), [@rubycut](https://github.com/rubycut) -* **CloudWatch**: Make it possible to specify custom api endpoint. [#31402](https://github.com/grafana/grafana/pull/31402), [@sunker](https://github.com/sunker) -* **Cloudwatch**: Add AWS/DDoSProtection metrics and dimensions. [#31297](https://github.com/grafana/grafana/pull/31297), [@relvira](https://github.com/relvira) -* **Dashboard**: Remove template variables option from ShareModal. [#30395](https://github.com/grafana/grafana/pull/30395), [@oscarkilhed](https://github.com/oscarkilhed) -* **Docs**: Define TLS/SSL terminology. [#30533](https://github.com/grafana/grafana/pull/30533), [@aknuds1](https://github.com/aknuds1) -* **Elasticsearch**: Add word highlighting to search results. [#30293](https://github.com/grafana/grafana/pull/30293), [@simianhacker](https://github.com/simianhacker) -* **Folders**: Editors should be able to edit name and delete folders. [#31242](https://github.com/grafana/grafana/pull/31242), [@torkelo](https://github.com/torkelo) -* **Graphite/SSE**: update graphite to work with server side expressions. [#31455](https://github.com/grafana/grafana/pull/31455), [@kylebrandt](https://github.com/kylebrandt) -* **InfluxDB**: Improve maxDataPoints error-message in Flux-mode, raise limits. [#31259](https://github.com/grafana/grafana/pull/31259), [@gabor](https://github.com/gabor) -* **InfluxDB**: In flux query editor, do not run query when disabled. [#31324](https://github.com/grafana/grafana/pull/31324), [@gabor](https://github.com/gabor) -* **LogsPanel**: Add deduplication option for logs. [#31019](https://github.com/grafana/grafana/pull/31019), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki**: Add line limit for annotations. [#31183](https://github.com/grafana/grafana/pull/31183), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki**: Add support for alerting. [#31424](https://github.com/grafana/grafana/pull/31424), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki**: Label browser. [#30351](https://github.com/grafana/grafana/pull/30351), [@davkal](https://github.com/davkal) -* **PieChart**: Add color changing options to pie chart. [#31588](https://github.com/grafana/grafana/pull/31588), [@oscarkilhed](https://github.com/oscarkilhed) -* **PostgreSQL**: Allow providing TLS/SSL certificates as text in addition to file paths. [#30353](https://github.com/grafana/grafana/pull/30353), [@ying-jeanne](https://github.com/ying-jeanne) -* **Postgres**: SSL certification. [#30352](https://github.com/grafana/grafana/pull/30352), [@ying-jeanne](https://github.com/ying-jeanne) -* **Profile**: Prevent OAuth users from changing user details or password. [#27886](https://github.com/grafana/grafana/pull/27886), [@dupondje](https://github.com/dupondje) -* **Prometheus**: Change default httpMethod for new instances to POST. [#31292](https://github.com/grafana/grafana/pull/31292), [@ivanahuckova](https://github.com/ivanahuckova) -* **Prometheus**: Min step defaults to seconds when no unit is set. [#30966](https://github.com/grafana/grafana/pull/30966), [@nutmos](https://github.com/nutmos) -* **Stats**: Exclude folders from total dashboard count. [#31320](https://github.com/grafana/grafana/pull/31320), [@bergquist](https://github.com/bergquist) -* **Tracing**: Specify type of data frame that is expected for TraceView. [#31465](https://github.com/grafana/grafana/pull/31465), [@aocenas](https://github.com/aocenas) -* **Transformers**: Add search to transform selection. [#30854](https://github.com/grafana/grafana/pull/30854), [@ryantxu](https://github.com/ryantxu) +- **Alerting**: Customise OK notification priorities for Pushover notifier. [#30169](https://github.com/grafana/grafana/pull/30169), [@acaire](https://github.com/acaire) +- **Alerting**: Improve default message for SensuGo notifier. [#31428](https://github.com/grafana/grafana/pull/31428), [@M4teo](https://github.com/M4teo) +- **Alerting**: PagerDuty: adding current state to the payload. [#29270](https://github.com/grafana/grafana/pull/29270), [@Eraac](https://github.com/Eraac) +- **AzureMonitor**: Add deprecation message for App Insights/Insights Analytics. [#30633](https://github.com/grafana/grafana/pull/30633), [@joshhunt](https://github.com/joshhunt) +- **CloudMonitoring**: Allow free text input for GCP project on dashboard variable query. [#28048](https://github.com/grafana/grafana/issues/28048) +- **CloudMonitoring**: Increase service api page size. [#30892](https://github.com/grafana/grafana/pull/30892), [@sunker](https://github.com/sunker) +- **CloudMonitoring**: Show service and SLO display name in SLO Query editor. [#30900](https://github.com/grafana/grafana/pull/30900), [@sunker](https://github.com/sunker) +- **CloudWatch**: Add AWS Ground Station metrics and dimensions. [#31362](https://github.com/grafana/grafana/pull/31362), [@ilyastoli](https://github.com/ilyastoli) +- **CloudWatch**: Add AWS Network Firewall metrics and dimensions. [#31498](https://github.com/grafana/grafana/pull/31498), [@ilyastoli](https://github.com/ilyastoli) +- **CloudWatch**: Add AWS Timestream Metrics and Dimensions. [#31624](https://github.com/grafana/grafana/pull/31624), [@ilyastoli](https://github.com/ilyastoli) +- **CloudWatch**: Add RDS Proxy metrics. [#31595](https://github.com/grafana/grafana/pull/31595), [@sunker](https://github.com/sunker) +- **CloudWatch**: Add eu-south-1 Cloudwatch region. [#31198](https://github.com/grafana/grafana/pull/31198), [@rubycut](https://github.com/rubycut) +- **CloudWatch**: Make it possible to specify custom api endpoint. [#31402](https://github.com/grafana/grafana/pull/31402), [@sunker](https://github.com/sunker) +- **Cloudwatch**: Add AWS/DDoSProtection metrics and dimensions. [#31297](https://github.com/grafana/grafana/pull/31297), [@relvira](https://github.com/relvira) +- **Dashboard**: Remove template variables option from ShareModal. [#30395](https://github.com/grafana/grafana/pull/30395), [@oscarkilhed](https://github.com/oscarkilhed) +- **Docs**: Define TLS/SSL terminology. [#30533](https://github.com/grafana/grafana/pull/30533), [@aknuds1](https://github.com/aknuds1) +- **Elasticsearch**: Add word highlighting to search results. [#30293](https://github.com/grafana/grafana/pull/30293), [@simianhacker](https://github.com/simianhacker) +- **Folders**: Editors should be able to edit name and delete folders. [#31242](https://github.com/grafana/grafana/pull/31242), [@torkelo](https://github.com/torkelo) +- **Graphite/SSE**: update graphite to work with server side expressions. [#31455](https://github.com/grafana/grafana/pull/31455), [@kylebrandt](https://github.com/kylebrandt) +- **InfluxDB**: Improve maxDataPoints error-message in Flux-mode, raise limits. [#31259](https://github.com/grafana/grafana/pull/31259), [@gabor](https://github.com/gabor) +- **InfluxDB**: In flux query editor, do not run query when disabled. [#31324](https://github.com/grafana/grafana/pull/31324), [@gabor](https://github.com/gabor) +- **LogsPanel**: Add deduplication option for logs. [#31019](https://github.com/grafana/grafana/pull/31019), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki**: Add line limit for annotations. [#31183](https://github.com/grafana/grafana/pull/31183), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki**: Add support for alerting. [#31424](https://github.com/grafana/grafana/pull/31424), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki**: Label browser. [#30351](https://github.com/grafana/grafana/pull/30351), [@davkal](https://github.com/davkal) +- **PieChart**: Add color changing options to pie chart. [#31588](https://github.com/grafana/grafana/pull/31588), [@oscarkilhed](https://github.com/oscarkilhed) +- **PostgreSQL**: Allow providing TLS/SSL certificates as text in addition to file paths. [#30353](https://github.com/grafana/grafana/pull/30353), [@ying-jeanne](https://github.com/ying-jeanne) +- **Postgres**: SSL certification. [#30352](https://github.com/grafana/grafana/pull/30352), [@ying-jeanne](https://github.com/ying-jeanne) +- **Profile**: Prevent OAuth users from changing user details or password. [#27886](https://github.com/grafana/grafana/pull/27886), [@dupondje](https://github.com/dupondje) +- **Prometheus**: Change default httpMethod for new instances to POST. [#31292](https://github.com/grafana/grafana/pull/31292), [@ivanahuckova](https://github.com/ivanahuckova) +- **Prometheus**: Min step defaults to seconds when no unit is set. [#30966](https://github.com/grafana/grafana/pull/30966), [@nutmos](https://github.com/nutmos) +- **Stats**: Exclude folders from total dashboard count. [#31320](https://github.com/grafana/grafana/pull/31320), [@bergquist](https://github.com/bergquist) +- **Tracing**: Specify type of data frame that is expected for TraceView. [#31465](https://github.com/grafana/grafana/pull/31465), [@aocenas](https://github.com/aocenas) +- **Transformers**: Add search to transform selection. [#30854](https://github.com/grafana/grafana/pull/30854), [@ryantxu](https://github.com/ryantxu) ### Bug fixes -* **Alerting**: Ensure Discord notification is sent when metric name is absent. [#31257](https://github.com/grafana/grafana/pull/31257), [@LeviHarrison](https://github.com/LeviHarrison) -* **Alerting**: Fix case when Alertmanager notifier fails if a URL is not working. [#31079](https://github.com/grafana/grafana/pull/31079), [@kurokochin](https://github.com/kurokochin) -* **CloudMonitoring**: Prevent resource type variable function from crashing. [#30901](https://github.com/grafana/grafana/pull/30901), [@sunker](https://github.com/sunker) -* **Color**: Fix issue where colors are reset to gray when switching panels. [#31611](https://github.com/grafana/grafana/pull/31611), [@torkelo](https://github.com/torkelo) -* **Explore**: Show ANSI colored logs in logs context. [#31510](https://github.com/grafana/grafana/pull/31510), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore**: keep enabled/disabled state in angular based QueryEditors correctly. [#31558](https://github.com/grafana/grafana/pull/31558), [@gabor](https://github.com/gabor) -* **Graph**: Fix tooltip not being displayed when close to edge of viewport. [#31493](https://github.com/grafana/grafana/pull/31493), [@msober](https://github.com/msober) -* **Heatmap**: Fix missing value in legend. [#31430](https://github.com/grafana/grafana/pull/31430), [@kurokochin](https://github.com/kurokochin) -* **InfluxDB**: Handle columns named "table". [#30985](https://github.com/grafana/grafana/pull/30985), [@gabor](https://github.com/gabor) -* **Prometheus**: Use configured HTTP method for /series and /labels endpoints. [#31401](https://github.com/grafana/grafana/pull/31401), [@ivanahuckova](https://github.com/ivanahuckova) -* **RefreshPicker**: Make valid intervals in url visible in RefreshPicker. [#30474](https://github.com/grafana/grafana/pull/30474), [@hugohaggmark](https://github.com/hugohaggmark) -* **TimeSeriesPanel**: Fix overlapping time axis ticks. [#31332](https://github.com/grafana/grafana/pull/31332), [@torkelo](https://github.com/torkelo) -* **TraceViewer**: Fix show log marker in spanbar. [#30742](https://github.com/grafana/grafana/pull/30742), [@zoltanbedi](https://github.com/zoltanbedi) +- **Alerting**: Ensure Discord notification is sent when metric name is absent. [#31257](https://github.com/grafana/grafana/pull/31257), [@LeviHarrison](https://github.com/LeviHarrison) +- **Alerting**: Fix case when Alertmanager notifier fails if a URL is not working. [#31079](https://github.com/grafana/grafana/pull/31079), [@kurokochin](https://github.com/kurokochin) +- **CloudMonitoring**: Prevent resource type variable function from crashing. [#30901](https://github.com/grafana/grafana/pull/30901), [@sunker](https://github.com/sunker) +- **Color**: Fix issue where colors are reset to gray when switching panels. [#31611](https://github.com/grafana/grafana/pull/31611), [@torkelo](https://github.com/torkelo) +- **Explore**: Show ANSI colored logs in logs context. [#31510](https://github.com/grafana/grafana/pull/31510), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore**: keep enabled/disabled state in angular based QueryEditors correctly. [#31558](https://github.com/grafana/grafana/pull/31558), [@gabor](https://github.com/gabor) +- **Graph**: Fix tooltip not being displayed when close to edge of viewport. [#31493](https://github.com/grafana/grafana/pull/31493), [@msober](https://github.com/msober) +- **Heatmap**: Fix missing value in legend. [#31430](https://github.com/grafana/grafana/pull/31430), [@kurokochin](https://github.com/kurokochin) +- **InfluxDB**: Handle columns named "table". [#30985](https://github.com/grafana/grafana/pull/30985), [@gabor](https://github.com/gabor) +- **Prometheus**: Use configured HTTP method for /series and /labels endpoints. [#31401](https://github.com/grafana/grafana/pull/31401), [@ivanahuckova](https://github.com/ivanahuckova) +- **RefreshPicker**: Make valid intervals in url visible in RefreshPicker. [#30474](https://github.com/grafana/grafana/pull/30474), [@hugohaggmark](https://github.com/hugohaggmark) +- **TimeSeriesPanel**: Fix overlapping time axis ticks. [#31332](https://github.com/grafana/grafana/pull/31332), [@torkelo](https://github.com/torkelo) +- **TraceViewer**: Fix show log marker in spanbar. [#30742](https://github.com/grafana/grafana/pull/30742), [@zoltanbedi](https://github.com/zoltanbedi) ### Plugin development fixes & changes -* **Plugins**: Add autoEnabled plugin JSON field to auto enable App plugins and add configuration link to menu by default. [#31354](https://github.com/grafana/grafana/pull/31354), [@torkelo](https://github.com/torkelo) -* **Pagination**: Improve pagination for large number of pages. [#30151](https://github.com/grafana/grafana/pull/30151), [@nathanrodman](https://github.com/nathanrodman) - +- **Plugins**: Add autoEnabled plugin JSON field to auto enable App plugins and add configuration link to menu by default. [#31354](https://github.com/grafana/grafana/pull/31354), [@torkelo](https://github.com/torkelo) +- **Pagination**: Improve pagination for large number of pages. [#30151](https://github.com/grafana/grafana/pull/30151), [@nathanrodman](https://github.com/nathanrodman) diff --git a/docs/sources/release-notes/release-notes-7-5-0-beta2.md b/docs/sources/release-notes/release-notes-7-5-0-beta2.md index 84a7583a703..c59a6b3f613 100644 --- a/docs/sources/release-notes/release-notes-7-5-0-beta2.md +++ b/docs/sources/release-notes/release-notes-7-5-0-beta2.md @@ -10,38 +10,38 @@ list = false ### Features and enhancements -* **CloudWatch**: Add support for EC2 IAM role. [#31804](https://github.com/grafana/grafana/pull/31804), [@sunker](https://github.com/sunker) -* **CloudWatch**: Consume the grafana/aws-sdk. [#31807](https://github.com/grafana/grafana/pull/31807), [@sunker](https://github.com/sunker) -* **CloudWatch**: Restrict auth provider and assume role usage according to Grafana configuration. [#31805](https://github.com/grafana/grafana/pull/31805), [@sunker](https://github.com/sunker) -* **Cloudwatch**: ListMetrics API page limit. [#31788](https://github.com/grafana/grafana/pull/31788), [@sunker](https://github.com/sunker) -* **Cloudwatch**: use shared library for aws auth. [#29550](https://github.com/grafana/grafana/pull/29550), [@ryantxu](https://github.com/ryantxu) -* **DataLinks**: Bring back single click links for Stat, Gauge and BarGauge panel. [#31692](https://github.com/grafana/grafana/pull/31692), [@dprokop](https://github.com/dprokop) -* **Docker**: Support pre-installed plugins from other sources in custom Dockerfiles. [#31234](https://github.com/grafana/grafana/pull/31234), [@sgnsys3](https://github.com/sgnsys3) -* **Elasticseach**: Add support for histogram fields. [#29079](https://github.com/grafana/grafana/pull/29079), [@simianhacker](https://github.com/simianhacker) -* **Exemplars**: Always query exemplars. [#31673](https://github.com/grafana/grafana/pull/31673), [@zoltanbedi](https://github.com/zoltanbedi) -* **Explore**: Support full inspect drawer. [#32005](https://github.com/grafana/grafana/pull/32005), [@ivanahuckova](https://github.com/ivanahuckova) -* **HttpServer**: Make read timeout configurable but disabled by default. [#31575](https://github.com/grafana/grafana/pull/31575), [@bergquist](https://github.com/bergquist) -* **SQLStore**: Close session in withDbSession. [#31775](https://github.com/grafana/grafana/pull/31775), [@aknuds1](https://github.com/aknuds1) -* **Templating**: Use dashboard timerange when variables are set to refresh 'On Dashboard Load'. [#31721](https://github.com/grafana/grafana/pull/31721), [@Elfo404](https://github.com/Elfo404) -* **Tempo**: Convert to backend data source. [#31618](https://github.com/grafana/grafana/pull/31618), [@zoltanbedi](https://github.com/zoltanbedi) +- **CloudWatch**: Add support for EC2 IAM role. [#31804](https://github.com/grafana/grafana/pull/31804), [@sunker](https://github.com/sunker) +- **CloudWatch**: Consume the grafana/aws-sdk. [#31807](https://github.com/grafana/grafana/pull/31807), [@sunker](https://github.com/sunker) +- **CloudWatch**: Restrict auth provider and assume role usage according to Grafana configuration. [#31805](https://github.com/grafana/grafana/pull/31805), [@sunker](https://github.com/sunker) +- **Cloudwatch**: ListMetrics API page limit. [#31788](https://github.com/grafana/grafana/pull/31788), [@sunker](https://github.com/sunker) +- **Cloudwatch**: use shared library for aws auth. [#29550](https://github.com/grafana/grafana/pull/29550), [@ryantxu](https://github.com/ryantxu) +- **DataLinks**: Bring back single click links for Stat, Gauge and BarGauge panel. [#31692](https://github.com/grafana/grafana/pull/31692), [@dprokop](https://github.com/dprokop) +- **Docker**: Support pre-installed plugins from other sources in custom Dockerfiles. [#31234](https://github.com/grafana/grafana/pull/31234), [@sgnsys3](https://github.com/sgnsys3) +- **Elasticseach**: Add support for histogram fields. [#29079](https://github.com/grafana/grafana/pull/29079), [@simianhacker](https://github.com/simianhacker) +- **Exemplars**: Always query exemplars. [#31673](https://github.com/grafana/grafana/pull/31673), [@zoltanbedi](https://github.com/zoltanbedi) +- **Explore**: Support full inspect drawer. [#32005](https://github.com/grafana/grafana/pull/32005), [@ivanahuckova](https://github.com/ivanahuckova) +- **HttpServer**: Make read timeout configurable but disabled by default. [#31575](https://github.com/grafana/grafana/pull/31575), [@bergquist](https://github.com/bergquist) +- **SQLStore**: Close session in withDbSession. [#31775](https://github.com/grafana/grafana/pull/31775), [@aknuds1](https://github.com/aknuds1) +- **Templating**: Use dashboard timerange when variables are set to refresh 'On Dashboard Load'. [#31721](https://github.com/grafana/grafana/pull/31721), [@Elfo404](https://github.com/Elfo404) +- **Tempo**: Convert to backend data source. [#31618](https://github.com/grafana/grafana/pull/31618), [@zoltanbedi](https://github.com/zoltanbedi) ### Bug fixes -* **Admin**: Keeps expired api keys visible in table after delete. [#31636](https://github.com/grafana/grafana/pull/31636), [@hugohaggmark](https://github.com/hugohaggmark) -* **Data proxy**: Fix encoded characters in URL path should be proxied as encoded. [#30597](https://github.com/grafana/grafana/pull/30597), [@marefr](https://github.com/marefr) -* **Explore/Logs**: Fix escaping in ANSI logs. [#31731](https://github.com/grafana/grafana/pull/31731), [@ivanahuckova](https://github.com/ivanahuckova) -* **GraphNG**: Fix tooltip series color for multi data frame scenario. [#32098](https://github.com/grafana/grafana/pull/32098), [@dprokop](https://github.com/dprokop) -* **GraphNG**: Make sure data set and config are in sync when initializing and re-initializing uPlot. [#32106](https://github.com/grafana/grafana/pull/32106), [@dprokop](https://github.com/dprokop) -* **Loki**: Fix autocomplete when re-editing Loki label values. [#31828](https://github.com/grafana/grafana/pull/31828), [@ivanahuckova](https://github.com/ivanahuckova) -* **MixedDataSource**: Name is updated when data source variables change. [#32090](https://github.com/grafana/grafana/pull/32090), [@hugohaggmark](https://github.com/hugohaggmark) -* **PanelInspect**: Interpolates variables in CSV file name. [#31936](https://github.com/grafana/grafana/pull/31936), [@hugohaggmark](https://github.com/hugohaggmark) -* **ReduceTransform**: Include series with numeric string names. [#31763](https://github.com/grafana/grafana/pull/31763), [@hugohaggmark](https://github.com/hugohaggmark) -* **Snapshots**: Fix usage of sign in link from the snapshot page. [#31986](https://github.com/grafana/grafana/pull/31986), [@marefr](https://github.com/marefr) -* **TimePicker**: Fixes hidden time picker shown in kiosk TV mode. [#32062](https://github.com/grafana/grafana/pull/32062), [@torkelo](https://github.com/torkelo) -* **ValueMappings**: Fixes value 0 not being mapped. [#31924](https://github.com/grafana/grafana/pull/31924), [@Willena](https://github.com/Willena) -* **Variables**: Fixes filtering in picker with null items. [#31979](https://github.com/grafana/grafana/pull/31979), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Improves inspection performance and unknown filtering. [#31811](https://github.com/grafana/grafana/pull/31811), [@hugohaggmark](https://github.com/hugohaggmark) +- **Admin**: Keeps expired api keys visible in table after delete. [#31636](https://github.com/grafana/grafana/pull/31636), [@hugohaggmark](https://github.com/hugohaggmark) +- **Data proxy**: Fix encoded characters in URL path should be proxied as encoded. [#30597](https://github.com/grafana/grafana/pull/30597), [@marefr](https://github.com/marefr) +- **Explore/Logs**: Fix escaping in ANSI logs. [#31731](https://github.com/grafana/grafana/pull/31731), [@ivanahuckova](https://github.com/ivanahuckova) +- **GraphNG**: Fix tooltip series color for multi data frame scenario. [#32098](https://github.com/grafana/grafana/pull/32098), [@dprokop](https://github.com/dprokop) +- **GraphNG**: Make sure data set and config are in sync when initializing and re-initializing uPlot. [#32106](https://github.com/grafana/grafana/pull/32106), [@dprokop](https://github.com/dprokop) +- **Loki**: Fix autocomplete when re-editing Loki label values. [#31828](https://github.com/grafana/grafana/pull/31828), [@ivanahuckova](https://github.com/ivanahuckova) +- **MixedDataSource**: Name is updated when data source variables change. [#32090](https://github.com/grafana/grafana/pull/32090), [@hugohaggmark](https://github.com/hugohaggmark) +- **PanelInspect**: Interpolates variables in CSV file name. [#31936](https://github.com/grafana/grafana/pull/31936), [@hugohaggmark](https://github.com/hugohaggmark) +- **ReduceTransform**: Include series with numeric string names. [#31763](https://github.com/grafana/grafana/pull/31763), [@hugohaggmark](https://github.com/hugohaggmark) +- **Snapshots**: Fix usage of sign in link from the snapshot page. [#31986](https://github.com/grafana/grafana/pull/31986), [@marefr](https://github.com/marefr) +- **TimePicker**: Fixes hidden time picker shown in kiosk TV mode. [#32062](https://github.com/grafana/grafana/pull/32062), [@torkelo](https://github.com/torkelo) +- **ValueMappings**: Fixes value 0 not being mapped. [#31924](https://github.com/grafana/grafana/pull/31924), [@Willena](https://github.com/Willena) +- **Variables**: Fixes filtering in picker with null items. [#31979](https://github.com/grafana/grafana/pull/31979), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Improves inspection performance and unknown filtering. [#31811](https://github.com/grafana/grafana/pull/31811), [@hugohaggmark](https://github.com/hugohaggmark) ### Plugin development fixes & changes -* **Auth**: Allow soft token revocation. [#31601](https://github.com/grafana/grafana/pull/31601), [@joanlopez](https://github.com/joanlopez) +- **Auth**: Allow soft token revocation. [#31601](https://github.com/grafana/grafana/pull/31601), [@joanlopez](https://github.com/joanlopez) diff --git a/docs/sources/release-notes/release-notes-7-5-0.md b/docs/sources/release-notes/release-notes-7-5-0.md index a288bdb18c1..52aaf735547 100644 --- a/docs/sources/release-notes/release-notes-7-5-0.md +++ b/docs/sources/release-notes/release-notes-7-5-0.md @@ -10,13 +10,12 @@ list = false ### Features and enhancements -* **Alerting**: Add ability to include aliases with hyphen in InfluxDB. [#32262](https://github.com/grafana/grafana/pull/32262), [@grafanabot](https://github.com/grafanabot) -* **CloudWatch**: Use latest version of aws sdk. [#32217](https://github.com/grafana/grafana/pull/32217), [@sunker](https://github.com/sunker) +- **Alerting**: Add ability to include aliases with hyphen in InfluxDB. [#32262](https://github.com/grafana/grafana/pull/32262), [@grafanabot](https://github.com/grafanabot) +- **CloudWatch**: Use latest version of aws sdk. [#32217](https://github.com/grafana/grafana/pull/32217), [@sunker](https://github.com/sunker) ### Bug fixes -* **Alerting**: Add ability to include aliases with hyphen in InfluxDB. [#32224](https://github.com/grafana/grafana/pull/32224), [@dsotirakis](https://github.com/dsotirakis) -* **DashboardSettings**: Fixes issue with tags list not updating changes are made. [#32241](https://github.com/grafana/grafana/pull/32241), [@huynhsamha](https://github.com/huynhsamha) -* **DashboardSettings**: Fixes issue with tags list not updating changes are made. [#32189](https://github.com/grafana/grafana/pull/32189), [@huynhsamha](https://github.com/huynhsamha) -* **Loki**: Fix text search in Label browser. [#32293](https://github.com/grafana/grafana/pull/32293), [@ivanahuckova](https://github.com/ivanahuckova) - +- **Alerting**: Add ability to include aliases with hyphen in InfluxDB. [#32224](https://github.com/grafana/grafana/pull/32224), [@dsotirakis](https://github.com/dsotirakis) +- **DashboardSettings**: Fixes issue with tags list not updating changes are made. [#32241](https://github.com/grafana/grafana/pull/32241), [@huynhsamha](https://github.com/huynhsamha) +- **DashboardSettings**: Fixes issue with tags list not updating changes are made. [#32189](https://github.com/grafana/grafana/pull/32189), [@huynhsamha](https://github.com/huynhsamha) +- **Loki**: Fix text search in Label browser. [#32293](https://github.com/grafana/grafana/pull/32293), [@ivanahuckova](https://github.com/ivanahuckova) diff --git a/docs/sources/release-notes/release-notes-7-5-1.md b/docs/sources/release-notes/release-notes-7-5-1.md index 8f53fa4708f..7c5f7e7db72 100644 --- a/docs/sources/release-notes/release-notes-7-5-1.md +++ b/docs/sources/release-notes/release-notes-7-5-1.md @@ -10,5 +10,4 @@ list = false ### Bug fixes -* **MSSQL**: Fix panic not implemented by upgrading go-mssqldb dependency. [#32347](https://github.com/grafana/grafana/pull/32347), [@aknuds1](https://github.com/aknuds1) - +- **MSSQL**: Fix panic not implemented by upgrading go-mssqldb dependency. [#32347](https://github.com/grafana/grafana/pull/32347), [@aknuds1](https://github.com/aknuds1) diff --git a/docs/sources/release-notes/release-notes-7-5-10.md b/docs/sources/release-notes/release-notes-7-5-10.md index 9e897b5f84c..91e82c7da63 100644 --- a/docs/sources/release-notes/release-notes-7-5-10.md +++ b/docs/sources/release-notes/release-notes-7-5-10.md @@ -10,5 +10,4 @@ list = false ### Bug fixes -* **[v7.5.x] Transformations:** add 'prepare time series' transformer. [#36749](https://github.com/grafana/grafana/pull/36749), [@mckn](https://github.com/mckn) - +- **[v7.5.x] Transformations:** add 'prepare time series' transformer. [#36749](https://github.com/grafana/grafana/pull/36749), [@mckn](https://github.com/mckn) diff --git a/docs/sources/release-notes/release-notes-7-5-2.md b/docs/sources/release-notes/release-notes-7-5-2.md index 25e4da4d326..49954a11c42 100644 --- a/docs/sources/release-notes/release-notes-7-5-2.md +++ b/docs/sources/release-notes/release-notes-7-5-2.md @@ -10,13 +10,12 @@ list = false ### Features and enhancements -* **Explore**: Set Explore's GraphNG to use default value for connected null values setting. [#32471](https://github.com/grafana/grafana/pull/32471), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore**: Set Explore's GraphNG to use default value for connected null values setting. [#32471](https://github.com/grafana/grafana/pull/32471), [@ivanahuckova](https://github.com/ivanahuckova) ### Bug fixes -* **DashboardDataSource**: Fix query not being executed after selecting source panel. [#32383](https://github.com/grafana/grafana/pull/32383), [@torkelo](https://github.com/torkelo) -* **Graph**: Fix setting right y-axis when standard option unit is configured. [#32426](https://github.com/grafana/grafana/pull/32426), [@torkelo](https://github.com/torkelo) -* **Table**: Fix links for image cells. [#32370](https://github.com/grafana/grafana/pull/32370), [@kaydelaney](https://github.com/kaydelaney) -* **Variables**: Fix data source variable when default data source is selected. [#32384](https://github.com/grafana/grafana/pull/32384), [@torkelo](https://github.com/torkelo) -* **Variables**: Fix manually entering non-matching custom value in variable input/picker error. [#32390](https://github.com/grafana/grafana/pull/32390), [@torkelo](https://github.com/torkelo) - +- **DashboardDataSource**: Fix query not being executed after selecting source panel. [#32383](https://github.com/grafana/grafana/pull/32383), [@torkelo](https://github.com/torkelo) +- **Graph**: Fix setting right y-axis when standard option unit is configured. [#32426](https://github.com/grafana/grafana/pull/32426), [@torkelo](https://github.com/torkelo) +- **Table**: Fix links for image cells. [#32370](https://github.com/grafana/grafana/pull/32370), [@kaydelaney](https://github.com/kaydelaney) +- **Variables**: Fix data source variable when default data source is selected. [#32384](https://github.com/grafana/grafana/pull/32384), [@torkelo](https://github.com/torkelo) +- **Variables**: Fix manually entering non-matching custom value in variable input/picker error. [#32390](https://github.com/grafana/grafana/pull/32390), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-5-3.md b/docs/sources/release-notes/release-notes-7-5-3.md index 4ef626aa6c7..c5857343121 100644 --- a/docs/sources/release-notes/release-notes-7-5-3.md +++ b/docs/sources/release-notes/release-notes-7-5-3.md @@ -10,17 +10,17 @@ list = false ### Features and enhancements -* **Dashboard:** Do not include default data source when externally exporting dashboard with row. [#32494](https://github.com/grafana/grafana/pull/32494), [@kaydelaney](https://github.com/kaydelaney) -* **Loki:** Remove empty annotations tags. [#32359](https://github.com/grafana/grafana/pull/32359), [@conorevans](https://github.com/conorevans) +- **Dashboard:** Do not include default data source when externally exporting dashboard with row. [#32494](https://github.com/grafana/grafana/pull/32494), [@kaydelaney](https://github.com/kaydelaney) +- **Loki:** Remove empty annotations tags. [#32359](https://github.com/grafana/grafana/pull/32359), [@conorevans](https://github.com/conorevans) ### Bug fixes -* **AdHocVariable:** Add default data source to picker. [#32470](https://github.com/grafana/grafana/pull/32470), [@hugohaggmark](https://github.com/hugohaggmark) -* **Configuration:** Prevent browser hanging / crashing with large number of org users. [#32546](https://github.com/grafana/grafana/pull/32546), [@jackw](https://github.com/jackw) -* **Elasticsearch:** Fix bucket script variable duplication in UI. [#32705](https://github.com/grafana/grafana/pull/32705), [@Elfo404](https://github.com/Elfo404) -* **Explore:** Fix bug where navigating to explore would result in wrong query and data source to be shown. [#32558](https://github.com/grafana/grafana/pull/32558), [@aocenas](https://github.com/aocenas) -* **FolderPicker:** Prevent drop-down menu from disappearing off screen. [#32603](https://github.com/grafana/grafana/pull/32603), [@jackw](https://github.com/jackw) -* **Stat:** Fix issue with panel links. [#32721](https://github.com/grafana/grafana/pull/32721), [@gjulianm](https://github.com/gjulianm) -* **Variables:** Confirm selection before opening new picker. [#32586](https://github.com/grafana/grafana/pull/32586), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables:** Confirm selection before opening new picker. [#32503](https://github.com/grafana/grafana/pull/32503), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Fix unsupported data format error for null values. [#32480](https://github.com/grafana/grafana/pull/32480), [@hugohaggmark](https://github.com/hugohaggmark) +- **AdHocVariable:** Add default data source to picker. [#32470](https://github.com/grafana/grafana/pull/32470), [@hugohaggmark](https://github.com/hugohaggmark) +- **Configuration:** Prevent browser hanging / crashing with large number of org users. [#32546](https://github.com/grafana/grafana/pull/32546), [@jackw](https://github.com/jackw) +- **Elasticsearch:** Fix bucket script variable duplication in UI. [#32705](https://github.com/grafana/grafana/pull/32705), [@Elfo404](https://github.com/Elfo404) +- **Explore:** Fix bug where navigating to explore would result in wrong query and data source to be shown. [#32558](https://github.com/grafana/grafana/pull/32558), [@aocenas](https://github.com/aocenas) +- **FolderPicker:** Prevent drop-down menu from disappearing off screen. [#32603](https://github.com/grafana/grafana/pull/32603), [@jackw](https://github.com/jackw) +- **Stat:** Fix issue with panel links. [#32721](https://github.com/grafana/grafana/pull/32721), [@gjulianm](https://github.com/gjulianm) +- **Variables:** Confirm selection before opening new picker. [#32586](https://github.com/grafana/grafana/pull/32586), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables:** Confirm selection before opening new picker. [#32503](https://github.com/grafana/grafana/pull/32503), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Fix unsupported data format error for null values. [#32480](https://github.com/grafana/grafana/pull/32480), [@hugohaggmark](https://github.com/hugohaggmark) diff --git a/docs/sources/release-notes/release-notes-7-5-4.md b/docs/sources/release-notes/release-notes-7-5-4.md index 125b0767209..38155455589 100644 --- a/docs/sources/release-notes/release-notes-7-5-4.md +++ b/docs/sources/release-notes/release-notes-7-5-4.md @@ -10,13 +10,13 @@ list = false ### Features and enhancements -* **AzureMonitor:** Add support for Microsoft.AppConfiguration/configurationStores namespace. [#32123](https://github.com/grafana/grafana/pull/32123), [@deesejohn](https://github.com/deesejohn) -* **TablePanel:** Make sorting case-insensitive. [#32435](https://github.com/grafana/grafana/pull/32435), [@kaydelaney](https://github.com/kaydelaney) +- **AzureMonitor:** Add support for Microsoft.AppConfiguration/configurationStores namespace. [#32123](https://github.com/grafana/grafana/pull/32123), [@deesejohn](https://github.com/deesejohn) +- **TablePanel:** Make sorting case-insensitive. [#32435](https://github.com/grafana/grafana/pull/32435), [@kaydelaney](https://github.com/kaydelaney) ### Bug fixes -* **AzureMonitor:** Add support for Virtual WAN namespaces. [#32935](https://github.com/grafana/grafana/pull/32935), [@joshhunt](https://github.com/joshhunt) -* **Bugfix:** Add proper padding when scrolling is added to bar gauge. [#32411](https://github.com/grafana/grafana/pull/32411), [@mckn](https://github.com/mckn) -* **Datasource:** Prevent default data source named "default" from causing infinite loop. [#32949](https://github.com/grafana/grafana/pull/32949), [@jackw](https://github.com/jackw) -* **Prometheus:** Allow query_exemplars endpoint in data source proxy. [#32802](https://github.com/grafana/grafana/pull/32802), [@zoltanbedi](https://github.com/zoltanbedi) -* **Table:** Fix table data links so they refer to correct row after sorting. [#32571](https://github.com/grafana/grafana/pull/32571), [@torkelo](https://github.com/torkelo) +- **AzureMonitor:** Add support for Virtual WAN namespaces. [#32935](https://github.com/grafana/grafana/pull/32935), [@joshhunt](https://github.com/joshhunt) +- **Bugfix:** Add proper padding when scrolling is added to bar gauge. [#32411](https://github.com/grafana/grafana/pull/32411), [@mckn](https://github.com/mckn) +- **Datasource:** Prevent default data source named "default" from causing infinite loop. [#32949](https://github.com/grafana/grafana/pull/32949), [@jackw](https://github.com/jackw) +- **Prometheus:** Allow query_exemplars endpoint in data source proxy. [#32802](https://github.com/grafana/grafana/pull/32802), [@zoltanbedi](https://github.com/zoltanbedi) +- **Table:** Fix table data links so they refer to correct row after sorting. [#32571](https://github.com/grafana/grafana/pull/32571), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-5-5.md b/docs/sources/release-notes/release-notes-7-5-5.md index 7c68755859b..796331984f8 100644 --- a/docs/sources/release-notes/release-notes-7-5-5.md +++ b/docs/sources/release-notes/release-notes-7-5-5.md @@ -10,16 +10,15 @@ list = false ### Features and enhancements -* **Explore:** Load default data source in Explore when the provided source does not exist. [#32992](https://github.com/grafana/grafana/pull/32992), [@ifrost](https://github.com/ifrost) -* **Instrumentation:** Add success rate metrics for email notifications. [#33359](https://github.com/grafana/grafana/pull/33359), [@bergquist](https://github.com/bergquist) +- **Explore:** Load default data source in Explore when the provided source does not exist. [#32992](https://github.com/grafana/grafana/pull/32992), [@ifrost](https://github.com/ifrost) +- **Instrumentation:** Add success rate metrics for email notifications. [#33359](https://github.com/grafana/grafana/pull/33359), [@bergquist](https://github.com/bergquist) ### Bug fixes -* **Alerting:** Remove field limitation from Slack notifications. [#33113](https://github.com/grafana/grafana/pull/33113), [@dsotirakis](https://github.com/dsotirakis) -* **Auth:** Do not clear auth token cookie when token lookup fails. [#32999](https://github.com/grafana/grafana/pull/32999), [@marefr](https://github.com/marefr) -* **Bug:** Add git command to Dockerfile.ubuntu file. [#33247](https://github.com/grafana/grafana/pull/33247), [@dsotirakis](https://github.com/dsotirakis) -* **Explore:** Adjust time to the selected timezone. [#33315](https://github.com/grafana/grafana/pull/33315), [@ifrost](https://github.com/ifrost) -* **GraphNG:** Fix exemplars window position. [#33427](https://github.com/grafana/grafana/pull/33427), [@zoltanbedi](https://github.com/zoltanbedi) -* **Loki:** Pass Skip TLS Verify setting to alert queries. [#33025](https://github.com/grafana/grafana/pull/33025), [@ivanahuckova](https://github.com/ivanahuckova) -* **Postgres:** Fix time group macro when TimescaleDB is enabled and interval is less than a second. [#33153](https://github.com/grafana/grafana/pull/33153), [@marefr](https://github.com/marefr) - +- **Alerting:** Remove field limitation from Slack notifications. [#33113](https://github.com/grafana/grafana/pull/33113), [@dsotirakis](https://github.com/dsotirakis) +- **Auth:** Do not clear auth token cookie when token lookup fails. [#32999](https://github.com/grafana/grafana/pull/32999), [@marefr](https://github.com/marefr) +- **Bug:** Add git command to Dockerfile.ubuntu file. [#33247](https://github.com/grafana/grafana/pull/33247), [@dsotirakis](https://github.com/dsotirakis) +- **Explore:** Adjust time to the selected timezone. [#33315](https://github.com/grafana/grafana/pull/33315), [@ifrost](https://github.com/ifrost) +- **GraphNG:** Fix exemplars window position. [#33427](https://github.com/grafana/grafana/pull/33427), [@zoltanbedi](https://github.com/zoltanbedi) +- **Loki:** Pass Skip TLS Verify setting to alert queries. [#33025](https://github.com/grafana/grafana/pull/33025), [@ivanahuckova](https://github.com/ivanahuckova) +- **Postgres:** Fix time group macro when TimescaleDB is enabled and interval is less than a second. [#33153](https://github.com/grafana/grafana/pull/33153), [@marefr](https://github.com/marefr) diff --git a/docs/sources/release-notes/release-notes-7-5-6.md b/docs/sources/release-notes/release-notes-7-5-6.md index 929962dbc16..51037afdb26 100644 --- a/docs/sources/release-notes/release-notes-7-5-6.md +++ b/docs/sources/release-notes/release-notes-7-5-6.md @@ -10,12 +10,11 @@ list = false ### Features and enhancements -* **Database**: Add isolation level configuration parameter for MySQL. [#33830](https://github.com/grafana/grafana/pull/33830), [@zserge](https://github.com/zserge) -* **InfluxDB**: Improve measurement-autocomplete behavior. [#33494](https://github.com/grafana/grafana/pull/33494), [@gabor](https://github.com/gabor) -* **Instrumentation**: Don't consider invalid email address a failed email. [#33671](https://github.com/grafana/grafana/pull/33671), [@bergquist](https://github.com/bergquist) +- **Database**: Add isolation level configuration parameter for MySQL. [#33830](https://github.com/grafana/grafana/pull/33830), [@zserge](https://github.com/zserge) +- **InfluxDB**: Improve measurement-autocomplete behavior. [#33494](https://github.com/grafana/grafana/pull/33494), [@gabor](https://github.com/gabor) +- **Instrumentation**: Don't consider invalid email address a failed email. [#33671](https://github.com/grafana/grafana/pull/33671), [@bergquist](https://github.com/bergquist) ### Bug fixes -* **Loki**: fix label browser crashing when + typed. [#33900](https://github.com/grafana/grafana/pull/33900), [@zoltanbedi](https://github.com/zoltanbedi) -* **Prometheus**: Sanitize PromLink button. [#33874](https://github.com/grafana/grafana/pull/33874), [@ivanahuckova](https://github.com/ivanahuckova) - +- **Loki**: fix label browser crashing when + typed. [#33900](https://github.com/grafana/grafana/pull/33900), [@zoltanbedi](https://github.com/zoltanbedi) +- **Prometheus**: Sanitize PromLink button. [#33874](https://github.com/grafana/grafana/pull/33874), [@ivanahuckova](https://github.com/ivanahuckova) diff --git a/docs/sources/release-notes/release-notes-7-5-7.md b/docs/sources/release-notes/release-notes-7-5-7.md index 39a71d1840f..c82f1cc7873 100644 --- a/docs/sources/release-notes/release-notes-7-5-7.md +++ b/docs/sources/release-notes/release-notes-7-5-7.md @@ -10,7 +10,6 @@ list = false ### Bug fixes -* **Dockerfile:** Fixes missing --no-cache. [#33906](https://github.com/grafana/grafana/pull/33906), [@030](https://github.com/030) -* **Annotations:** Prevent orphaned annotation tags cleanup when no annotations were cleaned. [#33957](https://github.com/grafana/grafana/pull/33957), [@afayngelerindbx](https://github.com/afayngelerindbx) -* **Quota:** Do not count folders towards dashboard quota. [#32519](https://github.com/grafana/grafana/pull/32519), [@conorevans](https://github.com/conorevans) - +- **Dockerfile:** Fixes missing --no-cache. [#33906](https://github.com/grafana/grafana/pull/33906), [@030](https://github.com/030) +- **Annotations:** Prevent orphaned annotation tags cleanup when no annotations were cleaned. [#33957](https://github.com/grafana/grafana/pull/33957), [@afayngelerindbx](https://github.com/afayngelerindbx) +- **Quota:** Do not count folders towards dashboard quota. [#32519](https://github.com/grafana/grafana/pull/32519), [@conorevans](https://github.com/conorevans) diff --git a/docs/sources/release-notes/release-notes-7-5-8.md b/docs/sources/release-notes/release-notes-7-5-8.md index 56565d8d39e..c616bcc9766 100644 --- a/docs/sources/release-notes/release-notes-7-5-8.md +++ b/docs/sources/release-notes/release-notes-7-5-8.md @@ -10,8 +10,7 @@ list = false ### Features and enhancements -* **Datasource:** Add support for max_conns_per_host in dataproxy settings. [#35519](https://github.com/grafana/grafana/pull/35519), [@jvrplmlmn](https://github.com/jvrplmlmn) -* **Datasource:** Add support for max_idle_connections_per_host in dataproxy settings. [#35365](https://github.com/grafana/grafana/pull/35365), [@dsotirakis](https://github.com/dsotirakis) -* **Instrumentation:** Add metrics for outbound HTTP connections. [#35321](https://github.com/grafana/grafana/pull/35321), [@dsotirakis](https://github.com/dsotirakis) -* **Snapshots:** Remove dashboard links from dashboard snapshots. [#35567](https://github.com/grafana/grafana/pull/35567), [@torkelo](https://github.com/torkelo) - +- **Datasource:** Add support for max_conns_per_host in dataproxy settings. [#35519](https://github.com/grafana/grafana/pull/35519), [@jvrplmlmn](https://github.com/jvrplmlmn) +- **Datasource:** Add support for max_idle_connections_per_host in dataproxy settings. [#35365](https://github.com/grafana/grafana/pull/35365), [@dsotirakis](https://github.com/dsotirakis) +- **Instrumentation:** Add metrics for outbound HTTP connections. [#35321](https://github.com/grafana/grafana/pull/35321), [@dsotirakis](https://github.com/dsotirakis) +- **Snapshots:** Remove dashboard links from dashboard snapshots. [#35567](https://github.com/grafana/grafana/pull/35567), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-7-5-9.md b/docs/sources/release-notes/release-notes-7-5-9.md index 7db95ffa790..197207aacc5 100644 --- a/docs/sources/release-notes/release-notes-7-5-9.md +++ b/docs/sources/release-notes/release-notes-7-5-9.md @@ -10,4 +10,4 @@ list = false ### Bug fixes -* **Login:** Fix Unauthorized message that is displayed on sign-in or snapshot page. [#35880](https://github.com/grafana/grafana/pull/35880), [@torkelo](https://github.com/torkelo) +- **Login:** Fix Unauthorized message that is displayed on sign-in or snapshot page. [#35880](https://github.com/grafana/grafana/pull/35880), [@torkelo](https://github.com/torkelo) diff --git a/docs/sources/release-notes/release-notes-8-0-0-beta1.md b/docs/sources/release-notes/release-notes-8-0-0-beta1.md index 1d202679b78..a93962070ef 100644 --- a/docs/sources/release-notes/release-notes-8-0-0-beta1.md +++ b/docs/sources/release-notes/release-notes-8-0-0-beta1.md @@ -10,107 +10,107 @@ list = false ### Features and enhancements -* **API**: Add org users with pagination. [#33788](https://github.com/grafana/grafana/pull/33788), [@idafurjes](https://github.com/idafurjes) -* **API**: Return 404 when deleting nonexistent API key. [#33346](https://github.com/grafana/grafana/pull/33346), [@chaudum](https://github.com/chaudum) -* **API**: Return query results as JSON rather than base64 encoded Arrow. [#32303](https://github.com/grafana/grafana/pull/32303), [@ryantxu](https://github.com/ryantxu) -* **Alerting**: Allow sending notification tags to Opsgenie as extra properties. [#30332](https://github.com/grafana/grafana/pull/30332), [@DewaldV](https://github.com/DewaldV) -* **Alerts**: Replaces all uses of InfoBox & FeatureInfoBox with Alert. [#33352](https://github.com/grafana/grafana/pull/33352), [@torkelo](https://github.com/torkelo) -* **Auth**: Add support for JWT Authentication. [#29995](https://github.com/grafana/grafana/pull/29995), [@marshall-lee](https://github.com/marshall-lee) -* **AzureMonitor**: Add support for Microsoft.SignalRService/SignalR metrics. [#33246](https://github.com/grafana/grafana/pull/33246), [@M0ns1gn0r](https://github.com/M0ns1gn0r) -* **AzureMonitor**: Azure settings in Grafana server config. [#33728](https://github.com/grafana/grafana/pull/33728), [@kostrse](https://github.com/kostrse) -* **AzureMonitor**: Migrate Metrics query editor to React. [#30783](https://github.com/grafana/grafana/pull/30783), [@joshhunt](https://github.com/joshhunt) -* **BarChart panel**: enable series toggling via legend. [#33955](https://github.com/grafana/grafana/pull/33955), [@dprokop](https://github.com/dprokop) -* **BarChart panel**: Adds support for Tooltip in BarChartPanel. [#33938](https://github.com/grafana/grafana/pull/33938), [@dprokop](https://github.com/dprokop) -* **PieChart panel**: Change look of highlighted pie slices. [#33841](https://github.com/grafana/grafana/pull/33841), [@oscarkilhed](https://github.com/oscarkilhed) -* **CloudMonitoring**: Migrate config editor from angular to react. [#33645](https://github.com/grafana/grafana/pull/33645), [@sunker](https://github.com/sunker) -* **CloudWatch**: Add Amplify Console metrics and dimensions. [#33171](https://github.com/grafana/grafana/pull/33171), [@rodrigorfk](https://github.com/rodrigorfk) -* **CloudWatch**: Add missing Redshift metrics to CloudWatch data source. [#32121](https://github.com/grafana/grafana/pull/32121), [@tomdaly](https://github.com/tomdaly) -* **CloudWatch**: Add metrics for managed RabbitMQ service. [#31838](https://github.com/grafana/grafana/pull/31838), [@nirojan](https://github.com/nirojan) -* **DashboardList**: Enable templating on search tag input. [#31460](https://github.com/grafana/grafana/pull/31460), [@delta50](https://github.com/delta50) -* **Datasource config**: correctly remove single custom http header. [#32445](https://github.com/grafana/grafana/pull/32445), [@gabor](https://github.com/gabor) -* **Elasticsearch**: Add generic support for template variables. [#32762](https://github.com/grafana/grafana/pull/32762), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Allow omitting field when metric supports inline script. [#32839](https://github.com/grafana/grafana/pull/32839), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Allow setting a custom limit for log queries. [#32422](https://github.com/grafana/grafana/pull/32422), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Guess field type from first non-empty value. [#32290](https://github.com/grafana/grafana/pull/32290), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Use application/x-ndjson content type for multisearch requests. [#32282](https://github.com/grafana/grafana/pull/32282), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch**: Use semver strings to identify ES version. [#33646](https://github.com/grafana/grafana/pull/33646), [@Elfo404](https://github.com/Elfo404) -* **Explore**: Add logs navigation to request more logs. [#33259](https://github.com/grafana/grafana/pull/33259), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore**: Map Graphite queries to Loki. [#33405](https://github.com/grafana/grafana/pull/33405), [@ifrost](https://github.com/ifrost) -* **Explore**: Scroll split panes in Explore independently. [#32978](https://github.com/grafana/grafana/pull/32978), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore**: Wrap each panel in separate error boundary. [#33868](https://github.com/grafana/grafana/pull/33868), [@aocenas](https://github.com/aocenas) -* **FieldDisplay**: Smarter naming of stat values when visualising row values (all values) in stat panels. [#31704](https://github.com/grafana/grafana/pull/31704), [@torkelo](https://github.com/torkelo) -* **Graphite**: Expand metric names for variables. [#33694](https://github.com/grafana/grafana/pull/33694), [@ifrost](https://github.com/ifrost) -* **Graphite**: Handle unknown Graphite functions without breaking the visual editor. [#32635](https://github.com/grafana/grafana/pull/32635), [@ifrost](https://github.com/ifrost) -* **Graphite**: Show graphite functions descriptions. [#32305](https://github.com/grafana/grafana/pull/32305), [@ifrost](https://github.com/ifrost) -* **Graphite**: Support request cancellation properly (Uses new backendSrv.fetch Observable request API). [#31928](https://github.com/grafana/grafana/pull/31928), [@mckn](https://github.com/mckn) -* **InfluxDB**: Flux: Improve handling of complex response-structures. [#33823](https://github.com/grafana/grafana/pull/33823), [@gabor](https://github.com/gabor) -* **InfluxDB**: Support region annotations. [#31526](https://github.com/grafana/grafana/pull/31526), [@Komalis](https://github.com/Komalis) -* **Inspector**: Download logs for manual processing. [#32764](https://github.com/grafana/grafana/pull/32764), [@ivanahuckova](https://github.com/ivanahuckova) -* **Jaeger**: Add node graph view for trace. [#31521](https://github.com/grafana/grafana/pull/31521), [@aocenas](https://github.com/aocenas) -* **Jaeger**: Search traces. [#32805](https://github.com/grafana/grafana/pull/32805), [@zoltanbedi](https://github.com/zoltanbedi) -* **Loki**: Use data source settings for alerting queries. [#33942](https://github.com/grafana/grafana/pull/33942), [@ivanahuckova](https://github.com/ivanahuckova) -* **NodeGraph**: Exploration mode. [#33623](https://github.com/grafana/grafana/pull/33623), [@aocenas](https://github.com/aocenas) -* **OAuth**: Add support for empty scopes. [#32129](https://github.com/grafana/grafana/pull/32129), [@jvoeller](https://github.com/jvoeller) -* **PanelChrome**: New logic-less emotion based component with no dependency on PanelModel or DashboardModel. [#29456](https://github.com/grafana/grafana/pull/29456), [@torkelo](https://github.com/torkelo) -* **PanelEdit**: Adds a table view toggle to quickly view data in table form. [#33753](https://github.com/grafana/grafana/pull/33753), [@torkelo](https://github.com/torkelo) -* **PanelEdit**: Highlight matched words when searching options. [#33717](https://github.com/grafana/grafana/pull/33717), [@torkelo](https://github.com/torkelo) -* **PanelEdit**: UX improvements. [#32124](https://github.com/grafana/grafana/pull/32124), [@torkelo](https://github.com/torkelo) -* **Plugins**: PanelRenderer and simplified QueryRunner to be used from plugins. [#31901](https://github.com/grafana/grafana/pull/31901), [@torkelo](https://github.com/torkelo) -* **Plugins**: AuthType in route configuration and params interpolation. [#33674](https://github.com/grafana/grafana/pull/33674), [@kostrse](https://github.com/kostrse) -* **Plugins**: Enable plugin runtime install/uninstall capabilities. [#33836](https://github.com/grafana/grafana/pull/33836), [@wbrowne](https://github.com/wbrowne) -* **Plugins**: Support set body content in plugin routes. [#32551](https://github.com/grafana/grafana/pull/32551), [@marefr](https://github.com/marefr) -* **Plugins**: Introduce marketplace app. [#33869](https://github.com/grafana/grafana/pull/33869), [@jackw](https://github.com/jackw) -* **Plugins**: Moving the DataSourcePicker to grafana/runtime so it can be reused in plugins. [#31628](https://github.com/grafana/grafana/pull/31628), [@mckn](https://github.com/mckn) -* **Prometheus**: Add custom query params for alert and exemplars queries. [#32440](https://github.com/grafana/grafana/pull/32440), [@aocenas](https://github.com/aocenas) -* **Prometheus**: Use fuzzy string matching to autocomplete metric names and label. [#32207](https://github.com/grafana/grafana/pull/32207), [@ifrost](https://github.com/ifrost) -* **Routing**: Replace Angular routing with react-router. [#31463](https://github.com/grafana/grafana/pull/31463), [@dprokop](https://github.com/dprokop) -* **Slack**: Use chat.postMessage API by default. [#32511](https://github.com/grafana/grafana/pull/32511), [@aknuds1](https://github.com/aknuds1) -* **Tempo**: Search for Traces by querying Loki directly from Tempo. [#33308](https://github.com/grafana/grafana/pull/33308), [@davkal](https://github.com/davkal) -* **Themes**: Switch theme without reload using global shortcut. [#32180](https://github.com/grafana/grafana/pull/32180), [@torkelo](https://github.com/torkelo) -* **TimeSeries panel**: Add support for shared cursor. [#33433](https://github.com/grafana/grafana/pull/33433), [@dprokop](https://github.com/dprokop) -* **TimeSeries panel**: Do not crash the panel if there is no time series data in the response. [#33993](https://github.com/grafana/grafana/pull/33993), [@dprokop](https://github.com/dprokop) -* **Variables**: Do not save repeated panels, rows and scopedVars. [#32436](https://github.com/grafana/grafana/pull/32436), [@torkelo](https://github.com/torkelo) -* **Variables**: Removes experimental Tags feature. [#33361](https://github.com/grafana/grafana/pull/33361), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Removes the never refresh option. [#33533](https://github.com/grafana/grafana/pull/33533), [@hugohaggmark](https://github.com/hugohaggmark) -* **Visualizations**: Unify tooltip options across visualizations. [#33892](https://github.com/grafana/grafana/pull/33892), [@dprokop](https://github.com/dprokop) -* **Visualizations**: Refactor and unify option creation between new visualizations. [#33867](https://github.com/grafana/grafana/pull/33867), [@oscarkilhed](https://github.com/oscarkilhed) -* **Visualizations**: Remove singlestat panel. [#31904](https://github.com/grafana/grafana/pull/31904), [@dprokop](https://github.com/dprokop) +- **API**: Add org users with pagination. [#33788](https://github.com/grafana/grafana/pull/33788), [@idafurjes](https://github.com/idafurjes) +- **API**: Return 404 when deleting nonexistent API key. [#33346](https://github.com/grafana/grafana/pull/33346), [@chaudum](https://github.com/chaudum) +- **API**: Return query results as JSON rather than base64 encoded Arrow. [#32303](https://github.com/grafana/grafana/pull/32303), [@ryantxu](https://github.com/ryantxu) +- **Alerting**: Allow sending notification tags to Opsgenie as extra properties. [#30332](https://github.com/grafana/grafana/pull/30332), [@DewaldV](https://github.com/DewaldV) +- **Alerts**: Replaces all uses of InfoBox & FeatureInfoBox with Alert. [#33352](https://github.com/grafana/grafana/pull/33352), [@torkelo](https://github.com/torkelo) +- **Auth**: Add support for JWT Authentication. [#29995](https://github.com/grafana/grafana/pull/29995), [@marshall-lee](https://github.com/marshall-lee) +- **AzureMonitor**: Add support for Microsoft.SignalRService/SignalR metrics. [#33246](https://github.com/grafana/grafana/pull/33246), [@M0ns1gn0r](https://github.com/M0ns1gn0r) +- **AzureMonitor**: Azure settings in Grafana server config. [#33728](https://github.com/grafana/grafana/pull/33728), [@kostrse](https://github.com/kostrse) +- **AzureMonitor**: Migrate Metrics query editor to React. [#30783](https://github.com/grafana/grafana/pull/30783), [@joshhunt](https://github.com/joshhunt) +- **BarChart panel**: enable series toggling via legend. [#33955](https://github.com/grafana/grafana/pull/33955), [@dprokop](https://github.com/dprokop) +- **BarChart panel**: Adds support for Tooltip in BarChartPanel. [#33938](https://github.com/grafana/grafana/pull/33938), [@dprokop](https://github.com/dprokop) +- **PieChart panel**: Change look of highlighted pie slices. [#33841](https://github.com/grafana/grafana/pull/33841), [@oscarkilhed](https://github.com/oscarkilhed) +- **CloudMonitoring**: Migrate config editor from angular to react. [#33645](https://github.com/grafana/grafana/pull/33645), [@sunker](https://github.com/sunker) +- **CloudWatch**: Add Amplify Console metrics and dimensions. [#33171](https://github.com/grafana/grafana/pull/33171), [@rodrigorfk](https://github.com/rodrigorfk) +- **CloudWatch**: Add missing Redshift metrics to CloudWatch data source. [#32121](https://github.com/grafana/grafana/pull/32121), [@tomdaly](https://github.com/tomdaly) +- **CloudWatch**: Add metrics for managed RabbitMQ service. [#31838](https://github.com/grafana/grafana/pull/31838), [@nirojan](https://github.com/nirojan) +- **DashboardList**: Enable templating on search tag input. [#31460](https://github.com/grafana/grafana/pull/31460), [@delta50](https://github.com/delta50) +- **Datasource config**: correctly remove single custom http header. [#32445](https://github.com/grafana/grafana/pull/32445), [@gabor](https://github.com/gabor) +- **Elasticsearch**: Add generic support for template variables. [#32762](https://github.com/grafana/grafana/pull/32762), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Allow omitting field when metric supports inline script. [#32839](https://github.com/grafana/grafana/pull/32839), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Allow setting a custom limit for log queries. [#32422](https://github.com/grafana/grafana/pull/32422), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Guess field type from first non-empty value. [#32290](https://github.com/grafana/grafana/pull/32290), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Use application/x-ndjson content type for multisearch requests. [#32282](https://github.com/grafana/grafana/pull/32282), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch**: Use semver strings to identify ES version. [#33646](https://github.com/grafana/grafana/pull/33646), [@Elfo404](https://github.com/Elfo404) +- **Explore**: Add logs navigation to request more logs. [#33259](https://github.com/grafana/grafana/pull/33259), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore**: Map Graphite queries to Loki. [#33405](https://github.com/grafana/grafana/pull/33405), [@ifrost](https://github.com/ifrost) +- **Explore**: Scroll split panes in Explore independently. [#32978](https://github.com/grafana/grafana/pull/32978), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore**: Wrap each panel in separate error boundary. [#33868](https://github.com/grafana/grafana/pull/33868), [@aocenas](https://github.com/aocenas) +- **FieldDisplay**: Smarter naming of stat values when visualising row values (all values) in stat panels. [#31704](https://github.com/grafana/grafana/pull/31704), [@torkelo](https://github.com/torkelo) +- **Graphite**: Expand metric names for variables. [#33694](https://github.com/grafana/grafana/pull/33694), [@ifrost](https://github.com/ifrost) +- **Graphite**: Handle unknown Graphite functions without breaking the visual editor. [#32635](https://github.com/grafana/grafana/pull/32635), [@ifrost](https://github.com/ifrost) +- **Graphite**: Show graphite functions descriptions. [#32305](https://github.com/grafana/grafana/pull/32305), [@ifrost](https://github.com/ifrost) +- **Graphite**: Support request cancellation properly (Uses new backendSrv.fetch Observable request API). [#31928](https://github.com/grafana/grafana/pull/31928), [@mckn](https://github.com/mckn) +- **InfluxDB**: Flux: Improve handling of complex response-structures. [#33823](https://github.com/grafana/grafana/pull/33823), [@gabor](https://github.com/gabor) +- **InfluxDB**: Support region annotations. [#31526](https://github.com/grafana/grafana/pull/31526), [@Komalis](https://github.com/Komalis) +- **Inspector**: Download logs for manual processing. [#32764](https://github.com/grafana/grafana/pull/32764), [@ivanahuckova](https://github.com/ivanahuckova) +- **Jaeger**: Add node graph view for trace. [#31521](https://github.com/grafana/grafana/pull/31521), [@aocenas](https://github.com/aocenas) +- **Jaeger**: Search traces. [#32805](https://github.com/grafana/grafana/pull/32805), [@zoltanbedi](https://github.com/zoltanbedi) +- **Loki**: Use data source settings for alerting queries. [#33942](https://github.com/grafana/grafana/pull/33942), [@ivanahuckova](https://github.com/ivanahuckova) +- **NodeGraph**: Exploration mode. [#33623](https://github.com/grafana/grafana/pull/33623), [@aocenas](https://github.com/aocenas) +- **OAuth**: Add support for empty scopes. [#32129](https://github.com/grafana/grafana/pull/32129), [@jvoeller](https://github.com/jvoeller) +- **PanelChrome**: New logic-less emotion based component with no dependency on PanelModel or DashboardModel. [#29456](https://github.com/grafana/grafana/pull/29456), [@torkelo](https://github.com/torkelo) +- **PanelEdit**: Adds a table view toggle to quickly view data in table form. [#33753](https://github.com/grafana/grafana/pull/33753), [@torkelo](https://github.com/torkelo) +- **PanelEdit**: Highlight matched words when searching options. [#33717](https://github.com/grafana/grafana/pull/33717), [@torkelo](https://github.com/torkelo) +- **PanelEdit**: UX improvements. [#32124](https://github.com/grafana/grafana/pull/32124), [@torkelo](https://github.com/torkelo) +- **Plugins**: PanelRenderer and simplified QueryRunner to be used from plugins. [#31901](https://github.com/grafana/grafana/pull/31901), [@torkelo](https://github.com/torkelo) +- **Plugins**: AuthType in route configuration and params interpolation. [#33674](https://github.com/grafana/grafana/pull/33674), [@kostrse](https://github.com/kostrse) +- **Plugins**: Enable plugin runtime install/uninstall capabilities. [#33836](https://github.com/grafana/grafana/pull/33836), [@wbrowne](https://github.com/wbrowne) +- **Plugins**: Support set body content in plugin routes. [#32551](https://github.com/grafana/grafana/pull/32551), [@marefr](https://github.com/marefr) +- **Plugins**: Introduce marketplace app. [#33869](https://github.com/grafana/grafana/pull/33869), [@jackw](https://github.com/jackw) +- **Plugins**: Moving the DataSourcePicker to grafana/runtime so it can be reused in plugins. [#31628](https://github.com/grafana/grafana/pull/31628), [@mckn](https://github.com/mckn) +- **Prometheus**: Add custom query params for alert and exemplars queries. [#32440](https://github.com/grafana/grafana/pull/32440), [@aocenas](https://github.com/aocenas) +- **Prometheus**: Use fuzzy string matching to autocomplete metric names and label. [#32207](https://github.com/grafana/grafana/pull/32207), [@ifrost](https://github.com/ifrost) +- **Routing**: Replace Angular routing with react-router. [#31463](https://github.com/grafana/grafana/pull/31463), [@dprokop](https://github.com/dprokop) +- **Slack**: Use chat.postMessage API by default. [#32511](https://github.com/grafana/grafana/pull/32511), [@aknuds1](https://github.com/aknuds1) +- **Tempo**: Search for Traces by querying Loki directly from Tempo. [#33308](https://github.com/grafana/grafana/pull/33308), [@davkal](https://github.com/davkal) +- **Themes**: Switch theme without reload using global shortcut. [#32180](https://github.com/grafana/grafana/pull/32180), [@torkelo](https://github.com/torkelo) +- **TimeSeries panel**: Add support for shared cursor. [#33433](https://github.com/grafana/grafana/pull/33433), [@dprokop](https://github.com/dprokop) +- **TimeSeries panel**: Do not crash the panel if there is no time series data in the response. [#33993](https://github.com/grafana/grafana/pull/33993), [@dprokop](https://github.com/dprokop) +- **Variables**: Do not save repeated panels, rows and scopedVars. [#32436](https://github.com/grafana/grafana/pull/32436), [@torkelo](https://github.com/torkelo) +- **Variables**: Removes experimental Tags feature. [#33361](https://github.com/grafana/grafana/pull/33361), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Removes the never refresh option. [#33533](https://github.com/grafana/grafana/pull/33533), [@hugohaggmark](https://github.com/hugohaggmark) +- **Visualizations**: Unify tooltip options across visualizations. [#33892](https://github.com/grafana/grafana/pull/33892), [@dprokop](https://github.com/dprokop) +- **Visualizations**: Refactor and unify option creation between new visualizations. [#33867](https://github.com/grafana/grafana/pull/33867), [@oscarkilhed](https://github.com/oscarkilhed) +- **Visualizations**: Remove singlestat panel. [#31904](https://github.com/grafana/grafana/pull/31904), [@dprokop](https://github.com/dprokop) ### Bug fixes -* **APIKeys**: Fixes issue with adding first api key. [#32201](https://github.com/grafana/grafana/pull/32201), [@torkelo](https://github.com/torkelo) -* **Alerting**: Add checks for non supported units - disable defaulting to seconds. [#32477](https://github.com/grafana/grafana/pull/32477), [@dsotirakis](https://github.com/dsotirakis) -* **Alerting**: Fix issue where Slack notifications won't link to user IDs. [#32861](https://github.com/grafana/grafana/pull/32861), [@n-wbrown](https://github.com/n-wbrown) -* **Alerting**: Omit empty message in PagerDuty notifier. [#31359](https://github.com/grafana/grafana/pull/31359), [@pkoenig10](https://github.com/pkoenig10) -* **AzureMonitor**: Fix migration error from older versions of App Insights queries. [#32372](https://github.com/grafana/grafana/pull/32372), [@joshhunt](https://github.com/joshhunt) -* **CloudWatch**: Fix AWS/Connect dimensions. [#33736](https://github.com/grafana/grafana/pull/33736), [@sunker](https://github.com/sunker) -* **CloudWatch**: Fix broken AWS/MediaTailor dimension name. [#33271](https://github.com/grafana/grafana/pull/33271), [@sunker](https://github.com/sunker) -* **Dashboards**: Allow string manipulation as advanced variable format option. [#29754](https://github.com/grafana/grafana/pull/29754), [@rscot231](https://github.com/rscot231) -* **DataLinks**: Includes harmless extended characters like Cyrillic characters. [#33551](https://github.com/grafana/grafana/pull/33551), [@hugohaggmark](https://github.com/hugohaggmark) -* **Drawer**: Fixes title overflowing its container. [#33857](https://github.com/grafana/grafana/pull/33857), [@thisisobate](https://github.com/thisisobate) -* **Explore**: Fix issue when some query errors were not shown. [#32212](https://github.com/grafana/grafana/pull/32212), [@aocenas](https://github.com/aocenas) -* **Generic OAuth**: Prevent adding duplicated users. [#32286](https://github.com/grafana/grafana/pull/32286), [@dsotirakis](https://github.com/dsotirakis) -* **Graphite**: Handle invalid annotations. [#32437](https://github.com/grafana/grafana/pull/32437), [@ifrost](https://github.com/ifrost) -* **Graphite**: Fix autocomplete when tags are not available. [#31680](https://github.com/grafana/grafana/pull/31680), [@ifrost](https://github.com/ifrost) -* **InfluxDB**: Fix Cannot read property 'length' of undefined in when parsing response. [#32504](https://github.com/grafana/grafana/pull/32504), [@ivanahuckova](https://github.com/ivanahuckova) -* **Instrumentation**: Enable tracing when Jaeger host and port are set. [#33682](https://github.com/grafana/grafana/pull/33682), [@zserge](https://github.com/zserge) -* **Instrumentation**: Prefix metrics with `grafana`. [#33925](https://github.com/grafana/grafana/pull/33925), [@bergquist](https://github.com/bergquist) -* **MSSQL**: By default let driver choose port. [#32417](https://github.com/grafana/grafana/pull/32417), [@aknuds1](https://github.com/aknuds1) -* **OAuth**: Add optional strict parsing of role_attribute_path. [#28021](https://github.com/grafana/grafana/pull/28021), [@klausenbusk](https://github.com/klausenbusk) -* **Panel**: Fixes description markdown with inline code being rendered on newlines and full width. [#32405](https://github.com/grafana/grafana/pull/32405), [@dprokop](https://github.com/dprokop) -* **PanelChrome**: Ignore data updates & errors for non data panels. [#33477](https://github.com/grafana/grafana/pull/33477), [@torkelo](https://github.com/torkelo) -* **Permissions**: Fix inherited folder permissions can prevent new permissions being added to a dashboard. [#33329](https://github.com/grafana/grafana/pull/33329), [@marefr](https://github.com/marefr) -* **Plugins**: Remove pre-existing plugin installs when installing with grafana-cli. [#31515](https://github.com/grafana/grafana/pull/31515), [@wbrowne](https://github.com/wbrowne) -* **Plugins**: Support installing to folders with whitespace and fix pluginUrl trailing and leading whitespace failures. [#32506](https://github.com/grafana/grafana/pull/32506), [@wbrowne](https://github.com/wbrowne) -* **Postgres/MySQL/MSSQL**: Don't return connection failure details to the client. [#32408](https://github.com/grafana/grafana/pull/32408), [@marefr](https://github.com/marefr) -* **Postgres**: Fix ms precision of interval in time group macro when TimescaleDB is enabled. [#33853](https://github.com/grafana/grafana/pull/33853), [@ying-jeanne](https://github.com/ying-jeanne) -* **Provisioning**: Use dashboard checksum field as change indicator. [#29797](https://github.com/grafana/grafana/pull/29797), [@cristi-](https://github.com/cristi-) -* **SQL**: Fix so that all captured errors are returned from sql engine. [#32353](https://github.com/grafana/grafana/pull/32353), [@marefr](https://github.com/marefr) -* **Shortcuts**: Fixes panel shortcuts so they always work. [#32385](https://github.com/grafana/grafana/pull/32385), [@torkelo](https://github.com/torkelo) -* **Table**: Fixes so border is visible for cells with links. [#33160](https://github.com/grafana/grafana/pull/33160), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Clear query when data source type changes. [#33924](https://github.com/grafana/grafana/pull/33924), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Filters out builtin variables from unknown list. [#33933](https://github.com/grafana/grafana/pull/33933), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables**: Refreshes all panels even if panel is full screen. [#33201](https://github.com/grafana/grafana/pull/33201), [@hugohaggmark](https://github.com/hugohaggmark) +- **APIKeys**: Fixes issue with adding first api key. [#32201](https://github.com/grafana/grafana/pull/32201), [@torkelo](https://github.com/torkelo) +- **Alerting**: Add checks for non supported units - disable defaulting to seconds. [#32477](https://github.com/grafana/grafana/pull/32477), [@dsotirakis](https://github.com/dsotirakis) +- **Alerting**: Fix issue where Slack notifications won't link to user IDs. [#32861](https://github.com/grafana/grafana/pull/32861), [@n-wbrown](https://github.com/n-wbrown) +- **Alerting**: Omit empty message in PagerDuty notifier. [#31359](https://github.com/grafana/grafana/pull/31359), [@pkoenig10](https://github.com/pkoenig10) +- **AzureMonitor**: Fix migration error from older versions of App Insights queries. [#32372](https://github.com/grafana/grafana/pull/32372), [@joshhunt](https://github.com/joshhunt) +- **CloudWatch**: Fix AWS/Connect dimensions. [#33736](https://github.com/grafana/grafana/pull/33736), [@sunker](https://github.com/sunker) +- **CloudWatch**: Fix broken AWS/MediaTailor dimension name. [#33271](https://github.com/grafana/grafana/pull/33271), [@sunker](https://github.com/sunker) +- **Dashboards**: Allow string manipulation as advanced variable format option. [#29754](https://github.com/grafana/grafana/pull/29754), [@rscot231](https://github.com/rscot231) +- **DataLinks**: Includes harmless extended characters like Cyrillic characters. [#33551](https://github.com/grafana/grafana/pull/33551), [@hugohaggmark](https://github.com/hugohaggmark) +- **Drawer**: Fixes title overflowing its container. [#33857](https://github.com/grafana/grafana/pull/33857), [@thisisobate](https://github.com/thisisobate) +- **Explore**: Fix issue when some query errors were not shown. [#32212](https://github.com/grafana/grafana/pull/32212), [@aocenas](https://github.com/aocenas) +- **Generic OAuth**: Prevent adding duplicated users. [#32286](https://github.com/grafana/grafana/pull/32286), [@dsotirakis](https://github.com/dsotirakis) +- **Graphite**: Handle invalid annotations. [#32437](https://github.com/grafana/grafana/pull/32437), [@ifrost](https://github.com/ifrost) +- **Graphite**: Fix autocomplete when tags are not available. [#31680](https://github.com/grafana/grafana/pull/31680), [@ifrost](https://github.com/ifrost) +- **InfluxDB**: Fix Cannot read property 'length' of undefined in when parsing response. [#32504](https://github.com/grafana/grafana/pull/32504), [@ivanahuckova](https://github.com/ivanahuckova) +- **Instrumentation**: Enable tracing when Jaeger host and port are set. [#33682](https://github.com/grafana/grafana/pull/33682), [@zserge](https://github.com/zserge) +- **Instrumentation**: Prefix metrics with `grafana`. [#33925](https://github.com/grafana/grafana/pull/33925), [@bergquist](https://github.com/bergquist) +- **MSSQL**: By default let driver choose port. [#32417](https://github.com/grafana/grafana/pull/32417), [@aknuds1](https://github.com/aknuds1) +- **OAuth**: Add optional strict parsing of role_attribute_path. [#28021](https://github.com/grafana/grafana/pull/28021), [@klausenbusk](https://github.com/klausenbusk) +- **Panel**: Fixes description markdown with inline code being rendered on newlines and full width. [#32405](https://github.com/grafana/grafana/pull/32405), [@dprokop](https://github.com/dprokop) +- **PanelChrome**: Ignore data updates & errors for non data panels. [#33477](https://github.com/grafana/grafana/pull/33477), [@torkelo](https://github.com/torkelo) +- **Permissions**: Fix inherited folder permissions can prevent new permissions being added to a dashboard. [#33329](https://github.com/grafana/grafana/pull/33329), [@marefr](https://github.com/marefr) +- **Plugins**: Remove pre-existing plugin installs when installing with grafana-cli. [#31515](https://github.com/grafana/grafana/pull/31515), [@wbrowne](https://github.com/wbrowne) +- **Plugins**: Support installing to folders with whitespace and fix pluginUrl trailing and leading whitespace failures. [#32506](https://github.com/grafana/grafana/pull/32506), [@wbrowne](https://github.com/wbrowne) +- **Postgres/MySQL/MSSQL**: Don't return connection failure details to the client. [#32408](https://github.com/grafana/grafana/pull/32408), [@marefr](https://github.com/marefr) +- **Postgres**: Fix ms precision of interval in time group macro when TimescaleDB is enabled. [#33853](https://github.com/grafana/grafana/pull/33853), [@ying-jeanne](https://github.com/ying-jeanne) +- **Provisioning**: Use dashboard checksum field as change indicator. [#29797](https://github.com/grafana/grafana/pull/29797), [@cristi-](https://github.com/cristi-) +- **SQL**: Fix so that all captured errors are returned from sql engine. [#32353](https://github.com/grafana/grafana/pull/32353), [@marefr](https://github.com/marefr) +- **Shortcuts**: Fixes panel shortcuts so they always work. [#32385](https://github.com/grafana/grafana/pull/32385), [@torkelo](https://github.com/torkelo) +- **Table**: Fixes so border is visible for cells with links. [#33160](https://github.com/grafana/grafana/pull/33160), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Clear query when data source type changes. [#33924](https://github.com/grafana/grafana/pull/33924), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Filters out builtin variables from unknown list. [#33933](https://github.com/grafana/grafana/pull/33933), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables**: Refreshes all panels even if panel is full screen. [#33201](https://github.com/grafana/grafana/pull/33201), [@hugohaggmark](https://github.com/hugohaggmark) ### Breaking changes @@ -125,13 +125,14 @@ Issue [#33352](https://github.com/grafana/grafana/issues/33352) ### Plugin development fixes & changes -* **Button**: Introduce buttonStyle prop. [#33384](https://github.com/grafana/grafana/pull/33384), [@jackw](https://github.com/jackw) -* **DataQueryRequest**: Remove deprecated props showingGraph and showingTabel and exploreMode. [#31876](https://github.com/grafana/grafana/pull/31876), [@torkelo](https://github.com/torkelo) -* **grafana/ui**: Update React Hook Form to v7. [#33328](https://github.com/grafana/grafana/pull/33328), [@Clarity-89](https://github.com/Clarity-89) -* **IconButton**: Introduce variant for red and blue icon buttons. [#33479](https://github.com/grafana/grafana/pull/33479), [@jackw](https://github.com/jackw) -* **Plugins**: Expose the `getTimeZone` function to be able to get the current selected timeZone. [#31900](https://github.com/grafana/grafana/pull/31900), [@mckn](https://github.com/mckn) -* **TagsInput**: Add className to TagsInput. [#33944](https://github.com/grafana/grafana/pull/33944), [@Clarity-89](https://github.com/Clarity-89) -* **VizLegend**: Move onSeriesColorChanged to PanelContext (breaking change). [#33611](https://github.com/grafana/grafana/pull/33611), [@ryantxu](https://github.com/ryantxu) +- **Button**: Introduce buttonStyle prop. [#33384](https://github.com/grafana/grafana/pull/33384), [@jackw](https://github.com/jackw) +- **DataQueryRequest**: Remove deprecated props showingGraph and showingTabel and exploreMode. [#31876](https://github.com/grafana/grafana/pull/31876), [@torkelo](https://github.com/torkelo) +- **grafana/ui**: Update React Hook Form to v7. [#33328](https://github.com/grafana/grafana/pull/33328), [@Clarity-89](https://github.com/Clarity-89) +- **IconButton**: Introduce variant for red and blue icon buttons. [#33479](https://github.com/grafana/grafana/pull/33479), [@jackw](https://github.com/jackw) +- **Plugins**: Expose the `getTimeZone` function to be able to get the current selected timeZone. [#31900](https://github.com/grafana/grafana/pull/31900), [@mckn](https://github.com/mckn) +- **TagsInput**: Add className to TagsInput. [#33944](https://github.com/grafana/grafana/pull/33944), [@Clarity-89](https://github.com/Clarity-89) +- **VizLegend**: Move onSeriesColorChanged to PanelContext (breaking change). [#33611](https://github.com/grafana/grafana/pull/33611), [@ryantxu](https://github.com/ryantxu) ### License update -* **AGPL License:** Update license from Apache 2.0 to the GNU Affero General Public License (AGPL). [#33184](https://github.com/grafana/grafana/pull/33184) \ No newline at end of file + +- **AGPL License:** Update license from Apache 2.0 to the GNU Affero General Public License (AGPL). [#33184](https://github.com/grafana/grafana/pull/33184) diff --git a/docs/sources/release-notes/release-notes-8-0-0-beta2.md b/docs/sources/release-notes/release-notes-8-0-0-beta2.md index 5e5d5fa054a..2d29c74eeac 100644 --- a/docs/sources/release-notes/release-notes-8-0-0-beta2.md +++ b/docs/sources/release-notes/release-notes-8-0-0-beta2.md @@ -10,62 +10,60 @@ list = false ### Features and enhancements -* **AppPlugins:** Expose react-router to apps. [#33775](https://github.com/grafana/grafana/pull/33775), [@dprokop](https://github.com/dprokop) -* **AzureMonitor:** Add Azure Resource Graph. [#33293](https://github.com/grafana/grafana/pull/33293), [@shuotli](https://github.com/shuotli) -* **AzureMonitor:** Managed Identity configuration UI. [#34170](https://github.com/grafana/grafana/pull/34170), [@kostrse](https://github.com/kostrse) -* **AzureMonitor:** Token provider with support for Managed Identities. [#33807](https://github.com/grafana/grafana/pull/33807), [@kostrse](https://github.com/kostrse) -* **AzureMonitor:** Update Logs workspace() template variable query to return resource URIs. [#34445](https://github.com/grafana/grafana/pull/34445), [@joshhunt](https://github.com/joshhunt) -* **BarChart:** Value label sizing. [#34229](https://github.com/grafana/grafana/pull/34229), [@dprokop](https://github.com/dprokop) -* **CloudMonitoring:** Add support for preprocessing. [#33011](https://github.com/grafana/grafana/pull/33011), [@sunker](https://github.com/sunker) -* **CloudWatch:** Add AWS/EFS StorageBytes metric. [#33426](https://github.com/grafana/grafana/pull/33426), [@freshleafmedia](https://github.com/freshleafmedia) -* **CloudWatch:** Allow use of missing AWS namespaces using custom metrics. [#30961](https://github.com/grafana/grafana/pull/30961), [@mmcoltman](https://github.com/mmcoltman) -* **Datasource:** Shared HTTP client provider for core backend data sources and any data source using the data source proxy. [#33439](https://github.com/grafana/grafana/pull/33439), [@marefr](https://github.com/marefr) -* **InfluxDB:** InfluxQL: allow empty tag values in the query editor. [#34311](https://github.com/grafana/grafana/pull/34311), [@gabor](https://github.com/gabor) -* **Instrumentation:** Instrument incoming HTTP request with histograms by default. [#33921](https://github.com/grafana/grafana/pull/33921), [@bergquist](https://github.com/bergquist) -* **Library Panels:** Add name endpoint & unique name validation to AddLibraryPanelModal. [#33987](https://github.com/grafana/grafana/pull/33987), [@kaydelaney](https://github.com/kaydelaney) -* **Logs panel:** Support details view. [#34125](https://github.com/grafana/grafana/pull/34125), [@ivanahuckova](https://github.com/ivanahuckova) -* **PieChart:** Always show the calculation options dropdown in the editor. [#34267](https://github.com/grafana/grafana/pull/34267), [@oscarkilhed](https://github.com/oscarkilhed) -* **PieChart:** Remove beta flag. [#34098](https://github.com/grafana/grafana/pull/34098), [@oscarkilhed](https://github.com/oscarkilhed) -* **Plugins:** Enforce signing for all plugins. [#34364](https://github.com/grafana/grafana/pull/34364), [@wbrowne](https://github.com/wbrowne) -* **Plugins:** Remove support for deprecated backend plugin protocol version. [#34127](https://github.com/grafana/grafana/pull/34127), [@idafurjes](https://github.com/idafurjes) -* **Tempo/Jaeger:** Add better display name to legend. [#34063](https://github.com/grafana/grafana/pull/34063), [@aocenas](https://github.com/aocenas) -* **Timeline:** Add time range zoom. [#34079](https://github.com/grafana/grafana/pull/34079), [@torkelo](https://github.com/torkelo) -* **Timeline:** Adds opacity & line width option. [#34118](https://github.com/grafana/grafana/pull/34118), [@torkelo](https://github.com/torkelo) -* **Timeline:** Value text alignment option. [#34087](https://github.com/grafana/grafana/pull/34087), [@torkelo](https://github.com/torkelo) -* **ValueMappings:** Add duplicate action, and disable dismiss on backdrop click. [#34100](https://github.com/grafana/grafana/pull/34100), [@torkelo](https://github.com/torkelo) -* **Zipkin:** Add node graph view to trace response. [#34414](https://github.com/grafana/grafana/pull/34414), [@aocenas](https://github.com/aocenas) +- **AppPlugins:** Expose react-router to apps. [#33775](https://github.com/grafana/grafana/pull/33775), [@dprokop](https://github.com/dprokop) +- **AzureMonitor:** Add Azure Resource Graph. [#33293](https://github.com/grafana/grafana/pull/33293), [@shuotli](https://github.com/shuotli) +- **AzureMonitor:** Managed Identity configuration UI. [#34170](https://github.com/grafana/grafana/pull/34170), [@kostrse](https://github.com/kostrse) +- **AzureMonitor:** Token provider with support for Managed Identities. [#33807](https://github.com/grafana/grafana/pull/33807), [@kostrse](https://github.com/kostrse) +- **AzureMonitor:** Update Logs workspace() template variable query to return resource URIs. [#34445](https://github.com/grafana/grafana/pull/34445), [@joshhunt](https://github.com/joshhunt) +- **BarChart:** Value label sizing. [#34229](https://github.com/grafana/grafana/pull/34229), [@dprokop](https://github.com/dprokop) +- **CloudMonitoring:** Add support for preprocessing. [#33011](https://github.com/grafana/grafana/pull/33011), [@sunker](https://github.com/sunker) +- **CloudWatch:** Add AWS/EFS StorageBytes metric. [#33426](https://github.com/grafana/grafana/pull/33426), [@freshleafmedia](https://github.com/freshleafmedia) +- **CloudWatch:** Allow use of missing AWS namespaces using custom metrics. [#30961](https://github.com/grafana/grafana/pull/30961), [@mmcoltman](https://github.com/mmcoltman) +- **Datasource:** Shared HTTP client provider for core backend data sources and any data source using the data source proxy. [#33439](https://github.com/grafana/grafana/pull/33439), [@marefr](https://github.com/marefr) +- **InfluxDB:** InfluxQL: allow empty tag values in the query editor. [#34311](https://github.com/grafana/grafana/pull/34311), [@gabor](https://github.com/gabor) +- **Instrumentation:** Instrument incoming HTTP request with histograms by default. [#33921](https://github.com/grafana/grafana/pull/33921), [@bergquist](https://github.com/bergquist) +- **Library Panels:** Add name endpoint & unique name validation to AddLibraryPanelModal. [#33987](https://github.com/grafana/grafana/pull/33987), [@kaydelaney](https://github.com/kaydelaney) +- **Logs panel:** Support details view. [#34125](https://github.com/grafana/grafana/pull/34125), [@ivanahuckova](https://github.com/ivanahuckova) +- **PieChart:** Always show the calculation options dropdown in the editor. [#34267](https://github.com/grafana/grafana/pull/34267), [@oscarkilhed](https://github.com/oscarkilhed) +- **PieChart:** Remove beta flag. [#34098](https://github.com/grafana/grafana/pull/34098), [@oscarkilhed](https://github.com/oscarkilhed) +- **Plugins:** Enforce signing for all plugins. [#34364](https://github.com/grafana/grafana/pull/34364), [@wbrowne](https://github.com/wbrowne) +- **Plugins:** Remove support for deprecated backend plugin protocol version. [#34127](https://github.com/grafana/grafana/pull/34127), [@idafurjes](https://github.com/idafurjes) +- **Tempo/Jaeger:** Add better display name to legend. [#34063](https://github.com/grafana/grafana/pull/34063), [@aocenas](https://github.com/aocenas) +- **Timeline:** Add time range zoom. [#34079](https://github.com/grafana/grafana/pull/34079), [@torkelo](https://github.com/torkelo) +- **Timeline:** Adds opacity & line width option. [#34118](https://github.com/grafana/grafana/pull/34118), [@torkelo](https://github.com/torkelo) +- **Timeline:** Value text alignment option. [#34087](https://github.com/grafana/grafana/pull/34087), [@torkelo](https://github.com/torkelo) +- **ValueMappings:** Add duplicate action, and disable dismiss on backdrop click. [#34100](https://github.com/grafana/grafana/pull/34100), [@torkelo](https://github.com/torkelo) +- **Zipkin:** Add node graph view to trace response. [#34414](https://github.com/grafana/grafana/pull/34414), [@aocenas](https://github.com/aocenas) ### Bug fixes -* **Annotations panel:** Remove subpath from dashboard links. [#34134](https://github.com/grafana/grafana/pull/34134), [@jackw](https://github.com/jackw) -* **Content Security Policy:** Allow all image sources by default. [#34265](https://github.com/grafana/grafana/pull/34265), [@aknuds1](https://github.com/aknuds1) -* **Content Security Policy:** Relax default template wrt. loading of scripts, due to nonces not working. [#34363](https://github.com/grafana/grafana/pull/34363), [@aknuds1](https://github.com/aknuds1) -* **Datasource:** Fix tracing propagation for alert execution by introducing HTTP client outgoing tracing middleware. [#34466](https://github.com/grafana/grafana/pull/34466), [@marefr](https://github.com/marefr) -* **InfluxDB:** InfluxQL always apply time interval end. [#34308](https://github.com/grafana/grafana/pull/34308), [@gabor](https://github.com/gabor) -* **Library Panels:** Fixes "error while loading library panels". [#34278](https://github.com/grafana/grafana/pull/34278), [@hugohaggmark](https://github.com/hugohaggmark) -* **NewsPanel:** Fixes rendering issue in Safari. [#34067](https://github.com/grafana/grafana/pull/34067), [@kaydelaney](https://github.com/kaydelaney) -* **PanelChrome:** Fix queries being issued again when scrolling in and out of view. [#34061](https://github.com/grafana/grafana/pull/34061), [@torkelo](https://github.com/torkelo) -* **Plugins:** Fix Azure token provider cache panic and auth param nil value. [#34252](https://github.com/grafana/grafana/pull/34252), [@kostrse](https://github.com/kostrse) -* **Snapshots:** Fix key and deleteKey being ignored when creating an external snapshot. [#33686](https://github.com/grafana/grafana/pull/33686), [@wengelbrecht-grafana](https://github.com/wengelbrecht-grafana) -* **Table:** Fix issue with cell border not showing with colored background cells. [#34231](https://github.com/grafana/grafana/pull/34231), [@torkelo](https://github.com/torkelo) -* **Table:** Makes tooltip scrollable for long JSON values. [#34120](https://github.com/grafana/grafana/pull/34120), [@hugohaggmark](https://github.com/hugohaggmark) -* **TimeSeries:** Fix for Connected null values threshold toggle during panel editing. [#34452](https://github.com/grafana/grafana/pull/34452), [@leeoniya](https://github.com/leeoniya) -* **Variables:** Fixes inconsistent `selected` states on dashboard load. [#34197](https://github.com/grafana/grafana/pull/34197), [@hugohaggmark](https://github.com/hugohaggmark) -* **Variables:** Refreshes all panels even if panel is full screen. [#34097](https://github.com/grafana/grafana/pull/34097), [@hugohaggmark](https://github.com/hugohaggmark) +- **Annotations panel:** Remove subpath from dashboard links. [#34134](https://github.com/grafana/grafana/pull/34134), [@jackw](https://github.com/jackw) +- **Content Security Policy:** Allow all image sources by default. [#34265](https://github.com/grafana/grafana/pull/34265), [@aknuds1](https://github.com/aknuds1) +- **Content Security Policy:** Relax default template wrt. loading of scripts, due to nonces not working. [#34363](https://github.com/grafana/grafana/pull/34363), [@aknuds1](https://github.com/aknuds1) +- **Datasource:** Fix tracing propagation for alert execution by introducing HTTP client outgoing tracing middleware. [#34466](https://github.com/grafana/grafana/pull/34466), [@marefr](https://github.com/marefr) +- **InfluxDB:** InfluxQL always apply time interval end. [#34308](https://github.com/grafana/grafana/pull/34308), [@gabor](https://github.com/gabor) +- **Library Panels:** Fixes "error while loading library panels". [#34278](https://github.com/grafana/grafana/pull/34278), [@hugohaggmark](https://github.com/hugohaggmark) +- **NewsPanel:** Fixes rendering issue in Safari. [#34067](https://github.com/grafana/grafana/pull/34067), [@kaydelaney](https://github.com/kaydelaney) +- **PanelChrome:** Fix queries being issued again when scrolling in and out of view. [#34061](https://github.com/grafana/grafana/pull/34061), [@torkelo](https://github.com/torkelo) +- **Plugins:** Fix Azure token provider cache panic and auth param nil value. [#34252](https://github.com/grafana/grafana/pull/34252), [@kostrse](https://github.com/kostrse) +- **Snapshots:** Fix key and deleteKey being ignored when creating an external snapshot. [#33686](https://github.com/grafana/grafana/pull/33686), [@wengelbrecht-grafana](https://github.com/wengelbrecht-grafana) +- **Table:** Fix issue with cell border not showing with colored background cells. [#34231](https://github.com/grafana/grafana/pull/34231), [@torkelo](https://github.com/torkelo) +- **Table:** Makes tooltip scrollable for long JSON values. [#34120](https://github.com/grafana/grafana/pull/34120), [@hugohaggmark](https://github.com/hugohaggmark) +- **TimeSeries:** Fix for Connected null values threshold toggle during panel editing. [#34452](https://github.com/grafana/grafana/pull/34452), [@leeoniya](https://github.com/leeoniya) +- **Variables:** Fixes inconsistent `selected` states on dashboard load. [#34197](https://github.com/grafana/grafana/pull/34197), [@hugohaggmark](https://github.com/hugohaggmark) +- **Variables:** Refreshes all panels even if panel is full screen. [#34097](https://github.com/grafana/grafana/pull/34097), [@hugohaggmark](https://github.com/hugohaggmark) ### Breaking changes - The `workspaces()` template variable, mainly for use with Azure Monitor Logs, has been changed to return resource URIs instead of Log Analytics Workspaces GUIDs. This should not impact Azure Monitor Logs queries, but if the variables are being used in other data sources which expect a Workspace GUID may no longer be compatible. Custom template variables used in the workspace or resource field in Azure Monitor Logs queries should resolve to an Azure Resource URI in the format `/subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}` - Issue [#34445](https://github.com/grafana/grafana/issues/34445) +Issue [#34445](https://github.com/grafana/grafana/issues/34445) Removes support for deprecated backend plugin protocol (v1) including usage of github.com/grafana/grafana-plugin-model. - Issue [#34127](https://github.com/grafana/grafana/issues/34127) +Issue [#34127](https://github.com/grafana/grafana/issues/34127) ### Plugin development fixes & changes -* **QueryField:** Remove carriage return character from pasted text. [#34076](https://github.com/grafana/grafana/pull/34076), [@ivanahuckova](https://github.com/ivanahuckova) - +- **QueryField:** Remove carriage return character from pasted text. [#34076](https://github.com/grafana/grafana/pull/34076), [@ivanahuckova](https://github.com/ivanahuckova) diff --git a/docs/sources/release-notes/release-notes-8-0-0-beta3.md b/docs/sources/release-notes/release-notes-8-0-0-beta3.md index f09eca77abc..4844d5149e7 100644 --- a/docs/sources/release-notes/release-notes-8-0-0-beta3.md +++ b/docs/sources/release-notes/release-notes-8-0-0-beta3.md @@ -10,49 +10,47 @@ list = false ### Features and enhancements -* **API:** Support folder UID in dashboards API. [#33991](https://github.com/grafana/grafana/pull/33991), [@zserge](https://github.com/zserge) -* **Alerting:** Add support for configuring avatar URL for the Discord notifier. [#33355](https://github.com/grafana/grafana/pull/33355), [@ChipWolf](https://github.com/ChipWolf) -* **Alerting:** Clarify that Threema Gateway Alerts support only Basic IDs. [#34828](https://github.com/grafana/grafana/pull/34828), [@dbrgn](https://github.com/dbrgn) -* **Azure:** Expose Azure settings to external plugins. [#34484](https://github.com/grafana/grafana/pull/34484), [@sunker](https://github.com/sunker) -* **AzureMonitor:** Deprecate using separate credentials for Azure Monitor Logs. [#34758](https://github.com/grafana/grafana/pull/34758), [@andresmgot](https://github.com/andresmgot) -* **AzureMonitor:** Display variables in resource picker for Azure Monitor Logs. [#34648](https://github.com/grafana/grafana/pull/34648), [@joshhunt](https://github.com/joshhunt) -* **AzureMonitor:** Hide application insights for data sources not using it. [#34725](https://github.com/grafana/grafana/pull/34725), [@joshhunt](https://github.com/joshhunt) -* **AzureMonitor:** Support querying subscriptions and resource groups in Azure Monitor Logs. [#34766](https://github.com/grafana/grafana/pull/34766), [@joshhunt](https://github.com/joshhunt) -* **AzureMonitor:** remove requirement for default subscription. [#34787](https://github.com/grafana/grafana/pull/34787), [@kostrse](https://github.com/kostrse) -* **CloudWatch:** Add Lambda@Edge Amazon CloudFront metrics. [#34561](https://github.com/grafana/grafana/pull/34561), [@razor-x](https://github.com/razor-x) -* **CloudWatch:** Add missing AWS and AppSync metrics. [#34691](https://github.com/grafana/grafana/pull/34691), [@razor-x](https://github.com/razor-x) -* **ConfirmModal:** Auto focus delete button. [#34917](https://github.com/grafana/grafana/pull/34917), [@torkelo](https://github.com/torkelo) -* **Explore:** Add caching for queries that are run from logs navigation. [#34297](https://github.com/grafana/grafana/pull/34297), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki:** Add formatting for annotations. [#34774](https://github.com/grafana/grafana/pull/34774), [@fredr](https://github.com/fredr) -* **Loki:** Bring back processed bytes as meta information. [#34092](https://github.com/grafana/grafana/pull/34092), [@mmenbawy](https://github.com/mmenbawy) -* **NodeGraph:** Display node graph collapsed by default with trace view. [#34491](https://github.com/grafana/grafana/pull/34491), [@aocenas](https://github.com/aocenas) -* **Overrides:** Include a manual override option to hide something from visualization. [#34783](https://github.com/grafana/grafana/pull/34783), [@torkelo](https://github.com/torkelo) -* **PieChart:** Support row data in pie charts. [#34755](https://github.com/grafana/grafana/pull/34755), [@torkelo](https://github.com/torkelo) -* **Prometheus:** Update default HTTP method to POST for existing data sources. [#34599](https://github.com/grafana/grafana/pull/34599), [@ivanahuckova](https://github.com/ivanahuckova) -* **Time series panel:** Position tooltip correctly when window is scrolled or resized. [#34782](https://github.com/grafana/grafana/pull/34782), [@dprokop](https://github.com/dprokop) +- **API:** Support folder UID in dashboards API. [#33991](https://github.com/grafana/grafana/pull/33991), [@zserge](https://github.com/zserge) +- **Alerting:** Add support for configuring avatar URL for the Discord notifier. [#33355](https://github.com/grafana/grafana/pull/33355), [@ChipWolf](https://github.com/ChipWolf) +- **Alerting:** Clarify that Threema Gateway Alerts support only Basic IDs. [#34828](https://github.com/grafana/grafana/pull/34828), [@dbrgn](https://github.com/dbrgn) +- **Azure:** Expose Azure settings to external plugins. [#34484](https://github.com/grafana/grafana/pull/34484), [@sunker](https://github.com/sunker) +- **AzureMonitor:** Deprecate using separate credentials for Azure Monitor Logs. [#34758](https://github.com/grafana/grafana/pull/34758), [@andresmgot](https://github.com/andresmgot) +- **AzureMonitor:** Display variables in resource picker for Azure Monitor Logs. [#34648](https://github.com/grafana/grafana/pull/34648), [@joshhunt](https://github.com/joshhunt) +- **AzureMonitor:** Hide application insights for data sources not using it. [#34725](https://github.com/grafana/grafana/pull/34725), [@joshhunt](https://github.com/joshhunt) +- **AzureMonitor:** Support querying subscriptions and resource groups in Azure Monitor Logs. [#34766](https://github.com/grafana/grafana/pull/34766), [@joshhunt](https://github.com/joshhunt) +- **AzureMonitor:** remove requirement for default subscription. [#34787](https://github.com/grafana/grafana/pull/34787), [@kostrse](https://github.com/kostrse) +- **CloudWatch:** Add Lambda@Edge Amazon CloudFront metrics. [#34561](https://github.com/grafana/grafana/pull/34561), [@razor-x](https://github.com/razor-x) +- **CloudWatch:** Add missing AWS and AppSync metrics. [#34691](https://github.com/grafana/grafana/pull/34691), [@razor-x](https://github.com/razor-x) +- **ConfirmModal:** Auto focus delete button. [#34917](https://github.com/grafana/grafana/pull/34917), [@torkelo](https://github.com/torkelo) +- **Explore:** Add caching for queries that are run from logs navigation. [#34297](https://github.com/grafana/grafana/pull/34297), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki:** Add formatting for annotations. [#34774](https://github.com/grafana/grafana/pull/34774), [@fredr](https://github.com/fredr) +- **Loki:** Bring back processed bytes as meta information. [#34092](https://github.com/grafana/grafana/pull/34092), [@mmenbawy](https://github.com/mmenbawy) +- **NodeGraph:** Display node graph collapsed by default with trace view. [#34491](https://github.com/grafana/grafana/pull/34491), [@aocenas](https://github.com/aocenas) +- **Overrides:** Include a manual override option to hide something from visualization. [#34783](https://github.com/grafana/grafana/pull/34783), [@torkelo](https://github.com/torkelo) +- **PieChart:** Support row data in pie charts. [#34755](https://github.com/grafana/grafana/pull/34755), [@torkelo](https://github.com/torkelo) +- **Prometheus:** Update default HTTP method to POST for existing data sources. [#34599](https://github.com/grafana/grafana/pull/34599), [@ivanahuckova](https://github.com/ivanahuckova) +- **Time series panel:** Position tooltip correctly when window is scrolled or resized. [#34782](https://github.com/grafana/grafana/pull/34782), [@dprokop](https://github.com/dprokop) ### Bug fixes -* **Admin:** Fix infinite loading edit on the profile page. [#34627](https://github.com/grafana/grafana/pull/34627), [@hugohaggmark](https://github.com/hugohaggmark) -* **Color:** Fix issues with random colors in string and date fields. [#34913](https://github.com/grafana/grafana/pull/34913), [@torkelo](https://github.com/torkelo) -* **Dashboard:** Fix issue with title or folder change has no effect after exiting settings view. [#34677](https://github.com/grafana/grafana/pull/34677), [@torkelo](https://github.com/torkelo) -* **DataLinks:** Fix an issue __series.name is not working in data link. [#34932](https://github.com/grafana/grafana/pull/34932), [@torkelo](https://github.com/torkelo) -* **Datasource:** Fix dataproxy timeout should always be applied for outgoing data source HTTP requests. [#34597](https://github.com/grafana/grafana/pull/34597), [@dsotirakis](https://github.com/dsotirakis) -* **Elasticsearch:** Fix NewClient not passing httpClientProvider to client impl. [#34539](https://github.com/grafana/grafana/pull/34539), [@KiVirgil](https://github.com/KiVirgil) -* **Explore:** Fix Browser title not updated on Navigation to Explore. [#34651](https://github.com/grafana/grafana/pull/34651), [@axelavargas](https://github.com/axelavargas) -* **GraphNG:** Remove fieldName and hideInLegend properties from UPlotSeriesBuilder. [#34901](https://github.com/grafana/grafana/pull/34901), [@dprokop](https://github.com/dprokop) -* **OAuth:** Fix fallback to auto_assign_org_role setting for Azure AD OAuth when no role claims exists. [#34838](https://github.com/grafana/grafana/pull/34838), [@idafurjes](https://github.com/idafurjes) -* **PanelChrome:** Fix issue with empty panel after adding a non data panel and coming back from panel edit. [#34765](https://github.com/grafana/grafana/pull/34765), [@torkelo](https://github.com/torkelo) -* **StatPanel:** Fix data link tooltip not showing for single value. [#34934](https://github.com/grafana/grafana/pull/34934), [@torkelo](https://github.com/torkelo) -* **Table:** Fix sorting for number fields. [#34722](https://github.com/grafana/grafana/pull/34722), [@hugohaggmark](https://github.com/hugohaggmark) -* **Table:** Have text underline for datalink, and add support for image datalink. [#34635](https://github.com/grafana/grafana/pull/34635), [@thisisobate](https://github.com/thisisobate) -* **Time series panel:** Position tooltip correctly when window is scrolled or resized. [#34584](https://github.com/grafana/grafana/pull/34584), [@dprokop](https://github.com/dprokop) -* **Transformations:** Prevent FilterByValue transform from crashing panel edit. [#34747](https://github.com/grafana/grafana/pull/34747), [@jackw](https://github.com/jackw) +- **Admin:** Fix infinite loading edit on the profile page. [#34627](https://github.com/grafana/grafana/pull/34627), [@hugohaggmark](https://github.com/hugohaggmark) +- **Color:** Fix issues with random colors in string and date fields. [#34913](https://github.com/grafana/grafana/pull/34913), [@torkelo](https://github.com/torkelo) +- **Dashboard:** Fix issue with title or folder change has no effect after exiting settings view. [#34677](https://github.com/grafana/grafana/pull/34677), [@torkelo](https://github.com/torkelo) +- **DataLinks:** Fix an issue \_\_series.name is not working in data link. [#34932](https://github.com/grafana/grafana/pull/34932), [@torkelo](https://github.com/torkelo) +- **Datasource:** Fix dataproxy timeout should always be applied for outgoing data source HTTP requests. [#34597](https://github.com/grafana/grafana/pull/34597), [@dsotirakis](https://github.com/dsotirakis) +- **Elasticsearch:** Fix NewClient not passing httpClientProvider to client impl. [#34539](https://github.com/grafana/grafana/pull/34539), [@KiVirgil](https://github.com/KiVirgil) +- **Explore:** Fix Browser title not updated on Navigation to Explore. [#34651](https://github.com/grafana/grafana/pull/34651), [@axelavargas](https://github.com/axelavargas) +- **GraphNG:** Remove fieldName and hideInLegend properties from UPlotSeriesBuilder. [#34901](https://github.com/grafana/grafana/pull/34901), [@dprokop](https://github.com/dprokop) +- **OAuth:** Fix fallback to auto_assign_org_role setting for Azure AD OAuth when no role claims exists. [#34838](https://github.com/grafana/grafana/pull/34838), [@idafurjes](https://github.com/idafurjes) +- **PanelChrome:** Fix issue with empty panel after adding a non data panel and coming back from panel edit. [#34765](https://github.com/grafana/grafana/pull/34765), [@torkelo](https://github.com/torkelo) +- **StatPanel:** Fix data link tooltip not showing for single value. [#34934](https://github.com/grafana/grafana/pull/34934), [@torkelo](https://github.com/torkelo) +- **Table:** Fix sorting for number fields. [#34722](https://github.com/grafana/grafana/pull/34722), [@hugohaggmark](https://github.com/hugohaggmark) +- **Table:** Have text underline for datalink, and add support for image datalink. [#34635](https://github.com/grafana/grafana/pull/34635), [@thisisobate](https://github.com/thisisobate) +- **Time series panel:** Position tooltip correctly when window is scrolled or resized. [#34584](https://github.com/grafana/grafana/pull/34584), [@dprokop](https://github.com/dprokop) +- **Transformations:** Prevent FilterByValue transform from crashing panel edit. [#34747](https://github.com/grafana/grafana/pull/34747), [@jackw](https://github.com/jackw) ### Breaking changes - -The default HTTP method for Prometheus data source is now POST. Previously, it was GET. The POST APIs have been available since January 2018 (Prometheus 2.1.0) and they have fewer limitations than the GET APIs. For example, when dealing with high cardinality labels, GET hits the URL size limit. +The default HTTP method for Prometheus data source is now POST. Previously, it was GET. The POST APIs have been available since January 2018 (Prometheus 2.1.0) and they have fewer limitations than the GET APIs. For example, when dealing with high cardinality labels, GET hits the URL size limit. If you have a Prometheus instance with version < 2.1.0, which uses the default HTTP method, update your HTTP method to GET. Issue [#34599](https://github.com/grafana/grafana/issues/34599) - diff --git a/docs/sources/release-notes/release-notes-8-0-0.md b/docs/sources/release-notes/release-notes-8-0-0.md index eda6c7a1c85..0f9cc4b5764 100644 --- a/docs/sources/release-notes/release-notes-8-0-0.md +++ b/docs/sources/release-notes/release-notes-8-0-0.md @@ -10,30 +10,28 @@ list = false ### Features and enhancements -* **AzureMonitor:** Require default subscription for workspaces() template variable query. [#35181](https://github.com/grafana/grafana/pull/35181), [@joshhunt](https://github.com/joshhunt) -* **AzureMonitor:** Use resource type display names in the UI. [#35060](https://github.com/grafana/grafana/pull/35060), [@joshhunt](https://github.com/joshhunt) -* **Dashboard:** Remove support for loading and deleting dashboard by slug. [#35104](https://github.com/grafana/grafana/pull/35104), [@dsotirakis](https://github.com/dsotirakis) -* **InfluxDB:** Deprecate direct browser access in data source. [#35105](https://github.com/grafana/grafana/pull/35105), [@gabor](https://github.com/gabor) -* **VizLegend:** Add a read-only property. [#35096](https://github.com/grafana/grafana/pull/35096), [@dprokop](https://github.com/dprokop) +- **AzureMonitor:** Require default subscription for workspaces() template variable query. [#35181](https://github.com/grafana/grafana/pull/35181), [@joshhunt](https://github.com/joshhunt) +- **AzureMonitor:** Use resource type display names in the UI. [#35060](https://github.com/grafana/grafana/pull/35060), [@joshhunt](https://github.com/joshhunt) +- **Dashboard:** Remove support for loading and deleting dashboard by slug. [#35104](https://github.com/grafana/grafana/pull/35104), [@dsotirakis](https://github.com/dsotirakis) +- **InfluxDB:** Deprecate direct browser access in data source. [#35105](https://github.com/grafana/grafana/pull/35105), [@gabor](https://github.com/gabor) +- **VizLegend:** Add a read-only property. [#35096](https://github.com/grafana/grafana/pull/35096), [@dprokop](https://github.com/dprokop) ### Bug fixes -* **AzureMonitor:** Fix Azure Resource Graph queries in Azure China. [#35235](https://github.com/grafana/grafana/pull/35235), [@kostrse](https://github.com/kostrse) -* **Checkbox:** Fix vertical layout issue with checkboxes due to fixed height. [#35022](https://github.com/grafana/grafana/pull/35022), [@torkelo](https://github.com/torkelo) -* **Dashboard:** Fix Table view when editing causes the panel data to not update. [#34998](https://github.com/grafana/grafana/pull/34998), [@axelavargas](https://github.com/axelavargas) -* **Dashboard:** Fix issues where unsaved-changes warning is not displayed. [#34989](https://github.com/grafana/grafana/pull/34989), [@torkelo](https://github.com/torkelo) -* **Login:** Fixes Unauthorized message showing when on login page or snapshot page. [#35311](https://github.com/grafana/grafana/pull/35311), [@torkelo](https://github.com/torkelo) -* **NodeGraph:** Fix sorting markers in grid view. [#35200](https://github.com/grafana/grafana/pull/35200), [@aocenas](https://github.com/aocenas) -* **Short URL:** Include orgId in generated short URLs. [#34696](https://github.com/grafana/grafana/pull/34696), [@farodin91](https://github.com/farodin91) -* **Variables:** Support raw values of boolean type. [#34727](https://github.com/grafana/grafana/pull/34727), [@simPod](https://github.com/simPod) +- **AzureMonitor:** Fix Azure Resource Graph queries in Azure China. [#35235](https://github.com/grafana/grafana/pull/35235), [@kostrse](https://github.com/kostrse) +- **Checkbox:** Fix vertical layout issue with checkboxes due to fixed height. [#35022](https://github.com/grafana/grafana/pull/35022), [@torkelo](https://github.com/torkelo) +- **Dashboard:** Fix Table view when editing causes the panel data to not update. [#34998](https://github.com/grafana/grafana/pull/34998), [@axelavargas](https://github.com/axelavargas) +- **Dashboard:** Fix issues where unsaved-changes warning is not displayed. [#34989](https://github.com/grafana/grafana/pull/34989), [@torkelo](https://github.com/torkelo) +- **Login:** Fixes Unauthorized message showing when on login page or snapshot page. [#35311](https://github.com/grafana/grafana/pull/35311), [@torkelo](https://github.com/torkelo) +- **NodeGraph:** Fix sorting markers in grid view. [#35200](https://github.com/grafana/grafana/pull/35200), [@aocenas](https://github.com/aocenas) +- **Short URL:** Include orgId in generated short URLs. [#34696](https://github.com/grafana/grafana/pull/34696), [@farodin91](https://github.com/farodin91) +- **Variables:** Support raw values of boolean type. [#34727](https://github.com/grafana/grafana/pull/34727), [@simPod](https://github.com/simPod) ### Breaking changes - The following endpoints were deprecated for Grafana v5.0 and support for them has now been removed: -* GET `/dashboards/db/:slug` -* GET `/dashboard-solo/db/:slug` -* GET `/api/dashboard/db/:slug` -* DELETE `/api/dashboards/db/:slug` Issue [#35104](https://github.com/grafana/grafana/issues/35104) - +- GET `/dashboards/db/:slug` +- GET `/dashboard-solo/db/:slug` +- GET `/api/dashboard/db/:slug` +- DELETE `/api/dashboards/db/:slug` Issue [#35104](https://github.com/grafana/grafana/issues/35104) diff --git a/docs/sources/release-notes/release-notes-8-0-1.md b/docs/sources/release-notes/release-notes-8-0-1.md index 518610e79ec..d4e56d151c3 100644 --- a/docs/sources/release-notes/release-notes-8-0-1.md +++ b/docs/sources/release-notes/release-notes-8-0-1.md @@ -10,18 +10,17 @@ list = false ### Bug fixes -* **Alerting/SSE:** Fix "count_non_null" reducer validation. [#35451](https://github.com/grafana/grafana/pull/35451), [@kylebrandt](https://github.com/kylebrandt) -* **Cloudwatch:** Fix duplicated time series. [#35433](https://github.com/grafana/grafana/pull/35433), [@sunker](https://github.com/sunker) -* **Cloudwatch:** Fix missing defaultRegion. [#35436](https://github.com/grafana/grafana/pull/35436), [@andresmgot](https://github.com/andresmgot) -* **Dashboard:** Fix Dashboard init failed error on dashboards with old singlestat panels in collapsed rows. [#35425](https://github.com/grafana/grafana/pull/35425), [@torkelo](https://github.com/torkelo) -* **Datasource:** Fix storing timeout option as numeric. [#35441](https://github.com/grafana/grafana/pull/35441), [@marefr](https://github.com/marefr) -* **Postgres/MySQL/MSSQL:** Fix annotation parsing for empty responses. [#35367](https://github.com/grafana/grafana/pull/35367), [@marcbachmann](https://github.com/marcbachmann) -* **Postgres/MySQL/MSSQL:** Numeric/non-string values are now returned from query variables. [#35411](https://github.com/grafana/grafana/pull/35411), [@marefr](https://github.com/marefr) -* **Postgres:** Fix an error that was thrown when the annotation query did not return any results. [#35382](https://github.com/grafana/grafana/pull/35382), [@dprokop](https://github.com/dprokop) -* **StatPanel:** Fix an issue with the appearance of the graph when switching color mode. [#35460](https://github.com/grafana/grafana/pull/35460), [@torkelo](https://github.com/torkelo) -* **Visualizations:** Fix an issue in the Stat/BarGauge/Gauge/PieChart panels where all values mode were showing the same name if they had the same value.. [#35368](https://github.com/grafana/grafana/pull/35368), [@torkelo](https://github.com/torkelo) +- **Alerting/SSE:** Fix "count_non_null" reducer validation. [#35451](https://github.com/grafana/grafana/pull/35451), [@kylebrandt](https://github.com/kylebrandt) +- **Cloudwatch:** Fix duplicated time series. [#35433](https://github.com/grafana/grafana/pull/35433), [@sunker](https://github.com/sunker) +- **Cloudwatch:** Fix missing defaultRegion. [#35436](https://github.com/grafana/grafana/pull/35436), [@andresmgot](https://github.com/andresmgot) +- **Dashboard:** Fix Dashboard init failed error on dashboards with old singlestat panels in collapsed rows. [#35425](https://github.com/grafana/grafana/pull/35425), [@torkelo](https://github.com/torkelo) +- **Datasource:** Fix storing timeout option as numeric. [#35441](https://github.com/grafana/grafana/pull/35441), [@marefr](https://github.com/marefr) +- **Postgres/MySQL/MSSQL:** Fix annotation parsing for empty responses. [#35367](https://github.com/grafana/grafana/pull/35367), [@marcbachmann](https://github.com/marcbachmann) +- **Postgres/MySQL/MSSQL:** Numeric/non-string values are now returned from query variables. [#35411](https://github.com/grafana/grafana/pull/35411), [@marefr](https://github.com/marefr) +- **Postgres:** Fix an error that was thrown when the annotation query did not return any results. [#35382](https://github.com/grafana/grafana/pull/35382), [@dprokop](https://github.com/dprokop) +- **StatPanel:** Fix an issue with the appearance of the graph when switching color mode. [#35460](https://github.com/grafana/grafana/pull/35460), [@torkelo](https://github.com/torkelo) +- **Visualizations:** Fix an issue in the Stat/BarGauge/Gauge/PieChart panels where all values mode were showing the same name if they had the same value.. [#35368](https://github.com/grafana/grafana/pull/35368), [@torkelo](https://github.com/torkelo) ### Plugin development fixes & changes -* **Toolkit:** Resolve external fonts when Grafana is served from a sub path. [#35352](https://github.com/grafana/grafana/pull/35352), [@jackw](https://github.com/jackw) - +- **Toolkit:** Resolve external fonts when Grafana is served from a sub path. [#35352](https://github.com/grafana/grafana/pull/35352), [@jackw](https://github.com/jackw) diff --git a/docs/sources/release-notes/release-notes-8-0-2.md b/docs/sources/release-notes/release-notes-8-0-2.md index 0737dd9df46..48c93a4160a 100644 --- a/docs/sources/release-notes/release-notes-8-0-2.md +++ b/docs/sources/release-notes/release-notes-8-0-2.md @@ -10,11 +10,11 @@ list = false ### Features and enhancements -* **Datasource:** Add support for max_conns_per_host in dataproxy settings. [#35520](https://github.com/grafana/grafana/pull/35520), [@jvrplmlmn](https://github.com/jvrplmlmn) +- **Datasource:** Add support for max_conns_per_host in dataproxy settings. [#35520](https://github.com/grafana/grafana/pull/35520), [@jvrplmlmn](https://github.com/jvrplmlmn) ### Bug fixes -* **Configuration:** Fix changing org preferences in FireFox. [#35549](https://github.com/grafana/grafana/pull/35549), [@hugohaggmark](https://github.com/hugohaggmark) -* **PieChart:** Fix legend dimension limits. [#35563](https://github.com/grafana/grafana/pull/35563), [@torkelo](https://github.com/torkelo) -* **Postgres/MySQL/MSSQL:** Fix panic in concurrent map writes. [#35510](https://github.com/grafana/grafana/pull/35510), [@marefr](https://github.com/marefr) -* **Variables:** Hide default data source if missing from regex. [#35561](https://github.com/grafana/grafana/pull/35561), [@hugohaggmark](https://github.com/hugohaggmark) +- **Configuration:** Fix changing org preferences in FireFox. [#35549](https://github.com/grafana/grafana/pull/35549), [@hugohaggmark](https://github.com/hugohaggmark) +- **PieChart:** Fix legend dimension limits. [#35563](https://github.com/grafana/grafana/pull/35563), [@torkelo](https://github.com/torkelo) +- **Postgres/MySQL/MSSQL:** Fix panic in concurrent map writes. [#35510](https://github.com/grafana/grafana/pull/35510), [@marefr](https://github.com/marefr) +- **Variables:** Hide default data source if missing from regex. [#35561](https://github.com/grafana/grafana/pull/35561), [@hugohaggmark](https://github.com/hugohaggmark) diff --git a/docs/sources/release-notes/release-notes-8-0-3.md b/docs/sources/release-notes/release-notes-8-0-3.md index 688beade513..689a1044870 100644 --- a/docs/sources/release-notes/release-notes-8-0-3.md +++ b/docs/sources/release-notes/release-notes-8-0-3.md @@ -10,23 +10,22 @@ list = false ### Features and enhancements -* **Alerting:** Increase alertmanager_conf column if MySQL. [#35657](https://github.com/grafana/grafana/pull/35657), [@kylebrandt](https://github.com/kylebrandt) -* **Time series/Bar chart panel:** Handle infinite numbers as nulls when converting to plot array. [#35638](https://github.com/grafana/grafana/pull/35638), [@dprokop](https://github.com/dprokop) -* **TimeSeries:** Ensure series overrides that contain color are migrated, and migrate the previous `fieldConfig` when changing the panel type. [#35676](https://github.com/grafana/grafana/pull/35676), [@ashharrison90](https://github.com/ashharrison90) -* **ValueMappings:** Improve singlestat value mappings migration. [#35578](https://github.com/grafana/grafana/pull/35578), [@dprokop](https://github.com/dprokop) +- **Alerting:** Increase alertmanager_conf column if MySQL. [#35657](https://github.com/grafana/grafana/pull/35657), [@kylebrandt](https://github.com/kylebrandt) +- **Time series/Bar chart panel:** Handle infinite numbers as nulls when converting to plot array. [#35638](https://github.com/grafana/grafana/pull/35638), [@dprokop](https://github.com/dprokop) +- **TimeSeries:** Ensure series overrides that contain color are migrated, and migrate the previous `fieldConfig` when changing the panel type. [#35676](https://github.com/grafana/grafana/pull/35676), [@ashharrison90](https://github.com/ashharrison90) +- **ValueMappings:** Improve singlestat value mappings migration. [#35578](https://github.com/grafana/grafana/pull/35578), [@dprokop](https://github.com/dprokop) ### Bug fixes -* **Annotations:** Fix annotation line and marker colors. [#35608](https://github.com/grafana/grafana/pull/35608), [@torkelo](https://github.com/torkelo) -* **AzureMonitor:** Fix KQL template variable queries without default workspace. [#35836](https://github.com/grafana/grafana/pull/35836), [@joshhunt](https://github.com/joshhunt) -* **CloudWatch/Logs:** Fix missing response data for log queries. [#35724](https://github.com/grafana/grafana/pull/35724), [@aocenas](https://github.com/aocenas) -* **Elasticsearch:** Restore previous field naming strategy when using variables. [#35624](https://github.com/grafana/grafana/pull/35624), [@Elfo404](https://github.com/Elfo404) -* **LibraryPanels:** Fix crash in library panels list when panel plugin is not found. [#35907](https://github.com/grafana/grafana/pull/35907), [@torkelo](https://github.com/torkelo) -* **LogsPanel:** Fix performance drop when moving logs panel in dashboard. [#35379](https://github.com/grafana/grafana/pull/35379), [@aocenas](https://github.com/aocenas) -* **Loki:** Parse log levels when ANSI coloring is enabled. [#35607](https://github.com/grafana/grafana/pull/35607), [@olbo98](https://github.com/olbo98) -* **MSSQL:** Fix issue with hidden queries still being executed. [#35787](https://github.com/grafana/grafana/pull/35787), [@torkelo](https://github.com/torkelo) -* **PanelEdit:** Display the VisualizationPicker that was not displayed if a panel has an unknown panel plugin. [#35831](https://github.com/grafana/grafana/pull/35831), [@jackw](https://github.com/jackw) -* **Plugins:** Fix loading symbolically linked plugins. [#35635](https://github.com/grafana/grafana/pull/35635), [@domasx2](https://github.com/domasx2) -* **Prometheus:** Fix issue where legend name was replaced with name Value in stat and gauge panels. [#35863](https://github.com/grafana/grafana/pull/35863), [@torkelo](https://github.com/torkelo) -* **State Timeline:** Fix crash when hovering over panel. [#35692](https://github.com/grafana/grafana/pull/35692), [@hugohaggmark](https://github.com/hugohaggmark) - +- **Annotations:** Fix annotation line and marker colors. [#35608](https://github.com/grafana/grafana/pull/35608), [@torkelo](https://github.com/torkelo) +- **AzureMonitor:** Fix KQL template variable queries without default workspace. [#35836](https://github.com/grafana/grafana/pull/35836), [@joshhunt](https://github.com/joshhunt) +- **CloudWatch/Logs:** Fix missing response data for log queries. [#35724](https://github.com/grafana/grafana/pull/35724), [@aocenas](https://github.com/aocenas) +- **Elasticsearch:** Restore previous field naming strategy when using variables. [#35624](https://github.com/grafana/grafana/pull/35624), [@Elfo404](https://github.com/Elfo404) +- **LibraryPanels:** Fix crash in library panels list when panel plugin is not found. [#35907](https://github.com/grafana/grafana/pull/35907), [@torkelo](https://github.com/torkelo) +- **LogsPanel:** Fix performance drop when moving logs panel in dashboard. [#35379](https://github.com/grafana/grafana/pull/35379), [@aocenas](https://github.com/aocenas) +- **Loki:** Parse log levels when ANSI coloring is enabled. [#35607](https://github.com/grafana/grafana/pull/35607), [@olbo98](https://github.com/olbo98) +- **MSSQL:** Fix issue with hidden queries still being executed. [#35787](https://github.com/grafana/grafana/pull/35787), [@torkelo](https://github.com/torkelo) +- **PanelEdit:** Display the VisualizationPicker that was not displayed if a panel has an unknown panel plugin. [#35831](https://github.com/grafana/grafana/pull/35831), [@jackw](https://github.com/jackw) +- **Plugins:** Fix loading symbolically linked plugins. [#35635](https://github.com/grafana/grafana/pull/35635), [@domasx2](https://github.com/domasx2) +- **Prometheus:** Fix issue where legend name was replaced with name Value in stat and gauge panels. [#35863](https://github.com/grafana/grafana/pull/35863), [@torkelo](https://github.com/torkelo) +- **State Timeline:** Fix crash when hovering over panel. [#35692](https://github.com/grafana/grafana/pull/35692), [@hugohaggmark](https://github.com/hugohaggmark) diff --git a/docs/sources/release-notes/release-notes-8-0-4.md b/docs/sources/release-notes/release-notes-8-0-4.md index 263d9a4f176..6d96004f87a 100644 --- a/docs/sources/release-notes/release-notes-8-0-4.md +++ b/docs/sources/release-notes/release-notes-8-0-4.md @@ -10,16 +10,15 @@ list = false ### Features and enhancements -* **Live:** Rely on app url for origin check. [#35983](https://github.com/grafana/grafana/pull/35983), [@FZambia](https://github.com/FZambia) -* **PieChart:** Sort legend descending, update placeholder to show default …. [#36062](https://github.com/grafana/grafana/pull/36062), [@ashharrison90](https://github.com/ashharrison90) -* **TimeSeries panel:** Do not reinitialize plot when thresholds mode change. [#35952](https://github.com/grafana/grafana/pull/35952), [@dprokop](https://github.com/dprokop) +- **Live:** Rely on app url for origin check. [#35983](https://github.com/grafana/grafana/pull/35983), [@FZambia](https://github.com/FZambia) +- **PieChart:** Sort legend descending, update placeholder to show default …. [#36062](https://github.com/grafana/grafana/pull/36062), [@ashharrison90](https://github.com/ashharrison90) +- **TimeSeries panel:** Do not reinitialize plot when thresholds mode change. [#35952](https://github.com/grafana/grafana/pull/35952), [@dprokop](https://github.com/dprokop) ### Bug fixes -* **Elasticsearch:** Allow case sensitive custom options in date_histogram interval. [#36168](https://github.com/grafana/grafana/pull/36168), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch:** Restore previous field naming strategy when using variables. [#35624](https://github.com/grafana/grafana/pull/35624), [@Elfo404](https://github.com/Elfo404) -* **Explore:** Fix import of queries between SQL data sources. [#36210](https://github.com/grafana/grafana/pull/36210), [@ivanahuckova](https://github.com/ivanahuckova) -* **InfluxDB:** InfluxQL query editor: fix retention policy handling. [#36022](https://github.com/grafana/grafana/pull/36022), [@gabor](https://github.com/gabor) -* **Loki:** Send correct time range in template variable queries. [#36268](https://github.com/grafana/grafana/pull/36268), [@ivanahuckova](https://github.com/ivanahuckova) -* **TimeSeries:** Preserve RegExp series overrides when migrating from old graph panel. [#36134](https://github.com/grafana/grafana/pull/36134), [@ashharrison90](https://github.com/ashharrison90) - +- **Elasticsearch:** Allow case sensitive custom options in date_histogram interval. [#36168](https://github.com/grafana/grafana/pull/36168), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch:** Restore previous field naming strategy when using variables. [#35624](https://github.com/grafana/grafana/pull/35624), [@Elfo404](https://github.com/Elfo404) +- **Explore:** Fix import of queries between SQL data sources. [#36210](https://github.com/grafana/grafana/pull/36210), [@ivanahuckova](https://github.com/ivanahuckova) +- **InfluxDB:** InfluxQL query editor: fix retention policy handling. [#36022](https://github.com/grafana/grafana/pull/36022), [@gabor](https://github.com/gabor) +- **Loki:** Send correct time range in template variable queries. [#36268](https://github.com/grafana/grafana/pull/36268), [@ivanahuckova](https://github.com/ivanahuckova) +- **TimeSeries:** Preserve RegExp series overrides when migrating from old graph panel. [#36134](https://github.com/grafana/grafana/pull/36134), [@ashharrison90](https://github.com/ashharrison90) diff --git a/docs/sources/release-notes/release-notes-8-0-5.md b/docs/sources/release-notes/release-notes-8-0-5.md index bc685487919..e8dc6ced6b6 100644 --- a/docs/sources/release-notes/release-notes-8-0-5.md +++ b/docs/sources/release-notes/release-notes-8-0-5.md @@ -10,19 +10,18 @@ list = false ### Features and enhancements -* **Cloudwatch Logs:** Send error down to client. [#36277](https://github.com/grafana/grafana/pull/36277), [@zoltanbedi](https://github.com/zoltanbedi) -* **Folders:** Return 409 Conflict status when folder already exists. [#36429](https://github.com/grafana/grafana/pull/36429), [@dsotirakis](https://github.com/dsotirakis) -* **TimeSeries:** Do not show series in tooltip if it's hidden in the viz. [#36353](https://github.com/grafana/grafana/pull/36353), [@dprokop](https://github.com/dprokop) +- **Cloudwatch Logs:** Send error down to client. [#36277](https://github.com/grafana/grafana/pull/36277), [@zoltanbedi](https://github.com/zoltanbedi) +- **Folders:** Return 409 Conflict status when folder already exists. [#36429](https://github.com/grafana/grafana/pull/36429), [@dsotirakis](https://github.com/dsotirakis) +- **TimeSeries:** Do not show series in tooltip if it's hidden in the viz. [#36353](https://github.com/grafana/grafana/pull/36353), [@dprokop](https://github.com/dprokop) ### Bug fixes -* **AzureMonitor:** Fix issue where resource group name is missing on the resource picker button. [#36400](https://github.com/grafana/grafana/pull/36400), [@joshhunt](https://github.com/joshhunt) -* **Chore:** Fix AWS auth assuming role with workspace IAM. [#36430](https://github.com/grafana/grafana/pull/36430), [@wbrowne](https://github.com/wbrowne) -* **DashboardQueryRunner:** Fixes unrestrained subscriptions being created. [#36371](https://github.com/grafana/grafana/pull/36371), [@hugohaggmark](https://github.com/hugohaggmark) -* **DateFormats:** Fix reading correct setting key for use_browser_locale. [#36428](https://github.com/grafana/grafana/pull/36428), [@torkelo](https://github.com/torkelo) -* **Links:** Fix links to other apps outside Grafana when under sub path. [#36498](https://github.com/grafana/grafana/pull/36498), [@torkelo](https://github.com/torkelo) -* **Snapshots:** Fix snapshot absolute time range issue. [#36350](https://github.com/grafana/grafana/pull/36350), [@torkelo](https://github.com/torkelo) -* **Table:** Fix data link color. [#36446](https://github.com/grafana/grafana/pull/36446), [@tharun208](https://github.com/tharun208) -* **Time Series:** Fix X-axis time format when tick increment is larger than a year. [#36335](https://github.com/grafana/grafana/pull/36335), [@torkelo](https://github.com/torkelo) -* **Tooltip Plugin:** Prevent Tooltip render if field is undefined. [#36260](https://github.com/grafana/grafana/pull/36260), [@ashharrison90](https://github.com/ashharrison90) - +- **AzureMonitor:** Fix issue where resource group name is missing on the resource picker button. [#36400](https://github.com/grafana/grafana/pull/36400), [@joshhunt](https://github.com/joshhunt) +- **Chore:** Fix AWS auth assuming role with workspace IAM. [#36430](https://github.com/grafana/grafana/pull/36430), [@wbrowne](https://github.com/wbrowne) +- **DashboardQueryRunner:** Fixes unrestrained subscriptions being created. [#36371](https://github.com/grafana/grafana/pull/36371), [@hugohaggmark](https://github.com/hugohaggmark) +- **DateFormats:** Fix reading correct setting key for use_browser_locale. [#36428](https://github.com/grafana/grafana/pull/36428), [@torkelo](https://github.com/torkelo) +- **Links:** Fix links to other apps outside Grafana when under sub path. [#36498](https://github.com/grafana/grafana/pull/36498), [@torkelo](https://github.com/torkelo) +- **Snapshots:** Fix snapshot absolute time range issue. [#36350](https://github.com/grafana/grafana/pull/36350), [@torkelo](https://github.com/torkelo) +- **Table:** Fix data link color. [#36446](https://github.com/grafana/grafana/pull/36446), [@tharun208](https://github.com/tharun208) +- **Time Series:** Fix X-axis time format when tick increment is larger than a year. [#36335](https://github.com/grafana/grafana/pull/36335), [@torkelo](https://github.com/torkelo) +- **Tooltip Plugin:** Prevent Tooltip render if field is undefined. [#36260](https://github.com/grafana/grafana/pull/36260), [@ashharrison90](https://github.com/ashharrison90) diff --git a/docs/sources/release-notes/release-notes-8-0-6.md b/docs/sources/release-notes/release-notes-8-0-6.md index b66f787e94d..e59ffcd0828 100644 --- a/docs/sources/release-notes/release-notes-8-0-6.md +++ b/docs/sources/release-notes/release-notes-8-0-6.md @@ -10,22 +10,22 @@ list = false ### Features and enhancements -* **Alerting:** Add annotation upon alert state change. [#36535](https://github.com/grafana/grafana/pull/36535), [@davidmparrott](https://github.com/davidmparrott) -* **Alerting:** Allow space in label and annotation names. [#36549](https://github.com/grafana/grafana/pull/36549), [@codesome](https://github.com/codesome) -* **InfluxDB:** Improve legend labels for InfluxDB query results. [#36603](https://github.com/grafana/grafana/pull/36603), [@gabor](https://github.com/gabor) +- **Alerting:** Add annotation upon alert state change. [#36535](https://github.com/grafana/grafana/pull/36535), [@davidmparrott](https://github.com/davidmparrott) +- **Alerting:** Allow space in label and annotation names. [#36549](https://github.com/grafana/grafana/pull/36549), [@codesome](https://github.com/codesome) +- **InfluxDB:** Improve legend labels for InfluxDB query results. [#36603](https://github.com/grafana/grafana/pull/36603), [@gabor](https://github.com/gabor) ### Bug fixes -* **Alerting:** Fix improper alert by changing the handling of empty labels. [#36679](https://github.com/grafana/grafana/pull/36679), [@davidmparrott](https://github.com/davidmparrott) -* **CloudWatch/Logs:** Reestablish Cloud Watch alert behavior. [#36558](https://github.com/grafana/grafana/pull/36558), [@aocenas](https://github.com/aocenas) -* **Dashboard:** Avoid migration breaking on fieldConfig without defaults field in folded panel. [#36666](https://github.com/grafana/grafana/pull/36666), [@glindstedt](https://github.com/glindstedt) -* **DashboardList:** Fix issue not re-fetching dashboard list after variable change. [#36591](https://github.com/grafana/grafana/pull/36591), [@torkelo](https://github.com/torkelo) -* **Database:** Fix incorrect format of isolation level configuration parameter for MySQL. [#36565](https://github.com/grafana/grafana/pull/36565), [@marefr](https://github.com/marefr) -* **InfluxDB:** Correct tag filtering on InfluxDB data. [#36570](https://github.com/grafana/grafana/pull/36570), [@gabor](https://github.com/gabor) -* **Links:** Fix links that caused a full page reload. [#36631](https://github.com/grafana/grafana/pull/36631), [@torkelo](https://github.com/torkelo) -* **Live:** Fix HTTP error when InfluxDB metrics have an incomplete or asymmetrical field set. [#36664](https://github.com/grafana/grafana/pull/36664), [@FZambia](https://github.com/FZambia) -* **Postgres/MySQL/MSSQL:** Change time field to "Time" for time series queries. [#36720](https://github.com/grafana/grafana/pull/36720), [@marefr](https://github.com/marefr) -* **Postgres:** Fix the handling of a null return value in query results. [#36648](https://github.com/grafana/grafana/pull/36648), [@idafurjes](https://github.com/idafurjes) -* **Tempo:** Show hex strings instead of uints for IDs. [#36471](https://github.com/grafana/grafana/pull/36471), [@zoltanbedi](https://github.com/zoltanbedi) -* **TimeSeries:** Improve tooltip positioning when tooltip overflows. [#36440](https://github.com/grafana/grafana/pull/36440), [@ashharrison90](https://github.com/ashharrison90) -* **Transformations:** Add 'prepare time series' transformer. [#36737](https://github.com/grafana/grafana/pull/36737), [@ryantxu](https://github.com/ryantxu) +- **Alerting:** Fix improper alert by changing the handling of empty labels. [#36679](https://github.com/grafana/grafana/pull/36679), [@davidmparrott](https://github.com/davidmparrott) +- **CloudWatch/Logs:** Reestablish Cloud Watch alert behavior. [#36558](https://github.com/grafana/grafana/pull/36558), [@aocenas](https://github.com/aocenas) +- **Dashboard:** Avoid migration breaking on fieldConfig without defaults field in folded panel. [#36666](https://github.com/grafana/grafana/pull/36666), [@glindstedt](https://github.com/glindstedt) +- **DashboardList:** Fix issue not re-fetching dashboard list after variable change. [#36591](https://github.com/grafana/grafana/pull/36591), [@torkelo](https://github.com/torkelo) +- **Database:** Fix incorrect format of isolation level configuration parameter for MySQL. [#36565](https://github.com/grafana/grafana/pull/36565), [@marefr](https://github.com/marefr) +- **InfluxDB:** Correct tag filtering on InfluxDB data. [#36570](https://github.com/grafana/grafana/pull/36570), [@gabor](https://github.com/gabor) +- **Links:** Fix links that caused a full page reload. [#36631](https://github.com/grafana/grafana/pull/36631), [@torkelo](https://github.com/torkelo) +- **Live:** Fix HTTP error when InfluxDB metrics have an incomplete or asymmetrical field set. [#36664](https://github.com/grafana/grafana/pull/36664), [@FZambia](https://github.com/FZambia) +- **Postgres/MySQL/MSSQL:** Change time field to "Time" for time series queries. [#36720](https://github.com/grafana/grafana/pull/36720), [@marefr](https://github.com/marefr) +- **Postgres:** Fix the handling of a null return value in query results. [#36648](https://github.com/grafana/grafana/pull/36648), [@idafurjes](https://github.com/idafurjes) +- **Tempo:** Show hex strings instead of uints for IDs. [#36471](https://github.com/grafana/grafana/pull/36471), [@zoltanbedi](https://github.com/zoltanbedi) +- **TimeSeries:** Improve tooltip positioning when tooltip overflows. [#36440](https://github.com/grafana/grafana/pull/36440), [@ashharrison90](https://github.com/ashharrison90) +- **Transformations:** Add 'prepare time series' transformer. [#36737](https://github.com/grafana/grafana/pull/36737), [@ryantxu](https://github.com/ryantxu) diff --git a/docs/sources/release-notes/release-notes-8-1-0-beta1.md b/docs/sources/release-notes/release-notes-8-1-0-beta1.md index 01fc656f458..15191a53849 100644 --- a/docs/sources/release-notes/release-notes-8-1-0-beta1.md +++ b/docs/sources/release-notes/release-notes-8-1-0-beta1.md @@ -10,82 +10,79 @@ list = false ### Features and enhancements -* **Alerting:** Add Alertmanager notifications tab. [#35759](https://github.com/grafana/grafana/pull/35759), [@nathanrodman](https://github.com/nathanrodman) -* **Alerting:** Add button to deactivate current Alertmanager configuration. [#36951](https://github.com/grafana/grafana/pull/36951), [@domasx2](https://github.com/domasx2) -* **Alerting:** Add toggle in Loki/Prometheus data source configuration to opt out of alerting UI. [#36552](https://github.com/grafana/grafana/pull/36552), [@domasx2](https://github.com/domasx2) -* **Alerting:** Allow any "evaluate for" value >=0 in the alert rule form. [#35807](https://github.com/grafana/grafana/pull/35807), [@domasx2](https://github.com/domasx2) -* **Alerting:** Load default configuration from status endpoint, if Cortex Alertmanager returns empty user configuration. [#35769](https://github.com/grafana/grafana/pull/35769), [@domasx2](https://github.com/domasx2) -* **Alerting:** view to display alert rule and its underlying data. [#35546](https://github.com/grafana/grafana/pull/35546), [@mckn](https://github.com/mckn) -* **Annotation panel:** Release the annotation panel. [#36959](https://github.com/grafana/grafana/pull/36959), [@ryantxu](https://github.com/ryantxu) -* **Annotations:** Add typeahead support for tags in built-in annotations. [#36377](https://github.com/grafana/grafana/pull/36377), [@ashharrison90](https://github.com/ashharrison90) -* **AzureMonitor:** Add curated dashboards for Azure services. [#35356](https://github.com/grafana/grafana/pull/35356), [@avidhanju](https://github.com/avidhanju) -* **AzureMonitor:** Add support for deep links to Microsoft Azure portal for Metrics. [#32273](https://github.com/grafana/grafana/pull/32273), [@shuotli](https://github.com/shuotli) -* **AzureMonitor:** Remove support for different credentials for Azure Monitor Logs. [#35121](https://github.com/grafana/grafana/pull/35121), [@andresmgot](https://github.com/andresmgot) -* **AzureMonitor:** Support querying any Resource for Logs queries. [#33879](https://github.com/grafana/grafana/pull/33879), [@joshhunt](https://github.com/joshhunt) -* **Elasticsearch:** Add frozen indices search support. [#36018](https://github.com/grafana/grafana/pull/36018), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch:** Name fields after template variables values instead of their name. [#36035](https://github.com/grafana/grafana/pull/36035), [@Elfo404](https://github.com/Elfo404) -* **Elasticsearch:** add rate aggregation. [#33311](https://github.com/grafana/grafana/pull/33311), [@estermv](https://github.com/estermv) -* **Email:** Allow configuration of content types for email notifications. [#34530](https://github.com/grafana/grafana/pull/34530), [@djairhogeuens](https://github.com/djairhogeuens) -* **Explore:** Add more meta information when line limit is hit. [#33069](https://github.com/grafana/grafana/pull/33069), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore:** UI improvements to trace view. [#34276](https://github.com/grafana/grafana/pull/34276), [@aocenas](https://github.com/aocenas) -* **FieldOverrides:** Added support to change display name in an override field and have it be matched by a later rule. [#35893](https://github.com/grafana/grafana/pull/35893), [@torkelo](https://github.com/torkelo) -* **HTTP Client:** Introduce `dataproxy_max_idle_connections` config variable. [#35864](https://github.com/grafana/grafana/pull/35864), [@dsotirakis](https://github.com/dsotirakis) -* **InfluxDB:** InfluxQL: adds tags to timeseries data. [#36702](https://github.com/grafana/grafana/pull/36702), [@gabor](https://github.com/gabor) -* **InfluxDB:** InfluxQL: make measurement search case insensitive. [#34563](https://github.com/grafana/grafana/pull/34563), [@gabor](https://github.com/gabor) -* **Legacy Alerting:** Replace simplejson with a struct in webhook notification channel. [#34952](https://github.com/grafana/grafana/pull/34952), [@KEVISONG](https://github.com/KEVISONG) -* **Legend:** Updates display name for Last (not null) to just Last*. [#35633](https://github.com/grafana/grafana/pull/35633), [@torkelo](https://github.com/torkelo) -* **Logs panel:** Add option to show common labels. [#36166](https://github.com/grafana/grafana/pull/36166), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki:** Add $__range variable. [#36175](https://github.com/grafana/grafana/pull/36175), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki:** Add support for "label_values(log stream selector, label)" in templating. [#35488](https://github.com/grafana/grafana/pull/35488), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki:** Add support for ad-hoc filtering in dashboard. [#36393](https://github.com/grafana/grafana/pull/36393), [@ivanahuckova](https://github.com/ivanahuckova) -* **MySQL Datasource:** Add timezone parameter. [#27535](https://github.com/grafana/grafana/pull/27535), [@andipabst](https://github.com/andipabst) -* **NodeGraph:** Show gradient fields in legend. [#34078](https://github.com/grafana/grafana/pull/34078), [@aocenas](https://github.com/aocenas) -* **PanelOptions:** Don't mutate panel options/field config object when updating. [#36441](https://github.com/grafana/grafana/pull/36441), [@dprokop](https://github.com/dprokop) -* **PieChart:** Make pie gradient more subtle to match other charts. [#36961](https://github.com/grafana/grafana/pull/36961), [@nikki-kiga](https://github.com/nikki-kiga) -* **Prometheus:** Update PromQL typeahead and highlighting. [#36730](https://github.com/grafana/grafana/pull/36730), [@ekpdt](https://github.com/ekpdt) -* **Prometheus:** interpolate variable for step field. [#36437](https://github.com/grafana/grafana/pull/36437), [@zoltanbedi](https://github.com/zoltanbedi) -* **Provisioning:** Improve validation by validating across all dashboard providers. [#26742](https://github.com/grafana/grafana/pull/26742), [@nabokihms](https://github.com/nabokihms) -* **SQL Datasources:** Allow multiple string/labels columns with time series. [#36485](https://github.com/grafana/grafana/pull/36485), [@kylebrandt](https://github.com/kylebrandt) -* **Select:** Portal select menu to document.body. [#36398](https://github.com/grafana/grafana/pull/36398), [@ashharrison90](https://github.com/ashharrison90) -* **Team Sync:** Add group mapping to support team sync in the Generic OAuth provider. [#36307](https://github.com/grafana/grafana/pull/36307), [@wardbekker](https://github.com/wardbekker) -* **Tooltip:** Make active series more noticeable. [#36824](https://github.com/grafana/grafana/pull/36824), [@nikki-kiga](https://github.com/nikki-kiga) -* **Tracing:** Add support to configure trace to logs start and end time. [#34995](https://github.com/grafana/grafana/pull/34995), [@zoltanbedi](https://github.com/zoltanbedi) -* **Transformations:** Skip merge when there is only a single data frame. [#36407](https://github.com/grafana/grafana/pull/36407), [@edgarpoce](https://github.com/edgarpoce) -* **ValueMapping:** Added support for mapping text to color, boolean values, NaN and Null. Improved UI for value mapping. [#33820](https://github.com/grafana/grafana/pull/33820), [@torkelo](https://github.com/torkelo) -* **Visualizations:** Dynamically set any config (min, max, unit, color, thresholds) from query results. [#36548](https://github.com/grafana/grafana/pull/36548), [@torkelo](https://github.com/torkelo) -* **live:** Add support to handle origin without a value for the port when matching with root_url. [#36834](https://github.com/grafana/grafana/pull/36834), [@FZambia](https://github.com/FZambia) +- **Alerting:** Add Alertmanager notifications tab. [#35759](https://github.com/grafana/grafana/pull/35759), [@nathanrodman](https://github.com/nathanrodman) +- **Alerting:** Add button to deactivate current Alertmanager configuration. [#36951](https://github.com/grafana/grafana/pull/36951), [@domasx2](https://github.com/domasx2) +- **Alerting:** Add toggle in Loki/Prometheus data source configuration to opt out of alerting UI. [#36552](https://github.com/grafana/grafana/pull/36552), [@domasx2](https://github.com/domasx2) +- **Alerting:** Allow any "evaluate for" value >=0 in the alert rule form. [#35807](https://github.com/grafana/grafana/pull/35807), [@domasx2](https://github.com/domasx2) +- **Alerting:** Load default configuration from status endpoint, if Cortex Alertmanager returns empty user configuration. [#35769](https://github.com/grafana/grafana/pull/35769), [@domasx2](https://github.com/domasx2) +- **Alerting:** view to display alert rule and its underlying data. [#35546](https://github.com/grafana/grafana/pull/35546), [@mckn](https://github.com/mckn) +- **Annotation panel:** Release the annotation panel. [#36959](https://github.com/grafana/grafana/pull/36959), [@ryantxu](https://github.com/ryantxu) +- **Annotations:** Add typeahead support for tags in built-in annotations. [#36377](https://github.com/grafana/grafana/pull/36377), [@ashharrison90](https://github.com/ashharrison90) +- **AzureMonitor:** Add curated dashboards for Azure services. [#35356](https://github.com/grafana/grafana/pull/35356), [@avidhanju](https://github.com/avidhanju) +- **AzureMonitor:** Add support for deep links to Microsoft Azure portal for Metrics. [#32273](https://github.com/grafana/grafana/pull/32273), [@shuotli](https://github.com/shuotli) +- **AzureMonitor:** Remove support for different credentials for Azure Monitor Logs. [#35121](https://github.com/grafana/grafana/pull/35121), [@andresmgot](https://github.com/andresmgot) +- **AzureMonitor:** Support querying any Resource for Logs queries. [#33879](https://github.com/grafana/grafana/pull/33879), [@joshhunt](https://github.com/joshhunt) +- **Elasticsearch:** Add frozen indices search support. [#36018](https://github.com/grafana/grafana/pull/36018), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch:** Name fields after template variables values instead of their name. [#36035](https://github.com/grafana/grafana/pull/36035), [@Elfo404](https://github.com/Elfo404) +- **Elasticsearch:** add rate aggregation. [#33311](https://github.com/grafana/grafana/pull/33311), [@estermv](https://github.com/estermv) +- **Email:** Allow configuration of content types for email notifications. [#34530](https://github.com/grafana/grafana/pull/34530), [@djairhogeuens](https://github.com/djairhogeuens) +- **Explore:** Add more meta information when line limit is hit. [#33069](https://github.com/grafana/grafana/pull/33069), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore:** UI improvements to trace view. [#34276](https://github.com/grafana/grafana/pull/34276), [@aocenas](https://github.com/aocenas) +- **FieldOverrides:** Added support to change display name in an override field and have it be matched by a later rule. [#35893](https://github.com/grafana/grafana/pull/35893), [@torkelo](https://github.com/torkelo) +- **HTTP Client:** Introduce `dataproxy_max_idle_connections` config variable. [#35864](https://github.com/grafana/grafana/pull/35864), [@dsotirakis](https://github.com/dsotirakis) +- **InfluxDB:** InfluxQL: adds tags to timeseries data. [#36702](https://github.com/grafana/grafana/pull/36702), [@gabor](https://github.com/gabor) +- **InfluxDB:** InfluxQL: make measurement search case insensitive. [#34563](https://github.com/grafana/grafana/pull/34563), [@gabor](https://github.com/gabor) +- **Legacy Alerting:** Replace simplejson with a struct in webhook notification channel. [#34952](https://github.com/grafana/grafana/pull/34952), [@KEVISONG](https://github.com/KEVISONG) +- **Legend:** Updates display name for Last (not null) to just Last\*. [#35633](https://github.com/grafana/grafana/pull/35633), [@torkelo](https://github.com/torkelo) +- **Logs panel:** Add option to show common labels. [#36166](https://github.com/grafana/grafana/pull/36166), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki:** Add $\_\_range variable. [#36175](https://github.com/grafana/grafana/pull/36175), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki:** Add support for "label_values(log stream selector, label)" in templating. [#35488](https://github.com/grafana/grafana/pull/35488), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki:** Add support for ad-hoc filtering in dashboard. [#36393](https://github.com/grafana/grafana/pull/36393), [@ivanahuckova](https://github.com/ivanahuckova) +- **MySQL Datasource:** Add timezone parameter. [#27535](https://github.com/grafana/grafana/pull/27535), [@andipabst](https://github.com/andipabst) +- **NodeGraph:** Show gradient fields in legend. [#34078](https://github.com/grafana/grafana/pull/34078), [@aocenas](https://github.com/aocenas) +- **PanelOptions:** Don't mutate panel options/field config object when updating. [#36441](https://github.com/grafana/grafana/pull/36441), [@dprokop](https://github.com/dprokop) +- **PieChart:** Make pie gradient more subtle to match other charts. [#36961](https://github.com/grafana/grafana/pull/36961), [@nikki-kiga](https://github.com/nikki-kiga) +- **Prometheus:** Update PromQL typeahead and highlighting. [#36730](https://github.com/grafana/grafana/pull/36730), [@ekpdt](https://github.com/ekpdt) +- **Prometheus:** interpolate variable for step field. [#36437](https://github.com/grafana/grafana/pull/36437), [@zoltanbedi](https://github.com/zoltanbedi) +- **Provisioning:** Improve validation by validating across all dashboard providers. [#26742](https://github.com/grafana/grafana/pull/26742), [@nabokihms](https://github.com/nabokihms) +- **SQL Datasources:** Allow multiple string/labels columns with time series. [#36485](https://github.com/grafana/grafana/pull/36485), [@kylebrandt](https://github.com/kylebrandt) +- **Select:** Portal select menu to document.body. [#36398](https://github.com/grafana/grafana/pull/36398), [@ashharrison90](https://github.com/ashharrison90) +- **Team Sync:** Add group mapping to support team sync in the Generic OAuth provider. [#36307](https://github.com/grafana/grafana/pull/36307), [@wardbekker](https://github.com/wardbekker) +- **Tooltip:** Make active series more noticeable. [#36824](https://github.com/grafana/grafana/pull/36824), [@nikki-kiga](https://github.com/nikki-kiga) +- **Tracing:** Add support to configure trace to logs start and end time. [#34995](https://github.com/grafana/grafana/pull/34995), [@zoltanbedi](https://github.com/zoltanbedi) +- **Transformations:** Skip merge when there is only a single data frame. [#36407](https://github.com/grafana/grafana/pull/36407), [@edgarpoce](https://github.com/edgarpoce) +- **ValueMapping:** Added support for mapping text to color, boolean values, NaN and Null. Improved UI for value mapping. [#33820](https://github.com/grafana/grafana/pull/33820), [@torkelo](https://github.com/torkelo) +- **Visualizations:** Dynamically set any config (min, max, unit, color, thresholds) from query results. [#36548](https://github.com/grafana/grafana/pull/36548), [@torkelo](https://github.com/torkelo) +- **live:** Add support to handle origin without a value for the port when matching with root_url. [#36834](https://github.com/grafana/grafana/pull/36834), [@FZambia](https://github.com/FZambia) ### Bug fixes -* **Alerting:** Handle marshaling Inf values. [#36947](https://github.com/grafana/grafana/pull/36947), [@kylebrandt](https://github.com/kylebrandt) -* **AzureMonitor:** Fix macro resolution for template variables. [#36944](https://github.com/grafana/grafana/pull/36944), [@andresmgot](https://github.com/andresmgot) -* **AzureMonitor:** Fix queries with Microsoft.NetApp/../../volumes resources. [#32661](https://github.com/grafana/grafana/pull/32661), [@pckls](https://github.com/pckls) -* **AzureMonitor:** Request and concat subsequent resource pages. [#36958](https://github.com/grafana/grafana/pull/36958), [@andresmgot](https://github.com/andresmgot) -* **Bug:** Fix parse duration for day. [#36942](https://github.com/grafana/grafana/pull/36942), [@idafurjes](https://github.com/idafurjes) -* **Datasources:** Improve error handling for error messages. [#35120](https://github.com/grafana/grafana/pull/35120), [@ifrost](https://github.com/ifrost) -* **Explore:** Correct the functionality of shift-enter shortcut across all uses. [#36600](https://github.com/grafana/grafana/pull/36600), [@ivanahuckova](https://github.com/ivanahuckova) -* **Explore:** Show all dataFrames in data tab in Inspector. [#32161](https://github.com/grafana/grafana/pull/32161), [@ivanahuckova](https://github.com/ivanahuckova) -* **GraphNG:** Fix Tooltip mode 'All' for XYChart. [#31260](https://github.com/grafana/grafana/pull/31260), [@Posnet](https://github.com/Posnet) -* **Loki:** Fix highlight of logs when using filter expressions with backticks. [#36024](https://github.com/grafana/grafana/pull/36024), [@ivanahuckova](https://github.com/ivanahuckova) -* **Modal:** Force modal content to overflow with scroll. [#36754](https://github.com/grafana/grafana/pull/36754), [@ashharrison90](https://github.com/ashharrison90) -* **Plugins:** Ignore symlinked folders when verifying plugin signature. [#34434](https://github.com/grafana/grafana/pull/34434), [@wbrowne](https://github.com/wbrowne) +- **Alerting:** Handle marshaling Inf values. [#36947](https://github.com/grafana/grafana/pull/36947), [@kylebrandt](https://github.com/kylebrandt) +- **AzureMonitor:** Fix macro resolution for template variables. [#36944](https://github.com/grafana/grafana/pull/36944), [@andresmgot](https://github.com/andresmgot) +- **AzureMonitor:** Fix queries with Microsoft.NetApp/../../volumes resources. [#32661](https://github.com/grafana/grafana/pull/32661), [@pckls](https://github.com/pckls) +- **AzureMonitor:** Request and concat subsequent resource pages. [#36958](https://github.com/grafana/grafana/pull/36958), [@andresmgot](https://github.com/andresmgot) +- **Bug:** Fix parse duration for day. [#36942](https://github.com/grafana/grafana/pull/36942), [@idafurjes](https://github.com/idafurjes) +- **Datasources:** Improve error handling for error messages. [#35120](https://github.com/grafana/grafana/pull/35120), [@ifrost](https://github.com/ifrost) +- **Explore:** Correct the functionality of shift-enter shortcut across all uses. [#36600](https://github.com/grafana/grafana/pull/36600), [@ivanahuckova](https://github.com/ivanahuckova) +- **Explore:** Show all dataFrames in data tab in Inspector. [#32161](https://github.com/grafana/grafana/pull/32161), [@ivanahuckova](https://github.com/ivanahuckova) +- **GraphNG:** Fix Tooltip mode 'All' for XYChart. [#31260](https://github.com/grafana/grafana/pull/31260), [@Posnet](https://github.com/Posnet) +- **Loki:** Fix highlight of logs when using filter expressions with backticks. [#36024](https://github.com/grafana/grafana/pull/36024), [@ivanahuckova](https://github.com/ivanahuckova) +- **Modal:** Force modal content to overflow with scroll. [#36754](https://github.com/grafana/grafana/pull/36754), [@ashharrison90](https://github.com/ashharrison90) +- **Plugins:** Ignore symlinked folders when verifying plugin signature. [#34434](https://github.com/grafana/grafana/pull/34434), [@wbrowne](https://github.com/wbrowne) ### Breaking changes - When parsing Elasticsearch query responses using template variables, each field gets named after the variable value instead of the name. For example, executing a `terms` aggregation on a variable named `$groupBy` that has `@hostname` as a value, the resulting column in the table response will be `@hostname` instead of `$groupBy` Issue [#36035](https://github.com/grafana/grafana/issues/36035) - Azure Monitor data source no longer supports different credentials for Metrics and Logs in existing data sources. To use different credentials for Azure Monitor Logs, create another data source. Issue [#35121](https://github.com/grafana/grafana/issues/35121) Existing Azure Metrics Logs queries for Log Analytics Workspaces should be backward compatible with this change and should not get impacted. Panels will be migrated to use the new resource-centric backend when you first edit and save them. Application Insights and Insights Analytics queries are now read-only and cannot be modified. To update Application Insights queries, users can manually recreate them as Metrics queries, and Insights Analytics are recreated with Logs. - Issue [#33879](https://github.com/grafana/grafana/issues/33879) +Issue [#33879](https://github.com/grafana/grafana/issues/33879) ### Plugin development fixes & changes -* **Toolkit:** Improve error messages when tasks fail. [#36381](https://github.com/grafana/grafana/pull/36381), [@joshhunt](https://github.com/joshhunt) - +- **Toolkit:** Improve error messages when tasks fail. [#36381](https://github.com/grafana/grafana/pull/36381), [@joshhunt](https://github.com/joshhunt) diff --git a/docs/sources/release-notes/release-notes-8-1-0-beta2.md b/docs/sources/release-notes/release-notes-8-1-0-beta2.md index cc4aa795f47..82f714a1199 100644 --- a/docs/sources/release-notes/release-notes-8-1-0-beta2.md +++ b/docs/sources/release-notes/release-notes-8-1-0-beta2.md @@ -10,12 +10,12 @@ list = false ### Features and enhancements -* **Alerting:** Expand the value string in alert annotations and labels. [#37051](https://github.com/grafana/grafana/pull/37051), [@gerobinson](https://github.com/gerobinson) -* **Auth:** Add Azure HTTP authentication middleware. [#36932](https://github.com/grafana/grafana/pull/36932), [@kostrse](https://github.com/kostrse) -* **Auth:** Auth: Pass user role when using the authentication proxy. [#36729](https://github.com/grafana/grafana/pull/36729), [@yuwaMSFT2](https://github.com/yuwaMSFT2) -* **Gazetteer:** Update countries.json file to allow for linking to 3-letter country codes. [#37129](https://github.com/grafana/grafana/pull/37129), [@bryanuribe](https://github.com/bryanuribe) +- **Alerting:** Expand the value string in alert annotations and labels. [#37051](https://github.com/grafana/grafana/pull/37051), [@gerobinson](https://github.com/gerobinson) +- **Auth:** Add Azure HTTP authentication middleware. [#36932](https://github.com/grafana/grafana/pull/36932), [@kostrse](https://github.com/kostrse) +- **Auth:** Auth: Pass user role when using the authentication proxy. [#36729](https://github.com/grafana/grafana/pull/36729), [@yuwaMSFT2](https://github.com/yuwaMSFT2) +- **Gazetteer:** Update countries.json file to allow for linking to 3-letter country codes. [#37129](https://github.com/grafana/grafana/pull/37129), [@bryanuribe](https://github.com/bryanuribe) ### Bug fixes -* **Config:** Fix Docker builds by correcting formatting in sample.ini. [#37106](https://github.com/grafana/grafana/pull/37106), [@FZambia](https://github.com/FZambia) -* **Explore:** Fix encoding of internal URLs. [#36919](https://github.com/grafana/grafana/pull/36919), [@aocenas](https://github.com/aocenas) +- **Config:** Fix Docker builds by correcting formatting in sample.ini. [#37106](https://github.com/grafana/grafana/pull/37106), [@FZambia](https://github.com/FZambia) +- **Explore:** Fix encoding of internal URLs. [#36919](https://github.com/grafana/grafana/pull/36919), [@aocenas](https://github.com/aocenas) diff --git a/docs/sources/release-notes/release-notes-8-1-0-beta3.md b/docs/sources/release-notes/release-notes-8-1-0-beta3.md index 9825800d3b0..b0b2a58f875 100644 --- a/docs/sources/release-notes/release-notes-8-1-0-beta3.md +++ b/docs/sources/release-notes/release-notes-8-1-0-beta3.md @@ -10,15 +10,14 @@ list = false ### Features and enhancements -* **Alerting:** Support label matcher syntax in alert rule list filter. [#36408](https://github.com/grafana/grafana/pull/36408), [@nathanrodman](https://github.com/nathanrodman) -* **IconButton:** Put tooltip text as aria-label. [#36760](https://github.com/grafana/grafana/pull/36760), [@tskarhed](https://github.com/tskarhed) -* **Live:** Experimental HA with Redis. [#36787](https://github.com/grafana/grafana/pull/36787), [@FZambia](https://github.com/FZambia) -* **UI:** FileDropzone component. [#36646](https://github.com/grafana/grafana/pull/36646), [@zoltanbedi](https://github.com/zoltanbedi) -* **[v8.1.x] CloudWatch:** Add AWS LookoutMetrics. [#37329](https://github.com/grafana/grafana/pull/37329), [@ilyastoli](https://github.com/ilyastoli) +- **Alerting:** Support label matcher syntax in alert rule list filter. [#36408](https://github.com/grafana/grafana/pull/36408), [@nathanrodman](https://github.com/nathanrodman) +- **IconButton:** Put tooltip text as aria-label. [#36760](https://github.com/grafana/grafana/pull/36760), [@tskarhed](https://github.com/tskarhed) +- **Live:** Experimental HA with Redis. [#36787](https://github.com/grafana/grafana/pull/36787), [@FZambia](https://github.com/FZambia) +- **UI:** FileDropzone component. [#36646](https://github.com/grafana/grafana/pull/36646), [@zoltanbedi](https://github.com/zoltanbedi) +- **[v8.1.x] CloudWatch:** Add AWS LookoutMetrics. [#37329](https://github.com/grafana/grafana/pull/37329), [@ilyastoli](https://github.com/ilyastoli) ### Bug fixes -* **Docker:** Fix builds by delaying go mod verify until all required files are copied over. [#37246](https://github.com/grafana/grafana/pull/37246), [@wbrowne](https://github.com/wbrowne) -* **Exemplars:** Fix disable exemplars only on the query that failed. [#37296](https://github.com/grafana/grafana/pull/37296), [@zoltanbedi](https://github.com/zoltanbedi) -* **SQL:** Fix SQL dataframe resampling (fill mode + time intervals). [#36937](https://github.com/grafana/grafana/pull/36937), [@idafurjes](https://github.com/idafurjes) - +- **Docker:** Fix builds by delaying go mod verify until all required files are copied over. [#37246](https://github.com/grafana/grafana/pull/37246), [@wbrowne](https://github.com/wbrowne) +- **Exemplars:** Fix disable exemplars only on the query that failed. [#37296](https://github.com/grafana/grafana/pull/37296), [@zoltanbedi](https://github.com/zoltanbedi) +- **SQL:** Fix SQL dataframe resampling (fill mode + time intervals). [#36937](https://github.com/grafana/grafana/pull/36937), [@idafurjes](https://github.com/idafurjes) diff --git a/docs/sources/release-notes/release-notes-8-1-0.md b/docs/sources/release-notes/release-notes-8-1-0.md index 0f0a7d9de6d..dcbb31c3566 100644 --- a/docs/sources/release-notes/release-notes-8-1-0.md +++ b/docs/sources/release-notes/release-notes-8-1-0.md @@ -10,24 +10,23 @@ list = false ### Features and enhancements -* **Alerting:** Deduplicate receivers during migration. [#36812](https://github.com/grafana/grafana/pull/36812), [@codesome](https://github.com/codesome) -* **ColorPicker:** Display colors as RGBA. [#37231](https://github.com/grafana/grafana/pull/37231), [@nikki-kiga](https://github.com/nikki-kiga) -* **Select:** Make portalling the menu opt-in, but opt-in *everywhere*. [#37501](https://github.com/grafana/grafana/pull/37501), [@ashharrison90](https://github.com/ashharrison90) -* **TimeRangePicker:** Improve accessibility. [#36912](https://github.com/grafana/grafana/pull/36912), [@tskarhed](https://github.com/tskarhed) +- **Alerting:** Deduplicate receivers during migration. [#36812](https://github.com/grafana/grafana/pull/36812), [@codesome](https://github.com/codesome) +- **ColorPicker:** Display colors as RGBA. [#37231](https://github.com/grafana/grafana/pull/37231), [@nikki-kiga](https://github.com/nikki-kiga) +- **Select:** Make portalling the menu opt-in, but opt-in _everywhere_. [#37501](https://github.com/grafana/grafana/pull/37501), [@ashharrison90](https://github.com/ashharrison90) +- **TimeRangePicker:** Improve accessibility. [#36912](https://github.com/grafana/grafana/pull/36912), [@tskarhed](https://github.com/tskarhed) ### Bug fixes -* **Annotations:** Correct annotations that are displayed upon page refresh. [#37496](https://github.com/grafana/grafana/pull/37496), [@axelavargas](https://github.com/axelavargas) -* **Annotations:** Fix **Enabled** button that disappeared from Grafana v8.0.6. [#37454](https://github.com/grafana/grafana/pull/37454), [@axelavargas](https://github.com/axelavargas) -* **Annotations:** Fix data source template variable that was not available for annotations. [#37506](https://github.com/grafana/grafana/pull/37506), [@axelavargas](https://github.com/axelavargas) -* **AzureMonitor:** Fix annotations query editor that does not load. [#37476](https://github.com/grafana/grafana/pull/37476), [@torkelo](https://github.com/torkelo) -* **Geomap:** Fix scale calculations. [#37375](https://github.com/grafana/grafana/pull/37375), [@ryantxu](https://github.com/ryantxu) -* **GraphNG:** Fix y-axis autosizing. [#37464](https://github.com/grafana/grafana/pull/37464), [@leeoniya](https://github.com/leeoniya) -* **Live:** Display stream rate and fix duplicate channels in list response. [#37365](https://github.com/grafana/grafana/pull/37365), [@FZambia](https://github.com/FZambia) -* **Loki:** Update labels in log browser when time range changes. [#37520](https://github.com/grafana/grafana/pull/37520), [@ivanahuckova](https://github.com/ivanahuckova) -* **Loki:** Update labels in log browser when time range changes in dashboard. [#37541](https://github.com/grafana/grafana/pull/37541), [@ivanahuckova](https://github.com/ivanahuckova) -* **NGAlert:** Send resolve signal to alertmanager on alerting -> Normal. [#37363](https://github.com/grafana/grafana/pull/37363), [@kylebrandt](https://github.com/kylebrandt) -* **PasswordField:** Prevent a password from being displayed when you click the Enter button. [#37444](https://github.com/grafana/grafana/pull/37444), [@tskarhed](https://github.com/tskarhed) -* **Renderer:** Remove debug.log file when Grafana is stopped. [#37367](https://github.com/grafana/grafana/pull/37367), [@AgnesToulet](https://github.com/AgnesToulet) -* **Security:** Update dependencies to fix CVE-2021-36222. [#37546](https://github.com/grafana/grafana/pull/37546), [@ying-jeanne](https://github.com/ying-jeanne) - +- **Annotations:** Correct annotations that are displayed upon page refresh. [#37496](https://github.com/grafana/grafana/pull/37496), [@axelavargas](https://github.com/axelavargas) +- **Annotations:** Fix **Enabled** button that disappeared from Grafana v8.0.6. [#37454](https://github.com/grafana/grafana/pull/37454), [@axelavargas](https://github.com/axelavargas) +- **Annotations:** Fix data source template variable that was not available for annotations. [#37506](https://github.com/grafana/grafana/pull/37506), [@axelavargas](https://github.com/axelavargas) +- **AzureMonitor:** Fix annotations query editor that does not load. [#37476](https://github.com/grafana/grafana/pull/37476), [@torkelo](https://github.com/torkelo) +- **Geomap:** Fix scale calculations. [#37375](https://github.com/grafana/grafana/pull/37375), [@ryantxu](https://github.com/ryantxu) +- **GraphNG:** Fix y-axis autosizing. [#37464](https://github.com/grafana/grafana/pull/37464), [@leeoniya](https://github.com/leeoniya) +- **Live:** Display stream rate and fix duplicate channels in list response. [#37365](https://github.com/grafana/grafana/pull/37365), [@FZambia](https://github.com/FZambia) +- **Loki:** Update labels in log browser when time range changes. [#37520](https://github.com/grafana/grafana/pull/37520), [@ivanahuckova](https://github.com/ivanahuckova) +- **Loki:** Update labels in log browser when time range changes in dashboard. [#37541](https://github.com/grafana/grafana/pull/37541), [@ivanahuckova](https://github.com/ivanahuckova) +- **NGAlert:** Send resolve signal to alertmanager on alerting -> Normal. [#37363](https://github.com/grafana/grafana/pull/37363), [@kylebrandt](https://github.com/kylebrandt) +- **PasswordField:** Prevent a password from being displayed when you click the Enter button. [#37444](https://github.com/grafana/grafana/pull/37444), [@tskarhed](https://github.com/tskarhed) +- **Renderer:** Remove debug.log file when Grafana is stopped. [#37367](https://github.com/grafana/grafana/pull/37367), [@AgnesToulet](https://github.com/AgnesToulet) +- **Security:** Update dependencies to fix CVE-2021-36222. [#37546](https://github.com/grafana/grafana/pull/37546), [@ying-jeanne](https://github.com/ying-jeanne) diff --git a/docs/sources/release-notes/release-notes-v7-4-2.md b/docs/sources/release-notes/release-notes-v7-4-2.md index 64503ff78cf..95f9951f245 100644 --- a/docs/sources/release-notes/release-notes-v7-4-2.md +++ b/docs/sources/release-notes/release-notes-v7-4-2.md @@ -5,5 +5,3 @@ list = false +++ - - diff --git a/docs/sources/shared/basics/grafana-cloud.md b/docs/sources/shared/basics/grafana-cloud.md index 656754ea36c..45df02bcdd4 100644 --- a/docs/sources/shared/basics/grafana-cloud.md +++ b/docs/sources/shared/basics/grafana-cloud.md @@ -6,4 +6,4 @@ title: Grafana Cloud Grafana Cloud is a highly available, fast, fully managed OpenSaaS logging and metrics platform. Everything you love about Grafana, but Grafana Labs hosts it for you and handles all the headaches. -[Learn more about Grafana Cloud](https://grafana.com/cloud/) or try the [Grafana Cloud Linux host quickstart](/docs/grafana-cloud/quickstart/). \ No newline at end of file +[Learn more about Grafana Cloud](https://grafana.com/cloud/) or try the [Grafana Cloud Linux host quickstart](/docs/grafana-cloud/quickstart/). diff --git a/docs/sources/shared/basics/what-is-grafana.md b/docs/sources/shared/basics/what-is-grafana.md index 54892882846..9215d638728 100644 --- a/docs/sources/shared/basics/what-is-grafana.md +++ b/docs/sources/shared/basics/what-is-grafana.md @@ -4,4 +4,4 @@ title: What is Grafana? ## What is Grafana? -Grafana is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations. \ No newline at end of file +Grafana is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations. diff --git a/docs/sources/shared/example.md b/docs/sources/shared/example.md index 9f538f1cde6..5dda3b32502 100644 --- a/docs/sources/shared/example.md +++ b/docs/sources/shared/example.md @@ -36,6 +36,7 @@ You cannot use short codes in an ordered list with sublists. The shortcode break All unordered list steps included as part of a list will appear as second-level lists (with the hollow circle bullet) rather than first-level lists (solid circle bullet), even if the list is not indented in the shared file or the document file. {{< docs/list >}} - {{< docs/shared "test.md" >}} - - Bullet text -{{< /docs/list >}} \ No newline at end of file +{{< docs/shared "test.md" >}} + +- Bullet text + {{< /docs/list >}} diff --git a/docs/sources/shared/getting-started/first-step.md b/docs/sources/shared/getting-started/first-step.md index adf325fa5c2..de42a880b30 100644 --- a/docs/sources/shared/getting-started/first-step.md +++ b/docs/sources/shared/getting-started/first-step.md @@ -10,4 +10,4 @@ Use the instructions in [Getting started with Grafana]({{< relref "../../getting - Log in to Grafana. - Create your first dashboard. -You can also configure a [Grafana Cloud](https://grafana.com/docs/grafana-cloud/) instance to display system metrics without having to host Grafana yourself. \ No newline at end of file +You can also configure a [Grafana Cloud](https://grafana.com/docs/grafana-cloud/) instance to display system metrics without having to host Grafana yourself. diff --git a/docs/sources/shared/index.md b/docs/sources/shared/index.md index 0a9f6b1354e..ca03031f1ee 100644 --- a/docs/sources/shared/index.md +++ b/docs/sources/shared/index.md @@ -1,7 +1,3 @@ --- headless: true --- - - - - diff --git a/docs/sources/shared/influxdb/intro.md b/docs/sources/shared/influxdb/intro.md index 12ab2fdf2b9..8fb436af32e 100644 --- a/docs/sources/shared/influxdb/intro.md +++ b/docs/sources/shared/influxdb/intro.md @@ -2,4 +2,4 @@ title: Intro paragraph --- -[InfluxDB](https://www.influxdata.com/products/) is an open-source time series database (TSDB) developed by [InfluxData](https://www.influxdata.com/). It is optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, IoT sensor data, and real-time analytics. \ No newline at end of file +[InfluxDB](https://www.influxdata.com/products/) is an open-source time series database (TSDB) developed by [InfluxData](https://www.influxdata.com/). It is optimized for fast, high-availability storage and retrieval of time series data in fields such as operations monitoring, application metrics, IoT sensor data, and real-time analytics. diff --git a/docs/sources/shared/manage-users/view-server-org-list-and-edit.md b/docs/sources/shared/manage-users/view-server-org-list-and-edit.md index b41d7ed075d..89457e46e80 100644 --- a/docs/sources/shared/manage-users/view-server-org-list-and-edit.md +++ b/docs/sources/shared/manage-users/view-server-org-list-and-edit.md @@ -4,5 +4,6 @@ title: View org list as server admin {{< docs/list >}} {{< docs/shared "manage-users/view-server-org-list.md" >}} + 1. Click the name of the organization that you want to edit. -{{< /docs/list >}} \ No newline at end of file + {{< /docs/list >}} diff --git a/docs/sources/shared/manage-users/view-server-org-list.md b/docs/sources/shared/manage-users/view-server-org-list.md index c9b776073d8..30dbb16efc6 100644 --- a/docs/sources/shared/manage-users/view-server-org-list.md +++ b/docs/sources/shared/manage-users/view-server-org-list.md @@ -3,4 +3,4 @@ title: View org list as server admin --- 1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears. -1. Click **Orgs**. \ No newline at end of file +1. Click **Orgs**. diff --git a/docs/sources/shared/manage-users/view-server-user-list-search.md b/docs/sources/shared/manage-users/view-server-user-list-search.md index 106fe6b4440..e910a5bef30 100644 --- a/docs/sources/shared/manage-users/view-server-user-list-search.md +++ b/docs/sources/shared/manage-users/view-server-user-list-search.md @@ -3,6 +3,7 @@ title: View user list and search - list format --- {{< docs/list >}} - {{< docs/shared "manage-users/view-server-user-list.md" >}} - 1. Click the user account that you want to edit. If necessary, use the search field to find the account. -{{< /docs/list >}} \ No newline at end of file +{{< docs/shared "manage-users/view-server-user-list.md" >}} + +1. Click the user account that you want to edit. If necessary, use the search field to find the account. + {{< /docs/list >}} diff --git a/docs/sources/shared/manage-users/view-server-user-list.md b/docs/sources/shared/manage-users/view-server-user-list.md index 2a6864f2c01..ae4f37bdcb7 100644 --- a/docs/sources/shared/manage-users/view-server-user-list.md +++ b/docs/sources/shared/manage-users/view-server-user-list.md @@ -3,4 +3,4 @@ title: View user list as server admin --- 1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears. -1. Click **Users**. \ No newline at end of file +1. Click **Users**. diff --git a/docs/sources/shared/manage-users/view-team-list.md b/docs/sources/shared/manage-users/view-team-list.md index 42a0cd13ca8..9c3afac80d4 100644 --- a/docs/sources/shared/manage-users/view-team-list.md +++ b/docs/sources/shared/manage-users/view-team-list.md @@ -3,4 +3,4 @@ title: View team list --- 1. Hover your cursor over the **Configuration** (gear) icon in the side menu. -1. Click **Teams**. Grafana displays the team list. \ No newline at end of file +1. Click **Teams**. Grafana displays the team list. diff --git a/docs/sources/shared/panels/panel-links-intro.md b/docs/sources/shared/panels/panel-links-intro.md index 8f3980daed4..b7fda4ba4a3 100644 --- a/docs/sources/shared/panels/panel-links-intro.md +++ b/docs/sources/shared/panels/panel-links-intro.md @@ -2,4 +2,4 @@ title: Panel links intro --- -Each panel can have its own set of links that are shown in the upper left corner of the panel. You can link to any available URL, including dashboards, panels, or external sites. You can even control the time range to ensure the user is zoomed in on the right data in Grafana. \ No newline at end of file +Each panel can have its own set of links that are shown in the upper left corner of the panel. You can link to any available URL, including dashboards, panels, or external sites. You can even control the time range to ensure the user is zoomed in on the right data in Grafana. diff --git a/docs/sources/shared/panels/repeat-panel-intro.md b/docs/sources/shared/panels/repeat-panel-intro.md index effd55c5468..dfe630adcb6 100644 --- a/docs/sources/shared/panels/repeat-panel-intro.md +++ b/docs/sources/shared/panels/repeat-panel-intro.md @@ -2,4 +2,4 @@ title: Repeat panel intro --- -Grafana lets you create dynamic dashboards using _template variables_. All variables in your queries expand to the current value of the variable before the query is sent to the database. Variables let you reuse a single dashboard for all your services. \ No newline at end of file +Grafana lets you create dynamic dashboards using _template variables_. All variables in your queries expand to the current value of the variable before the query is sent to the database. Variables let you reuse a single dashboard for all your services. diff --git a/docs/sources/shared/preferences/navigate-to-the-dashboard-list.md b/docs/sources/shared/preferences/navigate-to-the-dashboard-list.md index a23eeb861b7..e175cf837ca 100644 --- a/docs/sources/shared/preferences/navigate-to-the-dashboard-list.md +++ b/docs/sources/shared/preferences/navigate-to-the-dashboard-list.md @@ -3,4 +3,4 @@ title: Navigate to the dashboard list --- 1. Navigate to the dashboard you want to set as the home dashboard. -1. Click the star next to the dashboard title to mark the dashboard as a favorite if it is not already. \ No newline at end of file +1. Click the star next to the dashboard title to mark the dashboard as a favorite if it is not already. diff --git a/docs/sources/shared/preferences/navigate-user-preferences-list.md b/docs/sources/shared/preferences/navigate-user-preferences-list.md index 7404fc4364b..e41a1cd396d 100644 --- a/docs/sources/shared/preferences/navigate-user-preferences-list.md +++ b/docs/sources/shared/preferences/navigate-user-preferences-list.md @@ -2,4 +2,4 @@ title: Navigate to user preferences list --- -1. On the left menu, hover your cursor over your avatar and then click **Preferences**. \ No newline at end of file +1. On the left menu, hover your cursor over your avatar and then click **Preferences**. diff --git a/docs/sources/shared/preferences/org-preferences-list.md b/docs/sources/shared/preferences/org-preferences-list.md index 0246b8f65d1..9762fa05a8f 100644 --- a/docs/sources/shared/preferences/org-preferences-list.md +++ b/docs/sources/shared/preferences/org-preferences-list.md @@ -3,4 +3,4 @@ title: Click Org preferences --- 1. Hover your cursor over the **Configuration** (gear) icon. -1. Click **Preferences**. \ No newline at end of file +1. Click **Preferences**. diff --git a/docs/sources/shared/preferences/select-home-dashboard-list.md b/docs/sources/shared/preferences/select-home-dashboard-list.md index e63a0fdef34..133373aa690 100644 --- a/docs/sources/shared/preferences/select-home-dashboard-list.md +++ b/docs/sources/shared/preferences/select-home-dashboard-list.md @@ -3,4 +3,4 @@ title: Select home dashboard list --- 1. In the **Home Dashboard** field, select the dashboard that you want to use for your home dashboard. Options include all starred dashboards. -1. Click **Save**. \ No newline at end of file +1. Click **Save**. diff --git a/docs/sources/shared/preferences/select-timezone-list.md b/docs/sources/shared/preferences/select-timezone-list.md index 4b62b478442..eb089d837d3 100644 --- a/docs/sources/shared/preferences/select-timezone-list.md +++ b/docs/sources/shared/preferences/select-timezone-list.md @@ -3,4 +3,4 @@ title: Select home dashboard list --- 1. Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected at a higher level. Refer to [Time range controls]({{< relref "../../dashboards/time-range-controls.md" >}}) for more information about Grafana time settings. -1. Click **Save**. \ No newline at end of file +1. Click **Save**. diff --git a/docs/sources/shared/preferences/select-ui-theme-list.md b/docs/sources/shared/preferences/select-ui-theme-list.md index 8501eab045f..445f58f42c5 100644 --- a/docs/sources/shared/preferences/select-ui-theme-list.md +++ b/docs/sources/shared/preferences/select-ui-theme-list.md @@ -3,4 +3,4 @@ title: Select the UI theme --- 1. In the Preferences section, select the **UI theme**. -1. Click **Save**. \ No newline at end of file +1. Click **Save**. diff --git a/docs/sources/shared/preferences/some-tasks-require-permissions.md b/docs/sources/shared/preferences/some-tasks-require-permissions.md index 0df3b0f8534..7344c3ea5de 100644 --- a/docs/sources/shared/preferences/some-tasks-require-permissions.md +++ b/docs/sources/shared/preferences/some-tasks-require-permissions.md @@ -2,4 +2,4 @@ title: Some tasks require permissions --- -Some tasks require certain permissions. For more information about roles, refer to [Permissions]({{< relref "../../permissions/_index.md" >}}). \ No newline at end of file +Some tasks require certain permissions. For more information about roles, refer to [Permissions]({{< relref "../../permissions/_index.md" >}}). diff --git a/docs/sources/shared/test.md b/docs/sources/shared/test.md index 5075cbf4d65..8c9ac7055f7 100644 --- a/docs/sources/shared/test.md +++ b/docs/sources/shared/test.md @@ -3,5 +3,6 @@ title: Shared Content --- Intro text + - test bullet 1 -- test bullet 2 \ No newline at end of file +- test bullet 2 diff --git a/docs/sources/shared/view-server-org-list.md b/docs/sources/shared/view-server-org-list.md index 3409eeb1449..96adfdad87b 100644 --- a/docs/sources/shared/view-server-org-list.md +++ b/docs/sources/shared/view-server-org-list.md @@ -3,4 +3,4 @@ title: View user list --- 1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears. -1. Click **Orgs**. \ No newline at end of file +1. Click **Orgs**. diff --git a/docs/sources/shared/view-server-user-list-search.md b/docs/sources/shared/view-server-user-list-search.md index 84bcb6fe719..9deed8f6be9 100644 --- a/docs/sources/shared/view-server-user-list-search.md +++ b/docs/sources/shared/view-server-user-list-search.md @@ -4,4 +4,4 @@ title: View user list 1. Hover your cursor over the **Server Admin** (shield) icon until a menu appears. 1. Click **Users**. -1. Click the user account that you want to edit. If necessary, use the search field to find the account. \ No newline at end of file +1. Click the user account that you want to edit. If necessary, use the search field to find the account. diff --git a/docs/sources/shared/visualizations/change-axis-link.md b/docs/sources/shared/visualizations/change-axis-link.md index c9b928286d9..1d164fb867f 100644 --- a/docs/sources/shared/visualizations/change-axis-link.md +++ b/docs/sources/shared/visualizations/change-axis-link.md @@ -4,4 +4,4 @@ title: Stack series link ## Axis -For full instructions, refer to [Change axis display]({{< relref "../../panels/visualizations/time-series/change-axis-display.md" >}}). \ No newline at end of file +For full instructions, refer to [Change axis display]({{< relref "../../panels/visualizations/time-series/change-axis-display.md" >}}). diff --git a/docs/sources/shared/visualizations/legend-mode.md b/docs/sources/shared/visualizations/legend-mode.md index af99952d3df..d0212a2505a 100644 --- a/docs/sources/shared/visualizations/legend-mode.md +++ b/docs/sources/shared/visualizations/legend-mode.md @@ -15,4 +15,4 @@ Use these settings to refine how the legend appears in your visualization. Choose where to display the legend. - **Bottom -** Below the graph. -- **Right -** To the right of the graph. \ No newline at end of file +- **Right -** To the right of the graph. diff --git a/docs/sources/shared/visualizations/stack-series-link.md b/docs/sources/shared/visualizations/stack-series-link.md index e30f36a3b05..a4d6edbc8ca 100644 --- a/docs/sources/shared/visualizations/stack-series-link.md +++ b/docs/sources/shared/visualizations/stack-series-link.md @@ -4,4 +4,4 @@ title: Stack series link ### Stack series -For full instructions, refer to [Graph stacked time series]({{< relref "../../panels/visualizations/time-series/graph-time-series-stacking.md" >}}). \ No newline at end of file +For full instructions, refer to [Graph stacked time series]({{< relref "../../panels/visualizations/time-series/graph-time-series-stacking.md" >}}). diff --git a/docs/sources/sharing/_index.md b/docs/sources/sharing/_index.md index a0388947865..daa2e842fd4 100644 --- a/docs/sources/sharing/_index.md +++ b/docs/sources/sharing/_index.md @@ -6,6 +6,7 @@ weight = 85 # Sharing dashboards and panels Grafana allows you to share dashboards and panels with other users within an organization and in certain situations, publicly on the Web. You can share using: + - A direct link - A Snapshot - An embedded link (for panels only) @@ -15,8 +16,8 @@ Refer to [Share a dashboard]({{< relref "share-dashboard.md" >}}) and [Share a p You must have an authorized viewer permission to see an image rendered by a direct link. -The same permission is also required to view embedded links unless you have anonymous access permission enabled for your Grafana instance. +The same permission is also required to view embedded links unless you have anonymous access permission enabled for your Grafana instance. -*> Note:** As of Grafana 8.0, anonymous access permission is no available for Grafana Cloud. +\*> Note:\*\* As of Grafana 8.0, anonymous access permission is no available for Grafana Cloud. When you share a panel or dashboard as a snapshot, a snapshot (of the panel or the dashboard at that moment in time) is publicly available on the web. Anyone with a link to it can access it. Since snapshots do not need any authorization to view, Grafana strips information related to the account it came from, as well as any sensitive data from the snapshot. diff --git a/docs/sources/sharing/playlists.md b/docs/sources/sharing/playlists.md index 6a1ad91b1a2..6e8891275cb 100644 --- a/docs/sources/sharing/playlists.md +++ b/docs/sources/sharing/playlists.md @@ -5,10 +5,10 @@ weight = 4 draft = "true" +++ - # Playlists -A _playlist +A \_playlist + - is a list of dashboards that are displayed in a sequence. You might use a playlist to build situational awareness or to present your metrics to your team or visitors. Grafana automatically scales dashboards to any resolution, which makes them perfect for big screens. @@ -88,7 +88,7 @@ You can save a playlist to add it to your **Playlists** page, where you can star 1. Click **Playlists**. 1. Click on the playlist. 1. Edit the playlist. - * Ensure that your playlist has a **Name**, **Interval**, and at least one **Dashboard** added to it. + - Ensure that your playlist has a **Name**, **Interval**, and at least one **Dashboard** added to it. 1. Click **Save**. ## Start a playlist @@ -101,38 +101,38 @@ By default, each dashboard is displayed for the amount of time entered in the In 1. Next to the playlist you want to start, click **Start playlist**. 1. In the dropdown, select the mode you want the playlist to display in. - **Normal mode:** - - The side menu remains visible. - - The navbar, row and panel controls appear at the top of the screen. + - The side menu remains visible. + - The navbar, row and panel controls appear at the top of the screen. - **TV mode:** - - The side menu is hidden/removed. - - The navbar, row and panel controls appear at the top of the screen. - - Enabled automatically after one minute of user inactivity. - - You can enable it manually using the `d v` sequence shortcut, or by appending the parameter `?inactive` to the dashboard URL. - - You can disable it with any mouse mouse movement or keyboard action. + - The side menu is hidden/removed. + - The navbar, row and panel controls appear at the top of the screen. + - Enabled automatically after one minute of user inactivity. + - You can enable it manually using the `d v` sequence shortcut, or by appending the parameter `?inactive` to the dashboard URL. + - You can disable it with any mouse mouse movement or keyboard action. - **TV mode (with auto fit panels):** - - The side menu is hidden/removed. - - The navbar, row and panel controls appear at the top of the screen. - - Dashboard panels automatically adjust to optimize space on screen. + - The side menu is hidden/removed. + - The navbar, row and panel controls appear at the top of the screen. + - Dashboard panels automatically adjust to optimize space on screen. - **Kiosk mode:** - - The side menu, navbar, row and panel controls are completely hidden/removed from view. - - You can enable it manually using the `d v` sequence shortcut after the playlist has started. - - You can disable it manually with the same shortcut. + - The side menu, navbar, row and panel controls are completely hidden/removed from view. + - You can enable it manually using the `d v` sequence shortcut after the playlist has started. + - You can disable it manually with the same shortcut. - **Kiosk mode (with auto fit panels):** - - The side menu, navbar, row and panel controls are completely hidden/removed from view. - - Dashboard panels automatically adjust to optimize space on screen. + - The side menu, navbar, row and panel controls are completely hidden/removed from view. + - Dashboard panels automatically adjust to optimize space on screen. ## Control a playlist You can control a playlist in **Normal** or **TV** mode after it's started, using the navigation bar at the top of your screen. -| Button | Result | -| --- | --- | -| Next (double-right arrow) | Advances to the next dashboard. | -| Back (left arrow) | Returns to the previous dashboard. | -| Stop (square) | Ends the playlist, and exits to the current dashboard. | -| Cycle view mode (monitor icon) | Rotates the display of the dashboards in different view modes. | -| Time range | Displays data within a time range. It can be set to display the last 5 minutes up to 5 years ago, or a custom time range, using the down arrow. | -| Refresh (circle arrow) | Reloads the dashboard, to display the current data. It can be set to reload automatically every 5 seconds to 1 day, using the drop down arrow. | +| Button | Result | +| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| Next (double-right arrow) | Advances to the next dashboard. | +| Back (left arrow) | Returns to the previous dashboard. | +| Stop (square) | Ends the playlist, and exits to the current dashboard. | +| Cycle view mode (monitor icon) | Rotates the display of the dashboards in different view modes. | +| Time range | Displays data within a time range. It can be set to display the last 5 minutes up to 5 years ago, or a custom time range, using the down arrow. | +| Refresh (circle arrow) | Reloads the dashboard, to display the current data. It can be set to reload automatically every 5 seconds to 1 day, using the drop down arrow. | > Shortcut: Press the Esc key to stop the playlist from your keyboard. @@ -140,11 +140,13 @@ You can control a playlist in **Normal** or **TV** mode after it's started, usin You can share a playlist by copying the link address on the view mode you prefer, and pasting the URL to your destination. -1. From the Dashboards submenu, click **Playlists**. -1. Next to the playlist you want to share, click **Start playlist**. -1. In the dropdown, right click the view mode you prefer. -1. Click **Copy Link Address** to copy the URL to your clipboard. +1. From the Dashboards submenu, click **Playlists**. +1. Next to the playlist you want to share, click **Start playlist**. +1. In the dropdown, right click the view mode you prefer. +1. Click **Copy Link Address** to copy the URL to your clipboard. + + Example: The URL for the first playlist on the Grafana Play site in Kiosk mode will look like this: + + [https://play.grafana.org/playlists/play/1?kiosk](https://play.grafana.org/playlists/play/1?kiosk). - Example: The URL for the first playlist on the Grafana Play site in Kiosk mode will look like this: -[https://play.grafana.org/playlists/play/1?kiosk](https://play.grafana.org/playlists/play/1?kiosk). -1. Paste the URL to your destination. +1. Paste the URL to your destination. diff --git a/docs/sources/sharing/share-dashboard.md b/docs/sources/sharing/share-dashboard.md index e805eb44383..6a19ea5af16 100644 --- a/docs/sources/sharing/share-dashboard.md +++ b/docs/sources/sharing/share-dashboard.md @@ -15,6 +15,7 @@ To share a dashboard: 1. Click on the share icon in the top navigation. The share dialog opens and shows the Link tab. ![Dashboard share direct link](/static/img/docs/sharing/share-dashboard-direct-link-7-3.png) + ## Use direct link The Link tab has the current time range, template variables and theme selected by default. You can optionally select a shortened URL to share. diff --git a/docs/sources/sharing/share-panel.md b/docs/sources/sharing/share-panel.md index 001fd458477..8d016f2b1f1 100644 --- a/docs/sources/sharing/share-panel.md +++ b/docs/sources/sharing/share-panel.md @@ -7,7 +7,7 @@ weight = 6 # Share a panel -You can share a panel as a direct link, as a snapshot or as an embedded link. You can also create library panels using the “Share” option for any panel. +You can share a panel as a direct link, as a snapshot or as an embedded link. You can also create library panels using the “Share” option for any panel. To share a panel: @@ -33,6 +33,7 @@ Here is an example of a link to a server-side rendered PNG: ```bash https://play.grafana.org/d/000000012/grafana-play-home?orgId=1&from=1568719680173&to=1568726880174&panelId=4&fullscreen ``` + #### Query string parameters for server-side rendered images - **width:** width in pixels. Default is 800. @@ -59,7 +60,7 @@ If you created a snapshot by mistake, click **delete snapshot** to remove the sn ## Embed panel -You can embed a panel using an iframe on another web site. A viewer must be signed into Grafana to view the graph. +You can embed a panel using an iframe on another web site. A viewer must be signed into Grafana to view the graph. **> Note:** As of Grafana 8.0, anonymous access permission is no available for Grafana Cloud. @@ -68,7 +69,12 @@ You can embed a panel using an iframe on another web site. A viewer must be sign Here is an example of the HTML code: ```html - + ``` The result is an interactive Grafana graph embedded in an iframe: @@ -79,9 +85,9 @@ The result is an interactive Grafana graph embedded in an iframe: To create a library panel from the Share Panel dialog: -1. Click **Library panel**. +1. Click **Library panel**. {{< figure src="/static/img/docs/library-panels/create-lib-panel-8-0.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the create library panel dialog" >}} 1. In **Library panel name**, enter the name. 1. In **Save in folder**, select the folder to save the library panel. By default, the General folder is selected. 1. Click **Create library panel** to save your changes. -1. Save the dashboard. +1. Save the dashboard. diff --git a/docs/sources/troubleshooting/_index.md b/docs/sources/troubleshooting/_index.md index c72de3fe376..ef8c9f72fc4 100644 --- a/docs/sources/troubleshooting/_index.md +++ b/docs/sources/troubleshooting/_index.md @@ -39,5 +39,3 @@ sudo yum install urw-fonts Check out the [FAQ section](https://community.grafana.com/c/howto/faq) on the Grafana Community page for answers to frequently asked questions. - - diff --git a/docs/sources/troubleshooting/diagnostics.md b/docs/sources/troubleshooting/diagnostics.md index 01363f85a7c..e3cf5dd9fd7 100644 --- a/docs/sources/troubleshooting/diagnostics.md +++ b/docs/sources/troubleshooting/diagnostics.md @@ -6,11 +6,11 @@ weight = 200 # Enable diagnostics You can set up the `grafana-server` process to enable certain diagnostics when it starts. This can be helpful -when investigating certain performance problems. It's *not* recommended to have these enabled by default. +when investigating certain performance problems. It's _not_ recommended to have these enabled by default. ## Turn on profiling -The `grafana-server` can be started with the arguments `-profile` to enable profiling and `-profile-port` to override +The `grafana-server` can be started with the arguments `-profile` to enable profiling and `-profile-port` to override the default HTTP port (`6060`) where the `pprof` debugging endpoints are available, for example: ```bash @@ -52,4 +52,4 @@ go tool trace 2019/11/24 22:20:42 Opening browser. Trace viewer is listening on http://127.0.0.1:39735 ``` -See [Go command trace](https://golang.org/cmd/trace/) for more information about how to analyze trace files. \ No newline at end of file +See [Go command trace](https://golang.org/cmd/trace/) for more information about how to analyze trace files. diff --git a/docs/sources/troubleshooting/troubleshoot-dashboards.md b/docs/sources/troubleshooting/troubleshoot-dashboards.md index c53e044ea68..a9dbb8dbb40 100644 --- a/docs/sources/troubleshooting/troubleshoot-dashboards.md +++ b/docs/sources/troubleshooting/troubleshoot-dashboards.md @@ -32,6 +32,7 @@ Some applications publish data intermittently; for example, they only post a met default, Grafana graphs connect lines between the data points. This can be very deceiving. In the picture below we have enabled: + - Points and 3-point radius to highlight where data points are actually present. - **Null value** is set to **connected**. diff --git a/docs/sources/troubleshooting/troubleshoot-queries.md b/docs/sources/troubleshooting/troubleshoot-queries.md index aa02b411193..2283bdb7ef9 100644 --- a/docs/sources/troubleshooting/troubleshoot-queries.md +++ b/docs/sources/troubleshooting/troubleshoot-queries.md @@ -24,6 +24,7 @@ For more information, refer to [Inspect a panel]({{< relref "../panels/inspect-p ## My query is slow How many data points is your query returning? A query that returns lots of data points will be slow. Try this: + - In **Query options**, limit the **Max data points** returned. - In **Query options**, increase the **Min interval** time. - In your query, use a `group by` function. diff --git a/docs/sources/variables/_index.md b/docs/sources/variables/_index.md index 4f2eeeba8ca..9beb52fdcfa 100644 --- a/docs/sources/variables/_index.md +++ b/docs/sources/variables/_index.md @@ -43,4 +43,3 @@ Variables can be used in titles, descriptions, text panels, and queries. Queries - Variable drop-down lists are displayed in the order they are listed in the variable list in Dashboard settings. - Put the variables that you will change often at the top, so they will be shown first (far left on the dashboard). - diff --git a/docs/sources/variables/filter-variables-with-regex.md b/docs/sources/variables/filter-variables-with-regex.md index fb25635b6ee..299b1d5891f 100644 --- a/docs/sources/variables/filter-variables-with-regex.md +++ b/docs/sources/variables/filter-variables-with-regex.md @@ -4,7 +4,6 @@ keywords = ["grafana", "templating", "documentation", "guide", "template", "vari weight = 700 +++ - # Filter variables with regex Using the Regex Query option, you filter the list of options returned by the variable query or modify the options returned. diff --git a/docs/sources/variables/formatting-multi-value-variables.md b/docs/sources/variables/formatting-multi-value-variables.md index 2ec4d9df884..b8a9b1ee23f 100644 --- a/docs/sources/variables/formatting-multi-value-variables.md +++ b/docs/sources/variables/formatting-multi-value-variables.md @@ -11,7 +11,7 @@ Interpolating a variable with multiple values selected is tricky as it is not st ## Multi-value variables with a Graphite data source -Graphite uses glob expressions. A variable with multiple values would, in this case, be interpolated as `{host1,host2,host3}` if the current variable value was *host1*, *host2*, and *host3*. +Graphite uses glob expressions. A variable with multiple values would, in this case, be interpolated as `{host1,host2,host3}` if the current variable value was _host1_, _host2_, and _host3_. ## Multi-value variables with a Prometheus or InfluxDB data source @@ -26,5 +26,6 @@ Elasticsearch uses lucene query syntax, so the same variable would be formatted Automatic escaping and formatting can cause problems and it can be tricky to grasp the logic behind it. Especially for InfluxDB and Prometheus where the use of regex syntax requires that the variable is used in regex operator context. If you do not want Grafana to do this automatic regex escaping and formatting, then you must do one of the following: + - Turn off the **Multi-value** or **Include All option** options. - Use the [raw variable format]({{< relref "advanced-variable-format-options.md#raw" >}}). diff --git a/docs/sources/variables/variable-types/_index.md b/docs/sources/variables/variable-types/_index.md index 712bfecda53..c1089495b7a 100644 --- a/docs/sources/variables/variable-types/_index.md +++ b/docs/sources/variables/variable-types/_index.md @@ -7,14 +7,14 @@ weight = 140 Grafana uses several types of variables. -| Variable type | Description | -|:---|:---| -| Query | Query-generated list of values such as metric names, server names, sensor IDs, data centers, and so on. [Add a query variable]({{< relref "add-query-variable.md" >}}). | -| Custom | Define the variable options manually using a comma-separated list. [Add a custom variable]({{< relref "add-custom-variable.md" >}}). | -| Text box | Display a free text input field with an optional default value. [Add a text box variable]({{< relref "add-text-box-variable.md" >}}). | -| Constant | Define a hidden constant. [Add a constant variable]({{< relref "add-constant-variable.md" >}}). | -| Data source | Quickly change the data source for an entire dashboard. [Add a data source variable]({{< relref "add-data-source-variable.md" >}}). | -| Interval | Interval variables represent time spans. [Add an interval variable]({{< relref "add-interval-variable.md" >}}). | -| Ad hoc filters | Key/value filters that are automatically added to all metric queries for a data source (InfluxDB, Prometheus, and Elasticsearch only). [Add ad hoc filters]({{< relref "add-ad-hoc-filters.md" >}}). | -| Global variables | Built-in variables that can be used in expressions in the query editor. Refer to [Global variables]({{< relref "global-variables" >}}). | -| Chained variables | Variable queries can contain other variables. Refer to [Chained variables]({{< relref "chained-variables.md" >}}). | +| Variable type | Description | +| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Query | Query-generated list of values such as metric names, server names, sensor IDs, data centers, and so on. [Add a query variable]({{< relref "add-query-variable.md" >}}). | +| Custom | Define the variable options manually using a comma-separated list. [Add a custom variable]({{< relref "add-custom-variable.md" >}}). | +| Text box | Display a free text input field with an optional default value. [Add a text box variable]({{< relref "add-text-box-variable.md" >}}). | +| Constant | Define a hidden constant. [Add a constant variable]({{< relref "add-constant-variable.md" >}}). | +| Data source | Quickly change the data source for an entire dashboard. [Add a data source variable]({{< relref "add-data-source-variable.md" >}}). | +| Interval | Interval variables represent time spans. [Add an interval variable]({{< relref "add-interval-variable.md" >}}). | +| Ad hoc filters | Key/value filters that are automatically added to all metric queries for a data source (InfluxDB, Prometheus, and Elasticsearch only). [Add ad hoc filters]({{< relref "add-ad-hoc-filters.md" >}}). | +| Global variables | Built-in variables that can be used in expressions in the query editor. Refer to [Global variables]({{< relref "global-variables" >}}). | +| Chained variables | Variable queries can contain other variables. Refer to [Chained variables]({{< relref "chained-variables.md" >}}). | diff --git a/docs/sources/variables/variable-types/add-interval-variable.md b/docs/sources/variables/variable-types/add-interval-variable.md index ca7b7f30e41..d23ca3c6e5e 100644 --- a/docs/sources/variables/variable-types/add-interval-variable.md +++ b/docs/sources/variables/variable-types/add-interval-variable.md @@ -43,4 +43,4 @@ A more complex Graphite example, from the [Graphite Template Nested Requests pan ``` groupByNode(summarize(movingAverage(apps.$app.$server.counters.requests.count, 5), '$interval', 'sum', false), 2, 'sum') -``` \ No newline at end of file +``` diff --git a/docs/sources/variables/variable-types/global-variables.md b/docs/sources/variables/variable-types/global-variables.md index 042a7cf14fd..c7656ce3009 100644 --- a/docs/sources/variables/variable-types/global-variables.md +++ b/docs/sources/variables/variable-types/global-variables.md @@ -9,31 +9,31 @@ weight = 900 Grafana has global built-in variables that can be used in expressions in the query editor. This topic lists them in alphabetical order and defines them. These variables are useful in queries, dashboard links, panel links, and data links. -## $__dashboard +## $\_\_dashboard > Only available in Grafana v6.7+. In Grafana 7.1, the variable changed from showing the UID of the current dashboard to the name of the current dashboard. This variable is the name of the current dashboard. -## $__from and $__to +## $**from and $**to Grafana has two built in time range variables: `$__from` and `$__to`. They are currently always interpolated as epoch milliseconds by default but you can control date formatting. > This special formatting syntax is only available in Grafan a 7.1.2+ -| Syntax | Example result | Description | -| ------------------------ | ------------------------ | ----------- | -| `${__from}` | 1594671549254 | Unix millisecond epoch | -| `${__from:date}` | 2020-07-13T20:19:09.254Z | No args, defaults to ISO 8601/RFC 3339 | -| `${__from:date:iso}` | 2020-07-13T20:19:09.254Z | ISO 8601/RFC 3339 | -| `${__from:date:seconds}` | 1594671549 | Unix seconds epoch | +| Syntax | Example result | Description | +| ------------------------ | ------------------------ | --------------------------------------------------------------------------------------------------------- | +| `${__from}` | 1594671549254 | Unix millisecond epoch | +| `${__from:date}` | 2020-07-13T20:19:09.254Z | No args, defaults to ISO 8601/RFC 3339 | +| `${__from:date:iso}` | 2020-07-13T20:19:09.254Z | ISO 8601/RFC 3339 | +| `${__from:date:seconds}` | 1594671549 | Unix seconds epoch | | `${__from:date:YYYY-MM}` | 2020-07 | Any custom [date format](https://momentjs.com/docs/#/displaying/) that does not include the `:` character | The above syntax works with `${__to}` as well. You can use this variable in URLs as well. For example, send a user to a dashboard that shows a time range from six hours ago until now: https://play.grafana.org/d/000000012/grafana-play-home?viewPanel=2&orgId=1?from=now-6h&to=now -## $__interval +## $\_\_interval You can use the `$__interval` variable as a parameter to group by time (for InfluxDB, MySQL, Postgres, MSSQL), Date histogram interval (for Elasticsearch), or as a _summarize_ function parameter (for Graphite). @@ -47,20 +47,20 @@ In the InfluxDB data source, the legacy variable `$interval` is the same variabl The InfluxDB and Elasticsearch data sources have `Group by time interval` fields that are used to hard code the interval or to set the minimum limit for the `$__interval` variable (by using the `>` syntax -> `>10m`). -## $__interval_ms +## $\_\_interval_ms This variable is the `$__interval` variable in milliseconds, not a time interval formatted string. For example, if the `$__interval` is `20m` then the `$__interval_ms` is `1200000`. -## $__name +## $\_\_name This variable is only available in the Singlestat panel and can be used in the prefix or suffix fields on the Options tab. The variable will be replaced with the series name or alias. -## $__org +## $\_\_org This variable is the ID of the current organization. `${__org.name}` is the name of the current organization. -## $__user +## $\_\_user > Only available in Grafana v7.1+ @@ -68,15 +68,15 @@ This variable is the ID of the current organization. `${__user.login}` is the login handle of the current user. `${__user.email}` is the email for the current user. -## $__range +## $\_\_range Currently only supported for Prometheus and Loki data sources. This variable represents the range for the current dashboard. It is calculated by `to - from`. It has a millisecond and a second representation called `$__range_ms` and `$__range_s`. -## $__rate_interval +## $\_\_rate_interval Currently only supported for Prometheus data sources. The `$__rate_interval` variable is meant to be used in the rate function. Refer to [Prometheus query variables]({{< relref "../../datasources/prometheus.md">}}) for details. -## $timeFilter or $__timeFilter +## $timeFilter or $\_\_timeFilter The `$timeFilter` variable returns the currently selected time range as an expression. For example, the time range interval `Last 7 days` expression is `time > now() - 7d`. diff --git a/docs/sources/whatsnew/_index.md b/docs/sources/whatsnew/_index.md index 95d45745fc0..89aff653b7e 100644 --- a/docs/sources/whatsnew/_index.md +++ b/docs/sources/whatsnew/_index.md @@ -24,6 +24,7 @@ as info on deprecations, breaking changes and plugin development read the [relea - [What's new in 7.0]({{< relref "whats-new-in-v7-0" >}}) ## Grafana 6 + - [What's new in 6.7]({{< relref "whats-new-in-v6-7" >}}) - [What's new in 6.6]({{< relref "whats-new-in-v6-6" >}}) - [What's new in 6.5]({{< relref "whats-new-in-v6-5" >}}) @@ -34,6 +35,7 @@ as info on deprecations, breaking changes and plugin development read the [relea - [What's new in 6.0]({{< relref "whats-new-in-v6-0" >}}) ## Grafana 5 + - [What's new in 5.4]({{< relref "whats-new-in-v5-4" >}}) - [What's new in 5.3]({{< relref "whats-new-in-v5-3" >}}) - [What's new in 5.2]({{< relref "whats-new-in-v5-2" >}}) diff --git a/docs/sources/whatsnew/whats-new-in-v2-0.md b/docs/sources/whatsnew/whats-new-in-v2-0.md index 3aca95b8e1c..4882bcca4ee 100644 --- a/docs/sources/whatsnew/whats-new-in-v2-0.md +++ b/docs/sources/whatsnew/whats-new-in-v2-0.md @@ -20,7 +20,7 @@ If you are interested in how to migrate from Grafana V1.x to V2.0, please read o Grafana now ships with its own required backend server. Also completely open-source, it's written in Go and has a full HTTP API. -In addition to new features, the backend server makes it much easier to set up and enjoy Grafana. Grafana 2.0 now ships as cross platform binaries with no dependencies. Authentication is built in, and Grafana is now capable of proxying connections to Data Sources. There are no longer any CORS (Cross Origin Resource Sharing) issues requiring messy workarounds. Elasticsearch is no longer required just to store dashboards. +In addition to new features, the backend server makes it much easier to set up and enjoy Grafana. Grafana 2.0 now ships as cross platform binaries with no dependencies. Authentication is built in, and Grafana is now capable of proxying connections to Data Sources. There are no longer any CORS (Cross Origin Resource Sharing) issues requiring messy workarounds. Elasticsearch is no longer required just to store dashboards. ## User and Organization permissions diff --git a/docs/sources/whatsnew/whats-new-in-v2-1.md b/docs/sources/whatsnew/whats-new-in-v2-1.md index 1a67255c0e8..e2872b94b20 100644 --- a/docs/sources/whatsnew/whats-new-in-v2-1.md +++ b/docs/sources/whatsnew/whats-new-in-v2-1.md @@ -9,88 +9,99 @@ list = false +++ # What's new in Grafana v2.1 + Grafana 2.1 brings improvements in three core areas: dashboarding, authentication, and data sources. As with every Grafana release, there is a whole slew of new features, enhancements, and bug fixes. ## More Dynamic Dashboards + The Templating system is one of the most powerful and well-used features of Grafana. The 2.1 release brings numerous improvements that make dashboards more dynamic than ever before. ### Multi-Value Template Variables + A template variable with Multi-Value enabled allows for the selection of multiple values at the same time. These variables can then be used in any Panel to make them more dynamic, and to give you the perfect view of your data. Multi-Value variables are also enabling the new `row repeat` and `panel repeat` feature described below. -![Multi-Value Select](/static/img/docs/v2/multi-select.gif "Multi-Value Select") +![Multi-Value Select](/static/img/docs/v2/multi-select.gif 'Multi-Value Select')

### Repeating Rows and Panels + It’s now possible to create a dashboard that automatically adds (or removes) both rows and panels based on selected variable values. Any row or any panel can be configured to repeat (duplicate itself) based on a multi-value template variable.

-![Repeating Rows and Panels](/static/img/docs/v2/panel-row-repeat.gif "Repeating Rows and Panels") +![Repeating Rows and Panels](/static/img/docs/v2/panel-row-repeat.gif 'Repeating Rows and Panels')

### Dashboard Links and Navigation + To support better navigation between dashboards, it's now possible to create custom and dynamic links from individual panels to appropriate Dashboards. You also have the ability to create flexible top-level links on any given dashboard thanks to the new dashboard navigation bar feature. -![Dashboard Links](/static/img/docs/v2/dash_links.png "Dashboard Links") +![Dashboard Links](/static/img/docs/v2/dash_links.png 'Dashboard Links') Dashboard links can be added under dashboard settings. Either defined as static URLs with a custom icon or as dynamic dashboard links or dropdowns based on custom dashboard search query. These links appear in the same row under the top menu where template variables appear. -- - - +--- ### Better local Dashboard support + Grafana can now index Dashboards saved locally as JSON from a given directory. These file based dashboards will appear in the regular dashboard search along regular DB dashboards. > **Note:** Saving local dashboards back the folder is not supported; this feature is meant for statically generated JSON dashboards. -- - - +--- ## New Authentication Options + New authentication methods add numerous options to manage users, roles and organizations. ### LDAP support + This highly requested feature now allows your Grafana users to login with their LDAP credentials. You can also specify mappings between LDAP group memberships and Grafana Organization user roles. ### Basic Auth Support + You can now authenticate against the Grafana API utilizing a simple username and password with basic HTTP authentication. > **Note:** This can be useful for provisioning and configuring management systems that need > to utilize the API without having to create an API key. - ### Auth Proxy Support + You can now authenticate utilizing a header (eg. X-Authenticated-User, or X-WEBAUTH-USER) > **Note:** this can be useful in situations with reverse proxies. - ### New “Read-only Editor” User Role + There is a new User role available in this version of Grafana: “Read-only Editor”. This role behaves just -like the Viewer role does in Grafana 2.0. That is you can edit graphs and queries but not save dashboards. +like the Viewer role does in Grafana 2.0. That is you can edit graphs and queries but not save dashboards. The Viewer role has been modified in Grafana 2.1 so that users assigned this role can no longer edit panels. -- - - +--- ## Data source Improvements ### InfluxDB 0.9 Support + Grafana 2.1 now comes with full support for InfluxDB 0.9. There is a new query editor designed from scratch for the new features InfluxDB 0.9 enables. -![InfluxDB Editor](/static/img/docs/v2/influx_09_editor_anim.gif "InfluxDB Editor") +![InfluxDB Editor](/static/img/docs/v2/influx_09_editor_anim.gif 'InfluxDB Editor')
### OpenTSDB Improvements + Grafana OpenTSDB data source now supports template variable values queries. This means you can create template variables that fetches the values from OpenTSDB (for example metric names, tag names, or tag values). The query editor is also enhanced to limiting tags by metric. @@ -98,10 +109,11 @@ The query editor is also enhanced to limiting tags by metric. > **Note:** OpenTSDB config option tsd.core.meta.enable_realtime_ts must enabled for OpenTSDB lookup API) ### New Data Source: KairosDB + The Cassandra backed time series database KairosDB is now supported in Grafana out of the box. Thank you to masaori335 for his hard work in getting it to this point. -- - - +--- ## Panel Improvements @@ -110,24 +122,27 @@ Overriding the colors of specific series using regular expressions, changing how and allowing string values will help you better understand your data at a glance. ### Graph Panel + Define series color using regex rule. This is useful when you have templated graphs with series names that change depending selected template variables. Using a regex style override rule you could for example make all series that contain the word **CPU** `red` and assigned to the second y axis. -![Define series color using regex rule](/static/img/docs/v2/regex_color_override.png "Define series color using regex rule") +![Define series color using regex rule](/static/img/docs/v2/regex_color_override.png 'Define series color using regex rule') New series style override, negative-y transform and stack groups. Negative y transform is very useful if you want to plot a series on the negative y scale without affecting the legend values like min or max or the values shown in the hover tooltip. -![Negative-y Transform](/static/img/docs/v2/negative-y.png "Negative-y Transform") +![Negative-y Transform](/static/img/docs/v2/negative-y.png 'Negative-y Transform') -![Negative-y Transform](/static/img/docs/v2/negative-y-form.png "Negative-y Transform") +![Negative-y Transform](/static/img/docs/v2/negative-y-form.png 'Negative-y Transform') ### Singlestat Panel + Now support string values. Useful for time series database like InfluxDB that supports string values. ### Changelog + For a detailed list and link to github issues for everything included in the 2.1 release please view the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file. diff --git a/docs/sources/whatsnew/whats-new-in-v2-5.md b/docs/sources/whatsnew/whats-new-in-v2-5.md index 1d501710384..f85ed5b638e 100644 --- a/docs/sources/whatsnew/whats-new-in-v2-5.md +++ b/docs/sources/whatsnew/whats-new-in-v2-5.md @@ -11,11 +11,13 @@ list = false # What's new in Grafana v2.5 ## Release highlights + This is an exciting release, and we want to share some of the highlights. The release includes many fixes and enhancements to all areas of Grafana, like new Data Sources, a new and improved timepicker, user invites, panel resize handles and improved InfluxDB and OpenTSDB support. ### New time range controls + New Time picker A new timepicker with room for more quick ranges as well as new types of relative ranges, like `Today`, @@ -60,8 +62,8 @@ metrics directly from Grafana. Grafana 2.5 ships with a new Prometheus data source that will allow you to query and visualize data stored in Prometheus. - ### Mix different data sources + Mix data sources in the same dashboard or in the same graph! In previous releases you have been able to mix different data sources on the same dashboard. In v2.5 you @@ -71,11 +73,13 @@ to plot metrics from different Graphite servers on the same Graph or plot data f data from Prometheus. Mixing different data sources on the same graph works for any data source, even custom ones. ### Panel Resize handles + This release adds resize handles to the bottom right corners of panels making it easy to resize both width and height. ### User invites + This version also brings some new features for user management. @@ -95,14 +99,16 @@ This version also brings some new features for user management. - Admin page for all organizations (remove / edit) ### Breaking changes + There have been some changes to the data source plugin API. If you are using a custom plugin check that there is an update for it before you upgrade. Also the new time picker does not currently support custom quick ranges like the last one did. This will likely be added in a future release. ### Changelog + For a detailed list and link to github issues for everything included in the 2.5 release please view the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file. -- - - +--- ### Download Grafana 2.5 now diff --git a/docs/sources/whatsnew/whats-new-in-v2-6.md b/docs/sources/whatsnew/whats-new-in-v2-6.md index e0ed75e5eff..d5c2dd4d7f5 100644 --- a/docs/sources/whatsnew/whats-new-in-v2-6.md +++ b/docs/sources/whatsnew/whats-new-in-v2-6.md @@ -11,10 +11,12 @@ list = false # What's new in Grafana v2.6 ## Release highlights + The release includes a new Table panel, a new InfluxDB query editor, support for Elasticsearch Pipeline Metrics and support for multiple Cloudwatch credentials. ## Table Panel + The new table panel is very flexible, supporting both multiple modes for time series as well as for @@ -28,22 +30,26 @@ Where `Metric` is the name of the time series. ### Table Transform + Above you see the options tab for the **Table Panel**. The most important option is the `To Table Transform`. This option controls how the result of the metric/data query is turned into a table. ### Column Styles + The column styles allow you control how dates and numbers are formatted. ### Time series to columns + This transform allows you to take multiple time series and group them by time. Which will result in a `Time` column and a column for each time series. In the screenshot above you can see how the same time series query as in the previous example can be transformed into -a different table by changing the `To Table Transform` to `Time series to columns`. +a different table by changing the `To Table Transform` to `Time series to columns`. ### Time series to aggregations + This transform works very similar to the legend values in the Graph panel. Each series gets its own row. In the Options tab you can select which aggregations you want using the plus button the Columns section. @@ -78,6 +84,7 @@ The table can also show any annotations you have enabled in the dashboard. ## The New InfluxDB Editor + The new InfluxDB editor is a lot more flexible and powerful. It supports nested functions, like `derivative`. It also uses the same technique as the Graphite query editor in that it presents nested functions as chain of function transformations. It tries to simplify and unify the complicated nature of InfluxDB's query language. @@ -98,10 +105,12 @@ SELECT derivative(mean("value"), 10s) /10 AS "REQ/s" FROM .... ``` ### Select multiple fields + Use the plus button and select Field > field to add another SELECT clause. You can also specify an asterix `*` to select all fields. ### Group By + To group by a tag click the plus icon at the end of the GROUP BY row. Pick a tag from the dropdown that appears. You can remove the group by by clicking on the `tag` and then click on the x icon. @@ -119,9 +128,10 @@ to hide metrics from appearing in the graph. ![](/static/img/docs/elasticsearch/pipeline_metrics_editor.png) ## Changelog + For a detailed list and link to github issues for everything included in the 2.6 release please view the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file. -- - - +--- Download Grafana 2.6 now diff --git a/docs/sources/whatsnew/whats-new-in-v3-0.md b/docs/sources/whatsnew/whats-new-in-v3-0.md index f4c79a3056c..a69ceee0b60 100644 --- a/docs/sources/whatsnew/whats-new-in-v3-0.md +++ b/docs/sources/whatsnew/whats-new-in-v3-0.md @@ -36,8 +36,8 @@ two new plugin types: - **Panel** plugins let you add new panel types for your Dashboards. - **App** plugins bundle **Panels** plugins, **Data Sources** plugins, -Dashboards, and Grafana **Pages**. Apps are a great way to provide an -entire experience right within Grafana. + Dashboards, and Grafana **Pages**. Apps are a great way to provide an + entire experience right within Grafana. ## Grafana.com @@ -183,13 +183,13 @@ now stored without any formatting (glob/regex/etc), this is done on the fly when variable is interpolated. - Plugin API: The plugin API has changed so if you are using a custom -data source (or panel) they need to be updated as well. + data source (or panel) they need to be updated as well. - InfluxDB 0.8: This data source is no longer included in releases, -you can still install manually from [Grafana.com](https://grafana.com) + you can still install manually from [Grafana.com](https://grafana.com) - KairosDB: This data source has also no longer shipped with Grafana, -you can install it manually from [Grafana.com](https://grafana.com) + you can install it manually from [Grafana.com](https://grafana.com) ## Plugin showcase @@ -197,20 +197,24 @@ Discovering and installing plugins is very quick and easy with Grafana 3.0 and [ are a couple that I encourage you try! #### [Clock Panel](https://grafana.com/plugins/grafana-clock-panel) + Support's both current time and count down mode. #### [Pie Chart Panel](https://grafana.com/plugins/grafana-piechart-panel) + A simple pie chart panel is now available as an external plugin. #### [WorldPing App](https://grafana.com/plugins/raintank-worldping-app) + This is full blown Grafana App that adds new panels, data sources and pages to give feature rich global performance monitoring directly from your on-prem Grafana. #### [Zabbix App](https://grafana.com/plugins/alexanderzobnin-zabbix-app) + This app contains the already very pouplar Zabbix data source plugin, 2 dashboards and a triggers panel. It is created and maintained by [Alexander Zobnin](https://github.com/alexanderzobnin/grafana-zabbix). diff --git a/docs/sources/whatsnew/whats-new-in-v3-1.md b/docs/sources/whatsnew/whats-new-in-v3-1.md index e138ca8286d..6f2ddf402bb 100644 --- a/docs/sources/whatsnew/whats-new-in-v3-1.md +++ b/docs/sources/whatsnew/whats-new-in-v3-1.md @@ -51,6 +51,7 @@ Do you want metrics about viewing metrics? Of course you do! In this release we Switched logging framework to log15 to enable key value per logging and filtering based on different log levels. It's now possible to configure different log levels for different modules. ### Breaking changes + - **Logging** format have been changed to improve log filtering. - **Graphite PNG** Graphite PNG support dropped from Graph panel (use Grafana native PNG instead). - **Migration** No longer possible to migrate dashboards from 1.x (Stored in ES or Influx 0.8). diff --git a/docs/sources/whatsnew/whats-new-in-v4-0.md b/docs/sources/whatsnew/whats-new-in-v4-0.md index 0c2e46b5899..e405e0d6350 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-0.md +++ b/docs/sources/whatsnew/whats-new-in-v4-0.md @@ -109,6 +109,7 @@ We always try to bring some UX/UI refinements and polish in every release. shortcut or by adding &kiosk to the URL when you load a dashboard. In kiosk mode the navbar is completely hidden/removed from view.

+
{{< figure src="/static/img/docs/v4/tvmode.png" caption="TV mode" >}} diff --git a/docs/sources/whatsnew/whats-new-in-v4-1.md b/docs/sources/whatsnew/whats-new-in-v4-1.md index 17d4cd9b244..fb3d0c82ec9 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-1.md +++ b/docs/sources/whatsnew/whats-new-in-v4-1.md @@ -9,6 +9,7 @@ list = false +++ ## What's new in Grafana v4.1 + - **Graph**: Support for shared tooltip on all graphs as you hover over one graph. [#1578](https://github.com/grafana/grafana/pull/1578), [#6274](https://github.com/grafana/grafana/pull/6274) - **Victorops**: Add VictorOps notification integration [#6411](https://github.com/grafana/grafana/issues/6411), thx [@ichekrygin](https://github.com/ichekrygin) - **Opsgenie**: Add OpsGenie notification integratiion [#6687](https://github.com/grafana/grafana/issues/6687), thx [@kylemcc](https://github.com/kylemcc) @@ -37,6 +38,7 @@ You can set a help text in the general tab on any panel. The help text is using {{< figure class="float-right" max-width="60%" src="/static/img/docs/v41/helptext_hover.png" caption="Hovering help text" >}} Panels with a help text available have a little indicator in the top left corner. You can show the help text by hovering the icon. +
### Easier Cloudwatch configuration @@ -47,6 +49,7 @@ In Grafana 4.1.0 you can configure your Cloudwatch data source with `access key` This enables people to use the Cloudwatch data source without having access to the filesystem where Grafana is running. Once the `access key` and `secret key` have been saved the user will no longer be able to view them. +
## Upgrade and Breaking changes @@ -63,4 +66,5 @@ of new features, changes, and bug fixes. Head to [v4.1 download page](/download/4_1_0/) for download links and instructions. ## Thanks + A big thanks to all the Grafana users who contribute by submitting PRs, bug reports and feedback! diff --git a/docs/sources/whatsnew/whats-new-in-v4-2.md b/docs/sources/whatsnew/whats-new-in-v4-2.md index 46d33af08c7..4664cacb042 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-2.md +++ b/docs/sources/whatsnew/whats-new-in-v4-2.md @@ -20,7 +20,7 @@ Big thumbs up! - **Hipchat**: Adds support for sending alert notifications to hipchat [#6451](https://github.com/grafana/grafana/issues/6451), thx [@jregovic](https://github.com/jregovic) - **Telegram**: Added Telegram alert notifier [#7098](https://github.com/grafana/grafana/pull/7098), thx [@leonoff](https://github.com/leonoff) - **LINE**: Add LINE as alerting notification channel [#7301](https://github.com/grafana/grafana/pull/7301), thx [@huydx](https://github.com/huydx) -- **Templating**: Make $__interval and $__interval_ms global built in variables that can be used in by any data source (in panel queries), closes [#7190](https://github.com/grafana/grafana/issues/7190), closes [#6582](https://github.com/grafana/grafana/issues/6582) +- **Templating**: Make $**interval and $**interval_ms global built in variables that can be used in by any data source (in panel queries), closes [#7190](https://github.com/grafana/grafana/issues/7190), closes [#6582](https://github.com/grafana/grafana/issues/6582) - **Alerting**: Adds deduping of alert notifications [#7632](https://github.com/grafana/grafana/pull/7632) - **Alerting**: Better information about why an alert triggered [#7035](https://github.com/grafana/grafana/issues/7035) - **Orgs**: Sharing dashboards using Grafana share feature will now redirect to correct org. [#6948](https://github.com/grafana/grafana/issues/6948) diff --git a/docs/sources/whatsnew/whats-new-in-v4-3.md b/docs/sources/whatsnew/whats-new-in-v4-3.md index b4c7b3c88cb..7788150e28c 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-3.md +++ b/docs/sources/whatsnew/whats-new-in-v4-3.md @@ -52,7 +52,7 @@ The Heatmap panel also works with Elasticsearch Histogram Aggregations for more This release includes a [new core data source for MySQL](http://docs.grafana.org/features/datasources/mysql/). You can write any possible MySQL query and format it as either Time Series or Table Data allowing it be used with the Graph Panel, Table Panel and SingleStat Panel. We are still working on the MySQL data source. As it's missing some important features, like templating and macros and future changes could be breaking, we are -labeling the state of the data source as Alpha. Instead of holding up the release of v4.3 we are including it in its current shape to get some early feedback. So please try it out and let us know what you think on [twitter](https://twitter.com/intent/tweet?text=.%40grafana&source=4_3_beta_blog&related=blog) or on our [community forum](https://community.grafana.com/c/releases). Is this a feature that you would use? How can we make it better? +labeling the state of the data source as Alpha. Instead of holding up the release of v4.3 we are including it in its current shape to get some early feedback. So please try it out and let us know what you think on [twitter](https://twitter.com/intent/tweet?text=.%40grafana&source=4_3_beta_blog&related=blog) or on our [community forum](https://community.grafana.com/c/releases). Is this a feature that you would use? How can we make it better? **The query editor can show the generated and interpolated SQL that is sent to the MySQL server.** diff --git a/docs/sources/whatsnew/whats-new-in-v4-4.md b/docs/sources/whatsnew/whats-new-in-v4-4.md index 6d55ba19eb4..902bdac4070 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-4.md +++ b/docs/sources/whatsnew/whats-new-in-v4-4.md @@ -24,6 +24,7 @@ Initial feature request: [#4638](https://github.com/grafana/grafana/issues/4638) Pull Request: [#8472](https://github.com/grafana/grafana/pull/8472) ## Enhancements + - **Elasticsearch**: Added filter aggregation label [#8420](https://github.com/grafana/grafana/pull/8420), thx [@tianzk](github.com/tianzk) - **Sensu**: Added option for source and handler [#8405](https://github.com/grafana/grafana/pull/8405), thx [@joemiller](github.com/joemiller) - **CSV**: Configurable csv export datetime format [#8058](https://github.com/grafana/grafana/issues/8058), thx [@cederigo](github.com/cederigo) diff --git a/docs/sources/whatsnew/whats-new-in-v4-5.md b/docs/sources/whatsnew/whats-new-in-v4-5.md index 95a690ce269..57b4725a393 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-5.md +++ b/docs/sources/whatsnew/whats-new-in-v4-5.md @@ -23,10 +23,12 @@ The new query editor has full syntax highlighting. As well as auto complete for {{< figure src="/static/img/docs/v45/elastic_ad_hoc_filters.png" class="docs-image--block" >}} ### Table cell links! -Create column styles that turn cells into links that use the value in the cell (or other row values) to generate a URL to another dashboard or system: + +Create column styles that turn cells into links that use the value in the cell (or other row values) to generate a URL to another dashboard or system: ![](/static/img/docs/v45/table_links.jpg) ### Query Inspector + Query Inspector is a new feature that shows query requests and responses. This can be helpful if a graph is not shown or shows something very different than what you expected. For more information about query inspector, refer to [using grafanas query inspector to troubleshoot issues](https://community.grafana.com/t/using-grafanas-query-inspector-to-troubleshoot-issues/2630). ![](/static/img/docs/v45/query_inspector.png) diff --git a/docs/sources/whatsnew/whats-new-in-v4-6.md b/docs/sources/whatsnew/whats-new-in-v4-6.md index 5e4ef6eabeb..1b240fa7b5d 100644 --- a/docs/sources/whatsnew/whats-new-in-v4-6.md +++ b/docs/sources/whatsnew/whats-new-in-v4-6.md @@ -51,7 +51,7 @@ This makes exploring and filtering Prometheus data much easier. - **Cloudwatch**: Add support for alerting using the cloudwatch data source [#8050](https://github.com/grafana/grafana/pull/8050), thx [@mtanda](https://github.com/mtanda) - **Pagerduty**: Include triggering series in pagerduty notification [#8479](https://github.com/grafana/grafana/issues/8479), thx [@rickymoorhouse](https://github.com/rickymoorhouse) - **Timezone**: Time ranges like Today and Yesterday now work correctly when timezone setting is set to UTC [#8916](https://github.com/grafana/grafana/issues/8916), thx [@ctide](https://github.com/ctide) -- **Prometheus**: Align $__interval with the step parameters. [#9226](https://github.com/grafana/grafana/pull/9226), thx [@alin-amana](https://github.com/alin-amana) +- **Prometheus**: Align $\_\_interval with the step parameters. [#9226](https://github.com/grafana/grafana/pull/9226), thx [@alin-amana](https://github.com/alin-amana) - **Prometheus**: Autocomplete for label name and label value [#9208](https://github.com/grafana/grafana/pull/9208), thx [@mtanda](https://github.com/mtanda) - **Postgres**: New Postgres data source [#9209](https://github.com/grafana/grafana/pull/9209), thx [@svenklemm](https://github.com/svenklemm) - **Data sources**: closes [#9371](https://github.com/grafana/grafana/issues/9371), [#5334](https://github.com/grafana/grafana/issues/5334), [#8812](https://github.com/grafana/grafana/issues/8812), thx [@mattbostock](https://github.com/mattbostock) @@ -69,4 +69,5 @@ This makes exploring and filtering Prometheus data much easier. - **Postgres**: modify group by time macro so it can be used in select clause [#9527](https://github.com/grafana/grafana/pull/9527), thanks [@svenklemm](https://github.com/svenklemm) ### Tech + - **Go**: Grafana is now built using golang 1.9 diff --git a/docs/sources/whatsnew/whats-new-in-v5-0.md b/docs/sources/whatsnew/whats-new-in-v5-0.md index 088a5a6277f..890d1c3d25e 100644 --- a/docs/sources/whatsnew/whats-new-in-v5-0.md +++ b/docs/sources/whatsnew/whats-new-in-v5-0.md @@ -115,7 +115,6 @@ in sync with dashboards in Grafana's database. The dashboard provisioner has mul which makes it possible to star them, use one as the home dashboard, set permissions and other features in Grafana that expects the dashboards to exist in the database. More info in the [dashboard provisioning docs]({{< relref "../administration/provisioning.md" >}}) - ## Graphite Tags and Integrated Function Docs {{< figure src="/static/img/docs/v50/graphite_tags.png" max-width="1000px" class="docs-image--right" >}} @@ -133,7 +132,7 @@ We are introducing a new unique identifier (`uid`) in the dashboard JSON model. generated if not provided when creating a dashboard and will have a length of 9-12 characters. The unique identifier allows having persistent URLs for accessing dashboards, sharing them -between instances and when using [dashboard provisioning]((/administration/provisioning/#reusable-dashboard-urls)). This means that dashboard can +between instances and when using [dashboard provisioning](<(/administration/provisioning/#reusable-dashboard-urls)>). This means that dashboard can be renamed without breaking any links. We're changing the URL format for dashboards from `/dashboard/db/:slug` to `/d/:uid/:slug`. We'll keep supporting the old slug-based URLs for dashboards and redirects to the new one for backward compatibility. Please note that the old slug-based URLs @@ -144,5 +143,6 @@ This might seem like a small change, but we are incredibly excited about it sinc much easier to manage, collaborate and navigate between dashboards. ### API changes + New uid-based routes in the dashboard API have been introduced to retrieve and delete dashboards. The corresponding slug-based routes have been deprecated and will be removed in a future release. diff --git a/docs/sources/whatsnew/whats-new-in-v5-1.md b/docs/sources/whatsnew/whats-new-in-v5-1.md index 536d0e3188c..02a4486f75e 100644 --- a/docs/sources/whatsnew/whats-new-in-v5-1.md +++ b/docs/sources/whatsnew/whats-new-in-v5-1.md @@ -34,10 +34,10 @@ Grafana v5.1 brings an improved official docker image which should make it easie We've switched the id of the grafana user running Grafana inside a docker container. Unfortunately this means that files created prior to 5.1 won't have the correct permissions for later versions and thereby this introduces a breaking change. We made this change so that it would be easier for you to control what user Grafana is executed as (see examples below). -Version | User | User ID ---------|---------|--------- -< 5.1 | grafana | 104 ->= 5.1 | grafana | 472 +| Version | User | User ID | +| ------- | ------- | ------- | +| < 5.1 | grafana | 104 | +| >= 5.1 | grafana | 472 | Please read the [updated documentation](/installation/docker/#migrate-to-v51-or-later) which includes migration instructions and more information. @@ -75,7 +75,7 @@ The control for adding new panels to dashboards have got some enhancements and n you want to add. Further, the control has tabs separating functionality for adding new panels and pasting copied panels. -By copying a panel in a dashboard it will be displayed in the `Paste` tab in *any* dashboard and allows you to paste the +By copying a panel in a dashboard it will be displayed in the `Paste` tab in _any_ dashboard and allows you to paste the copied panel into the current dashboard. {{< figure src="/static/img/docs/v51/dashboard_panel_copy.png" max-width= "300px" >}} @@ -95,12 +95,12 @@ New enhancements include support for mapping a numeric value/range to text and a We now support a new option for rendering variables that gives the user full control of how the value(s) should be rendered. In the table below you can see some examples and you can find all different options in the [Variables documentation](http://docs.grafana.org/variables/templates-and-variables/#advanced-formatting-options). -Filter Option | Example | Raw | Interpolated | Description ------------- | ------------- | ------------- | ------------- | ------------- -`glob` | ${servers:glob} | `'test1', 'test2'` | `{test1,test2}` | Formats multi-value variable into a glob -`regex` | ${servers:regex} | `'test.', 'test2'` | (test\.|test2) | Formats multi-value variable into a regex string -`pipe` | ${servers:pipe} | `'test.', 'test2'` | test.|test2 | Formats multi-value variable into a pipe-separated string -`csv`| ${servers:csv} | `'test1', 'test2'` | `test1,test2` | Formats multi-value variable as a comma-separated string +| Filter Option | Example | Raw | Interpolated | Description | +| ------------- | ---------------- | ------------------ | -------------------------------- | --------------------------------------------------------- | +| `glob` | ${servers:glob} | `'test1', 'test2'` | `{test1,test2}` | Formats multi-value variable into a glob | +| `regex` | ${servers:regex} | `'test.', 'test2'` | (test\.|test2) | Formats multi-value variable into a regex string | +| `pipe` | ${servers:pipe} | `'test.', 'test2'` | test.|test2 | Formats multi-value variable into a pipe-separated string | +| `csv` | ${servers:csv} | `'test1', 'test2'` | `test1,test2` | Formats multi-value variable as a comma-separated string | ## Improved workflow for provisioned dashboards @@ -109,8 +109,7 @@ Filter Option | Example | Raw | Interpolated | Description Grafana v5.1 brings an improved workflow for provisioned dashboards: - A populated `id` property in JSON is now automatically removed when provisioning dashboards. -- When making changes to a provisioned dashboard you can `Save` the dashboard which now will bring up a *Cannot save provisioned dashboard* dialog like seen in the screenshot to the right. - +- When making changes to a provisioned dashboard you can `Save` the dashboard which now will bring up a _Cannot save provisioned dashboard_ dialog like seen in the screenshot to the right. Available options in the dialog will let you `Copy JSON to Clipboard` and/or `Save JSON to file` which can help you synchronize your dashboard changes back to the provisioning source. More information in the [Provisioning documentation](/administration/provisioning/). diff --git a/docs/sources/whatsnew/whats-new-in-v5-2.md b/docs/sources/whatsnew/whats-new-in-v5-2.md index d9d09991cb9..025640b11e1 100644 --- a/docs/sources/whatsnew/whats-new-in-v5-2.md +++ b/docs/sources/whatsnew/whats-new-in-v5-2.md @@ -55,12 +55,12 @@ We hope this encourages users to follow Grafana's best practices and change the ## Prometheus -The Prometheus data source now aligns the start/end of the query sent to Prometheus with the step, which ensures PromQL expressions with *rate* +The Prometheus data source now aligns the start/end of the query sent to Prometheus with the step, which ensures PromQL expressions with _rate_ functions get consistent results, and thus avoids graphs jumping around on reload. ## InfluxDB -The InfluxDB data source now includes support for the *mode* function which returns the most frequent value in a list of field values. +The InfluxDB data source now includes support for the _mode_ function which returns the most frequent value in a list of field values. ## Alerting @@ -88,7 +88,7 @@ Grafana v5.0 introduced support for dashboard folders and permissions. The impor and should now make it more clear if a possible import will overwrite an existing dashboard, or not. This release also adds some improvements for those users only having editor or admin permissions in certain folders. The links to -*Create Dashboard* and *Import Dashboard* are now available in the side navigation, in dashboard search and on the manage dashboards/folder page for a +_Create Dashboard_ and _Import Dashboard_ are now available in the side navigation, in dashboard search and on the manage dashboards/folder page for a user that has editor role in an organization or the edit permission in at least one folder.
diff --git a/docs/sources/whatsnew/whats-new-in-v6-0.md b/docs/sources/whatsnew/whats-new-in-v6-0.md index 891d99825be..1c07227f3e7 100644 --- a/docs/sources/whatsnew/whats-new-in-v6-0.md +++ b/docs/sources/whatsnew/whats-new-in-v6-0.md @@ -18,7 +18,7 @@ The main highlights are: - [Grafana Loki]({{< relref "#explore-and-grafana-loki" >}}) - Integration with the new open source log aggregation system from Grafana Labs. - [Gauge Panel]({{< relref "#gauge-panel" >}}) - A new standalone panel for gauges. - [New Panel Editor UX]({{< relref "#new-panel-editor" >}}) improves panel editing - and enables easy switching between different visualizations. + and enables easy switching between different visualizations. - [Google Stackdriver data source]({{< relref "#google-stackdriver-data-source" >}}) is out of beta and is officially released. - [Azure Monitor]({{< relref "#azure-monitor-data-source" >}}) plugin is ported from being an external plugin to be a core data source - [React Plugin]({{< relref "#react-panels-query-editors" >}}) support enables an easier way to build plugins. @@ -145,7 +145,7 @@ Besides these changes we have also made security improvements regarding Cross-Si - Script tags in text panels are per default [disabled](/administration/configuration/#disable-sanitize-html) to protect against XSS attacks > **Note:** If you're using [Auth Proxy Authentication](/auth/auth-proxy/) you still need to have user sessions set up and configured -but our goal is to remove this requirement in the near future. +> but our goal is to remove this requirement in the near future. ## Named Colors diff --git a/docs/sources/whatsnew/whats-new-in-v6-3.md b/docs/sources/whatsnew/whats-new-in-v6-3.md index bbb4881819a..3c15bb022b2 100644 --- a/docs/sources/whatsnew/whats-new-in-v6-3.md +++ b/docs/sources/whatsnew/whats-new-in-v6-3.md @@ -69,18 +69,19 @@ the panel and you cannot reference series name or any data field. While `Data links` are used by the actual visualization and can reference data fields. Example: + ```url http://my-grafana.com/d/bPCI6VSZz/other-dashboard?var-server=${__series_name} ``` You have access to these variables: -Name | Description ------------- | ------------- -*${__series_name}* | The name of the time series (or table) -*${__value_time}* | The time of the point your clicking on (in millisecond epoch) -*${__url_time_range}* | Interpolates as the full time range (i.e. from=21312323412&to=21312312312) -*${__all_variables}* | Adds all current variables (and current values) to the URL +| Name | Description | +| ----------------------- | -------------------------------------------------------------------------- | +| _${\_\_series_name}_ | The name of the time series (or table) | +| _${\_\_value_time}_ | The time of the point your clicking on (in millisecond epoch) | +| _${\_\_url_time_range}_ | Interpolates as the full time range (i.e. from=21312323412&to=21312312312) | +| _${\_\_all_variables}_ | Adds all current variables (and current values) to the URL | You can then click on point in the Graph. @@ -107,7 +108,7 @@ Looks really nice in light theme as well. ## Grafana Enterprise -Substantial refactoring and improvements to the external auth systems has gone in to this release making the features +Substantial refactoring and improvements to the external auth systems has gone in to this release making the features listed below possible as well as laying a foundation for future enhancements. ### LDAP Active Sync diff --git a/docs/sources/whatsnew/whats-new-in-v6-4.md b/docs/sources/whatsnew/whats-new-in-v6-4.md index 7552bba0a07..6412224fabe 100644 --- a/docs/sources/whatsnew/whats-new-in-v6-4.md +++ b/docs/sources/whatsnew/whats-new-in-v6-4.md @@ -33,7 +33,6 @@ Some of those new capabilities can already be seen in this release, like sharing - [**Enterprise**: GitLab OAuth Team Sync support]({{< relref "#gitlab-oauth-team-sync-support" >}}) - [**Enterprise**: Teams and LDAP Improvements]({{< relref "#ldap-teams" >}}) - ### Go back to dashboard from Explore To help accelerate workflows that involve regularly switching from Explore to a dashboard and vice-versa, we've added the ability to return to the origin dashboard @@ -84,7 +83,7 @@ To show a horizontal line through the Y-value of the datapoint across the whole ## Share query results between panels -Grafana 6.4 continues the work started in 6.3 of creating a data model and query execution lifecycle that can support robust analytics and streaming. These changes are mostly structural and lay the foundation for powerful features in future releases. +Grafana 6.4 continues the work started in 6.3 of creating a data model and query execution lifecycle that can support robust analytics and streaming. These changes are mostly structural and lay the foundation for powerful features in future releases. The first new feature all these changes have enabled is the ability to share query results between panels. So for example if you have an expensive query you can visualize the same results in a graph, table and singlestat panel. To reuse another panel’s query result select the data source named `-- Dashboard --` and then select the panel. diff --git a/docs/sources/whatsnew/whats-new-in-v6-5.md b/docs/sources/whatsnew/whats-new-in-v6-5.md index 364627f9908..d49dfcd8ef1 100644 --- a/docs/sources/whatsnew/whats-new-in-v6-5.md +++ b/docs/sources/whatsnew/whats-new-in-v6-5.md @@ -68,7 +68,7 @@ You can untoggle `Match Exact` to include metrics that have other dimensions def {{< figure src="/static/img/docs/v65/cloudwatch-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch deep linking" >}} -Left-clicking a time series in the panel displays a context menu with a link to `View in CloudWatch console`. Clicking that link opens the CloudWatch console and displays all the metrics for that query. If you are not currently logged in to the CloudWatch console, then the link opens the login page. The link is valid for any account, but it only displays the right metrics if you are logged in to the account that corresponds to the selected data source in Grafana. +Left-clicking a time series in the panel displays a context menu with a link to `View in CloudWatch console`. Clicking that link opens the CloudWatch console and displays all the metrics for that query. If you are not currently logged in to the CloudWatch console, then the link opens the login page. The link is valid for any account, but it only displays the right metrics if you are logged in to the account that corresponds to the selected data source in Grafana. This feature is not available for metrics based on math expressions. @@ -127,7 +127,7 @@ In the Datasource configuration for Graphite, you can change the type to Metrict Metrictank returns 2 kinds of additional metadata along its responses: - **Performance information:** Time spent querying index, fetching data, running processing functions, the number of series and points fetched, cache hits/misses, etc. This can be useful for optimizing queries or tuning the chunk cache. -- **Lineage information about the returned series:** Which archive was fetched from (raw or rollup), which (if any) runtime consolidation was applied (using which processing function), etc. This is very useful information for anyone trying to understand how their data was generated and why it may not look as expected. +- **Lineage information about the returned series:** Which archive was fetched from (raw or rollup), which (if any) runtime consolidation was applied (using which processing function), etc. This is very useful information for anyone trying to understand how their data was generated and why it may not look as expected. To see the metadata response from Metrictank you can inspect the response using the Query Inspector found in the panel queries tab. Grafana 6.5 includes a new `Panel Inspector` in alpha/preview where you also can see the metadata response from Metrictank. diff --git a/docs/sources/whatsnew/whats-new-in-v6-6.md b/docs/sources/whatsnew/whats-new-in-v6-6.md index 823230ce2ea..100c84eb0c6 100644 --- a/docs/sources/whatsnew/whats-new-in-v6-6.md +++ b/docs/sources/whatsnew/whats-new-in-v6-6.md @@ -42,7 +42,7 @@ Grafana 6.6 comes with a lot of new features and enhancements: {{< figure src="/static/img/docs/v66/stat_panel_dark2.png" max-width="1024px" caption="Stat panel" >}} -This release adds a new panel named `Stat`. This panel is designed to replace the current `Singlestat` as the primary way to show big single number panels along with a sparkline. This panel is of course building on our new panel infrastructure and option design. So, you can use the new threshold UI and data links. It also supports the same repeating feature as the Gauge and Bar Gauge panels, meaning it will repeat a separate visualization for every series or row +This release adds a new panel named `Stat`. This panel is designed to replace the current `Singlestat` as the primary way to show big single number panels along with a sparkline. This panel is of course building on our new panel infrastructure and option design. So, you can use the new threshold UI and data links. It also supports the same repeating feature as the Gauge and Bar Gauge panels, meaning it will repeat a separate visualization for every series or row in the query result. Key features: @@ -160,21 +160,21 @@ Customize the login page, side menu bar, and footer links. Now you can install the enterprise edition from the APT and YUM repository. The following table shows the APT repository for each Grafana version (for instructions read the [installation notes]({{< relref "../installation/debian/#install-from-apt-repository" >}})) : -| Grafana Version | Package | Repository | -|-----------------|---------|------------| -| Grafana OSS | grafana | `https://packages.grafana.com/oss/deb stable main` | -| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/deb beta main` | -| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/deb stable main` | -| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/deb beta main` | +| Grafana Version | Package | Repository | +| ------------------------- | ------------------ | --------------------------------------------------------- | +| Grafana OSS | grafana | `https://packages.grafana.com/oss/deb stable main` | +| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/deb beta main` | +| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/deb stable main` | +| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/deb beta main` | The following table shows the YUM repositories for each Grafana version (for instructions read the [installation notes]({{< relref "../installation/rpm/#install-from-yum-repository" >}})) : -| Grafana Version | Package | Repository | -|----------------------------|--------------------|----------------------------------------------------| -| Grafana OSS | grafana | `https://packages.grafana.com/oss/rpm` | -| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/rpm-beta` | -| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm` | -| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm-beta` | +| Grafana Version | Package | Repository | +| ------------------------- | ------------------ | -------------------------------------------------- | +| Grafana OSS | grafana | `https://packages.grafana.com/oss/rpm` | +| Grafana OSS (Beta) | grafana | `https://packages.grafana.com/oss/rpm-beta` | +| Grafana Enterprise | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm` | +| Grafana Enterprise (Beta) | grafana-enterprise | `https://packages.grafana.com/enterprise/rpm-beta` | We recommend all users to install the Enterprise Edition of Grafana, which can be seamlessly upgraded with a Grafana Enterprise [subscription](https://grafana.com/products/enterprise/?utm_source=grafana-install-page). diff --git a/docs/sources/whatsnew/whats-new-in-v6-7.md b/docs/sources/whatsnew/whats-new-in-v6-7.md index 34ee43acb2d..af3918a751f 100644 --- a/docs/sources/whatsnew/whats-new-in-v6-7.md +++ b/docs/sources/whatsnew/whats-new-in-v6-7.md @@ -30,15 +30,17 @@ Grafana 6.7 comes with a lot of new features and enhancements: General features are included in all Grafana editions. ### Query history + > BETA: Query history is a beta feature. It is local to your browser and is not shared with others. -Query history is a new feature that lets you view and interact with the queries that you have previously run in Explore. You can add queries to the Explore query editor, write comments, create and share URL links, star your favorite queries, and much more. Starred queries are displayed in Starred tab, so it is easier to reuse queries that you run often without typing them from scratch. +Query history is a new feature that lets you view and interact with the queries that you have previously run in Explore. You can add queries to the Explore query editor, write comments, create and share URL links, star your favorite queries, and much more. Starred queries are displayed in Starred tab, so it is easier to reuse queries that you run often without typing them from scratch. Learn more about query history in [Explore]({{< relref "../explore" >}}). {{< figure src="/static/img/docs/v67/rich-history.gif" max-width="1024px" caption="Query history" >}} ### Azure OAuth + Grafana v6.7 comes with a new OAuth integration for Microsoft Azure Active Directory. You can now assign users and groups to Grafana roles from the Azure Portal. Learn how to enable and configure it in [Azure AD OAuth2 authentication]({{< relref "../auth/azuread/" >}}). ### Enforce minimum dashboard refresh interval @@ -58,6 +60,7 @@ In Grafana 6.7, the query editor has been enhanced with a project selector that General features are included in the Grafana Enterprise edition software. ### White labeling customizes application title + This release adds a new white labeling option to customize the application title. Learn how to configure it in [White labeling]({{< relref "../enterprise/white-labeling/" >}}). ``` @@ -90,5 +93,6 @@ You can now use either portrait or landscape mode in your reports. Portrait will [Reporting]({{< relref "../enterprise/reporting/" >}}) has been updated as a result of this change. ### Azure OAuth Team Sync support + When setting up OAuth with Microsoft Azure AD, you can now sync Azure groups with Teams in Grafana. Learn more in [Team sync]({{< relref "../enterprise/team-sync/" >}}). diff --git a/docs/sources/whatsnew/whats-new-in-v8-0.md b/docs/sources/whatsnew/whats-new-in-v8-0.md index d72e8eea690..e9f2df259d6 100644 --- a/docs/sources/whatsnew/whats-new-in-v8-0.md +++ b/docs/sources/whatsnew/whats-new-in-v8-0.md @@ -276,6 +276,7 @@ Support for Singlestat panel has been discontinued. When you upgrade to version Stat panel is available as plugin. ### Grafana license update + Grafana has updated its license from Apache 2.0 to the GNU Affero General Public License (AGPL). Please see the related [blog post](https://grafana.com/blog/2021/04/20/grafana-loki-tempo-relicensing-to-agplv3/), [Q&A](https://grafana.com/blog/2021/04/20/qa-with-our-ceo-on-relicensing/) and [license](https://github.com/grafana/grafana/blob/main/LICENSE) for more details. ## Enterprise features diff --git a/docs/sources/whatsnew/whats-new-in-v8-1.md b/docs/sources/whatsnew/whats-new-in-v8-1.md index 7a9aa8b28c9..a57073fcab7 100644 --- a/docs/sources/whatsnew/whats-new-in-v8-1.md +++ b/docs/sources/whatsnew/whats-new-in-v8-1.md @@ -12,18 +12,17 @@ list = false > **Note:** This topic will be updated frequently between now and the final release. -Grafana 8.1 builds upon our promise of a composable, open observability platform with new panels and extends functionality launched in Grafana 8.0. We’ve got new Geomap and Annotations panels, and some great updates to the Time Series panel. We’ve also got new transformations and updates to data sources. For our enterprise customers, there are additions to fine grained access control, updates to the reporting schedule and query caching, and more. Read on to learn more. +Grafana 8.1 builds upon our promise of a composable, open observability platform with new panels and extends functionality launched in Grafana 8.0. We’ve got new Geomap and Annotations panels, and some great updates to the Time Series panel. We’ve also got new transformations and updates to data sources. For our enterprise customers, there are additions to fine grained access control, updates to the reporting schedule and query caching, and more. Read on to learn more. In addition to what is summarized here, you might also be interested in our announcement blog post. For all the technical details, check out the complete [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md). - ## Grafana OSS features These features are included in the Grafana open source edition. ## Geomap panel -Grafana 8.1 introduces the foundation for our new map panel. This new panel leverages [OpenLayers](https://openlayers.org/) and gives us a flexible solution for extending the way we use the new Geomap panel moving forward. The new Geomap panel includes multiple base layer styles (map layer options), as well as a more open data layer. The data layer can use coordinates and geo-hashed data in addition to a lookup table. +Grafana 8.1 introduces the foundation for our new map panel. This new panel leverages [OpenLayers](https://openlayers.org/) and gives us a flexible solution for extending the way we use the new Geomap panel moving forward. The new Geomap panel includes multiple base layer styles (map layer options), as well as a more open data layer. The data layer can use coordinates and geo-hashed data in addition to a lookup table. The Geomap panel is also able to share views across multiple Geomap panels on the same dashboard, making it straightforward to visualize and explore multiple types of geospatial data using the same map zoom and focus settings. For more information, refer to [Geomap panel]({{< relref "../panels/visualizations/geomap.md" >}}). {{< figure src="/static/img/docs/geomap-panel/geomap_with_heatmap.png" max-width="850px" caption="Geomap panel: Heatmap" >}} @@ -38,8 +37,7 @@ The new Annotations panel shows a list of available annotations you can use to c The time series panel has been updated with the ability to color series and line by thresholds or gradient color scales. This allows users to create panels where the line color can change dynamically based on thresholds or using gradient color scales. It adds a layer of visibility to your data, making it easier to view the changes across thresholds at a glance quickly. - -Color scheme **From thresholds**: +Color scheme **From thresholds**: {{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_thresholds_line.png" max-width="1200px" caption="Colors scheme: From thresholds" >}} Color scheme: **Green-Yellow-Red (by value)** @@ -47,7 +45,7 @@ Color scheme: **Green-Yellow-Red (by value)** For more on how to configure Graphs with by value color schemes read [Graph and color schemes]({{< relref "../panels/visualizations/time-series/_index.md" >}}). -You can also create annotations on the new Time series panel]({{< relref "../panels/visualizations/time-series/annotate-time-series.md" >}}), bringing it closer to parity with the legacy Graph Panel. To learn more, refer to the [time series panel]({{< relref "../panels/visualizations/time-series/_index.md" >}}). +You can also create annotations on the new Time series panel]({{< relref "../panels/visualizations/time-series/annotate-time-series.md" >}}), bringing it closer to parity with the legacy Graph Panel. To learn more, refer to the [time series panel]({{< relref "../panels/visualizations/time-series/_index.md" >}}). ### Transformations improvements @@ -111,7 +109,6 @@ For more on how to prettify JSON logs, refer to [Visualization]({{< relref "../p We’ve made some changes to the plugins UI to help make it easier to discover and manage your plugins. Enterprise users can now also manage enterprise plugins from within the catalog. - #### Documentation updates New panel summaries and preview on the top level [Visualizations]({{< relref "../panels/visualizations/_index.md" >}}) page to help users pick or learn about specific visualizations more easily. @@ -121,11 +118,9 @@ New panel summaries and preview on the top level [Visualizations]({{< relref ".. The `@grafana/ui` exposes a `Select` component, and its variants `MultiSelect`, `AsyncSelect`, and `AsyncMultiSelect`. We have made some internal changes to these components to make the behavior and positioning more consistent in all scenarios. To test the changes, you can use the `menuShouldPortal` property: + ```jsx - ``` Tests are most likely to be affected. There are some tips for fixing these in the original pull request at [https://github.com/grafana/grafana/pull/36398](https://github.com/grafana/grafana/pull/36398). @@ -142,7 +137,6 @@ Fine-grained access control remains in beta. You can now grant or revoke permiss Fine grained access control allows you to customize roles and permissions in Grafana beyond the built-in Viewer, Editor, and Admin roles. As of 8.1, you can modify some of the permissions for any of these built-in roles. This is helpful if you’d like users to have more or fewer access permissions than a given role allows for by default. For an overview of fine-grained access control and a complete list of available permissions, refer to the [Fine grained access control]({{< relref "../enterprise/access-control/_index.md" >}}) documentation. - ### New and improved reporting scheduler We’ve enhanced the scheduler for Reports to be more flexible, so you can send reports at just the right time. When scheduling a report, you can now choose to send a report at custom intervals such as every 4 hours or every 2 weeks. You can also send a report for a limited time period by providing a start and end date, or send a report only on weekdays or on the last day of each month. This change accompanies some other recent improvements to Reporting, like the ability to choose template variables for reports and an improved UX for authoring reports. To learn more, refer to the [reporting]({{< relref "../enterprise/reporting.md" >}}) documentation. @@ -151,8 +145,7 @@ We’ve enhanced the scheduler for Reports to be more flexible, so you can send Query caching was released in Grafana 8.0 and allows you to temporarily store the results of data source queries in a cache, so that Grafana reads repeated queries from there instead of from the data source itself. This reduces load on data sources, improves dashboard load times, and can save money for data sources that charge per query. To learn more about query caching see its [overview]({{< relref "../enterprise/query-caching.md" >}}) page. To find out how to turn on encryption, refer to the [caching configuration]({{< relref "../enterprise/enterprise-configuration.md#caching" >}}) documentation. -You can now encrypt the query data cached by Grafana. This improves the security of query data, especially when your cache (like Redis) is shared with other services. - +You can now encrypt the query data cached by Grafana. This improves the security of query data, especially when your cache (like Redis) is shared with other services. ### White labeling for the Grafana loading logo @@ -160,6 +153,6 @@ You can now customize Grafana’s loading logo, which displays while Grafana is To find out how you can configure it along with other Grafana UI elements, like the corner logo and application footer, refer to the [White labeling]({{< relref "../enterprise/white-labeling.md" >}}) topic of the Grafana Enterprise docs. -### Oauth2 - Team Sync to Group Mapping +### Oauth2 - Team Sync to Group Mapping With Team Sync you can map your Generic OAuth groups to teams in Grafana so that the users are automatically added to the correct teams. diff --git a/package.json b/package.json index 7d0e5358431..95c0efaa940 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "*.{js,ts,tsx}": [ "eslint --ext .js,.tsx,.ts --cache --fix" ], - "*.{json,scss}": [ + "*.{json,scss,md,mdx}": [ "prettier --write" ], "*pkg/**/*.go": [