Merge branch 'main' into neg-y
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
version: 2.1
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: alpine:3.7
|
||||
steps:
|
||||
- run:
|
||||
name: The First Step
|
||||
command: |
|
||||
echo 'Fake step!'
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
|
||||
load('scripts/drone/pipelines/pr.star', 'pr_pipelines')
|
||||
load('scripts/drone/pipelines/main.star', 'main_pipelines')
|
||||
load('scripts/drone/pipelines/release.star', 'release_pipelines', 'test_release_pipelines', 'publish_image_pipelines', 'publish_artifacts_pipelines', 'publish_npm_pipelines', 'publish_packages_pipeline')
|
||||
load('scripts/drone/pipelines/release.star', 'release_pipelines', 'publish_image_pipelines', 'publish_artifacts_pipelines', 'publish_npm_pipelines', 'publish_packages_pipeline')
|
||||
load('scripts/drone/version.star', 'version_branch_pipelines')
|
||||
load('scripts/drone/pipelines/cron.star', 'cronjobs')
|
||||
load('scripts/drone/vault.star', 'secrets')
|
||||
@@ -17,4 +17,4 @@ def main(ctx):
|
||||
publish_image_pipelines('public') + publish_image_pipelines('security') + \
|
||||
publish_artifacts_pipelines('security') + publish_artifacts_pipelines('public') + \
|
||||
publish_npm_pipelines('public') + publish_packages_pipeline() + \
|
||||
test_release_pipelines() + version_branch_pipelines() + cronjobs(edition=edition) + secrets()
|
||||
version_branch_pipelines() + cronjobs(edition=edition) + secrets()
|
||||
|
||||
+120
-1444
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@ devenv
|
||||
data
|
||||
dist
|
||||
e2e/tmp
|
||||
scripts/grafana-server/tmp
|
||||
public/lib/monaco
|
||||
deployment_tools_config.json
|
||||
|
||||
|
||||
+24
-20
@@ -30,18 +30,19 @@ go.sum @grafana/backend-platform
|
||||
/scripts/drone/ @grafana/grafana-release-eng
|
||||
|
||||
# Cloud Datasources backend code
|
||||
/pkg/tsdb/cloudwatch @grafana/cloud-datasources @grafana/observability-squad
|
||||
/pkg/tsdb/cloudwatch @grafana/cloud-datasources
|
||||
/pkg/tsdb/azuremonitor @grafana/cloud-datasources
|
||||
/pkg/tsdb/cloudmonitoring @grafana/cloud-datasources
|
||||
|
||||
# Observability backend code
|
||||
/pkg/tsdb/influxdb @grafana/observability-squad
|
||||
/pkg/tsdb/elasticsearch @grafana/observability-squad
|
||||
/pkg/tsdb/graphite @grafana/observability-squad
|
||||
/pkg/tsdb/jaeger @grafana/observability-squad
|
||||
/pkg/tsdb/loki @grafana/observability-squad
|
||||
/pkg/tsdb/zipkin @grafana/observability-squad
|
||||
/pkg/tsdb/tempo @grafana/observability-squad
|
||||
/pkg/tsdb/prometheus @grafana/observability-metrics
|
||||
/pkg/tsdb/influxdb @grafana/observability-metrics
|
||||
/pkg/tsdb/elasticsearch @grafana/observability-logs-and-traces
|
||||
/pkg/tsdb/graphite @grafana/observability-metrics
|
||||
/pkg/tsdb/jaeger @grafana/observability-logs-and-traces
|
||||
/pkg/tsdb/loki @grafana/observability-logs-and-traces
|
||||
/pkg/tsdb/zipkin @grafana/observability-logs-and-traces
|
||||
/pkg/tsdb/tempo @grafana/observability-logs-and-traces
|
||||
|
||||
# BI backend code
|
||||
/pkg/tsdb/mysql @grafana/grafana-bi-squad
|
||||
@@ -89,21 +90,24 @@ go.sum @grafana/backend-platform
|
||||
/packages/grafana-ui/src/components/TimeSeries @grafana/grafana-bi-squad
|
||||
/packages/grafana-ui/src/components/uPlot @grafana/grafana-bi-squad
|
||||
/packages/grafana-ui/src/utils/storybook @grafana/plugins-platform-frontend
|
||||
/packages/jaeger-ui-components/ @grafana/observability-squad
|
||||
/packages/jaeger-ui-components/ @grafana/observability-logs-and-traces
|
||||
/plugins-bundled @grafana/plugins-platform-frontend
|
||||
# public folder
|
||||
/public/app/core/components/TimePicker @grafana/grafana-bi-squad
|
||||
/public/app/core/components/Layers @grafana/grafana-edge-squad
|
||||
/public/app/features/canvas/ @grafana/grafana-edge-squad
|
||||
/public/app/features/dimensions/ @grafana/grafana-edge-squad
|
||||
/public/app/features/geo/ @grafana/grafana-edge-squad
|
||||
/public/app/features/live/ @grafana/grafana-edge-squad
|
||||
/public/app/features/explore/ @grafana/observability-squad
|
||||
/public/app/features/explore/ @grafana/observability-experience-squad
|
||||
/public/app/features/plugins @grafana/plugins-platform-frontend
|
||||
/public/app/core/components/TransformersUI/spatial @grafana/grafana-edge-squad
|
||||
/public/app/plugins/panel/alertlist @grafana/alerting-squad
|
||||
/public/app/plugins/panel/barchart @grafana/grafana-bi-squad
|
||||
/public/app/plugins/panel/heatmap @grafana/grafana-bi-squad
|
||||
/public/app/plugins/panel/histogram @grafana/grafana-bi-squad
|
||||
/public/app/plugins/panel/nodeGraph @grafana/observability-squad
|
||||
/public/app/plugins/panel/logs @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/panel/nodeGraph @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/panel/piechart @grafana/grafana-bi-squad
|
||||
/public/app/plugins/panel/state-timeline @grafana/grafana-bi-squad
|
||||
/public/app/plugins/panel/status-history @grafana/grafana-bi-squad
|
||||
@@ -134,21 +138,21 @@ lerna.json @grafana/frontend-ops
|
||||
*.mdx @marcusolsson @jessover9000 @grafana/plugins-platform-frontend
|
||||
|
||||
# Core datasources
|
||||
/public/app/plugins/datasource/cloudwatch @grafana/cloud-datasources @grafana/observability-squad
|
||||
/public/app/plugins/datasource/elasticsearch @grafana/observability-squad
|
||||
/public/app/plugins/datasource/cloudwatch @grafana/cloud-datasources
|
||||
/public/app/plugins/datasource/elasticsearch @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/datasource/grafana-azure-monitor-datasource @grafana/cloud-datasources
|
||||
/public/app/plugins/datasource/graphite @grafana/observability-squad
|
||||
/public/app/plugins/datasource/influxdb @grafana/observability-squad
|
||||
/public/app/plugins/datasource/jaeger @grafana/observability-squad
|
||||
/public/app/plugins/datasource/loki @grafana/observability-squad
|
||||
/public/app/plugins/datasource/graphite @grafana/observability-metrics
|
||||
/public/app/plugins/datasource/influxdb @grafana/observability-metrics
|
||||
/public/app/plugins/datasource/jaeger @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/datasource/loki @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/datasource/mssql @grafana/grafana-bi-squad
|
||||
/public/app/plugins/datasource/mysql @grafana/grafana-bi-squad
|
||||
/public/app/plugins/datasource/opentsdb @grafana/backend-platform
|
||||
/public/app/plugins/datasource/postgres @grafana/grafana-bi-squad
|
||||
/public/app/plugins/datasource/prometheus @grafana/observability-squad
|
||||
/public/app/plugins/datasource/prometheus @grafana/observability-metrics
|
||||
/public/app/plugins/datasource/cloud-monitoring @grafana/cloud-datasources
|
||||
/public/app/plugins/datasource/zipkin @grafana/observability-squad
|
||||
/public/app/plugins/datasource/tempo @grafana/observability-squad
|
||||
/public/app/plugins/datasource/zipkin @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/datasource/tempo @grafana/observability-logs-and-traces
|
||||
/public/app/plugins/datasource/alertmanager @grafana/alerting-squad
|
||||
|
||||
# Cloud middleware
|
||||
|
||||
@@ -4,10 +4,12 @@
|
||||
],
|
||||
"enabledManagers": ["npm"],
|
||||
"ignoreDeps": [
|
||||
"@grafana/slate-react", // should be updated when the `slate` package is updated
|
||||
"@types/systemjs",
|
||||
"@types/d3-force", // we should bump this once we move to esm modules
|
||||
"@types/d3-interpolate", // we should bump this once we move to esm modules
|
||||
"@types/d3-scale-chromatic", // we should bump this once we move to esm modules
|
||||
"@types/grafana__slate-react", // should be updated when the `slate` package is updated
|
||||
"@types/react-icons", // jaeger-ui-components is being refactored to use @grafana/ui icons instead
|
||||
"d3",
|
||||
"d3-force", // we should bump this once we move to esm modules
|
||||
@@ -21,7 +23,9 @@
|
||||
"slate",
|
||||
"slate-plain-serializer",
|
||||
"systemjs",
|
||||
"copy-webpack-plugin", // try to upgrade with newer yarn release. Not working with 3.1.1
|
||||
"ts-loader", // we should remove ts-loader and use babel-loader instead
|
||||
"typescript", // >4.5.x doesn't seem to work on windows with pnp currently. probably similar to https://github.com/yarnpkg/berry/issues/3722
|
||||
"ora" // we should bump this once we move to esm modules
|
||||
],
|
||||
"ignorePaths": ["packages/grafana-toolkit/package.json", "emails/**", "plugins-bundled/**", "**/mocks/**"],
|
||||
@@ -29,8 +33,14 @@
|
||||
"packageRules": [
|
||||
{
|
||||
"matchUpdateTypes": ["patch"],
|
||||
"excludePackagePatterns": ["@storybook"],
|
||||
"extends": ["schedule:monthly"],
|
||||
"groupName": "Monthly patch updates"
|
||||
},
|
||||
{
|
||||
"matchPackagePatterns": ["@storybook"],
|
||||
"extends": ["schedule:monthly"],
|
||||
"groupName": "Storybook updates"
|
||||
}
|
||||
],
|
||||
"pin": {
|
||||
|
||||
@@ -3,27 +3,30 @@ name: Levitate / Detect breaking changes
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Detect
|
||||
buildPR:
|
||||
name: Build PR
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GITHUB_STEP_NUMBER: 7
|
||||
defaults:
|
||||
run:
|
||||
working-directory: './pr'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: './pr'
|
||||
|
||||
- name: Setup environment
|
||||
uses: actions/setup-node@v2.5.1
|
||||
- name: Get yarn cache directory path
|
||||
id: yarn-cache-dir-path
|
||||
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||
|
||||
- name: Restore yarn cache
|
||||
uses: actions/cache@v2
|
||||
id: yarn-cache
|
||||
with:
|
||||
node-version: '16'
|
||||
|
||||
- name: Get link for the Github Action job
|
||||
id: job
|
||||
uses: actions/github-script@v5
|
||||
with:
|
||||
script: |
|
||||
const script = require('./.github/workflows/scripts/pr-get-job-link.js')
|
||||
await script({github, context, core})
|
||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||
key: yarn-cache-folder-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }}
|
||||
restore-keys: |
|
||||
yarn-cache-folder-
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install --immutable
|
||||
@@ -31,24 +34,108 @@ jobs:
|
||||
- name: Build packages
|
||||
run: yarn packages:build
|
||||
|
||||
- name: Detect breaking changes
|
||||
id: breaking-changes
|
||||
run: ./scripts/check-breaking-changes.sh
|
||||
env:
|
||||
FORCE_COLOR: 3
|
||||
GITHUB_JOB_LINK: ${{ steps.job.outputs.link }}
|
||||
- name: Zip built packages
|
||||
run: zip -r ./pr_built_packages.zip ./packages/**/dist
|
||||
|
||||
- name: Persisting the check output
|
||||
run: |
|
||||
mkdir -p ./levitate
|
||||
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"job_link\": \"${{ steps.job.outputs.link }}#step:${GITHUB_STEP_NUMBER}:1\" }" > ./levitate/result.json
|
||||
|
||||
- name: Upload check output as artifact
|
||||
- name: Upload build output as artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: levitate
|
||||
path: levitate/
|
||||
name: buildPr
|
||||
path: './pr/pr_built_packages.zip'
|
||||
|
||||
buildMain:
|
||||
name: Build Main
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: './main'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: './main'
|
||||
ref: 'main'
|
||||
|
||||
- name: Get yarn cache directory path
|
||||
id: yarn-cache-dir-path
|
||||
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||
|
||||
- name: Restore yarn cache
|
||||
uses: actions/cache@v2
|
||||
id: yarn-cache
|
||||
with:
|
||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||
key: yarn-cache-folder-${{ hashFiles('**/yarn.lock', '.yarnrc.yml') }}
|
||||
restore-keys: |
|
||||
yarn-cache-folder-
|
||||
|
||||
- name: Exit
|
||||
run: exit ${{ steps.breaking-changes.outputs.is_breaking }}
|
||||
shell: bash
|
||||
- name: Install dependencies
|
||||
run: yarn install --immutable
|
||||
|
||||
- name: Build packages
|
||||
run: yarn packages:build
|
||||
|
||||
- name: Zip built packages
|
||||
run: zip -r ./main_built_packages.zip ./packages/**/dist
|
||||
|
||||
- name: Upload build output as artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: buildMain
|
||||
path: './main/main_built_packages.zip'
|
||||
|
||||
Detect:
|
||||
name: Detect breaking changes
|
||||
runs-on: ubuntu-latest
|
||||
needs: ['buildPR', 'buildMain']
|
||||
env:
|
||||
GITHUB_STEP_NUMBER: 7
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Get built packages from pr
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: buildPr
|
||||
|
||||
- name: Get built packages from main
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: buildMain
|
||||
|
||||
- name: Unzip artifact from pr
|
||||
run: unzip pr_built_packages.zip -d ./pr && rm pr_built_packages.zip
|
||||
|
||||
- name: Unzip artifact from main
|
||||
run: unzip main_built_packages.zip -d ./main && rm main_built_packages.zip
|
||||
|
||||
- name: Get link for the Github Action job
|
||||
id: job
|
||||
uses: actions/github-script@v5
|
||||
with:
|
||||
script: |
|
||||
const script = require('./.github/workflows/scripts/pr-get-job-link.js')
|
||||
await script({github, context, core})
|
||||
|
||||
- name: Detect breaking changes
|
||||
id: breaking-changes
|
||||
run: ./scripts/check-breaking-changes.sh
|
||||
env:
|
||||
FORCE_COLOR: 3
|
||||
GITHUB_JOB_LINK: ${{ steps.job.outputs.link }}
|
||||
|
||||
- name: Persisting the check output
|
||||
run: |
|
||||
mkdir -p ./levitate
|
||||
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"job_link\": \"${{ steps.job.outputs.link }}#step:${GITHUB_STEP_NUMBER}:1\" }" > ./levitate/result.json
|
||||
|
||||
- name: Upload check output as artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: levitate
|
||||
path: levitate/
|
||||
|
||||
- name: Exit
|
||||
run: exit ${{ steps.breaking-changes.outputs.is_breaking }}
|
||||
shell: bash
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
name: Close Milestone
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version_input:
|
||||
description: 'The version to be released please respect: major.minor.patch or major.minor.patch-beta<number> format. example: 7.4.3 or 7.4.3-beta1'
|
||||
required: true
|
||||
jobs:
|
||||
call-remove-milestone:
|
||||
uses: grafana/grafana/.github/workflows/remove-milestone.yml@main
|
||||
with:
|
||||
version_call: ${{ github.event.inputs.version_input }}
|
||||
secrets:
|
||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
||||
call-close-milestone:
|
||||
uses: grafana/grafana/.github/workflows/close-milestone.yml@main
|
||||
with:
|
||||
version_call: ${{ github.event.inputs.version_input }}
|
||||
secrets:
|
||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
||||
needs: call-remove-milestone
|
||||
@@ -3,7 +3,9 @@ on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
- labeled
|
||||
- unlabeled
|
||||
issues:
|
||||
@@ -14,6 +16,7 @@ on:
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.draft == false
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
|
||||
@@ -6,19 +6,6 @@ on:
|
||||
description: 'The version to be released please respect: major.minor.patch or major.minor.patch-beta<number> format. example: 7.4.3 or 7.4.3-beta1'
|
||||
required: true
|
||||
jobs:
|
||||
call-remove-milestone:
|
||||
uses: grafana/grafana/.github/workflows/remove-milestone.yml@main
|
||||
with:
|
||||
version_call: ${{ github.event.inputs.version_input }}
|
||||
secrets:
|
||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
||||
call-close-milestone:
|
||||
uses: grafana/grafana/.github/workflows/close-milestone.yml@main
|
||||
with:
|
||||
version_call: ${{ github.event.inputs.version_input }}
|
||||
secrets:
|
||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
||||
needs: call-remove-milestone
|
||||
call-bump-version:
|
||||
uses: grafana/grafana/.github/workflows/bump-version.yml@main
|
||||
with:
|
||||
@@ -26,7 +13,6 @@ jobs:
|
||||
secrets:
|
||||
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
|
||||
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||
needs: call-close-milestone
|
||||
call-update-changelog:
|
||||
uses: grafana/grafana/.github/workflows/update-changelog.yml@main
|
||||
with:
|
||||
|
||||
@@ -13,6 +13,7 @@ public/dist/tsconfig.tsbuildinfo
|
||||
/emails/dist
|
||||
/reports
|
||||
/e2e/tmp
|
||||
/scripts/grafana-server/tmp
|
||||
vendor/
|
||||
/docs/menu.yaml
|
||||
/requests
|
||||
@@ -138,6 +139,10 @@ compilation-stats.json
|
||||
/e2e/**/videos/*
|
||||
/e2e/benchmarks/**/results/*
|
||||
/e2e/benchmarks/**/results
|
||||
/e2e/build_results.zip
|
||||
|
||||
# grafana server
|
||||
/scripts/grafana-server/server.log
|
||||
|
||||
# a11y tests
|
||||
/pa11y-ci-results.json
|
||||
@@ -151,6 +156,7 @@ compilation-stats.json
|
||||
|
||||
# auto generated Go files
|
||||
*_gen.go
|
||||
!pkg/services/featuremgmt/toggles_gen.go
|
||||
|
||||
# Auto-generated localisation files
|
||||
public/locales/_build/
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
"locales": [
|
||||
"en",
|
||||
"fr",
|
||||
"es"
|
||||
"es",
|
||||
"pseudo-LOCALE"
|
||||
],
|
||||
"catalogs": [
|
||||
{
|
||||
@@ -11,14 +12,18 @@
|
||||
"public/app"
|
||||
],
|
||||
"exclude": [
|
||||
"**/*.d.ts",
|
||||
"**/*.test.ts",
|
||||
"**/node_modules/**",
|
||||
"public/app/plugins"
|
||||
]
|
||||
}
|
||||
],
|
||||
"fallbackLocales": {
|
||||
"pseudo-LOCALE": "en",
|
||||
"default": "en"
|
||||
},
|
||||
"pseudoLocale": "pseudo-LOCALE",
|
||||
"sourceLocale": "en",
|
||||
"format": "po",
|
||||
"formatOptions": {
|
||||
|
||||
@@ -7,6 +7,7 @@ public/vendor/
|
||||
vendor/
|
||||
/data/
|
||||
e2e/tmp
|
||||
scripts/grafana-server/tmp
|
||||
public/build/
|
||||
public/sass/*.generated.scss
|
||||
devenv/
|
||||
|
||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "typescript",
|
||||
"version": "4.5.4-sdk",
|
||||
"version": "4.4.4-sdk",
|
||||
"main": "./lib/typescript.js",
|
||||
"type": "commonjs"
|
||||
}
|
||||
|
||||
+13
-13
@@ -9,28 +9,28 @@ packageExtensions:
|
||||
"@mdx-js/loader@1.6.22":
|
||||
peerDependencies:
|
||||
react: 17.0.1
|
||||
"@storybook/addon-docs@6.4.9":
|
||||
"@storybook/addon-docs@6.4.13":
|
||||
peerDependencies:
|
||||
"@storybook/manager-webpack5": 6.4.9
|
||||
"@storybook/addon-essentials@6.4.9":
|
||||
"@storybook/manager-webpack5": 6.4.13
|
||||
"@storybook/addon-essentials@6.4.13":
|
||||
peerDependencies:
|
||||
"@storybook/components": 6.4.9
|
||||
"@storybook/core-events": 6.4.9
|
||||
"@storybook/manager-webpack5": 6.4.9
|
||||
"@storybook/theming": 6.4.9
|
||||
"@storybook/core-server@6.4.9":
|
||||
"@storybook/components": 6.4.13
|
||||
"@storybook/core-events": 6.4.13
|
||||
"@storybook/manager-webpack5": 6.4.13
|
||||
"@storybook/theming": 6.4.13
|
||||
"@storybook/core-server@6.4.13":
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0
|
||||
"@storybook/core@6.4.9":
|
||||
"@storybook/core@6.4.13":
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0
|
||||
"@storybook/manager-webpack5": 6.4.9
|
||||
"@storybook/csf-tools@6.4.9":
|
||||
"@storybook/manager-webpack5": 6.4.13
|
||||
"@storybook/csf-tools@6.4.13":
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0
|
||||
"@storybook/react@6.4.9":
|
||||
"@storybook/react@6.4.13":
|
||||
peerDependencies:
|
||||
"@storybook/manager-webpack5": 6.4.9
|
||||
"@storybook/manager-webpack5": 6.4.13
|
||||
doctrine@3.0.0:
|
||||
dependencies:
|
||||
assert: 2.0.0
|
||||
|
||||
@@ -1,3 +1,41 @@
|
||||
<!-- 8.3.4 START -->
|
||||
|
||||
# 8.3.4 (2022-01-17)
|
||||
|
||||
### Features and enhancements
|
||||
|
||||
- **Alerting:** Allow configuration of non-ready alertmanagers. [#43063](https://github.com/grafana/grafana/pull/43063), [@alexweav](https://github.com/alexweav)
|
||||
- **Alerting:** Allow customization of Google chat message. [#43568](https://github.com/grafana/grafana/pull/43568), [@alexweav](https://github.com/alexweav)
|
||||
- **Alerting:** Allow customization of Google chat message (#43568). [#43723](https://github.com/grafana/grafana/pull/43723), [@alexweav](https://github.com/alexweav)
|
||||
- **AppPlugins:** Support app plugins with only default nav. [#43016](https://github.com/grafana/grafana/pull/43016), [@torkelo](https://github.com/torkelo)
|
||||
- **InfluxDB:** InfluxQL: query editor: skip fields in metadata queries. [#42543](https://github.com/grafana/grafana/pull/42543), [@gabor](https://github.com/gabor)
|
||||
- **Postgres/MySQL/MSSQL:** Cancel in-flight SQL query if user cancels query in grafana. [#43890](https://github.com/grafana/grafana/pull/43890), [@mdvictor](https://github.com/mdvictor)
|
||||
- **Prometheus:** Forward oauth tokens after prometheus datasource migration. [#43686](https://github.com/grafana/grafana/pull/43686), [@MasslessParticle](https://github.com/MasslessParticle)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- **Azure Monitor:** Bug fix for variable interpolations in metrics dropdowns. [#43251](https://github.com/grafana/grafana/pull/43251), [@sarahzinger](https://github.com/sarahzinger)
|
||||
- **Azure Monitor:** Improved error messages for variable queries. [#43213](https://github.com/grafana/grafana/pull/43213), [@sunker](https://github.com/sunker)
|
||||
- **CloudMonitoring:** Fixes broken variable queries that use group bys. [#43914](https://github.com/grafana/grafana/pull/43914), [@sunker](https://github.com/sunker)
|
||||
- **Configuration:** You can now see your expired API keys if you have no active ones. [#42452](https://github.com/grafana/grafana/pull/42452), [@ashharrison90](https://github.com/ashharrison90)
|
||||
- **Elasticsearch:** Fix handling multiple datalinks for a single field. [#44029](https://github.com/grafana/grafana/pull/44029), [@Elfo404](https://github.com/Elfo404)
|
||||
- **Export:** Fix error being thrown when exporting dashboards using query variables that reference the default datasource. [#44034](https://github.com/grafana/grafana/pull/44034), [@ashharrison90](https://github.com/ashharrison90)
|
||||
- **ImportDashboard:** Fixes issue with importing dashboard and name ending up in uid. [#43451](https://github.com/grafana/grafana/pull/43451), [@torkelo](https://github.com/torkelo)
|
||||
- **Login:** Page no longer overflows on mobile. [#43739](https://github.com/grafana/grafana/pull/43739), [@ashharrison90](https://github.com/ashharrison90)
|
||||
- **Plugins:** Set backend metadata property for core plugins. [#43349](https://github.com/grafana/grafana/pull/43349), [@marefr](https://github.com/marefr)
|
||||
- **Prometheus:** Fill missing steps with null values. [#43622](https://github.com/grafana/grafana/pull/43622), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||
- **Prometheus:** Fix interpolation of $\_\_rate_interval variable. [#44035](https://github.com/grafana/grafana/pull/44035), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||
- **Prometheus:** Interpolate variables with curly brackets syntax. [#42927](https://github.com/grafana/grafana/pull/42927), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||
- **Prometheus:** Respect the http-method data source setting. [#42753](https://github.com/grafana/grafana/pull/42753), [@gabor](https://github.com/gabor)
|
||||
- **Table:** Fixes issue with field config applied to wrong fields when hiding columns. [#43376](https://github.com/grafana/grafana/pull/43376), [@torkelo](https://github.com/torkelo)
|
||||
- **Toolkit:** Fix bug with rootUrls not being properly parsed when signing a private plugin. [#43014](https://github.com/grafana/grafana/pull/43014), [@dessen-xu](https://github.com/dessen-xu)
|
||||
- **Variables:** Fix so data source variables are added to adhoc configuration. [#43881](https://github.com/grafana/grafana/pull/43881), [@hugohaggmark](https://github.com/hugohaggmark)
|
||||
|
||||
### Plugin development fixes & changes
|
||||
|
||||
- **Toolkit:** Revert build config so tslib is bundled with plugins to prevent plugins from crashing. [#43556](https://github.com/grafana/grafana/pull/43556), [@mckn](https://github.com/mckn)
|
||||
|
||||
<!-- 8.3.4 END -->
|
||||
<!-- 8.3.3 START -->
|
||||
|
||||
# 8.3.3 (2021-12-10)
|
||||
@@ -1222,6 +1260,16 @@ Issue [#33352](https://github.com/grafana/grafana/issues/33352)
|
||||
|
||||
<!-- 8.0.0-beta1 END -->
|
||||
|
||||
<!-- 7.5.13 START -->
|
||||
|
||||
# 7.5.13 (2022-01-18)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- **[v7.5.x] Alerting:** Fix NoDataFound for alert rules using AND operator (#41305). [#44066](https://github.com/grafana/grafana/pull/44066), [@armandgrillet](https://github.com/armandgrillet)
|
||||
|
||||
<!-- 7.5.13 END -->
|
||||
|
||||
<!-- 7.5.11 START -->
|
||||
|
||||
# 7.5.11 (2021-10-05)
|
||||
|
||||
+2
-2
@@ -80,6 +80,6 @@ Before we can accept your pull request, you need to [sign our CLA](https://grafa
|
||||
## Where do I go from here?
|
||||
|
||||
- Set up your [development environment](contribute/developer-guide.md).
|
||||
- Learn how to [contribute documentation](contribute/documentation.md).
|
||||
- Learn how to [contribute documentation](contribute/README.md).
|
||||
- Get started [developing plugins](https://grafana.com/docs/grafana/latest/developers/plugins/) for Grafana.
|
||||
- Look through the resources in the [contribute](https://github.com/grafana/grafana/tree/main/contribute) folder.
|
||||
- Look through the resources in the [contribute](contribute) folder.
|
||||
|
||||
+1
-1
@@ -79,7 +79,7 @@ The current team members are:
|
||||
- Dominik Prokop ([Grafana Labs](https://grafana.com/))
|
||||
- Emil Tullstedt ([Grafana Labs](https://grafana.com/))
|
||||
- Erik Sundell ([Grafana Labs](https://grafana.com/))
|
||||
- Fredrik Enestad ([Soundtrack Your Brand](https://www.soundtrackyourbrand.com/))
|
||||
- Fredrik Enestad ([Embark Studios](https://www.embark-studios.com/))
|
||||
- Hugo Häggmark ([Grafana Labs](https://grafana.com/))
|
||||
- Ivana Huckova ([Grafana Labs](https://grafana.com/))
|
||||
- Jeroen Op 't Eynde ([Grafana Labs](https://grafana.com/))
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ grafana-mixin/
|
||||
cue/
|
||||
```
|
||||
|
||||
The following directories and their subdirectories are the original upstream licenses:
|
||||
The following directories and their subdirectories are licensed under their original upstream licenses:
|
||||
|
||||
```
|
||||
public/vendor/
|
||||
|
||||
+8
-3
@@ -259,7 +259,6 @@ cookie_samesite = lax
|
||||
allow_embedding = false
|
||||
|
||||
# Set to true if you want to enable http strict transport security (HSTS) response header.
|
||||
# This is only sent when HTTPS is enabled in this configuration.
|
||||
# HSTS tells browsers that the site should only be accessed using HTTPS.
|
||||
strict_transport_security = false
|
||||
|
||||
@@ -294,8 +293,8 @@ content_security_policy_template = """script-src 'self' 'unsafe-eval' 'unsafe-in
|
||||
[snapshots]
|
||||
# snapshot sharing options
|
||||
external_enabled = true
|
||||
external_snapshot_url = https://snapshots-origin.raintank.io
|
||||
external_snapshot_name = Publish to snapshot.raintank.io
|
||||
external_snapshot_url = https://snapshots.raintank.io
|
||||
external_snapshot_name = Publish to snapshots.raintank.io
|
||||
|
||||
# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for
|
||||
# creating and deleting snapshots.
|
||||
@@ -564,6 +563,7 @@ jwk_set_file =
|
||||
cache_ttl = 60m
|
||||
expected_claims = {}
|
||||
key_file =
|
||||
auto_sign_up = false
|
||||
|
||||
#################################### Auth LDAP ###########################
|
||||
[auth.ldap]
|
||||
@@ -865,6 +865,11 @@ max_annotations_to_keep =
|
||||
# Enable the Explore section
|
||||
enabled = true
|
||||
|
||||
#################################### Query History #############################
|
||||
[query_history]
|
||||
# Enable the Query history
|
||||
enabled = false
|
||||
|
||||
#################################### Internal Grafana Metrics ############
|
||||
# Metrics available at HTTP API Url /metrics
|
||||
[metrics]
|
||||
|
||||
+8
-3
@@ -259,7 +259,6 @@
|
||||
;allow_embedding = false
|
||||
|
||||
# Set to true if you want to enable http strict transport security (HSTS) response header.
|
||||
# This is only sent when HTTPS is enabled in this configuration.
|
||||
# HSTS tells browsers that the site should only be accessed using HTTPS.
|
||||
;strict_transport_security = false
|
||||
|
||||
@@ -294,8 +293,8 @@
|
||||
[snapshots]
|
||||
# snapshot sharing options
|
||||
;external_enabled = true
|
||||
;external_snapshot_url = https://snapshots-origin.raintank.io
|
||||
;external_snapshot_name = Publish to snapshot.raintank.io
|
||||
;external_snapshot_url = https://snapshots.raintank.io
|
||||
;external_snapshot_name = Publish to snapshots.raintank.io
|
||||
|
||||
# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for
|
||||
# creating and deleting snapshots.
|
||||
@@ -548,6 +547,7 @@
|
||||
;cache_ttl = 60m
|
||||
;expected_claims = {"aud": ["foo", "bar"]}
|
||||
;key_file = /path/to/key/file
|
||||
;auto_sign_up = false
|
||||
|
||||
#################################### Auth LDAP ##########################
|
||||
[auth.ldap]
|
||||
@@ -848,6 +848,11 @@
|
||||
# Enable the Explore section
|
||||
;enabled = true
|
||||
|
||||
#################################### Query History #############################
|
||||
[query_history]
|
||||
# Enable the Query history
|
||||
;enabled = false
|
||||
|
||||
#################################### Internal Grafana Metrics ##########################
|
||||
# Metrics available at HTTP API Url /metrics
|
||||
[metrics]
|
||||
|
||||
@@ -16,8 +16,8 @@ BASE_URL=http://172.0.10.2:3333 yarn e2e
|
||||
|
||||
The above commands use some utils scripts under [_\<repo-root>/e2e_](../../e2e) that can also be used for more control.
|
||||
|
||||
- `./e2e/start-server` This creates a fresh new grafana server working dir, setup's config and starts the server. It will also kill any previously started server that is still running using pid file at _\<repo-root>/e2e/tmp/pid_.
|
||||
- `./e2e/wait-for-grafana` waits for `$HOST` and `$PORT` to be available. Per default localhost and 3001.
|
||||
- `./scripts/grafana-server/start-server` This creates a fresh new grafana server working dir, setup's config and starts the server. It will also kill any previously started server that is still running using pid file at _\<repo-root>/scripts/grafana-server/tmp/pid_.
|
||||
- `./scripts/grafana-server/wait-for-grafana` waits for `$HOST` and `$PORT` to be available. Per default localhost and 3001.
|
||||
- `./e2e/run-suite <debug|dev|noarg>` Starts cypress in different modes.
|
||||
|
||||
## Test suites
|
||||
|
||||
@@ -255,6 +255,17 @@ datasources:
|
||||
secureJsonData:
|
||||
password: Password!
|
||||
|
||||
- name: gdev-mssql-tls
|
||||
type: mssql
|
||||
url: localhost:1434
|
||||
database: grafana
|
||||
user: grafana
|
||||
jsonData:
|
||||
encrypt: "true"
|
||||
tlsSkipVerify: true
|
||||
secureJsonData:
|
||||
password: Password!
|
||||
|
||||
- name: gdev-mssql-ds-tests
|
||||
type: mssql
|
||||
url: localhost:1433
|
||||
|
||||
@@ -42,7 +42,7 @@ datasources:
|
||||
version: Flux
|
||||
organization: myorg
|
||||
defaultBucket: mybucket
|
||||
|
||||
|
||||
- name: gdev-influxdb-influxql
|
||||
type: influxdb
|
||||
access: proxy
|
||||
@@ -220,6 +220,17 @@ datasources:
|
||||
secureJsonData:
|
||||
password: Password!
|
||||
|
||||
- name: gdev-mssql-tls
|
||||
type: mssql
|
||||
url: localhost:1434
|
||||
database: grafana
|
||||
user: grafana
|
||||
jsonData:
|
||||
encrypt: "true"
|
||||
tlsSkipVerify: true
|
||||
secureJsonData:
|
||||
password: Password!
|
||||
|
||||
- name: gdev-mssql-ds-tests
|
||||
type: mssql
|
||||
url: mssqltests:1433
|
||||
@@ -259,4 +270,4 @@ datasources:
|
||||
type: loki
|
||||
access: proxy
|
||||
url: http://loki:3100
|
||||
editable: false
|
||||
editable: false
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
FROM mcr.microsoft.com/mssql/server:2019-CU8-ubuntu-18.04
|
||||
|
||||
WORKDIR /usr/setup
|
||||
COPY setup.sh setup.sql.template entrypoint.sh ./
|
||||
COPY mssql.conf /var/opt/mssql/mssql.conf
|
||||
|
||||
USER root
|
||||
|
||||
RUN chmod +x setup.sh
|
||||
RUN chown -R mssql ./
|
||||
RUN mkdir -p /home/mssql
|
||||
RUN chown -R mssql /home/mssql
|
||||
|
||||
USER mssql
|
||||
|
||||
RUN touch ~/.rnd
|
||||
RUN openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=mssql_tls' -keyout /var/opt/mssql/mssql.key -out /var/opt/mssql/mssql.pem -days 365
|
||||
RUN chmod 440 /var/opt/mssql/mssql.key
|
||||
RUN chmod 440 /var/opt/mssql/mssql.pem
|
||||
|
||||
CMD /bin/bash ./entrypoint.sh
|
||||
@@ -0,0 +1,2 @@
|
||||
#start SQL Server and run setup script
|
||||
/usr/setup/setup.sh & /opt/mssql/bin/sqlservr
|
||||
@@ -0,0 +1,5 @@
|
||||
[network]
|
||||
tlscert = /var/opt/mssql/mssql.pem
|
||||
tlskey = /var/opt/mssql/mssql.key
|
||||
tlsprotocols = 1.2
|
||||
forceencryption = 1
|
||||
@@ -0,0 +1,13 @@
|
||||
#/bin/bash
|
||||
set -eo pipefail
|
||||
|
||||
#wait for the SQL Server to come up
|
||||
sleep 15s
|
||||
|
||||
cat /usr/setup/setup.sql.template | awk '{
|
||||
gsub(/%%DB%%/,"'$MSSQL_DATABASE'");
|
||||
gsub(/%%USER%%/,"'$MSSQL_USER'");
|
||||
gsub(/%%PWD%%/,"'$MSSQL_PASSWORD'")
|
||||
}1' > /usr/setup/setup.sql
|
||||
|
||||
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $MSSQL_SA_PASSWORD -d master -i /usr/setup/setup.sql
|
||||
@@ -0,0 +1,26 @@
|
||||
CREATE LOGIN %%USER%% WITH PASSWORD = '%%PWD%%'
|
||||
GO
|
||||
|
||||
CREATE DATABASE %%DB%%
|
||||
ON
|
||||
( NAME = %%DB%%,
|
||||
FILENAME = '/var/opt/mssql/data/%%DB%%.mdf',
|
||||
SIZE = 500MB,
|
||||
MAXSIZE = 1000MB,
|
||||
FILEGROWTH = 100MB )
|
||||
LOG ON
|
||||
( NAME = %%DB%%_log,
|
||||
FILENAME = '/var/opt/mssql/data/%%DB%%_log.ldf',
|
||||
SIZE = 500MB,
|
||||
MAXSIZE = 1000MB,
|
||||
FILEGROWTH = 100MB );
|
||||
GO
|
||||
|
||||
USE %%DB%%;
|
||||
GO
|
||||
|
||||
CREATE USER %%USER%% FOR LOGIN %%USER%%;
|
||||
GO
|
||||
|
||||
EXEC sp_addrolemember 'db_owner', '%%USER%%';
|
||||
GO
|
||||
@@ -0,0 +1,18 @@
|
||||
mssql_tls:
|
||||
build:
|
||||
context: docker/blocks/mssql_tls/build
|
||||
environment:
|
||||
ACCEPT_EULA: Y
|
||||
MSSQL_SA_PASSWORD: Password!
|
||||
MSSQL_PID: Developer
|
||||
MSSQL_DATABASE: grafana
|
||||
MSSQL_USER: grafana
|
||||
MSSQL_PASSWORD: Password!
|
||||
ports:
|
||||
- "1434:1433"
|
||||
|
||||
fake-mssql-tls-data:
|
||||
image: grafana/fake-data-gen
|
||||
environment:
|
||||
FD_DATASOURCE: mssql_tls
|
||||
FD_PORT: 1434
|
||||
@@ -1,4 +1,5 @@
|
||||
ARG mysql_version=5.6
|
||||
FROM mysql:${mysql_version}
|
||||
ADD setup.sql /docker-entrypoint-initdb.d
|
||||
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/
|
||||
CMD ["mysqld"]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
ARG postgres_version=9.3
|
||||
FROM postgres:${postgres_version}
|
||||
ADD setup.sql /docker-entrypoint-initdb.d
|
||||
RUN chown -R postgres:postgres /docker-entrypoint-initdb.d/
|
||||
CMD ["postgres"]
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ If you have the grafana/website repo checked out in the same directory as the gr
|
||||
|
||||
Edit content in the `sources` directory.
|
||||
|
||||
### [Contributing](https://github.com/grafana/grafana/blob/main/contribute/documentation.md)
|
||||
### [Contributing](/contribute/documentation/README.md)
|
||||
|
||||
### Using `relref` for internal links
|
||||
|
||||
|
||||
@@ -546,7 +546,7 @@ mitigate the risk of [Clickjacking](https://owasp.org/www-community/attacks/Clic
|
||||
|
||||
### strict_transport_security
|
||||
|
||||
Set to `true` if you want to enable HTTP `Strict-Transport-Security` (HSTS) response header. This is only sent when HTTPS is enabled in this configuration. HSTS tells browsers that the site should only be accessed using HTTPS.
|
||||
Set to `true` if you want to enable HTTP `Strict-Transport-Security` (HSTS) response header. Only use this when HTTPS is enabled in your configuration, or when there is another upstream system that ensures your application does HTTPS (like a frontend load balancer). HSTS tells browsers that the site should only be accessed using HTTPS.
|
||||
|
||||
### strict_transport_security_max_age_seconds
|
||||
|
||||
@@ -586,11 +586,11 @@ Set to `false` to disable external snapshot publish endpoint (default `true`).
|
||||
|
||||
### external_snapshot_url
|
||||
|
||||
Set root URL to a Grafana instance where you want to publish external snapshots (defaults to https://snapshots-origin.raintank.io).
|
||||
Set root URL to a Grafana instance where you want to publish external snapshots (defaults to https://snapshots.raintank.io).
|
||||
|
||||
### external_snapshot_name
|
||||
|
||||
Set name for external snapshot button. Defaults to `Publish to snapshot.raintank.io`.
|
||||
Set name for external snapshot button. Defaults to `Publish to snapshots.raintank.io`.
|
||||
|
||||
### public_mode
|
||||
|
||||
@@ -631,7 +631,7 @@ Path to the default home dashboard. If this value is empty, then Grafana uses St
|
||||
|
||||
Set to `false` to prohibit users from being able to sign up / create
|
||||
user accounts. Default is `false`. The admin user can still create
|
||||
users from the [Grafana Admin Pages](/reference/admin).
|
||||
users from the [Grafana Admin Pages]({{< relref "../manage-users/server-admin/server-admin-manage-users.md" >}}).
|
||||
|
||||
### allow_org_create
|
||||
|
||||
@@ -890,8 +890,6 @@ Email server settings.
|
||||
|
||||
Enable this to allow Grafana to send email. Default is `false`.
|
||||
|
||||
If the password contains `#` or `;`, then you have to wrap it with triple quotes. Example: """#password;"""
|
||||
|
||||
### host
|
||||
|
||||
Default is `localhost:25`.
|
||||
@@ -902,7 +900,7 @@ In case of SMTP auth, default is `empty`.
|
||||
|
||||
### password
|
||||
|
||||
In case of SMTP auth, default is `empty`.
|
||||
In case of SMTP auth, default is `empty`. If the password contains `#` or `;`, then you have to wrap it with triple quotes. Example: """#password;"""
|
||||
|
||||
### cert_file
|
||||
|
||||
|
||||
@@ -147,8 +147,8 @@ Since not all datasources have the same configuration settings we only have the
|
||||
| -------------------------- | ------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| tlsAuth | boolean | _HTTP\*_, MySQL | Enable TLS authentication using client cert configured in secure json data |
|
||||
| tlsAuthWithCACert | boolean | _HTTP\*_, MySQL, PostgreSQL | Enable TLS authentication using CA cert |
|
||||
| tlsSkipVerify | boolean | _HTTP\*_, MySQL, PostgreSQL | Controls whether a client verifies the server's certificate chain and host name. |
|
||||
| serverName | string | _HTTP\*_ | Optional. Controls the server name used for certificate common name/subject alternative name verification. Defaults to using the data source URL. |
|
||||
| tlsSkipVerify | boolean | _HTTP\*_, MySQL, PostgreSQL, MSSQL | Controls whether a client verifies the server's certificate chain and host name. |
|
||||
| serverName | string | _HTTP\*_, MSSQL | Optional. Controls the server name used for certificate common name/subject alternative name verification. Defaults to using the data source URL. |
|
||||
| timeout | string | _HTTP\*_ | 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. |
|
||||
@@ -179,7 +179,7 @@ Since not all datasources have the same configuration settings we only have the
|
||||
| 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 |
|
||||
| sslRootCertFile | string | PostgreSQL, MSSQL | 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' |
|
||||
|
||||
+5
-3
@@ -11,11 +11,13 @@ Grafana allows you to create alerting rules for an external Cortex or Loki insta
|
||||
|
||||
## Before you begin
|
||||
|
||||
For Cortex and Loki data sources to work with Grafana 8.0 alerting, enable the ruler API by configuring their respective services.
|
||||
- Verify that you have write permission to the Prometheus data source. Otherwise, you will not be able to create or update Cortex managed alerting rules.
|
||||
|
||||
**Loki** - The `local` rule storage type, default for the Loki data source, supports only viewing of rules. To edit rules, configure one of the other rule storage types.
|
||||
- For Cortex and Loki data sources, enable the ruler API by configuring their respective services.
|
||||
|
||||
**Cortex** - When configuring a Grafana Prometheus data source to point to Cortex, use the [legacy `/api/prom` prefix](https://cortexmetrics.io/docs/api/#path-prefixes), not `/prometheus`. The Prometheus data source supports both Cortex and Prometheus, and Grafana expects that both the [Query API](https://cortexmetrics.io/docs/api/#querier--query-frontend) and [Ruler API](https://cortexmetrics.io/docs/api/#ruler) are under the same URL. You cannot provide a separate URL for the Ruler API.
|
||||
- **Loki** - The `local` rule storage type, default for the Loki data source, supports only viewing of rules. To edit rules, configure one of the other rule storage types.
|
||||
|
||||
- **Cortex** - use the [legacy `/api/prom` prefix](https://cortexmetrics.io/docs/api/#path-prefixes), not `/prometheus`. The Prometheus data source supports both Cortex and Prometheus, and Grafana expects that both the [Query API](https://cortexmetrics.io/docs/api/#querier--query-frontend) and [Ruler API](https://cortexmetrics.io/docs/api/#ruler) are under the same URL. You cannot provide a separate URL for the Ruler API.
|
||||
|
||||
> **Note:** If you do not want to manage alerting rules for a particular Loki or Prometheus data source, go to its settings and clear the **Manage alerts via Alerting UI** checkbox.
|
||||
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ Grafana allows you to create alerting rules that query one or more data sources,
|
||||
1. In Step 2, add queries and expressions to evaluate.
|
||||
- Keep the default name or hover over and click the edit icon to change the name.
|
||||
- For queries, select a data source from the drop-down.
|
||||
- Add one or more [queries]({{< relref "../../../panels/queries.md" >}}) or [expressions]({{< relref "../../../panels/expressions.md" >}}).
|
||||
- Add one or more [queries]({{< relref "../../../panels/query-a-data-source/add-a-query.md" >}}) or [expressions]({{< relref "../../../panels/query-a-data-source/use-expressions-to-manipulate-data/about-expressions.md" >}}).
|
||||
- For each expression, select either **Classic condition** to create a single alert rule, or choose from **Math**, **Reduce**, **Resample** options to generate separate alert for each series. For details on these options, see [Single and multi dimensional rule](#single-and-multi-dimensional-rule).
|
||||
- Click **Run queries** to verify that the query is successful.
|
||||
1. In Step 3, add conditions.
|
||||
@@ -57,7 +57,7 @@ To generate a separate alert for each series, create a multi-dimensional rule. U
|
||||
|
||||
#### Rule with classic condition
|
||||
|
||||
For more information, see [expressions documentation]({{< relref "../../../panels/expressions.md" >}}).
|
||||
For more information, see [expressions documentation]({{< relref "../../../panels/query-a-data-source/use-expressions-to-manipulate-data/about-expressions.md" >}}).
|
||||
|
||||
### No data and error handling
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ settings page). When you create the application you will need to specify
|
||||
a callback URL. Specify this as callback:
|
||||
|
||||
```bash
|
||||
http://<my_grafana_server_name_or_ip>:<grafana_server_port>/login/github
|
||||
http://<my_grafana_server_name_or_ip>:<grafana_server_port>/grafana/login/github
|
||||
```
|
||||
|
||||
This callback URL must match the full HTTP address that you use in your
|
||||
|
||||
@@ -44,8 +44,13 @@ username_claim = sub
|
||||
|
||||
# Specify a claim to use as an email to sign in.
|
||||
email_claim = sub
|
||||
|
||||
# auto-create users if they are not already matched
|
||||
# auto_sign_up = true
|
||||
```
|
||||
|
||||
If `auto_sign_up` is enabled, then the `sub` claim is used as the "external Auth ID". The `name` claim is used as the user's full name if it is present.
|
||||
|
||||
## Signature verification
|
||||
|
||||
JSON web token integrity needs to be verified so cryptographic signature is used for this purpose. So we expect that every token must be signed with some known cryptographic key.
|
||||
|
||||
@@ -49,6 +49,6 @@ Once you have a strategy or design guidelines, write them down to help maintain
|
||||
- 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 "../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.
|
||||
- To add documentation to a panel, [edit the panel settings]({{< relref "../panels/working-with-panels/add-panel.md" >}}) 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.
|
||||
|
||||
@@ -46,7 +46,7 @@ How can you tell you are here?
|
||||
|
||||
- Compare like to like: split service dashboards when the magnitude differs. Make sure aggregated metrics don't drown out important information.
|
||||
- Expressive charts with meaningful use of color and normalizing axes where you can.
|
||||
- Example of meaningful color: Blue means it's good, red means it's bad. [Thresholds]({{< relref "../panels/thresholds.md" >}}) can help with that.
|
||||
- Example of meaningful color: Blue means it's good, red means it's bad. [Thresholds]({{< relref "../panels/specify-thresholds/about-thresholds.md" >}}) can help with that.
|
||||
- Example of normalizing axes: When comparing CPU usage, measure by percentage rather than raw number, because machines can have a different number of cores. Normalizing CPU usage by the number of cores reduces cognitive load because the viewer can trust that at 100% all cores are being used, without having to know the number of CPUs.
|
||||
- Directed browsing cuts down on "guessing."
|
||||
- Template variables make it harder to “just browse” randomly or aimlessly.
|
||||
|
||||
@@ -7,7 +7,7 @@ weight = 7
|
||||
|
||||
# Time range controls
|
||||
|
||||
Grafana provides several ways to manage the time ranges of the data being visualized, both at the dashboard level and the panel level.
|
||||
Grafana provides several ways to manage the time ranges of the data being visualized, for dashboard, panels and also for alerting.
|
||||
|
||||
This page describes supported time units and relative ranges, the common time controls, dashboard-wide time settings, and panel-specific time settings.
|
||||
|
||||
@@ -34,11 +34,18 @@ Here are some examples:
|
||||
| This Year | `now/Y` | `now/Y` |
|
||||
| Previous fiscal year | `now-1y/fy` | `now-1y/fy` |
|
||||
|
||||
### Note about Grafana alerting
|
||||
|
||||
For Grafana alerting, we do not support are the following syntaxes at this time.
|
||||
|
||||
- now+n for future timestamps.
|
||||
- now-1n/n for "start of n until end of n" since this is an absolute timestamp.
|
||||
|
||||
## Common time range controls
|
||||
|
||||
The dashboard and panel time controls have a common user interface (UI).
|
||||
|
||||
<img class="no-shadow" src="/static/img/docs/time-range-controls/common-time-controls-8-2.png" max-width="700px">
|
||||
<img class="no-shadow" src="/static/img/docs/time-range-controls/common-time-controls-7-0.png" max-width="700px">
|
||||
|
||||
The options are defined below.
|
||||
|
||||
@@ -110,7 +117,7 @@ For more advanced time settings, click the **Dashboard settings** (gear) icon at
|
||||
|
||||
## Panel time overrides and timeshift
|
||||
|
||||
In [Query options]({{< relref "../panels/queries.md#query-options" >}}), you can override the relative time range for individual panels, causing them to be different than what is selected in the dashboard time picker in the upper right. This allows you to show metrics from different time periods or days at the same time.
|
||||
In [Query options]({{< relref "../panels/reference-query-options.md" >}}), you can override the relative time range for individual panels, causing them to be different than what is selected in the dashboard time picker in the upper right. This allows you to show metrics from different time periods or days at the same time.
|
||||
|
||||
> **Note:** Panel time overrides have no effect when the time range for the dashboard is absolute.
|
||||
|
||||
|
||||
@@ -74,4 +74,4 @@ from(bucket: "grafana")
|
||||
|> yield(name: "mean")
|
||||
```
|
||||
|
||||
You can view the interpolated version of a query with the query inspector. For more information, refer to [Inspect a panel]({{< relref "../../panels/inspect-panel.md" >}}) and [Queries]({{< relref "../../panels/queries.md" >}}).
|
||||
You can view the interpolated version of a query with the query inspector. For more information, refer to [Navigate the Query Inspector]({{< relref "../../panels/working-with-panels/navigate-inspector-panel.md" >}}).
|
||||
|
||||
@@ -174,7 +174,7 @@ A time series query result is returned in a [wide data frame format]({{< relref
|
||||
|
||||
> For backward compatibility, there's an exception to the above rule for queries that return three columns including a string column named metric. Instead of transforming the metric column into field labels, it becomes the field name, and then the series name is formatted as the value of the metric column. See the example with the metric column below.
|
||||
|
||||
You can optionally customize the default series name formatting using instructions in [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}).
|
||||
You can optionally customize the default series name formatting using instructions in [Reference: Standard field definitions]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}).
|
||||
|
||||
**Example with `metric` column:**
|
||||
|
||||
@@ -218,7 +218,7 @@ GROUP BY
|
||||
ORDER BY 1
|
||||
```
|
||||
|
||||
Given the data frame result in the following example and using the graph panel, you will get two series named _value 10.0.1.1_ and _value 10.0.1.2_. To render the series with a name of _10.0.1.1_ and _10.0.1.2_ , use a [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}) value of `${__field.labels.hostname}`.
|
||||
Given the data frame result in the following example and using the graph panel, you will get two series named _value 10.0.1.1_ and _value 10.0.1.2_. To render the series with a name of _10.0.1.1_ and _10.0.1.2_ , use a [Reference: Standard field definitions]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}) display name value of `${__field.labels.hostname}`.
|
||||
|
||||
Data frame result:
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ A time series query result is returned in a [wide data frame format]({{< relref
|
||||
|
||||
> For backward compatibility, there's an exception to the above rule for queries that return three columns including a string column named metric. Instead of transforming the metric column into field labels, it becomes the field name, and then the series name is formatted as the value of the metric column. See the example with the metric column below.
|
||||
|
||||
You can optionally customize the default series name formatting using instructions in [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}).
|
||||
You can optionally customize the default series name formatting using instructions in [Reference: Standard field definitions]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}).
|
||||
|
||||
**Example with `metric` column:**
|
||||
|
||||
@@ -228,7 +228,7 @@ GROUP BY time, hostname
|
||||
ORDER BY time
|
||||
```
|
||||
|
||||
Given the data frame result in the following example and using the graph panel, you will get two series named _value 10.0.1.1_ and _value 10.0.1.2_. To render the series with a name of _10.0.1.1_ and _10.0.1.2_ , use a [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}) value of `${__field.labels.hostname}`.
|
||||
Given the data frame result in the following example and using the graph panel, you will get two series named _value 10.0.1.1_ and _value 10.0.1.2_. To render the series with a name of _10.0.1.1_ and _10.0.1.2_ , use a [Reference: Standard field definitions]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}) display value of `${__field.labels.hostname}`.
|
||||
|
||||
Data frame result:
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Grafana ships with a built-in PostgreSQL data source plugin that allows you to q
|
||||
|
||||
## PostgreSQL settings
|
||||
|
||||
To access PostgreSQL settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Prometheus data source.
|
||||
To access PostgreSQL settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the PostgreSQL data source.
|
||||
|
||||
| Name | Description |
|
||||
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
@@ -191,7 +191,7 @@ A time series query result is returned in a [wide data frame format]({{< relref
|
||||
|
||||
> For backward compatibility, there's an exception to the above rule for queries that return three columns including a string column named metric. Instead of transforming the metric column into field labels, it becomes the field name, and then the series name is formatted as the value of the metric column. See the example with the metric column below.
|
||||
|
||||
You can optionally customize the default series name formatting using instructions in [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}).
|
||||
You can optionally customize the default series name formatting using instructions in [Reference: Standard field definitions]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}).
|
||||
|
||||
**Example with `metric` column:**
|
||||
|
||||
@@ -233,7 +233,7 @@ GROUP BY time, hostname
|
||||
ORDER BY time
|
||||
```
|
||||
|
||||
Given the data frame result in the following example and using the graph panel, you will get two series named _value 10.0.1.1_ and _value 10.0.1.2_. To render the series with a name of _10.0.1.1_ and _10.0.1.2_ , use a [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}) value of `${__field.labels.hostname}`.
|
||||
Given the data frame result in the following example and using the graph panel, you will get two series named _value 10.0.1.1_ and _value 10.0.1.2_. To render the series with a name of _10.0.1.1_ and _10.0.1.2_ , use a [Reference: Standard field definitions]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}) display value of `${__field.labels.hostname}`.
|
||||
|
||||
Data frame result:
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ To access Prometheus settings, hover your mouse over the **Configuration** (gear
|
||||
| `Custom Query Parameters` | Add custom parameters to the Prometheus query URL. For example `timeout`, `partial_response`, `dedup`, or `max_source_resolution`. Multiple parameters should be concatenated together with an '&'. |
|
||||
| `Label name` | Add the name of the field in the label object. |
|
||||
| `URL` | If the link is external, then enter the full link URL. You can interpolate the value from the field with `${__value.raw }` macro. |
|
||||
| `URL Label` | (Optional) Set a custom display label for the link URL. The link label defaults to the full external URL or the name of datasource and is overridden by this setting. |
|
||||
| `Internal link` | Select if the link is internal or external. In the case of an internal link, a data source selector allows you to select the target data source. Supports tracing data sources only. |
|
||||
|
||||
## Prometheus query editor
|
||||
|
||||
@@ -17,6 +17,8 @@ Open the terminal, and run the following command in your [plugin directory]({{<
|
||||
npx @grafana/toolkit plugin:create my-grafana-plugin
|
||||
```
|
||||
|
||||
> **Note:** If running NPM 7+ the `npx` commands mentioned in this article may hang. The workaround is to use `npx --legacy-peer-deps <command to run>`.
|
||||
|
||||
If you want a more guided introduction to plugin development, check out our tutorials:
|
||||
|
||||
- [Build a panel plugin]({{< relref "/tutorials/build-a-panel-plugin.md" >}})
|
||||
|
||||
@@ -163,7 +163,7 @@ Dimensions: 5 fields by 2 rows
|
||||
+---------------------+------------------+------------------+------------------+------------------+
|
||||
```
|
||||
|
||||
> **Note:** Not all panels support the wide time series data frame format. To keep full backward compatibility we have introduced a transformation that can be used to convert from the wide to the long format. Read more about how to use it here: [Prepare time series-transformation]({{< relref "../../panels/transformations/types-options.md#prepare-time-series" >}}).
|
||||
> **Note:** Not all panels support the wide time series data frame format. To keep full backward compatibility we have introduced a transformation that can be used to convert from the wide to the long format. Read more about how to use it here: [Prepare time series-transformation]({{< relref "../../panels/reference-transformation-functions.md#prepare-time-series" >}}).
|
||||
|
||||
## Technical references
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ aliases = ["/docs/grafana/latest/plugins/developing/snapshot-mode/"]
|
||||
|
||||
{{< figure class="float-right" src="/static/img/docs/Grafana-snapshot-example.png" caption="A dashboard using snapshot data and not live data." >}}
|
||||
|
||||
Grafana has this great feature where you can [save a snapshot of your dashboard]({{< relref "../../../dashboards/json-model.md" >}}). Instead of sending a screenshot of a dashboard to someone, you can send them a working, interactive Grafana dashboard with the snapshot data embedded inside it. The snapshot can be saved on your Grafana server and is available to all your co-workers. Raintank also hosts a [snapshot server](http://snapshot.raintank.io/) if you want to send the snapshot to someone who does not have access to your Grafana server.
|
||||
Grafana has this great feature where you can [save a snapshot of your dashboard]({{< relref "../../../dashboards/json-model.md" >}}). Instead of sending a screenshot of a dashboard to someone, you can send them a working, interactive Grafana dashboard with the snapshot data embedded inside it. The snapshot can be saved on your Grafana server and is available to all your co-workers. Raintank also hosts a [snapshot server](https://snapshots.raintank.io) if you want to send the snapshot to someone who does not have access to your Grafana server.
|
||||
|
||||
{{< figure class="float-right" src="/static/img/docs/animated_gifs/snapshots.gif" caption="Selecting a snapshot" >}}
|
||||
|
||||
@@ -72,4 +72,4 @@ loadLocationDataFromFile(reload) {
|
||||
|
||||
It is really easy to forget to add this support but it enables a great feature and can be used to demo your panel.
|
||||
|
||||
If there is a panel plugin that you would like to be installed on the Raintank Snapshot server then please contact us via [Slack](https://raintank.slack.com) or [GitHub](https://github.com/grafana/grafana).
|
||||
If there is a panel plugin that you would like to be installed on the Raintank Snapshot server then please contact us via [Slack](https://slack.grafana.com) or [GitHub](https://github.com/grafana/grafana).
|
||||
|
||||
@@ -12,7 +12,10 @@ This guide helps you identify the steps you need to take based on the Grafana ve
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [From version 7.x.x to 8.0.0](#from-version-7xx-to-800)
|
||||
- [From version 8.3.x to 8.4.x](#from-version-83x-to-84x)
|
||||
- [Value Mapping Editor has been removed from @grafana-ui library](#value-mapping-editor-has-been-removed-from-grafana-ui-library)
|
||||
- [Thresholds Editor has been removed from @grafana-ui library](#thresholds-editor-has-been-removed-from-grafana-ui-library)
|
||||
- [From version 7.x.x to 8.x.x](#from-version-7xx-to-8xx)
|
||||
- [Backend plugin v1 support has been dropped](#backend-plugin-v1-support-has-been-dropped)
|
||||
- [1. Add dependency on grafana-plugin-sdk-go](#1-add-dependency-on-grafana-plugin-sdk-go)
|
||||
- [2. Update the way you bootstrap your plugin](#2-update-the-way-you-bootstrap-your-plugin)
|
||||
@@ -33,6 +36,18 @@ This guide helps you identify the steps you need to take based on the Grafana ve
|
||||
- [Migrate to data frames](#migrate-to-data-frames)
|
||||
- [Troubleshoot plugin migration](#troubleshoot-plugin-migration)
|
||||
|
||||
## From version 8.3.x to 8.4.x
|
||||
|
||||
This section explains how to migrate Grafana v8.3.x plugins to the updated plugin system available in Grafana v8.4.x. Depending on your plugin, you need to perform one or more of the following steps.
|
||||
|
||||
### Value Mapping Editor has been removed from @grafana-ui library
|
||||
|
||||
Removed due to being an internal component.
|
||||
|
||||
### Thresholds Editor has been removed from @grafana-ui library
|
||||
|
||||
Removed due to being an internal component.
|
||||
|
||||
## From version 7.x.x to 8.x.x
|
||||
|
||||
This section explains how to migrate Grafana v7.x.x plugins to the updated plugin system available in Grafana v8.x.x. Depending on your plugin, you need to perform one or more of the following steps. We have documented the breaking changes in Grafana v8.x.x and the steps you need to take to upgrade your plugin.
|
||||
@@ -176,7 +191,7 @@ We strongly recommend that you not allow unsigned plugins in your Grafana instal
|
||||
|
||||
To sign your plugin, see [Sign a plugin](https://grafana.com/docs/grafana/latest/developers/plugins/sign-a-plugin/#sign-a-plugin).
|
||||
|
||||
You can still run and develop an unsigned plugin by running your Grafana instance in [development mode](https://grafana.com/docs/grafana/latest/administration/configuration/#app_mode). Alternatively, you can use the [allow_loading_unsigned_plugins configuration setting.]({{< relref "../../administration/#allow_loading_unsigned_plugins" >}})
|
||||
You can still run and develop an unsigned plugin by running your Grafana instance in [development mode](https://grafana.com/docs/grafana/latest/administration/configuration/#app_mode). Alternatively, you can use the [allow_loading_unsigned_plugins configuration setting.](../../administration/configuration.md#allow_loading_unsigned_plugins)
|
||||
|
||||
### Update react-hook-form from v6 to v7
|
||||
|
||||
@@ -377,7 +392,7 @@ const themeColor = getColorForTheme(color, theme);
|
||||
|
||||
```
|
||||
|
||||
## From version 6.x.x to 7.x.x
|
||||
## From version 6.x.x to 7.0.0
|
||||
|
||||
### What's new in Grafana 7.0?
|
||||
|
||||
@@ -387,7 +402,7 @@ Plugins built using Angular still work for the foreseeable future, but we encour
|
||||
|
||||
#### New data format
|
||||
|
||||
Along with the move to React, the new plugin platform introduced a new internal data format called [data frames]({{< relref "data-frames.md" >}}).
|
||||
Along with the move to React, the new plugin platform introduced a new internal data format called [data frames](data-frames.md).
|
||||
|
||||
Previously, data source plugins could send data either as time series or tables. With data frames, data sources can send any data in a table-like structure. This gives you more flexibility to visualize your data in Grafana.
|
||||
|
||||
@@ -411,9 +426,9 @@ For plugins prior to Grafana 7.0, all options are considered _Display options_.
|
||||
|
||||
While backend plugins were available as an experimental feature in previous versions of Grafana, the support has been greatly improved for Grafana 7. Backend plugins for Grafana 7.0 are backwards-compatible and will continue to work. However, the old backend plugin system has been deprecated, and we recommend that you use the new SDK for backend plugins.
|
||||
|
||||
Since Grafana 7.0 introduced [signing of backend plugins]({{< relref "../../plugins/plugin-signatures.md" >}}), community plugins won’t load by default if they’re unsigned.
|
||||
Since Grafana 7.0 introduced [signing of backend plugins](../../plugins/plugin-signatures.md), community plugins won’t load by default if they’re unsigned.
|
||||
|
||||
To learn more, refer to [Backend plugins]({{< relref "backend" >}}).
|
||||
To learn more, refer to [Backend plugins](backend/_index.md).
|
||||
|
||||
### Migrate a plugin from Angular to React
|
||||
|
||||
@@ -501,8 +516,8 @@ async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
|
||||
}
|
||||
```
|
||||
|
||||
For more information, refer to [Data frames]({{< relref "data-frames.md">}}).
|
||||
For more information, refer to [Data frames](data-frames.md).
|
||||
|
||||
### Troubleshoot plugin migration
|
||||
|
||||
As of Grafana 7.0, backend plugins can now be cryptographically signed to verify their origin. By default, Grafana ignores unsigned plugins. For more information, refer to [Allow unsigned plugins]({{< relref "../../plugins/plugin-signatures.md#allow-unsigned-plugins" >}}).
|
||||
As of Grafana 7.0, backend plugins can now be cryptographically signed to verify their origin. By default, Grafana ignores unsigned plugins. For more information, refer to [Allow unsigned plugins](../../plugins/plugin-signatures.md#allow-unsigned-plugins).
|
||||
|
||||
@@ -41,6 +41,8 @@ Public plugins need to be reviewed by the Grafana team before you can sign them.
|
||||
npx @grafana/toolkit plugin:sign
|
||||
```
|
||||
|
||||
> **Note:** If running NPM 7+ the `npx` commands mentioned in this article may hang. The workaround is to use `npx --legacy-peer-deps <command to run>`.
|
||||
|
||||
## Sign a private plugin
|
||||
|
||||
1. In your plugin directory, sign the plugin with the API key you just created. Grafana Toolkit creates a [MANIFEST.txt](#plugin-manifest) file in the `dist` directory of your plugin.
|
||||
|
||||
@@ -91,7 +91,6 @@ The following list contains fine-grained access control actions.
|
||||
| `licensing:update` | n/a | Update the license token. |
|
||||
| `licensing:delete` | n/a | Delete the license token. |
|
||||
| `licensing.reports:read` | n/a | Get custom permission reports. |
|
||||
| `serviceaccounts:delete` | `serviceaccounts:*` <br> `serviceaccounts:id:*` | Delete one or more service accounts. |
|
||||
|
||||
## Scope definitions
|
||||
|
||||
@@ -109,4 +108,3 @@ The following list contains fine-grained access control scopes.
|
||||
| `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. |
|
||||
| `provisioners:*` | Restrict an action to a set of provisioners. For example, `provisioners:*` matches any provisioner, and `provisioners:accesscontrol` matches the fine-grained access control [provisioner]({{< relref "./provisioning.md" >}}). |
|
||||
| `datasources:*`<br>`datasources:id:*`<br>`datasources:uid:*`<br>`datasources:name:*` | Restrict an action to a set of data sources. For example, `datasources:*` matches any data source, and `datasources:name:postgres` matches the data source named `postgres`. |
|
||||
| `serviceaccounts:*` <br> `serviceaccounts:id:*` | Restrict an action to a set of service accounts. For example, `serviceaccounts:*` matches any service account and `serviceaccounts:id:1` matches the service account whose ID is `1`. |
|
||||
|
||||
@@ -122,6 +122,65 @@ roles:
|
||||
- name: 'Admin'
|
||||
```
|
||||
|
||||
### Assign your custom role to specific teams
|
||||
|
||||
To assign roles to teams, add said teams to the `teams` section of your roles. To remove a specific assignment, remove it from the list.
|
||||
|
||||
> **Note:** Assignments are updated if the version of the role is greater or equal to the one stored internally.<br/>
|
||||
> You don’t need to increment the version number of the role to update its assignments.<br/>
|
||||
> Assignments to built-in roles will be ignored. Use `addDefaultAssignments` and `removeDefaultAssignments` instead.
|
||||
|
||||
In order for provisioning to succeed, specified teams must already exist. Additionally, since teams are local to an organization, the organization has to be specified in the assignment.
|
||||
|
||||
For example, the following role is assigned to the `user editors` team and `user admins` team:
|
||||
|
||||
```yaml
|
||||
# config file version
|
||||
apiVersion: 1
|
||||
|
||||
# Roles to insert/update in the database
|
||||
roles:
|
||||
- name: custom:users:writer
|
||||
description: 'List/update other users in the organization'
|
||||
version: 1
|
||||
global: true
|
||||
permissions:
|
||||
- action: 'org.users:read'
|
||||
scope: 'users:*'
|
||||
- action: 'org.users:write'
|
||||
scope: 'users:*'
|
||||
teams:
|
||||
- name: 'user editors'
|
||||
orgId: 1
|
||||
- name: 'user admins'
|
||||
orgId: 1
|
||||
```
|
||||
|
||||
### Assign fixed roles to specific teams
|
||||
|
||||
To assign a fixed role to teams, add said teams to the `teams` section of the associated entry. To remove a specific assignment, remove it from the list.
|
||||
|
||||
> **Note:** Since fixed roles are global, the Global attribute has to be specified. A fixed role will never be updated through provisioning.
|
||||
|
||||
In order for provisioning to succeed, specified teams must already exist. Additionally, since teams are local to an organization, the organization has to be specified in the assignment.
|
||||
|
||||
For example, the following fixed role is assigned to the `user editors` team and `user admins` team:
|
||||
|
||||
```yaml
|
||||
# config file version
|
||||
apiVersion: 1
|
||||
|
||||
# Roles to insert/update in the database
|
||||
roles:
|
||||
- name: fixed:users:writer
|
||||
global: true
|
||||
teams:
|
||||
- name: 'user editors'
|
||||
orgId: 1
|
||||
- name: 'user admins'
|
||||
orgId: 1
|
||||
```
|
||||
|
||||
## Manage default built-in role assignments
|
||||
|
||||
During startup, Grafana creates [default built-in role assignments]({{< relref "./roles#default-built-in-role-assignments" >}}) with [fixed roles]({{< relref "./roles#fixed-roles" >}}). You can remove and later restore those assignments with provisioning.
|
||||
@@ -237,6 +296,12 @@ roles:
|
||||
- name: 'Editor'
|
||||
# <bool> overwrite org id and assign role globally
|
||||
global: true
|
||||
- name: fixed:users:writer
|
||||
global: true
|
||||
# <list> list of teams the role should be assigned to
|
||||
teams:
|
||||
- name: 'user editors'
|
||||
orgId: 1
|
||||
```
|
||||
|
||||
## Supported settings
|
||||
|
||||
@@ -271,7 +271,7 @@ List of comma- or space-separated organizations. Each user must be a member of a
|
||||
|
||||
### org_mapping
|
||||
|
||||
List of comma- or space-separated Organization:OrgId mappings.
|
||||
List of comma- or space-separated Organization:OrgId:Role mappings. Organization can be `*` meaning "All users". Role is optional and can have the following values: `Viewer`, `Editor` or `Admin`.
|
||||
|
||||
### role_values_editor
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@ You can use an encryption key from AWS Key Management Service to encrypt secrets
|
||||
|
||||
- `access_key_id`: The AWS Access Key ID that you previously generated.
|
||||
- `secret_access_key`: The AWS Secret Access Key you previously generated.
|
||||
- `token`: (Optional) An AWS Session Token, which you must provide if you created temporary credentials.
|
||||
- `region`: The AWS region where you created the KMS key. The region is contained in the key’s ARN. For example: `arn:aws:kms:*us-east-2*:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
|
||||
|
||||
An example of an AWS KMS provider section in the `grafana.ini` file is as follows:
|
||||
@@ -53,8 +52,6 @@ You can use an encryption key from AWS Key Management Service to encrypt secrets
|
||||
;access_key_id = AKIAIOSFODNN7EXAMPLE
|
||||
# AWS secret access key
|
||||
;secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
|
||||
# AWS session token, optional
|
||||
;token = AQoDYXdzEJr...<REMAINDER OF SECURITY TOKEN>
|
||||
# AWS region, for example eu-north-1
|
||||
;region = eu-north-1
|
||||
```
|
||||
|
||||
@@ -17,9 +17,9 @@ The following cache backends are available: in-memory, Redis, and Memcached.
|
||||
|
||||
When a panel queries a cached data source, the time until this query fetches fresh data is determined by the panel's **interval.** This means that wider panels and dashboards with shorter time ranges fetch new data more frequently than narrower panels and dashboards with longer time ranges.
|
||||
|
||||
Interval is visible in a panel's [query options]({{< relref "../panels/queries.md#query-options" >}}). It is calculated like this: `(max data points) / time range`. Max data points are calculated based on the width of the panel. For example, a full-width panel on a dashboard with a time range of `last 7 days` will retrieve fresh data every 10 minutes. In this example, cached data for this panel will be served for up to 10 minutes before Grafana queries the data source again and returns new data.
|
||||
Interval is visible in a panel's [query options]({{< relref "../panels/reference-query-options.md" >}}). It is calculated like this: `(max data points) / time range`. Max data points are calculated based on the width of the panel. For example, a full-width panel on a dashboard with a time range of `last 7 days` will retrieve fresh data every 10 minutes. In this example, cached data for this panel will be served for up to 10 minutes before Grafana queries the data source again and returns new data.
|
||||
|
||||
You can make a panel retrieve fresh data more frequently by increasing the **Max data points** setting in the panel's [query options]({{< relref "../panels/queries.md#query-options" >}}).
|
||||
You can make a panel retrieve fresh data more frequently by increasing the **Max data points** setting in the panel's [query options]({{< relref "../panels/reference-query-options.md" >}}).
|
||||
|
||||
## Query caching benefits
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ You can configure report-specific template variables for the dashboard on the re
|
||||
|
||||
> **Note:** Available in Grafana Enterprise v8+.
|
||||
|
||||
You can include dynamic dashboards with panels or rows, set to repeat by a variable, into reports. For detailed information about setting up repeating panels or rows in dashboards, refer to the [Repeat panels or rows]({{< relref "../panels/repeat-panels-or-rows.md" >}}) section.
|
||||
You can include dynamic dashboards with panels or rows, set to repeat by a variable, into reports. For detailed information about setting up repeating panels or rows in dashboards, refer to the [Repeat panels or rows]({{< relref "../panels/add-panels-dynamically/" >}}) section.
|
||||
|
||||
#### Caveats:
|
||||
|
||||
|
||||
@@ -40,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:Role mappings. Organization can be `*` meaning "All users". Role is optional and can have the following values: `Viewer`, `Editor` or `Admin`. | |
|
||||
| `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
|
||||
|
||||
@@ -181,15 +181,15 @@ role_values_grafana_admin = superadmin
|
||||
|
||||
Organization mapping allows you to assign users to particular organization in Grafana depending on attribute value obtained from identity provider.
|
||||
|
||||
1. In configuration file, set [`assertion_attribute_org`]({{< relref "./enterprise-configuration.md#assertion-attribute-org" >}}) to the attribute name you store organization info in.
|
||||
1. Set [`org_mapping`]({{< relref "./enterprise-configuration.md#org-mapping" >}}) option to the comma-separated list of `Organization:OrgId` pairs to map organization from IdP to Grafana organization specified by id.
|
||||
1. In configuration file, set [`assertion_attribute_org`]({{< relref "./enterprise-configuration.md#assertion-attribute-org" >}}) to the attribute name you store organization info in. This attribute can be an array if you want a user to be in multiple organizations.
|
||||
1. Set [`org_mapping`]({{< relref "./enterprise-configuration.md#org-mapping" >}}) option to the comma-separated list of `Organization:OrgId` pairs to map organization from IdP to Grafana organization specified by id. If you want users to have different roles in multiple organizations, you can set this option to a comma-separated list of `Organization:OrgId:Role` mappings.
|
||||
|
||||
For example, use following configuration to assign users from `Engineering` organization to the Grafana organization with id `2` and users from `Sales` - to the org with id `3`, based on `Org` assertion attribute value:
|
||||
For example, use following configuration to assign users from `Engineering` organization to the Grafana organization with id `2` as Editor and users from `Sales` - to the org with id `3` as Admin, based on `Org` assertion attribute value:
|
||||
|
||||
```bash
|
||||
[auth.saml]
|
||||
assertion_attribute_org = Org
|
||||
org_mapping = Engineering:2, Sales:3
|
||||
org_mapping = Engineering:2:Editor, Sales:3:Admin
|
||||
```
|
||||
|
||||
You can specify multiple organizations both for the IdP and Grafana:
|
||||
@@ -197,6 +197,10 @@ You can specify multiple organizations both for the IdP and Grafana:
|
||||
- `org_mapping = Engineering:2, Sales:2` to map users from `Engineering` and `Sales` to `2` in Grafana.
|
||||
- `org_mapping = Engineering:2, Engineering:3` to assign `Engineering` to both `2` and `3` in Grafana.
|
||||
|
||||
You can use `*` as an Organization if you want all your users to be in some organizations with a default role:
|
||||
|
||||
- `org_mapping = *:2:Editor` to map all users to `2` in Grafana as Editors.
|
||||
|
||||
### Configure allowed organizations
|
||||
|
||||
> Only available in Grafana v7.0+
|
||||
@@ -223,7 +227,7 @@ assertion_attribute_org = Org
|
||||
role_values_editor = editor, developer
|
||||
role_values_admin = admin, operator
|
||||
role_values_grafana_admin = superadmin
|
||||
org_mapping = Engineering:2, Sales:3
|
||||
org_mapping = Engineering:2:Editor, Engineering:3:Viewer, Sales:3:Editor, *:1:Editor
|
||||
allowed_organizations = Engineering, Sales
|
||||
```
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ weight = 10
|
||||
# Query management in Explore
|
||||
|
||||
To help with debugging queries, Explore allows you to investigate query requests and responses, as well as query statistics, via the Query inspector.
|
||||
This functionality is similar to the panel inspector [Stats tab]({{< relref "../panels/inspect-panel.md#inspect-query-performance" >}}) and
|
||||
[Query tab]({{< relref "../panels/inspect-panel.md##view-raw-request-and-response-to-data-source" >}}).
|
||||
This functionality is similar to the panel inspector tasks [Inspect query performance]({{< relref "../panels/query-a-data-source/inspect-query-performance.md" >}}) and
|
||||
[Inspect query request and response data]({{< relref "../panels/query-a-data-source/inspect-request-and-response-data.md" >}}).
|
||||
|
||||
{{< figure src="/static/img/docs/v71/query_inspector_explore.png" class="docs-image--no-shadow" max-width= "550px" caption="Screenshot of the query inspector button in Explore" >}}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ 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. Configure your [query]({{< relref "../panels/query-a-data-source/add-a-query" >}}) by selecting `-- Grafana --` from the 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**.
|
||||
|
||||
|
||||
@@ -13,25 +13,27 @@ dashboards, creating users, and updating data sources.
|
||||
|
||||
## HTTP APIs
|
||||
|
||||
- [Admin API]({{< relref "admin.md" >}})
|
||||
- [Alerting Notification Channels API]({{< relref "alerting_notification_channels.md" >}})
|
||||
- [Alerting API]({{< relref "alerting.md" >}})
|
||||
- [Annotations API]({{< relref "annotations.md" >}})
|
||||
- [Authentication API]({{< relref "auth.md" >}})
|
||||
- [Dashboard API]({{< relref "dashboard.md" >}})
|
||||
- [Dashboard versions API]({{< relref "dashboard_versions.md" >}})
|
||||
- [Dashboard permissions API]({{< relref "dashboard_permissions.md" >}})
|
||||
- [Folder API]({{< relref "folder.md" >}})
|
||||
- [Folder permissions API]({{< relref "folder_permissions.md" >}})
|
||||
- [Folder/dashboard search API]({{< relref "folder_dashboard_search.md" >}})
|
||||
- [Dashboard Permissions API]({{< relref "dashboard_permissions.md" >}})
|
||||
- [Dashboard Versions API]({{< relref "dashboard_versions.md" >}})
|
||||
- [Data source API]({{< relref "data_source.md" >}})
|
||||
- [Folder API]({{< relref "folder.md" >}})
|
||||
- [Folder Permissions API]({{< relref "folder_permissions.md" >}})
|
||||
- [Folder/Dashboard Search API]({{< relref "folder_dashboard_search.md" >}})
|
||||
- [Library Element API]({{< relref "library_element.md" >}})
|
||||
- [Organization API]({{< relref "org.md" >}})
|
||||
- [Snapshot API]({{< relref "snapshot.md" >}})
|
||||
- [Annotations API]({{< relref "annotations.md" >}})
|
||||
- [Playlists API]({{< relref "playlist.md" >}})
|
||||
- [Alerting API]({{< relref "alerting.md" >}})
|
||||
- [Alert notification channels API]({{< relref "alerting_notification_channels.md" >}})
|
||||
- [User API]({{< relref "user.md" >}})
|
||||
- [Team API]({{< relref "team.md" >}})
|
||||
- [Admin API]({{< relref "admin.md" >}})
|
||||
- [Preferences API]({{< relref "preferences.md" >}})
|
||||
- [Other API]({{< relref "other.md" >}})
|
||||
- [Playlists API]({{< relref "playlist.md" >}})
|
||||
- [Preferences API]({{< relref "preferences.md" >}})
|
||||
- [Short URL API]({{< relref "short_url.md" >}})
|
||||
- [Snapshot API]({{< relref "snapshot.md" >}})
|
||||
- [Team API]({{< relref "team.md" >}})
|
||||
- [User API]({{< relref "user.md" >}})
|
||||
|
||||
## Grafana Enterprise HTTP APIs
|
||||
|
||||
|
||||
@@ -282,6 +282,46 @@ Content-Type: application/json
|
||||
}
|
||||
```
|
||||
|
||||
## Grafana Usage Report preview
|
||||
|
||||
`GET /api/admin/usage-report-preview`
|
||||
|
||||
Preview usage report to be sent to vendor.
|
||||
|
||||
Only works with Basic Authentication (username and password). See [introduction](http://docs.grafana.org/http_api/admin/#admin-api) for an explanation.
|
||||
|
||||
**Example Request**:
|
||||
|
||||
```http
|
||||
GET /api/admin/usage-report-preview
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**Example Response**:
|
||||
|
||||
```http
|
||||
HTTP/1.1 200
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"version": "8_4_0",
|
||||
"metrics": {
|
||||
"stats.active_admins.count": 1,
|
||||
"stats.active_editors.count": 1,
|
||||
"stats.active_sessions.count": 0,
|
||||
"stats.active_users.count": 2,
|
||||
"stats.active_viewers.count": 0,
|
||||
"stats.admins.count": 1,
|
||||
"stats.alert_rules.count": 0,
|
||||
"stats.alerting.ds.other.count": 0,
|
||||
"stats.alerts.count": 5,
|
||||
"stats.annotations.count": 6,
|
||||
"stats.api_keys.count": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Global Users
|
||||
|
||||
`POST /api/admin/users`
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
+++
|
||||
title = "Query History HTTP API "
|
||||
description = "Grafana Query History HTTP API"
|
||||
keywords = ["grafana", "http", "documentation", "api", "queryHistory"]
|
||||
aliases = ["/docs/grafana/latest/http_api/query_history/"]
|
||||
+++
|
||||
|
||||
# Query history API
|
||||
|
||||
This API can be used to add queries to Query history. It requires that the user is logged in and that Query history feature is enabled in config file.
|
||||
|
||||
## Add query to Query history
|
||||
|
||||
`POST /api/query-history`
|
||||
|
||||
Adds query to query history.
|
||||
|
||||
**Example request:**
|
||||
|
||||
```http
|
||||
POST /api/query-history HTTP/1.1
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||
{
|
||||
"dataSourceUid": "PE1C5CBDA0504A6A3",
|
||||
"queries": [
|
||||
{
|
||||
"refId": "A",
|
||||
"key": "Q-87fed8e3-62ba-4eb2-8d2a-4129979bb4de-0",
|
||||
"scenarioId": "csv_content",
|
||||
"datasource": {
|
||||
"type": "testdata",
|
||||
"uid": "PD8C576611E62080A"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
JSON body schema:
|
||||
|
||||
- **datasourceUid** – Data source uid.
|
||||
- **queries** – JSON of query or queries.
|
||||
|
||||
**Example response:**
|
||||
|
||||
```http
|
||||
HTTP/1.1 200
|
||||
Content-Type: application/json
|
||||
{
|
||||
"message": "Query successfully added to query history",
|
||||
}
|
||||
```
|
||||
|
||||
Status codes:
|
||||
|
||||
- **200** – OK
|
||||
- **500** – Errors (invalid JSON, missing or invalid fields)
|
||||
@@ -1,44 +0,0 @@
|
||||
+++
|
||||
title = "Service account HTTP API"
|
||||
description = "Grafana Service account HTTP API"
|
||||
keywords = ["grafana", "http", "documentation", "api", "service account"]
|
||||
aliases = ["/docs/grafana/latest/http_api/serviceaccount/"]
|
||||
+++
|
||||
|
||||
# Service account API
|
||||
|
||||
This API allows you to interact programmatically with the [Service accounts]({{< relref "../manage-users/serviceaccount/_index.md" >}}).
|
||||
|
||||
**> Note:** If you are using Grafana Enterprise and have [Fine-grained access control]({{< relref "../enterprise/access-control/_index.md" >}}) enabled, for some endpoints you need to have relevant permissions. Refer to specific resources to understand what permissions are required.
|
||||
|
||||
## Delete a service account
|
||||
|
||||
`DELETE /api/serviceaccounts/:serviceaccountId`
|
||||
|
||||
#### Required permissions
|
||||
|
||||
For details, see the [introduction]({{< ref "#user-api" >}}).
|
||||
|
||||
| Action | Scope |
|
||||
| ---------------------- | ------------------ |
|
||||
| serviceaccounts:delete | serviceaccounts:\* |
|
||||
|
||||
Deletes the given service account if it exists.
|
||||
|
||||
**Example request**:
|
||||
|
||||
```http
|
||||
DELETE /api/serviceaccounts/1 HTTP/1.1
|
||||
Accept: application/json
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||
```
|
||||
|
||||
**Example response**:
|
||||
|
||||
```http
|
||||
HTTP/1.1 200
|
||||
Content-Type: application/json
|
||||
|
||||
{"message":"Service account deleted"}
|
||||
```
|
||||
@@ -55,34 +55,40 @@ ldd chrome-linux/chrome
|
||||
|
||||
**Ubuntu:**
|
||||
|
||||
On Ubuntu 18.10 the following dependencies have been confirmed as needed for the image rendering to function.
|
||||
On Ubuntu 18.10 the following dependencies are required for the image rendering to function.
|
||||
|
||||
```bash
|
||||
libx11-6 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrender1 libxtst6 libglib2.0-0 libnss3 libcups2 libdbus-1-3 libxss1 libxrandr2 libgtk-3-0 libgtk-3-0 libasound2 libxcb-dri3-0 libgbm1 libxshmfence1
|
||||
libx11-6 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrender1 libxtst6 libglib2.0-0 libnss3 libcups2 libdbus-1-3 libxss1 libxrandr2 libgtk-3-0 libasound2 libxcb-dri3-0 libgbm1 libxshmfence1
|
||||
```
|
||||
|
||||
**Debian:**
|
||||
|
||||
On Debian 9 (Stretch) the following dependencies have been confirmed as needed for the image rendering to function.
|
||||
On Debian 9 (Stretch) the following dependencies are required for the image rendering to function.
|
||||
|
||||
```bash
|
||||
libx11 libcairo bcairo2 libcairo2 libxtst6 libxcomposite1 libx11-xcb1 libxcursor1 libxdamage1 libnss3 libcups libcups2 libXss libXss1 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libgtk-3-0 libgbm1 libxshmfence1
|
||||
libx11 libcairo libcairo2 libxtst6 libxcomposite1 libx11-xcb1 libxcursor1 libxdamage1 libnss3 libcups libcups2 libxss libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libgtk-3-0 libgbm1 libxshmfence1
|
||||
```
|
||||
|
||||
On Debian 10 (Buster) the following dependencies have been confirmed as needed for the image rendering to function.
|
||||
On Debian 10 (Buster) the following dependencies are required for the image rendering to function.
|
||||
|
||||
```bash
|
||||
libxdamage1 libxext6 libxi6 libxtst6 libnss3 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libpango-1.0-0 libcairo2 libatspi2.0-0 libgtk3.0-cil libgdk3.0-cil libx11-xcb-dev libgbm1 libxshmfence1
|
||||
libxdamage1 libxext6 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libpango-1.0-0 libcairo2 libatspi2.0-0 libgtk3.0-cil libgdk3.0-cil libx11-xcb-dev libgbm1 libxshmfence1
|
||||
```
|
||||
|
||||
**Centos:**
|
||||
|
||||
On a minimal Centos installation, the following dependencies have been confirmed as needed for the image rendering to function:
|
||||
On a minimal CentOS 7 installation, the following dependencies are required for the image rendering to function:
|
||||
|
||||
```bash
|
||||
libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif-fonts libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx nettle patch psmisc redhat-lsb-core redhat-lsb-submod-security rest spax time trousers xdg-utils xkeyboard-config alsa-lib
|
||||
```
|
||||
|
||||
On a minimal CentOS 8 installation, the following dependencies are required for the image rendering to function:
|
||||
|
||||
```bash
|
||||
libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif-fonts libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx nettle patch psmisc redhat-lsb-core redhat-lsb-submod-security rest spax time trousers xdg-utils xkeyboard-config alsa-lib libX11-xcb
|
||||
```
|
||||
|
||||
## Certificate signed by internal certificate authorities
|
||||
|
||||
In many cases, Grafana runs on internal servers and uses certificates that have not been signed by a CA ([Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority)) known to Chrome, and therefore cannot be validated. Chrome internally uses NSS ([Network Security Services](https://en.wikipedia.org/wiki/Network_Security_Services)) for cryptographic operations such as the validation of certificates.
|
||||
|
||||
@@ -365,7 +365,7 @@ ORDER BY time
|
||||
There are two possible workarounds to resolve this problem:
|
||||
|
||||
1. In Grafana v8.0.3, use an alias of the string column selected as `metric`. for example, `hostname as metric`.
|
||||
2. Use the [Standard field options/Display name]({{< relref "../panels/standard-options.md#display-name" >}}) to format the alias. For the preceding example query, you would use `${__field.labels.hostname}` option.
|
||||
2. Use the [Standard field options/Display name]({{< relref "../panels/reference-standard-field-definitions.md#display-name" >}}) to format the alias. For the preceding example query, you would use `${__field.labels.hostname}` option.
|
||||
|
||||
For more information, refer to the our relational databases documentation of [Postgres]({{< relref "../datasources/postgres.md#time-series-queries" >}}), [MySQL]({{< relref "../datasources/mysql.md#time-series-queries" >}}), [Microsoft SQL Server]({{< relref "../datasources/mssql.md#time-series-queries" >}}).
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ http {
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_pass http://grafana;
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
+++
|
||||
title = "Service accounts"
|
||||
weight = 100
|
||||
+++
|
||||
|
||||
# Service accounts
|
||||
|
||||
A service account represents a Grafana service identity, which are users that are intended for programmatic use either internally for a Grafana feature or through an API key, such as timely reporting, automatic provisioning or systems interacting with Grafana. See [service account] for more information
|
||||
|
||||
- [Service account]({{< relref "serviceaccount.md" >}}) - Describes service account in detail.
|
||||
- [Service account API]({{< relref "../../http_api/serviceaccount.md" >}}) - Manage users or change passwords programmatically.
|
||||
@@ -1,20 +0,0 @@
|
||||
+++
|
||||
title = "What are service accounts"
|
||||
weight = 200
|
||||
+++
|
||||
|
||||
What are service accounts?
|
||||
|
||||
A service account is a special kind of user used by an application or compute workload, which are users that are intended for programmatic use either internally for a Grafana feature or through an API key. Applications use service accounts to make authorized API calls, authorized as the service account itself.
|
||||
|
||||
For example, all reporting could be setup and run as a service account from your application, and that account can be given permissions to access the resources it needs. This way the service account is the identity of the service, and the service account's permissions control which resources the service can access.
|
||||
|
||||
A service account is identified by its login name, which is unique to the entire suite of organizations. The name is set upon creation of the service account.
|
||||
|
||||
Differences between a service account and a user account
|
||||
Service accounts differ from user accounts in a few key ways:
|
||||
|
||||
- Service accounts do not have passwords, and cannot log in via browsers or cookies.
|
||||
- Service accounts are associated with private/public RSA key-pairs that are used for authentication to Grafana.
|
||||
- You can let other users or service accounts impersonate a service account.
|
||||
- Service accounts lives on a organizational level, but it does not restrict them from acting cross organizational, such as adding or editing user information.
|
||||
@@ -1,26 +1,16 @@
|
||||
+++
|
||||
title = "Panels"
|
||||
aliases = ["/docs/grafana/latest/features/panels/panels/"]
|
||||
weight = 70
|
||||
description = "Panels"
|
||||
aliases = ["/docs/grafana/latest/features/panels/panels/", "/docs/sources/panels/"]
|
||||
weight = 72
|
||||
+++
|
||||
|
||||
# Panel overview
|
||||
# About Grafana panels
|
||||
|
||||
The _panel_ is the basic visualization building block in Grafana. Each panel has a query editor specific to the data source selected in the panel. The query editor allows you to extract the perfect visualization to display on the panel.
|
||||
|
||||
There are a wide variety of styling and formatting options for each panel. Panels can be dragged and dropped and rearranged on the dashboard. They can also be resized.
|
||||
|
||||
## Move panels
|
||||
Before you begin, ensure that you have configured a data source. For more information about data sources, refer to [Data Sources]({{< relref "../datasources" >}}).
|
||||
|
||||
You can drag and drop panels by clicking and holding the panel title, then dragging it to its new location. You can also easily resize panels by clicking the (-) and (+) icons.
|
||||
|
||||

|
||||
|
||||
## Tips and shortcuts
|
||||
|
||||
- Click the graph title and in the dropdown menu quickly duplicate the panel.
|
||||
- Click the colored icon in the legend to change a series color or the y-axis.
|
||||
- Click series name in the legend to hide series.
|
||||
- Ctrl/Shift/Meta + click legend name to hide other series.
|
||||
- Hover your cursor over a panel and press `e` to open the panel editor.
|
||||
- Hover your cursor over a panel and press `v` to open the panel in full screen view.
|
||||
{{< section >}}
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
+++
|
||||
title = "Add a panel"
|
||||
weight = 100
|
||||
+++
|
||||
|
||||
# Add a panel
|
||||
|
||||
Panels allow you to show your data in visual form. This topic walks you through the most basic steps to build a panel.
|
||||
|
||||
## 1. Add a panel to a dashboard
|
||||
|
||||
1. Navigate to the dashboard you want to add a panel to.
|
||||
1. Click the **Add panel** icon.
|
||||
|
||||

|
||||
|
||||
1. Click **Add an empty panel**.
|
||||
|
||||
Grafana creates an empty time series panel with your default data source selected.
|
||||
|
||||
## 2. Write a query
|
||||
|
||||
Each panel needs at least one query to display a visualization. You write queries in the Query tab of the panel editor. For more information about the Query tab, refer to [Queries]({{< relref "queries.md" >}}).
|
||||
|
||||
1. Choose a data source. In the first line of the Query tab, click the drop-down list to see all available data sources. This list includes all data sources you added. Refer to [Add a data source]({{< relref "../datasources/add-a-data-source.md" >}}) if you need instructions.
|
||||
1. Write or construct a query in the query language of your data source. Options will vary. Refer to your specific [data source documentation]({{< relref "../datasources/_index.md" >}}) for specific guidelines.
|
||||
|
||||
## 3. Choose a visualization
|
||||
|
||||

|
||||
|
||||
When you choose a visualization, Grafana will offer visualization suggestions based on your query. You can select from the available suggestions or you can pick a visualization from the complete list of supported visualizations. When you select a visualization, Grafana will show a preview of your query results with that visualization applied.
|
||||
For more information about individual visualizations, refer to [Visualizations options]({{< relref "../visualizations/_index.md" >}}).
|
||||
|
||||
## 4. (Optional) Edit panel settings
|
||||
|
||||
While not required, most visualizations need some adjustment before they properly display the information that you need. Options are defined in the linked topics below.
|
||||
|
||||
- [Panel options]({{< relref "./panel-options.md" >}})
|
||||
- [Visualization-specific options]({{< relref "../visualizations/_index.md" >}})
|
||||
- [Standard options]({{< relref "./standard-options.md" >}})
|
||||
- [Thresholds]({{< relref "./thresholds.md" >}})
|
||||
- [Value mappings]({{< relref "./value-mappings.md" >}})
|
||||
- [Data links]({{< relref "../linking/data-links.md" >}})
|
||||
- [Field overrides]({{< relref "./field-overrides.md" >}})
|
||||
|
||||
## 5. Apply changes and save
|
||||
|
||||
Save the dashboard. Either press Ctrl/Cmd+S or click **Save** in the upper right corner of the screen.
|
||||
|
||||
Your options vary depending on the changes you made and whether or not it is a new dashboard. We recommend you add a note to describe your changes before you click **Save**. Notes are very helpful if you need to revert the dashboard to a previous version.
|
||||
|
||||
## What next?
|
||||
|
||||
Our Grafana Fundamentals tutorial is a great place to start, or you can learn more about Grafana by reading one of the documentation topics linked below:
|
||||
|
||||
- Learn more about [panel editor]({{< relref "panel-editor.md" >}}) options.
|
||||
- Add more [queries]({{< relref "queries.md" >}}).
|
||||
- [Transform]({{< relref "transformations/_index.md" >}}) your data.
|
||||
- Set up an [alert]({{< relref "../alerting/_index.md" >}}).
|
||||
- Create [templates and variables]({{< relref "../variables/_index.md" >}}).
|
||||
@@ -0,0 +1,12 @@
|
||||
+++
|
||||
title = "Enable template variables to add panels dynamically"
|
||||
keywords = ["dynamic", "variable", "panel"]
|
||||
aliases = ["/docs/grafana/latest/panels/repeat-panels-or-rows/", "/docs/sources/panels/add-panels-dynamically/"]
|
||||
weight = 800
|
||||
+++
|
||||
|
||||
# Enable template variables to add panels dynamically
|
||||
|
||||
Harness the power of Grafana by configuring the system to automatically and dynamically add panels based on criteria that you define.
|
||||
|
||||
{{< section >}}
|
||||
@@ -0,0 +1,16 @@
|
||||
+++
|
||||
title = "About repeating panels or rows"
|
||||
weight = 10
|
||||
aliases = ["/docs/sources/panels/add-panels-dynamically/about-repeating-panels-rows/"]
|
||||
+++
|
||||
|
||||
# About repeating panels and rows
|
||||
|
||||
You can configure Grafana to dynamically add panels or rows to a dashboard. A dynamic panel (or row) is a panel that the system creates based on the value of a variable. Variables dynamically change your queries across all panels in a dashboard.
|
||||
|
||||
## Grafana Play examples
|
||||
|
||||
You can see examples in the following dashboards:
|
||||
|
||||
- [Prometheus repeat](https://play.grafana.org/d/000000036/prometheus-repeat)
|
||||
- [Repeated Rows Dashboard](https://play.grafana.org/d/000000153/repeat-rows).
|
||||
@@ -0,0 +1,28 @@
|
||||
+++
|
||||
title = "Configure repeating panels"
|
||||
weight = 20
|
||||
aliases = ["/docs/sources/panels/add-panels-dynamically/configure-repeating-panels/"]
|
||||
+++
|
||||
|
||||
# Configure repeating panels
|
||||
|
||||
For queries that return multiple values for a variable, you can configure Grafana to dynamically add panels based on those values.
|
||||
|
||||
> **Note:** Repeating panels require variables to have one or more items selected; you cannot repeat a panel zero times to hide it.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- Ensure that the query includes a multi-value variable.
|
||||
|
||||
**To configure repeating panels**:
|
||||
|
||||
1. Edit the panel you want to repeat.
|
||||
|
||||
1. On the display options pane, expand **Panel options > Repeat options**.
|
||||
|
||||
1. Select a `direction`.
|
||||
|
||||
- Choose `horizontal` to arrange panels side-by-side. Grafana adjusts the width of a repeated panel. Currently, you cannot mix other panels on a row with a repeated panel.
|
||||
- Choose `vertical` to arrange panels in a column. The width of repeated panels is the same as the original, repeated panel.
|
||||
|
||||
1. To propagate changes to all panels, reload the dashboard.
|
||||
@@ -0,0 +1,26 @@
|
||||
+++
|
||||
title = "Configure repeating rows"
|
||||
weight = 30
|
||||
aliases = ["/docs/sources/panels/add-panels-dynamically/configure-repeating-rows/"]
|
||||
+++
|
||||
|
||||
# Configure repeating rows
|
||||
|
||||
As seen above with the panels you can also repeat rows if you have variables set with `Multi-value` or
|
||||
`Include all value` selection option.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- Ensure that the query includes a multi-value variable.
|
||||
|
||||
**To configure repeating rows**:
|
||||
|
||||
1. On the dashboard home page, click **Add panel**.
|
||||
|
||||
1. On the **Add a panel** dialog box, click **Add a new row**.
|
||||
|
||||
1. Hover over the row title and click the cog icon.
|
||||
|
||||
1. On the `Row Options` configuration panel, select the variable for which you want to add repeating rows.
|
||||
|
||||
> To help provide context to dashboard users, add the variable to the row title.
|
||||
@@ -1,110 +0,0 @@
|
||||
+++
|
||||
title = "Field overrides"
|
||||
keywords = ["grafana", "field options", "documentation", "format fields", "overrides", "override fields"]
|
||||
aliases = ["/docs/grafana/latest/panels/field-options/", "/docs/grafana/latest/panels/field-options/configure-specific-fields/"]
|
||||
weight = 700
|
||||
+++
|
||||
|
||||
# Field overrides
|
||||
|
||||
Overrides allow you to change the settings for one or more fields. Field options for overrides are exactly the same as the field options available in a particular visualization. The only difference is that you choose which fields to apply them to.
|
||||
|
||||
For example, you could change the number of decimal places shown in all numeric fields or columns by changing the **Decimals** option for **Fields with type** that matches **Numeric**.
|
||||
|
||||
## View existing field overrides
|
||||
|
||||
1. Navigate to the panel you want to edit, click the panel title, and then click **Edit**.
|
||||
1. In the side pane, click **Overrides**.
|
||||
|
||||
Grafana displays a list of field overrides, if any have been created for this panel.
|
||||
|
||||

|
||||
|
||||
## Add a field override
|
||||
|
||||
You can override as many fields and add as many field options to each override as you want to.
|
||||
|
||||
1. Navigate to the panel you want to edit, click the panel title, and then click **Edit**.
|
||||
1. In the side pane, click **Overrides**.
|
||||
1. Click **Add field override**.
|
||||
1. Select which fields an override rule will be applied to:
|
||||
- **Fields with name -** Select a field from the list of all available fields. Properties you add to a rule with this selector are only applied to this single field.
|
||||
- **Fields with name matching regex -** Specify fields to override with a regular expression. Properties you add to a rule with this selector are applied to all fields where the field name match the regex.
|
||||
- **Fields with type -** Select fields by type, such as string, numeric, and so on. Properties you add to a rule with this selector are applied to all fields that match the selected type.
|
||||
- **Fields returned by query -** Select all fields returned by a specific query, such as A, B, or C. Properties you add to a rule with this selector are applied to all fields returned by the selected query.
|
||||
1. Click **Add override property**.
|
||||
1. Select the field option that you want to apply.
|
||||
1. Enter options by adding values in the fields. To return options to default values, delete the white text in the fields.
|
||||
1. Continue to add overrides to this field by clicking **Add override property**, or you can click **Add override** and select a different field to add overrides to.
|
||||
1. When finished, click **Save** to save all panel edits to the dashboard.
|
||||
|
||||
## Edit a field override
|
||||
|
||||
1. Navigate to the panel you want to edit, click the panel title, and then click **Edit**.
|
||||
1. In the side pane, click **Overrides**.
|
||||
1. Locate the override that you want to change. You can:
|
||||
- Edit settings on existing overrides or field selection parameters.
|
||||
- Delete existing override properties by clicking the **X** next to the property.
|
||||
- Add additional override properties by clicking **Add override property**.
|
||||
|
||||
## Delete a field override
|
||||
|
||||
1. Navigate to the panel you want to edit, click the panel title, and then click **Edit**.
|
||||
1. In the side pane, click **Overrides**.
|
||||
1. Click the trash can icon next to the override that you want to delete.
|
||||
|
||||
## Example use case for field options and overrides
|
||||
|
||||
The following examples show how you might use field options and overrides.
|
||||
|
||||
## Field option example
|
||||
|
||||
Let’s assume that our result set is a data frame that consists of two fields: time and temperature.
|
||||
|
||||
| time | temperature |
|
||||
| :-----------------: | :---------: |
|
||||
| 2020-01-02 03:04:00 | 45.0 |
|
||||
| 2020-01-02 03:05:00 | 47.0 |
|
||||
| 2020-01-02 03:06:00 | 48.0 |
|
||||
|
||||
Each field (column) of this structure can have field options applied that alter the way its values are displayed. This means that you can, for example, set the Unit to Temperature > Celsius, resulting in the following table:
|
||||
|
||||
| time | temperature |
|
||||
| :-----------------: | :---------: |
|
||||
| 2020-01-02 03:04:00 | 45.0 °C |
|
||||
| 2020-01-02 03:05:00 | 47.0 °C |
|
||||
| 2020-01-02 03:06:00 | 48.0 °C |
|
||||
|
||||
While we're at it, the decimal place doesn't add anything to this display. You can change the Decimals from `auto` to zero (`0`), resulting in the following table:
|
||||
|
||||
| time | temperature |
|
||||
| :-----------------: | :---------: |
|
||||
| 2020-01-02 03:04:00 | 45 °C |
|
||||
| 2020-01-02 03:05:00 | 47 °C |
|
||||
| 2020-01-02 03:06:00 | 48 °C |
|
||||
|
||||
## Field override example
|
||||
|
||||
Let’s assume that our result set is a data frame that consists of four fields: time, high temp, low temp, and humidity.
|
||||
|
||||
| time | high temp | low temp | humidity |
|
||||
| ------------------- | --------- | -------- | -------- |
|
||||
| 2020-01-02 03:04:00 | 45.0 | 30.0 | 67 |
|
||||
| 2020-01-02 03:05:00 | 47.0 | 34.0 | 68 |
|
||||
| 2020-01-02 03:06:00 | 48.0 | 31.0 | 68 |
|
||||
|
||||
Let's apply the field options from the [field option example](#field-option-example) to apply the Celsius unit and get rid of the decimal place. This results in the following table:
|
||||
|
||||
| time | high temp | low temp | humidity |
|
||||
| ------------------- | --------- | -------- | -------- |
|
||||
| 2020-01-02 03:04:00 | 45 °C | 30 °C | 67 °C |
|
||||
| 2020-01-02 03:05:00 | 47 °C | 34 °C | 68 °C |
|
||||
| 2020-01-02 03:06:00 | 48 °C | 31 °C | 68 °C |
|
||||
|
||||
The temperature fields look good, but the humidity is nonsensical. We can fix this by applying a field option override to the humidity field and change the unit to Misc > percent (0-100). This results in a table that makes a lot more sense:
|
||||
|
||||
| time | high temp | low temp | humidity |
|
||||
| ------------------- | --------- | -------- | -------- |
|
||||
| 2020-01-02 03:04:00 | 45 °C | 30 °C | 67% |
|
||||
| 2020-01-02 03:05:00 | 47 °C | 34 °C | 68% |
|
||||
| 2020-01-02 03:06:00 | 48 °C | 31 °C | 68% |
|
||||
@@ -0,0 +1,11 @@
|
||||
+++
|
||||
title = "Format data using value mapping"
|
||||
aliases = ["/docs/grafana/latest/panels/value-mappings/", "/docs/sources/panels/format-data/"]
|
||||
weight = 600
|
||||
+++
|
||||
|
||||
# Format data using value mapping
|
||||
|
||||
In addition to field overrides, value mapping is a technique that you can use to change the visual treatment of data that appears in a visualization.
|
||||
|
||||
{{< section >}}
|
||||
@@ -0,0 +1,52 @@
|
||||
+++
|
||||
title = "About value mapping"
|
||||
weight = 10
|
||||
aliases = ["/docs/sources/panels/format-data/about-value-mapping/"]
|
||||
+++
|
||||
|
||||
# About value mapping
|
||||
|
||||
Value mapping allows you to replace values or ranges in your visualizations with words or emojis.
|
||||
|
||||
Values mapped via value mappings will skip the unit formatting. This means that a text value mapped to a numerical value will not be formatted using the configured unit.
|
||||
|
||||

|
||||
|
||||
If value mappings are present in a panel, then Grafana displays a summary in the side pane of the panel editor.
|
||||
|
||||
> **Note:** The new value mappings are not compatible with some visualizations, such as Graph (old), Text, and Heatmap.
|
||||
|
||||
## Types of value mappings
|
||||
|
||||
Grafana supports the following value mappings:
|
||||
|
||||
- **Value** maps text values to a color or different display text. For example, if a value is `10`, I want Grafana to display **Perfection!** rather than the number.
|
||||
- **Range** maps numerical ranges to a display text and color. For example, if a value is within a certain range, I want Grafana to display **Low** or **High** rather than the number.
|
||||
- **Regex** maps regular expressions to replacement text and a color. For example, if a value is 'www.example.com', I want Grafana to display just **www**, truncating the domain.
|
||||
- **Special** maps special values like `Null`, `NaN` (not a number), and boolean values like `true` and `false` to a display text and color. For example, if Grafana encounters a `null`, I want Grafana to display **N/A**.
|
||||
|
||||
You can also use the dots on the left as a "handle" to drag and reorder value mappings in the list.
|
||||
|
||||
## Time series example
|
||||
|
||||
Here's an example showing a Time series visualization with value mappings. Value mapping colors are not applied to this visualization, but the display text is shown on the axis.
|
||||
|
||||

|
||||
|
||||
## Stat example
|
||||
|
||||
Here's an example showing a Stat visualization with value mappings. You might want to hide the sparkline so it doesn't interfere with the values. Value mapping text colors are applied.
|
||||
|
||||

|
||||
|
||||
## Bar gauge example
|
||||
|
||||
Here's an example showing a Bar gauge visualization with value mappings. The value mapping colors are applied to the text but not the gauges.
|
||||
|
||||

|
||||
|
||||
## Table example
|
||||
|
||||
Here's an example showing a Table visualization with value mappings. If you want value mapping colors displayed on the table, then set the cell display mode to **Color text** or **Color background**.
|
||||
|
||||

|
||||
@@ -0,0 +1,20 @@
|
||||
+++
|
||||
title = "Edit a value mapping"
|
||||
weight = 60
|
||||
aliases = ["/docs/sources/panels/format-data/edit-value-mapping/"]
|
||||
+++
|
||||
|
||||
# Edit a value mapping
|
||||
|
||||
You can change a value mapping at any time.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
- Ensure you have an existing value mapping to edit.
|
||||
|
||||
**To edit a value mapping**:
|
||||
|
||||
1. Edit the panel that contains the value mapping you want to edit.
|
||||
1. In the panel display options, in the **Value mappings** section, click **Edit value mappings**.
|
||||
1. Make the changes and click **Update**.
|
||||
@@ -0,0 +1,25 @@
|
||||
+++
|
||||
title = "Map a range"
|
||||
weight = 30
|
||||
aliases = ["/docs/sources/panels/format-data/map-a-range/"]
|
||||
+++
|
||||
|
||||
# Map a range
|
||||
|
||||
Map a range of values when you want to format multiple, continuous values.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To map a range**:
|
||||
|
||||
1. Edit the panel for which you want to map a range of values.
|
||||
1. In panel display options, in the **Value mappings** section, click **Add value mappings**.
|
||||
1. Click **Add a new mapping** and then select **Range**.
|
||||
1. Enter the beginning and ending values in the range for Grafana to match.
|
||||
1. (Optional) Enter display text.
|
||||
1. (Optional) Set the color.
|
||||
1. Click **Update** to save the value mapping.
|
||||
|
||||

|
||||
@@ -0,0 +1,23 @@
|
||||
+++
|
||||
title = "Map a regular expression"
|
||||
weight = 40
|
||||
aliases = ["/docs/sources/panels/format-data/map-a-regular-expression/"]
|
||||
+++
|
||||
|
||||
# Map a regular expression
|
||||
|
||||
Map a regular expression when you want to format the text and color of a regular expression value.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To map a regular expression**:
|
||||
|
||||
1. Edit the panel for which you want to map a regular expression.
|
||||
1. In the panel display options, in the **Value mappings** section, click **Add value mappings**.
|
||||
1. Click **Add a new mapping** and then select **Regex**.
|
||||
1. Enter the regular expression pattern for Grafana to match.
|
||||
1. (Optional) Enter display text.
|
||||
1. (Optional) Set the color.
|
||||
1. Click **Update** to save the value mapping.
|
||||
@@ -0,0 +1,31 @@
|
||||
+++
|
||||
title = "Map a special value"
|
||||
weight = 50
|
||||
aliases = ["/docs/sources/panels/format-data/map-a-special-value/"]
|
||||
+++
|
||||
|
||||
# Map a special value
|
||||
|
||||
Map a special value when you want to format uncommon, boolean, or empty values.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To map a special value**:
|
||||
|
||||
1. Edit the panel for which you want to map a special value.
|
||||
1. In panel display options, locate the **Value mappings** section and click **Add value mappings**.
|
||||
1. Click **Add a new mapping** and then select **Special**.
|
||||
1. Select the special value for Grafana to match. Options include:
|
||||
- Null
|
||||
- NaN (Not a Number)
|
||||
- Null + NaN
|
||||
- True
|
||||
- False
|
||||
- Empty
|
||||
1. (Optional) Enter display text.
|
||||
1. (Optional) Set the color.
|
||||
1. Click **Update** to save the value mapping.
|
||||
|
||||

|
||||
@@ -0,0 +1,25 @@
|
||||
+++
|
||||
title = "Map a value"
|
||||
weight = 20
|
||||
aliases = ["/docs/sources/panels/format-data/map-a-value/"]
|
||||
+++
|
||||
|
||||
# Map a value
|
||||
|
||||
Map a value when you want to format a single value.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To map a value**:
|
||||
|
||||
1. Open a panel for which you want to map a value.
|
||||
1. In panel display options, locate the **Value mappings** section and click **Add value mappings**.
|
||||
1. Click **Add a new mapping** and then select **Value**.
|
||||
1. Enter the value for Grafana to match.
|
||||
1. (Optional) Enter display text.
|
||||
1. (Optional) Set the color.
|
||||
1. Click **Update** to save the value mapping.
|
||||
|
||||

|
||||
@@ -1,101 +0,0 @@
|
||||
+++
|
||||
title = "Inspect a panel"
|
||||
weight = 400
|
||||
+++
|
||||
|
||||
# Inspect a panel
|
||||
|
||||
The panel inspector helps you understand and troubleshoot your panels. You can inspect the raw data for any Grafana panel, export that data to a comma-separated values (CSV) file, view query requests, and export panel and data JSON.
|
||||
|
||||
## Panel inspector UI
|
||||
|
||||
The panel inspector displays Inspect: <NameOfPanelBeingInspected> at the top of the pane. Click the arrow in the upper right corner to expand or reduce the pane.
|
||||
|
||||
The panel inspector consists of following tabs:
|
||||
|
||||
- **Data tab -** Shows the raw data returned by the query with transformations applied. Field options such as overrides and value mappings are not applied by default.
|
||||
- **Stats tab -** Shows how long your query takes and how much it returns.
|
||||
- **JSON tab -** Allows you to view and copy the panel JSON, panel data JSON, and data frame structure JSON. This is useful if you are provisioning or administering Grafana.
|
||||
- **Query tab -** Shows you the requests to the server sent when Grafana queries the data source.
|
||||
- **Error tab -** Shows the error. Only visible when query returns error.
|
||||
|
||||
> **Note:** Not all panel types include all four tabs. For example, dashboard list panels do not have raw data to inspect, so they do not display the Stats, Data, or Query tabs.
|
||||
|
||||
## Panel inspector tasks
|
||||
|
||||
Tasks you can perform in the panel inspector are described below.
|
||||
|
||||
### Open the panel inspector
|
||||
|
||||
You can inspect any panel that you can view.
|
||||
|
||||
1. In Grafana, navigate to the dashboard that contains the panel you want to inspect.
|
||||
1. Click the title of the panel you want to inspect and then click **Inspect**.
|
||||
Or
|
||||
Hover your cursor over the panel title and then press **i**.
|
||||
|
||||
The panel inspector pane opens on the right side of the screen.
|
||||
|
||||
### Inspect raw query results
|
||||
|
||||
View raw query results in a table. This is the data returned by the query with transformations applied and before the panel applies field options or field option overrides.
|
||||
|
||||
In the inspector click the **Data** tab or in the panel menu click **Inspect > Data**.
|
||||
|
||||
If your panel contains multiple queries or queries multiple nodes, then you have additional options.
|
||||
|
||||
- **Select result -** Choose which result set data you want to view.
|
||||
- **Transform data**
|
||||
|
||||
- **Join by time -** View raw data from all your queries at once, one result set per column. Click a column heading to reorder the data.
|
||||
|
||||
View raw query results in a table with field options and options overrides applied:
|
||||
|
||||
1. Open the **Data** tab in panel inspector.
|
||||
1. Click on **Data display options** above the table.
|
||||
1. Click on **Apply field configuration** toggle button.
|
||||
|
||||
### Download raw query results as CSV
|
||||
|
||||
Grafana generates a CSV file in your default browser download location. You can open it in the viewer of your choice.
|
||||
|
||||
1. Open the panel inspector.
|
||||
1. Inspect the raw query results as described above. Adjust settings until you see the raw data that you want to export.
|
||||
1. Click **Download CSV**.
|
||||
|
||||
To download a CSV file specifically formatted for Excel, expand the **Data options** panel and enable the **Download for Excel** toggle before clicking **Download CSV**.
|
||||
|
||||
### Download log results
|
||||
|
||||
Grafana generates a text (.txt) file in your default browser download location. You can open the log in the viewer of your choice.
|
||||
|
||||
1. Open the panel inspector.
|
||||
1. Inspect the log query results as described above.
|
||||
1. Click **Download logs**.
|
||||
|
||||
### Inspect query performance
|
||||
|
||||
The Stats tab displays statistics that tell you how long your query takes, how many queries you send, and the number of rows returned. This information can help you troubleshoot your queries, especially if any of the numbers are unexpectedly high or low.
|
||||
|
||||
1. Open the panel inspector.
|
||||
1. Navigate to the Stats tab.
|
||||
|
||||
Statistics are displayed in read-only format.
|
||||
|
||||
### View panel JSON model
|
||||
|
||||
Explore and export panel, panel data, and data frame JSON models.
|
||||
|
||||
1. Open the panel inspector and then click the **JSON** tab or in the panel menu click **Inspect > Panel JSON**.
|
||||
1. In Select source, choose one of the following options:
|
||||
- **Panel JSON -** Displays a JSON object representing the panel.
|
||||
- **Panel data -** Displays a JSON object representing the data that was passed to the panel.
|
||||
- **DataFrame structure -** Displays the raw result set with transformations, field configuration, and overrides configuration applied.
|
||||
1. You can expand or collapse portions of the JSON to explore it, or you can click **Copy to clipboard** and paste the JSON in another application.
|
||||
|
||||
### View raw request and response to data source
|
||||
|
||||
1. Open the panel inspector and then click the **Query** tab or in the panel menu click **Inspect > Query**.
|
||||
1. Click **Refresh**.
|
||||
|
||||
Grafana sends a query to the server to collect information and then displays the result. You can now drill down on specific portions of the query, expand or collapse all of it, or copy the data to the clipboard to use in other applications.
|
||||
@@ -1,50 +0,0 @@
|
||||
+++
|
||||
title = "Legend options"
|
||||
aliases = ["/docs/grafana/latest/panels/visualizations/panel-legend/"]
|
||||
weight = 950
|
||||
+++
|
||||
|
||||
# Legend options
|
||||
|
||||
Use the legend to adjust how a visualization displays series. This legend functionality only applies to a few panels now, but it will eventually be common to all visualizations.
|
||||
|
||||
This topic currently applies to the following visualizations:
|
||||
|
||||
- [Bar chart panel]({{< relref "../visualizations/bar-chart.md">}})
|
||||
- [Histogram panel]({{< relref "../visualizations/histogram.md">}})
|
||||
- [Pie chart panel]({{< relref "../visualizations/pie-chart-panel.md">}})
|
||||
- [State timeline panel]({{< relref "../visualizations/state-timeline.md">}})
|
||||
- [Status history panel]({{< relref "../visualizations/status-history.md">}})
|
||||
- [Time series panel]({{< relref "../visualizations/time-series/_index.md" >}})
|
||||
- XY chart panel
|
||||
|
||||
## Toggle series
|
||||
|
||||
To toggle a series:
|
||||
Click on the series label in the legend to isolate the series in the visualization.
|
||||
All other series are hidden in the visualization. The data of the hidden series is still accessible.
|
||||
|
||||
Use Cmd/Ctrl+click on the series label to hide the isolated series and remove the toggle.
|
||||
|
||||
> **Note:** This option is persistent when you save the dashboard.
|
||||
|
||||

|
||||
|
||||
This creates a system override that hides the other series. You can view this override in the Overrides tab. If you delete the override, then it removes the toggle.
|
||||
|
||||

|
||||
|
||||
## Change series color
|
||||
|
||||
Click on the series icon (colored line beside the series label) in the legend to change selected series color.
|
||||
|
||||

|
||||
|
||||
## Sort series
|
||||
|
||||
Change legend mode to **Table** and choose [calculations]({{< relref "./calculations-list.md" >}}) to be displayed in the legend. Click the calculation name header in the legend table to sort the values in the table in ascending or descending order.
|
||||
The sort order affects the positions of the bars in the Bar chart panel as well as the order of stacked series in the Time series and Bar chart panels.
|
||||
|
||||
> **Note:** This feature is only supported in these panels: Bar chart, Histogram, Time series, XY Chart.
|
||||
|
||||

|
||||
@@ -0,0 +1,11 @@
|
||||
+++
|
||||
title = "Create reusable Grafana panels"
|
||||
aliases = ["/docs/grafana/latest/panels/panel-library/" "/docs/sources/panels/library-panels/"]
|
||||
weight = 700
|
||||
+++
|
||||
|
||||
# Create reusable Grafana panels
|
||||
|
||||
Library panels enable you to create reusable panels that you can add to any dashboard in your organization.
|
||||
|
||||
{{< section >}}
|
||||
@@ -0,0 +1,11 @@
|
||||
+++
|
||||
title = "About Grafana library panels"
|
||||
weight = 10
|
||||
aliases = ["/docs/sources/panels/library-panels/about-library-panels/"]
|
||||
+++
|
||||
|
||||
# About Grafana panel libraries
|
||||
|
||||
A library panel is a reusable panel that you can use in any dashboard. When you make a change to a library panel, that change propegates to all instances of where the panel is used. Library panels streamline reuse of panels across multiple dashboards.
|
||||
|
||||
You can save a library panel in a folder alongside saved dashboards.
|
||||
@@ -0,0 +1,27 @@
|
||||
+++
|
||||
title = "Add a Grafana library panel to a dashboard"
|
||||
weight = 30
|
||||
aliases = ["/docs/sources/panels/library-panels/add-library-panel/"]
|
||||
+++
|
||||
|
||||
# Add a Grafana library panel to a dashboard
|
||||
|
||||
Add a Grafana library panel to a dashboard when you want to provide visualizations to other dashboard users.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Create a library panel]({{< relref "../library-panels/create-library-panel.md" >}}).
|
||||
|
||||
**To add a library panel to a dashboard**:
|
||||
|
||||
1. Hover over the **+** option on the left menu, then select **Create** from the drop-down options.
|
||||
|
||||
The **Add** panel dialog opens.
|
||||
{{< figure src="/static/img/docs/library-panels/add-library-panel-8-0.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the edit panel" >}}
|
||||
|
||||
1. Click the **Add a panel from the panel library** option.
|
||||
|
||||
You will see a list of your library panels.
|
||||
|
||||
1. Filter the list or search to find the panel you want to add.
|
||||
1. Click a panel to add it to the dashboard.
|
||||
@@ -0,0 +1,29 @@
|
||||
+++
|
||||
title = "Create a Grafana library panel"
|
||||
weight = 20
|
||||
aliases = ["/docs/sources/panels/library-panels/create-library-panel/"]
|
||||
+++
|
||||
|
||||
# Create a Grafana library panel
|
||||
|
||||
When you create a library panel, the panel on the source dashboard is converted to a library panel as well. You need to save the original dashboard once a panel is converted.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To create a library panel**:
|
||||
|
||||
1. Open a panel in edit mode.
|
||||
1. In the panel display options, click the down arrow option to bring changes to the visualization.
|
||||
{{< figure src="/static/img/docs/library-panels/create-lib-panel-from-edit-8-0.png" class="docs-image--no-shadow" max-width= "800px" caption="Screenshot of the edit panel" >}}
|
||||
1. Click the **Library panels** option, and then click **Create new library panel** to open the create dialog.
|
||||
{{< figure src="/static/img/docs/library-panels/create-lib-panel-8-0.png" class="docs-image--no-shadow" max-width= "500px" 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.
|
||||
1. Click **Create library panel** to save your changes.
|
||||
1. Save the dashboard.
|
||||
|
||||
Once created, you can modify the library panel using any dashboard on which it appears. After you save the changes, all instances of the library panel reflect these modifications.
|
||||
|
||||
{{< figure src="/static/img/docs/library-panels/create-from-more-8-0.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the edit panel" >}}
|
||||
@@ -0,0 +1,23 @@
|
||||
+++
|
||||
title = "Delete a Grafana library panel"
|
||||
weight = 60
|
||||
aliases = ["/docs/sources/panels/library-panels/delete-library-panel/"]
|
||||
+++
|
||||
|
||||
# Delete a Grafana library panel
|
||||
|
||||
Delete a library panel when you no longer need it.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- Verify that the panel does not appear on a dashboard.
|
||||
|
||||
**To delete a library panel**:
|
||||
|
||||
1. Hover over **Dashboard** on the left menu, and select Library panels from the drop-down options.
|
||||
1. Select a library panel that is being used in different dashboards.
|
||||
|
||||
You will see a list of all the dashboards.
|
||||
|
||||
1. Select the panel you want to delete.
|
||||
1. Click the delete icon next to the library panel name.
|
||||
@@ -0,0 +1,24 @@
|
||||
+++
|
||||
title = "Manage Grafana library panels"
|
||||
weight = 40
|
||||
aliases = ["/docs/sources/panels/library-panels/manage-library-panel/"]
|
||||
+++
|
||||
|
||||
# Manage Grafana library panels
|
||||
|
||||
You can adjust library panel configuration at any time.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To view and manage a library panel**:
|
||||
|
||||
1. Hover over the **Dashboard** option on the left menu, then click **Library panels**.
|
||||
|
||||
You can see a list of previously defined library panels.
|
||||
{{< figure src="/static/img/docs/library-panels/library-panel-list-8-0.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the edit panel" >}}
|
||||
|
||||
1. Search for a specific library panel if you know its name.
|
||||
|
||||
You can also filter the panels by folder or type.
|
||||
@@ -0,0 +1,21 @@
|
||||
+++
|
||||
title = "Unlink a Grafana library panel"
|
||||
weight = 50
|
||||
aliases = ["/docs/sources/panels/library-panels/unlink-library-panel/"]
|
||||
+++
|
||||
|
||||
# Unlink a Grafana library panel
|
||||
|
||||
Unlink a library panel when you want to make a change to the panel and not affect other instances of the library panel.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- Identify the panel you want to unlink.
|
||||
|
||||
**To unlink a library panel from a dashboard**:
|
||||
|
||||
1. Hover over **Dashboard** on the left menu, and then click **Library panels**.
|
||||
1. Select a library panel that is being used in different dashboards.
|
||||
1. Select the panel you want to unlink.
|
||||
1. Click the title of the panel and then click **Edit**. The panel opens in edit mode.
|
||||
1. Click the **Unlink** option on the top right corner of the page.
|
||||
@@ -0,0 +1,11 @@
|
||||
+++
|
||||
title = "Override field values"
|
||||
aliases = ["/docs/grafana/latest/panels/field-overrides/", "/docs/sources/panels/override-field-values/"]
|
||||
weight = 400
|
||||
+++
|
||||
|
||||
# Override field values
|
||||
|
||||
Apply field overrides when you want to format field values that appear in a visualization.
|
||||
|
||||
{{< section >}}
|
||||
@@ -0,0 +1,63 @@
|
||||
+++
|
||||
title = "About field overrides"
|
||||
weight = 10
|
||||
aliases = ["/docs/sources/panels/override-field-values/about-field-overrides/"]
|
||||
+++
|
||||
|
||||
# About field overrides
|
||||
|
||||
Overrides allow you to change the settings for one or more fields. Field options for overrides are the same as the field options available in a particular visualization. The only difference is that you choose which fields to apply them to.
|
||||
|
||||
For example, you could change the number of decimal places shown in all numeric fields or columns by changing the **Decimals** option for **Fields with type** that matches **Numeric**.
|
||||
|
||||
## Example 1: Format temperature
|
||||
|
||||
Let’s assume that our result set is a data frame that consists of two fields: time and temperature.
|
||||
|
||||
| time | temperature |
|
||||
| :-----------------: | :---------: |
|
||||
| 2020-01-02 03:04:00 | 45.0 |
|
||||
| 2020-01-02 03:05:00 | 47.0 |
|
||||
| 2020-01-02 03:06:00 | 48.0 |
|
||||
|
||||
Each field (column) of this structure can have field options applied that alter the way its values are displayed. This means that you can, for example, set the Unit to Temperature > Celsius, resulting in the following table:
|
||||
|
||||
| time | temperature |
|
||||
| :-----------------: | :---------: |
|
||||
| 2020-01-02 03:04:00 | 45.0 °C |
|
||||
| 2020-01-02 03:05:00 | 47.0 °C |
|
||||
| 2020-01-02 03:06:00 | 48.0 °C |
|
||||
|
||||
In addition, the decimal place is not required, so we can remove it. You can change the Decimals from `auto` to zero (`0`), resulting in the following table:
|
||||
|
||||
| time | temperature |
|
||||
| :-----------------: | :---------: |
|
||||
| 2020-01-02 03:04:00 | 45 °C |
|
||||
| 2020-01-02 03:05:00 | 47 °C |
|
||||
| 2020-01-02 03:06:00 | 48 °C |
|
||||
|
||||
## Example 2: Format temperature and humidity
|
||||
|
||||
Let’s assume that our result set is a data frame that consists of four fields: time, high temp, low temp, and humidity.
|
||||
|
||||
| time | high temp | low temp | humidity |
|
||||
| ------------------- | --------- | -------- | -------- |
|
||||
| 2020-01-02 03:04:00 | 45.0 | 30.0 | 67 |
|
||||
| 2020-01-02 03:05:00 | 47.0 | 34.0 | 68 |
|
||||
| 2020-01-02 03:06:00 | 48.0 | 31.0 | 68 |
|
||||
|
||||
Let's add the Celsius unit and get rid of the decimal place. This results in the following table:
|
||||
|
||||
| time | high temp | low temp | humidity |
|
||||
| ------------------- | --------- | -------- | -------- |
|
||||
| 2020-01-02 03:04:00 | 45 °C | 30 °C | 67 °C |
|
||||
| 2020-01-02 03:05:00 | 47 °C | 34 °C | 68 °C |
|
||||
| 2020-01-02 03:06:00 | 48 °C | 31 °C | 68 °C |
|
||||
|
||||
The temperature fields look good, but the humidity must now be changed. We can fix this by applying a field option override to the humidity field and change the unit to Misc > percent (0-100).
|
||||
|
||||
| time | high temp | low temp | humidity |
|
||||
| ------------------- | --------- | -------- | -------- |
|
||||
| 2020-01-02 03:04:00 | 45 °C | 30 °C | 67% |
|
||||
| 2020-01-02 03:05:00 | 47 °C | 34 °C | 68% |
|
||||
| 2020-01-02 03:06:00 | 48 °C | 31 °C | 68% |
|
||||
@@ -0,0 +1,29 @@
|
||||
+++
|
||||
title = "Add a field override"
|
||||
weight = 30
|
||||
aliases = ["/docs/sources/panels/override-field-values/add-a-field-override/"]
|
||||
+++
|
||||
|
||||
# Add a field override
|
||||
|
||||
You can override a field when you want to change the display of the value in the visualization.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
|
||||
**To add a field override**:
|
||||
|
||||
1. Edit the panel to which you want to add an override.
|
||||
1. In the panel display options, in the **Overrides** section, click **Add field override**.
|
||||
|
||||
1. Select which fields an override rule will be applied to:
|
||||
- **Fields with name -** Select a field from the list of all available fields. Properties you add to a rule with this selector are only applied to this single field.
|
||||
- **Fields with name matching regex -** Specify fields to override with a regular expression. Properties you add to a rule with this selector are applied to all fields where the field name match the regex.
|
||||
- **Fields with type -** Select fields by type, such as string, numeric, and so on. Properties you add to a rule with this selector are applied to all fields that match the selected type.
|
||||
- **Fields returned by query -** Select all fields returned by a specific query, such as A, B, or C. Properties you add to a rule with this selector are applied to all fields returned by the selected query.
|
||||
1. Click **Add override property**.
|
||||
1. Select the field option that you want to apply.
|
||||
1. Enter options by adding values in the fields. To return options to default values, delete the white text in the fields.
|
||||
1. Continue to add overrides to this field by clicking **Add override property**, or you can click **Add override** and select a different field to add overrides to.
|
||||
1. When finished, click **Save** to save all panel edits to the dashboard.
|
||||
@@ -0,0 +1,22 @@
|
||||
+++
|
||||
title = "Delete a field override"
|
||||
weight = 50
|
||||
aliases = ["/docs/sources/panels/override-field-values/delete-a-field-override/"]
|
||||
+++
|
||||
|
||||
# Delete a field override
|
||||
|
||||
Delete a field override when you no longer need it.
|
||||
|
||||
When you delete an override, the appearance of value defaults to its original format. This change impacts dashboards and dashboard users that rely on an affected panel.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
- [Add a field override]({{< relref "../override-field-values/add-a-field-override.md" >}}).
|
||||
|
||||
**To delete a field override**:
|
||||
|
||||
1. Edit the panel that contains the override you want to delete.
|
||||
1. In panel display options, click the **Overrides** tab.
|
||||
1. Click the override you want to delete and then click the associated trash icon.
|
||||
@@ -0,0 +1,24 @@
|
||||
+++
|
||||
title = "Edit a field overrides"
|
||||
weight = 40
|
||||
aliases = ["/docs/sources/panels/override-field-values/edit-field-override/"]
|
||||
+++
|
||||
|
||||
# Edit a field override
|
||||
|
||||
Edit a field override when you want to make changes to an override setting.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
- [Add a field override]({{< relref "../override-field-values/add-a-field-override.md" >}}).
|
||||
|
||||
**To edit a field override**:
|
||||
|
||||
1. Edit the panel that contains the overrides you want to edit.
|
||||
1. In the panel display options, click the **Overrides** tab.
|
||||
1. Locate the override that you want to change.
|
||||
1. Perform any of the following:
|
||||
- Edit settings on existing overrides or field selection parameters.
|
||||
- Delete existing override properties by clicking the **X** next to the property.
|
||||
- Add an override properties by clicking **Add override property**.
|
||||
@@ -0,0 +1,21 @@
|
||||
+++
|
||||
title = "View field overrides"
|
||||
weight = 20
|
||||
aliases = ["/docs/sources/panels/override-field-values/view-field-override/"]
|
||||
+++
|
||||
|
||||
# View field overrides
|
||||
|
||||
You can view field overrides in the panel display options.
|
||||
|
||||
## Before you begin
|
||||
|
||||
- [Add a panel to a dashboard]({{< relref "../working-with-panels/add-panel.md" >}}).
|
||||
- [Add a field override]({{< relref "../override-field-values/add-a-field-override.md" >}}).
|
||||
|
||||
**To view field overrides**:
|
||||
|
||||
1. Open for edit the panel that contains the overrides you want to view.
|
||||
1. In the panel display options, click the **Overrides** tab.
|
||||
|
||||
> The override settings that appear on the **All** tab are the same as the settings that appear on the **Overrides** tab.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user