Compare commits
374 Commits
sriram/SQL
...
v10.1.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e1826409d | ||
|
|
b59e0d3d2e | ||
|
|
c9b0c0438b | ||
|
|
7b59aaf194 | ||
|
|
2e4c8a4f47 | ||
|
|
0832d443e5 | ||
|
|
b38fa2ecd6 | ||
|
|
b06454743c | ||
|
|
0672e083ef | ||
|
|
efec060256 | ||
|
|
0c72a4e47e | ||
|
|
1deb0db867 | ||
|
|
06d279a7b9 | ||
|
|
b14d2c9c6a | ||
|
|
f523a55e62 | ||
|
|
c756861d0d | ||
|
|
c68161e6f9 | ||
|
|
10fa0b3fdf | ||
|
|
6cd30924a7 | ||
|
|
cdd3cd1817 | ||
|
|
c209c0aa3e | ||
|
|
42cc997944 | ||
|
|
74a7d08820 | ||
|
|
7b82b8a469 | ||
|
|
00cafdc02a | ||
|
|
42dad26bef | ||
|
|
6582de0628 | ||
|
|
1564c68f31 | ||
|
|
8078429367 | ||
|
|
c1c0ba553c | ||
|
|
abf58507a7 | ||
|
|
550de7f2b4 | ||
|
|
1d6a7053f9 | ||
|
|
bee9517d96 | ||
|
|
d1bbd4a5e7 | ||
|
|
b552750f2b | ||
|
|
f13c3a42c5 | ||
|
|
1229d8137c | ||
|
|
f3cf25c49a | ||
|
|
74e7808c73 | ||
|
|
6db0d7c9fa | ||
|
|
4422f8ade6 | ||
|
|
3a0d6a5966 | ||
|
|
e311b0f7a9 | ||
|
|
e01e9047ef | ||
|
|
8d7374499a | ||
|
|
3fc75522d0 | ||
|
|
a1408862dc | ||
|
|
8f3cddbf65 | ||
|
|
e102b640c9 | ||
|
|
5bed94f873 | ||
|
|
7a0ee7044b | ||
|
|
64822982ac | ||
|
|
53a6f07b6f | ||
|
|
b5000606d4 | ||
|
|
d695537e14 | ||
|
|
9b014729cc | ||
|
|
4611f0c325 | ||
|
|
d80f114eda | ||
|
|
a95807c24c | ||
|
|
137e19087d | ||
|
|
eed5ff5d74 | ||
|
|
f15c79be65 | ||
|
|
95836864ff | ||
|
|
320bf2b799 | ||
|
|
770af668a3 | ||
|
|
fd9a2d3cc1 | ||
|
|
fa92b1e2dd | ||
|
|
c19c4b9e2c | ||
|
|
e7ee10b2dc | ||
|
|
0311c2a3c6 | ||
|
|
6f797c4b88 | ||
|
|
1f3654b666 | ||
|
|
46a42f2b03 | ||
|
|
69daafd37b | ||
|
|
be04fa6a9d | ||
|
|
5663de31a0 | ||
|
|
03ecb1db39 | ||
|
|
8757cb124b | ||
|
|
2358ab0a85 | ||
|
|
9835ffafb1 | ||
|
|
7f0afc4707 | ||
|
|
6ca249f58e | ||
|
|
af6a07efa1 | ||
|
|
b13c584b02 | ||
|
|
215fbafaba | ||
|
|
2d37539fc9 | ||
|
|
20bab22935 | ||
|
|
b723a0aa81 | ||
|
|
4287686420 | ||
|
|
aa99c458f7 | ||
|
|
9fc209c98a | ||
|
|
2595039be2 | ||
|
|
a21f8fdcb8 | ||
|
|
fc03b5c5f9 | ||
|
|
ffc594d12e | ||
|
|
ae001d75ce | ||
|
|
19ceb927b1 | ||
|
|
d6c3bffe88 | ||
|
|
96407c0779 | ||
|
|
42e673a34c | ||
|
|
7f75ea6bb3 | ||
|
|
3badf96c13 | ||
|
|
7b8e09c90b | ||
|
|
c629e3b09c | ||
|
|
98b6810acf | ||
|
|
4cb6e5fbc3 | ||
|
|
6d0ec34e6e | ||
|
|
db63486961 | ||
|
|
493161fa21 | ||
|
|
21833d2526 | ||
|
|
452c3979b8 | ||
|
|
28d2423050 | ||
|
|
6445e1f907 | ||
|
|
8476f5acdc | ||
|
|
fe2ea4df84 | ||
|
|
22983a86f2 | ||
|
|
f59ce8baed | ||
|
|
dfd5e25d87 | ||
|
|
e0e5721215 | ||
|
|
8f92988d0e | ||
|
|
d6d9dfd084 | ||
|
|
2acf4e46d7 | ||
|
|
476ee0015f | ||
|
|
ab5939c64c | ||
|
|
a68c3cf9f4 | ||
|
|
91f1162a77 | ||
|
|
f12cbfaf15 | ||
|
|
f9fa201dbe | ||
|
|
174152c66c | ||
|
|
76e66b3f08 | ||
|
|
11d5cf4214 | ||
|
|
ca190aabfd | ||
|
|
d326a0ed1a | ||
|
|
ae581286bb | ||
|
|
48aa4b66fc | ||
|
|
354c6a4971 | ||
|
|
1bb4a7299b | ||
|
|
8c5cc1a7cc | ||
|
|
56d08f66d5 | ||
|
|
f339e19d05 | ||
|
|
7e7d320489 | ||
|
|
0b367182a3 | ||
|
|
821b0f3e34 | ||
|
|
697db3f596 | ||
|
|
c1a7144aa9 | ||
|
|
f79ea44a3b | ||
|
|
b3a24ef55a | ||
|
|
1ac834c74f | ||
|
|
af684c4992 | ||
|
|
bb55c4c590 | ||
|
|
d826160908 | ||
|
|
476771b6e4 | ||
|
|
36704b22ff | ||
|
|
bbbf9c12fd | ||
|
|
07661d77fe | ||
|
|
95ba33fde8 | ||
|
|
6f29103386 | ||
|
|
3dee8c4c85 | ||
|
|
522400c01e | ||
|
|
1b18713691 | ||
|
|
8972a1bd5b | ||
|
|
22cd5b2ae1 | ||
|
|
632c0a2f7f | ||
|
|
14123eb3a6 | ||
|
|
f3331f8442 | ||
|
|
abe720d48f | ||
|
|
ff8e88f8c9 | ||
|
|
5d66c2acf1 | ||
|
|
9e22607231 | ||
|
|
831193f8e1 | ||
|
|
68e9926213 | ||
|
|
5791fc4710 | ||
|
|
13b01c3d88 | ||
|
|
4d12b32659 | ||
|
|
eb3392fd36 | ||
|
|
b2966b4086 | ||
|
|
205fb9d0e2 | ||
|
|
c8bcc96d90 | ||
|
|
e41a47260c | ||
|
|
95650aff08 | ||
|
|
0ec838213f | ||
|
|
269fe354ca | ||
|
|
246b414c58 | ||
|
|
65e1e9d67f | ||
|
|
48bcaf669e | ||
|
|
f2917477d6 | ||
|
|
6671063638 | ||
|
|
86b5cf1ccc | ||
|
|
d15106b023 | ||
|
|
cffd4bcb80 | ||
|
|
ba089cb438 | ||
|
|
69038b2ab0 | ||
|
|
1756bf01d7 | ||
|
|
bd02d16a44 | ||
|
|
44fa2302dd | ||
|
|
2bd40a50f6 | ||
|
|
39b30c5397 | ||
|
|
279d7ea994 | ||
|
|
a587af2c92 | ||
|
|
01d039b9aa | ||
|
|
1aff3dcfa7 | ||
|
|
9be1e52ad7 | ||
|
|
61e5e997c3 | ||
|
|
47e2c5444a | ||
|
|
b79cdf1859 | ||
|
|
635396a03b | ||
|
|
1ded9c6e61 | ||
|
|
7d418c0894 | ||
|
|
58c1693b27 | ||
|
|
140db359b7 | ||
|
|
513adc5bf6 | ||
|
|
054b308a5c | ||
|
|
5b92695cb7 | ||
|
|
c051961b73 | ||
|
|
ddf3b8fbd5 | ||
|
|
ece82b3306 | ||
|
|
96653b4390 | ||
|
|
c686910083 | ||
|
|
2396cabd8f | ||
|
|
473f1808b4 | ||
|
|
f99cb27617 | ||
|
|
0838d9c4f8 | ||
|
|
5a7b58bbe0 | ||
|
|
03ae4c7328 | ||
|
|
d5a56d039a | ||
|
|
8e50d22792 | ||
|
|
d017d004a6 | ||
|
|
a80c7384e6 | ||
|
|
d1e9a733d9 | ||
|
|
82d44b41be | ||
|
|
c75a5b620c | ||
|
|
e9aa578e28 | ||
|
|
51ec4a89f6 | ||
|
|
be2683a0d0 | ||
|
|
0ddf9aba9d | ||
|
|
4233541394 | ||
|
|
bfab6ccb58 | ||
|
|
821157800b | ||
|
|
b124a2de3f | ||
|
|
75923bf476 | ||
|
|
0dd0b06018 | ||
|
|
22b2757a6a | ||
|
|
e106f57648 | ||
|
|
acc52e0368 | ||
|
|
35bcc368cf | ||
|
|
c77396b271 | ||
|
|
599d1d9af3 | ||
|
|
a4e2fa1997 | ||
|
|
fac7003550 | ||
|
|
ebfedaa362 | ||
|
|
edecb9bbf9 | ||
|
|
b820709a76 | ||
|
|
94f8af7568 | ||
|
|
b19c2fca2f | ||
|
|
066ec450c4 | ||
|
|
597fc8d752 | ||
|
|
6bb132672d | ||
|
|
10c6036ed1 | ||
|
|
6d10e72adb | ||
|
|
28cf0f72ce | ||
|
|
1bff294c58 | ||
|
|
20aefeb337 | ||
|
|
e3337e8c8f | ||
|
|
3397f70d5a | ||
|
|
15260fcdd7 | ||
|
|
cd4e1d1906 | ||
|
|
01093b6cdf | ||
|
|
663bfe762a | ||
|
|
1706797e78 | ||
|
|
4ff6449d7c | ||
|
|
201b9fc95f | ||
|
|
991586d7a7 | ||
|
|
5f36689f1a | ||
|
|
f0d9e5545a | ||
|
|
e9d5e4460e | ||
|
|
7e6432e64a | ||
|
|
182837279b | ||
|
|
af5bfce16b | ||
|
|
4246b39bb2 | ||
|
|
484ce1ef46 | ||
|
|
8ce593efdc | ||
|
|
c868461105 | ||
|
|
f94ef93585 | ||
|
|
4d90697bf9 | ||
|
|
186b3263a8 | ||
|
|
f3b5bb1bda | ||
|
|
c6a309f2ad | ||
|
|
0674b66255 | ||
|
|
cf168cd6e6 | ||
|
|
fc743324cb | ||
|
|
47ff0a9eb1 | ||
|
|
949d648a97 | ||
|
|
785c7fe801 | ||
|
|
f3e3d89478 | ||
|
|
243a50ffd3 | ||
|
|
b8556eab5f | ||
|
|
e56b01975c | ||
|
|
24d0b54bb9 | ||
|
|
0fdb3485f6 | ||
|
|
c07b4fb734 | ||
|
|
3ddb715dbe | ||
|
|
d9836d0a35 | ||
|
|
14b2411c73 | ||
|
|
53d3d773ee | ||
|
|
eebae57c8a | ||
|
|
212e5a837c | ||
|
|
43a8b2a8c9 | ||
|
|
f600fa9465 | ||
|
|
3203b2ffd6 | ||
|
|
4c3f3e28de | ||
|
|
6e850b6f30 | ||
|
|
d5c79b6c06 | ||
|
|
4cd3909b63 | ||
|
|
064f3f4b45 | ||
|
|
a103aaeeca | ||
|
|
13e848b0c3 | ||
|
|
91770cd97c | ||
|
|
d0b149bdad | ||
|
|
d8e8b6246c | ||
|
|
deaf8b7b4f | ||
|
|
90bb0eb24c | ||
|
|
c095a33921 | ||
|
|
ec59deb610 | ||
|
|
1dd9cfa4bd | ||
|
|
1498afdf2a | ||
|
|
351694891e | ||
|
|
d4a7f14eb4 | ||
|
|
ae7e8ff775 | ||
|
|
87c21987ea | ||
|
|
95c6f09bfc | ||
|
|
407ae2d5b7 | ||
|
|
96f2ad2ab0 | ||
|
|
33e0b90f73 | ||
|
|
197682a43e | ||
|
|
cb1c3bf2b3 | ||
|
|
e5db5bcec7 | ||
|
|
816d840dd2 | ||
|
|
2a4a96c86f | ||
|
|
bb96d925d3 | ||
|
|
8406276282 | ||
|
|
fbb0466765 | ||
|
|
6d7b8e3ebc | ||
|
|
5769d0be49 | ||
|
|
d7a65cb7ca | ||
|
|
c30f9216b1 | ||
|
|
db44383a77 | ||
|
|
83fcc34c74 | ||
|
|
20dc40f4cf | ||
|
|
cb2bb4b043 | ||
|
|
be29f3d05f | ||
|
|
b2493f1b86 | ||
|
|
5a05fad60e | ||
|
|
53dfb8be40 | ||
|
|
7123a17b17 | ||
|
|
6b1b34b5f3 | ||
|
|
ae6e5d105b | ||
|
|
46f971bf48 | ||
|
|
6cb0366996 | ||
|
|
171fd79305 | ||
|
|
be35c3ae0e | ||
|
|
ab7fcdc148 | ||
|
|
82262af5c0 | ||
|
|
2fda52bd5f | ||
|
|
8b68873ada | ||
|
|
bdaf3adce8 | ||
|
|
01d5395e63 | ||
|
|
7f178ddf79 | ||
|
|
1e846c4bc7 | ||
|
|
47b616063f | ||
|
|
7de8bd95df | ||
|
|
06d6f50160 | ||
|
|
ad745f90ea | ||
|
|
a8ee1f1b8f |
@@ -2345,17 +2345,16 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "23"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "23"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "24"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "24"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "25"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "25"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "26"],
|
[0, 0, 0, "Do not use any type assertions.", "26"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "27"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "27"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "28"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "28"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "29"],
|
[0, 0, 0, "Do not use any type assertions.", "29"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "30"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "30"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "31"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "31"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "32"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "32"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "33"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "33"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "34"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "34"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "35"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "35"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "36"]
|
|
||||||
],
|
],
|
||||||
"public/app/features/dashboard/state/PanelModel.test.ts:5381": [
|
"public/app/features/dashboard/state/PanelModel.test.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
@@ -4174,7 +4173,9 @@ exports[`better eslint`] = {
|
|||||||
],
|
],
|
||||||
"public/app/plugins/datasource/influxdb/specs/mocks.ts:5381": [
|
"public/app/plugins/datasource/influxdb/specs/mocks.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"]
|
[0, 0, 0, "Do not use any type assertions.", "1"],
|
||||||
|
[0, 0, 0, "Do not use any type assertions.", "2"],
|
||||||
|
[0, 0, 0, "Do not use any type assertions.", "3"]
|
||||||
],
|
],
|
||||||
"public/app/plugins/datasource/jaeger/datasource.ts:5381": [
|
"public/app/plugins/datasource/jaeger/datasource.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
|
|||||||
@@ -1294,7 +1294,7 @@ This option to group query variable values into groups by tags has been an exper
|
|||||||
**Deprecation warnings**
|
**Deprecation warnings**
|
||||||
|
|
||||||
- Scripted dashboards is now deprecated. The feature is not removed but will be in a future release. We hope to address the underlying requirement of dynamic dashboards in a different way. [#24059](https://github.com/grafana/grafana/issues/24059)
|
- Scripted dashboards is now deprecated. The feature is not removed but will be in a future release. We hope to address the underlying requirement of dynamic dashboards in a different way. [#24059](https://github.com/grafana/grafana/issues/24059)
|
||||||
- The unofficial first version of backend plugins together with usage of [grafana/grafana-plugin-model](https://github.com/grafana/grafana-plugin-model) is now deprecated and support for that will be removed in a future release. Please refer to [backend plugins documentation](https://grafana.com/docs/grafana/latest/developers/plugins/backend/) for information about the new officially supported backend plugins.
|
- The unofficial first version of backend plugins together with usage of [grafana/grafana-plugin-model](https://github.com/grafana/grafana-plugin-model) is now deprecated and support for that will be removed in a future release. Please refer to [backend plugins documentation](/developers/plugin-tools/introduction/backend-plugins) for information about the new officially supported backend plugins.
|
||||||
|
|
||||||
## 7.0 Feature highlights
|
## 7.0 Feature highlights
|
||||||
|
|
||||||
|
|||||||
@@ -2204,7 +2204,7 @@ In the Loki data source, the dataframe format used to represent Loki logs-data h
|
|||||||
|
|
||||||
### Deprecations
|
### Deprecations
|
||||||
|
|
||||||
`setExploreQueryField`, `setExploreMetricsQueryField` and `setExploreLogsQueryField` are now deprecated and will be removed in a future release. If you need to set a different query editor for Explore, conditionally render based on `props.app` in your regular query editor. Please refer to https://grafana.com/docs/grafana/latest/developers/plugins/add-support-for-explore-queries/ for more information.
|
`setExploreQueryField`, `setExploreMetricsQueryField` and `setExploreLogsQueryField` are now deprecated and will be removed in a future release. If you need to set a different query editor for Explore, conditionally render based on `props.app` in your regular query editor. Please refer to https://grafana.com/developers/plugin-tools/create-a-plugin/extend-a-plugin/add-support-for-explore-queries for more information.
|
||||||
Issue [#48701](https://github.com/grafana/grafana/issues/48701)
|
Issue [#48701](https://github.com/grafana/grafana/issues/48701)
|
||||||
|
|
||||||
### Plugin development fixes & changes
|
### Plugin development fixes & changes
|
||||||
|
|||||||
5
.codespellignore
Normal file
5
.codespellignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
aks
|
||||||
|
eror
|
||||||
|
iam
|
||||||
|
wan
|
||||||
|
operato
|
||||||
24
.drone.star
24
.drone.star
@@ -7,57 +7,49 @@
|
|||||||
This module returns a Drone configuration including pipelines and secrets.
|
This module returns a Drone configuration including pipelines and secrets.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
load("scripts/drone/events/pr.star", "pr_pipelines")
|
load("scripts/drone/events/cron.star", "cronjobs")
|
||||||
load("scripts/drone/events/main.star", "main_pipelines")
|
load("scripts/drone/events/main.star", "main_pipelines")
|
||||||
|
load("scripts/drone/events/pr.star", "pr_pipelines")
|
||||||
load(
|
load(
|
||||||
"scripts/drone/events/release.star",
|
"scripts/drone/events/release.star",
|
||||||
"integration_test_pipelines",
|
"integration_test_pipelines",
|
||||||
"oss_pipelines",
|
|
||||||
"publish_artifacts_pipelines",
|
"publish_artifacts_pipelines",
|
||||||
"publish_npm_pipelines",
|
"publish_npm_pipelines",
|
||||||
"publish_packages_pipeline",
|
"publish_packages_pipeline",
|
||||||
"verify_release_pipeline",
|
|
||||||
)
|
)
|
||||||
load(
|
load(
|
||||||
"scripts/drone/rgm.star",
|
"scripts/drone/pipelines/ci_images.star",
|
||||||
"rgm",
|
"publish_ci_windows_test_image_pipeline",
|
||||||
)
|
)
|
||||||
load(
|
load(
|
||||||
"scripts/drone/pipelines/publish_images.star",
|
"scripts/drone/pipelines/publish_images.star",
|
||||||
"publish_image_pipelines_public",
|
"publish_image_pipelines_public",
|
||||||
)
|
)
|
||||||
load(
|
|
||||||
"scripts/drone/pipelines/ci_images.star",
|
|
||||||
"publish_ci_build_container_image_pipeline",
|
|
||||||
"publish_ci_windows_test_image_pipeline",
|
|
||||||
)
|
|
||||||
load(
|
load(
|
||||||
"scripts/drone/pipelines/windows.star",
|
"scripts/drone/pipelines/windows.star",
|
||||||
"windows_test_backend",
|
"windows_test_backend",
|
||||||
)
|
)
|
||||||
load("scripts/drone/version.star", "version_branch_pipelines")
|
load(
|
||||||
load("scripts/drone/events/cron.star", "cronjobs")
|
"scripts/drone/rgm.star",
|
||||||
|
"rgm",
|
||||||
|
)
|
||||||
load("scripts/drone/vault.star", "secrets")
|
load("scripts/drone/vault.star", "secrets")
|
||||||
|
|
||||||
def main(_ctx):
|
def main(_ctx):
|
||||||
return (
|
return (
|
||||||
pr_pipelines() +
|
pr_pipelines() +
|
||||||
main_pipelines() +
|
main_pipelines() +
|
||||||
oss_pipelines() +
|
|
||||||
publish_image_pipelines_public() +
|
publish_image_pipelines_public() +
|
||||||
publish_artifacts_pipelines("public") +
|
publish_artifacts_pipelines("public") +
|
||||||
publish_npm_pipelines() +
|
publish_npm_pipelines() +
|
||||||
publish_packages_pipeline() +
|
publish_packages_pipeline() +
|
||||||
[verify_release_pipeline()] +
|
|
||||||
rgm() +
|
rgm() +
|
||||||
[windows_test_backend({
|
[windows_test_backend({
|
||||||
"event": ["promote"],
|
"event": ["promote"],
|
||||||
"target": ["test-windows"],
|
"target": ["test-windows"],
|
||||||
}, "oss", "testing")] +
|
}, "oss", "testing")] +
|
||||||
version_branch_pipelines() +
|
|
||||||
integration_test_pipelines() +
|
integration_test_pipelines() +
|
||||||
publish_ci_windows_test_image_pipeline() +
|
publish_ci_windows_test_image_pipeline() +
|
||||||
publish_ci_build_container_image_pipeline() +
|
|
||||||
cronjobs() +
|
cronjobs() +
|
||||||
secrets()
|
secrets()
|
||||||
)
|
)
|
||||||
|
|||||||
3407
.drone.yml
3407
.drone.yml
File diff suppressed because it is too large
Load Diff
69
.github/CODEOWNERS
vendored
69
.github/CODEOWNERS
vendored
@@ -13,7 +13,8 @@
|
|||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
/.changelog-archive @grafana/docs-grafana
|
/.changelog-archive @grafana/docs-grafana
|
||||||
/CHANGELOG.md @grafana/docs-grafana
|
/.codespellignore @grafana/docs-tooling
|
||||||
|
/CHANGELOG.md @grafana/grafana-release-guild
|
||||||
/CODE_OF_CONDUCT.md @grafana/docs-grafana
|
/CODE_OF_CONDUCT.md @grafana/docs-grafana
|
||||||
/CONTRIBUTING.md @grafana/docs-grafana
|
/CONTRIBUTING.md @grafana/docs-grafana
|
||||||
/GOVERNANCE.md @RichiH
|
/GOVERNANCE.md @RichiH
|
||||||
@@ -37,7 +38,7 @@
|
|||||||
# Documentation sources might have different owners.
|
# Documentation sources might have different owners.
|
||||||
/docs/ @grafana/docs-tooling
|
/docs/ @grafana/docs-tooling
|
||||||
/docs/sources/ @Eve832
|
/docs/sources/ @Eve832
|
||||||
/docs/sources/administration/ @Eve832 @GrafanaWriter
|
/docs/sources/administration/ @jdbaldry
|
||||||
/docs/sources/alerting/ @brendamuir
|
/docs/sources/alerting/ @brendamuir
|
||||||
/docs/sources/dashboards/ @imatwawana
|
/docs/sources/dashboards/ @imatwawana
|
||||||
/docs/sources/datasources/ @lwandz13
|
/docs/sources/datasources/ @lwandz13
|
||||||
@@ -52,7 +53,6 @@
|
|||||||
/docs/sources/upgrade-guide/ @chri2547 @imatwawana
|
/docs/sources/upgrade-guide/ @chri2547 @imatwawana
|
||||||
/docs/sources/whatsnew/ @chri2547 @imatwawana
|
/docs/sources/whatsnew/ @chri2547 @imatwawana
|
||||||
/docs/sources/developers/plugins/ @Eve832 @josmperez @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
|
/docs/sources/developers/plugins/ @Eve832 @josmperez @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
|
||||||
/docs/sources/developers/plugins/introduction-to-plugin-development/backend/ @Eve832 @grafana/plugins-platform-backend
|
|
||||||
|
|
||||||
# Backend code
|
# Backend code
|
||||||
/go.mod @grafana/backend-platform
|
/go.mod @grafana/backend-platform
|
||||||
@@ -228,15 +228,15 @@
|
|||||||
|
|
||||||
|
|
||||||
# Continuous Integration
|
# Continuous Integration
|
||||||
.drone.yml @grafana/grafana-delivery
|
.drone.yml @grafana/grafana-release-guild
|
||||||
.drone.star @grafana/grafana-delivery
|
.drone.star @grafana/grafana-release-guild
|
||||||
/scripts/drone/ @grafana/grafana-delivery
|
/scripts/drone/ @grafana/grafana-release-guild
|
||||||
/pkg/build/ @grafana/grafana-delivery
|
/pkg/build/ @grafana/grafana-release-guild
|
||||||
/.dockerignore @grafana/grafana-delivery
|
/.dockerignore @grafana/grafana-release-guild
|
||||||
/Dockerfile @grafana/grafana-delivery
|
/Dockerfile @grafana/grafana-release-guild
|
||||||
/Makefile @grafana/grafana-delivery
|
/Makefile @grafana/grafana-release-guild
|
||||||
/scripts/build/ @grafana/grafana-delivery
|
/scripts/build/ @grafana/grafana-release-guild
|
||||||
/scripts/list-release-artifacts.sh @grafana/grafana-delivery
|
/scripts/list-release-artifacts.sh @grafana/grafana-release-guild
|
||||||
|
|
||||||
# OSS Plugin Partnerships backend code
|
# OSS Plugin Partnerships backend code
|
||||||
/pkg/tsdb/cloudwatch/ @grafana/aws-datasources
|
/pkg/tsdb/cloudwatch/ @grafana/aws-datasources
|
||||||
@@ -368,10 +368,10 @@ lerna.json @grafana/frontend-ops
|
|||||||
/public/app/features/geo/ @grafana/dataviz-squad
|
/public/app/features/geo/ @grafana/dataviz-squad
|
||||||
/public/app/features/visualization/data-hover/ @grafana/dataviz-squad
|
/public/app/features/visualization/data-hover/ @grafana/dataviz-squad
|
||||||
/public/app/features/commandPalette/ @grafana/grafana-frontend-platform
|
/public/app/features/commandPalette/ @grafana/grafana-frontend-platform
|
||||||
/public/app/features/connections/ @grafana/plugins-platform-frontend
|
/public/app/features/connections/ @grafana/plugins-platform-frontend @mikkancso
|
||||||
/public/app/features/correlations/ @grafana/explore-squad
|
/public/app/features/correlations/ @grafana/explore-squad
|
||||||
/public/app/features/dashboard/ @grafana/dashboards-squad
|
/public/app/features/dashboard/ @grafana/dashboards-squad
|
||||||
/public/app/features/datasources/ @grafana/plugins-platform-frontend
|
/public/app/features/datasources/ @grafana/plugins-platform-frontend @mikkancso
|
||||||
/public/app/features/dimensions/ @grafana/dataviz-squad
|
/public/app/features/dimensions/ @grafana/dataviz-squad
|
||||||
/public/app/features/dataframe-import/ @grafana/grafana-bi-squad
|
/public/app/features/dataframe-import/ @grafana/grafana-bi-squad
|
||||||
/public/app/features/explore/ @grafana/explore-squad
|
/public/app/features/explore/ @grafana/explore-squad
|
||||||
@@ -475,26 +475,26 @@ lerna.json @grafana/frontend-ops
|
|||||||
|
|
||||||
/scripts/benchmark-access-control.sh @grafana/grafana-authnz-team
|
/scripts/benchmark-access-control.sh @grafana/grafana-authnz-team
|
||||||
/scripts/check-breaking-changes.sh @grafana/plugins-platform-frontend
|
/scripts/check-breaking-changes.sh @grafana/plugins-platform-frontend
|
||||||
/scripts/ci-* @grafana/grafana-delivery
|
/scripts/ci-* @grafana/grafana-release-guild
|
||||||
/scripts/circle-* @grafana/grafana-delivery
|
/scripts/circle-* @grafana/grafana-release-guild
|
||||||
/scripts/publish-npm-packages.sh @grafana/grafana-delivery @grafana/plugins-platform-frontend
|
/scripts/publish-npm-packages.sh @grafana/grafana-release-guild @grafana/plugins-platform-frontend
|
||||||
/scripts/validate-npm-packages.sh @grafana/grafana-delivery @grafana/plugins-platform-frontend
|
/scripts/validate-npm-packages.sh @grafana/grafana-release-guild @grafana/plugins-platform-frontend
|
||||||
/scripts/ci-frontend-metrics.sh @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend @grafana/grafana-bi-squad
|
/scripts/ci-frontend-metrics.sh @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend @grafana/grafana-bi-squad
|
||||||
/scripts/cli/ @grafana/grafana-frontend-platform
|
/scripts/cli/ @grafana/grafana-frontend-platform
|
||||||
/scripts/clean-git-or-error.sh @grafana/grafana-as-code
|
/scripts/clean-git-or-error.sh @grafana/grafana-as-code
|
||||||
/scripts/grafana-server/ @grafana/grafana-frontend-platform
|
/scripts/grafana-server/ @grafana/grafana-frontend-platform
|
||||||
/scripts/helpers/ @grafana/grafana-delivery
|
/scripts/helpers/ @grafana/grafana-release-guild
|
||||||
/scripts/import_many_dashboards.sh @torkelo
|
/scripts/import_many_dashboards.sh @torkelo
|
||||||
/scripts/mixin-check.sh @bergquist
|
/scripts/mixin-check.sh @bergquist
|
||||||
/scripts/openapi3/ @grafana/grafana-operator-experience-squad
|
/scripts/openapi3/ @grafana/grafana-operator-experience-squad
|
||||||
/scripts/prepare-packagejson.js @grafana/frontend-ops
|
/scripts/prepare-packagejson.js @grafana/frontend-ops
|
||||||
/scripts/protobuf-check.sh @grafana/plugins-platform-backend
|
/scripts/protobuf-check.sh @grafana/plugins-platform-backend
|
||||||
/scripts/stripnulls.sh @grafana/grafana-as-code
|
/scripts/stripnulls.sh @grafana/grafana-as-code
|
||||||
/scripts/tag_release.sh @grafana/grafana-delivery
|
/scripts/tag_release.sh @grafana/grafana-release-guild
|
||||||
/scripts/trigger_docker_build.sh @grafana/grafana-delivery
|
/scripts/trigger_docker_build.sh @grafana/grafana-release-guild
|
||||||
/scripts/trigger_grafana_packer.sh @grafana/grafana-delivery
|
/scripts/trigger_grafana_packer.sh @grafana/grafana-release-guild
|
||||||
/scripts/trigger_windows_build.sh @grafana/grafana-delivery
|
/scripts/trigger_windows_build.sh @grafana/grafana-release-guild
|
||||||
/scripts/verify-repo-update/ @grafana/grafana-delivery
|
/scripts/verify-repo-update/ @grafana/grafana-release-guild
|
||||||
|
|
||||||
/scripts/webpack/ @grafana/frontend-ops
|
/scripts/webpack/ @grafana/frontend-ops
|
||||||
/scripts/generate-a11y-report.sh @grafana/grafana-frontend-platform
|
/scripts/generate-a11y-report.sh @grafana/grafana-frontend-platform
|
||||||
@@ -595,17 +595,17 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/renovate.json5 @grafana/frontend-ops
|
/.github/renovate.json5 @grafana/frontend-ops
|
||||||
/.github/teams.yml @armandgrillet
|
/.github/teams.yml @armandgrillet
|
||||||
/.github/workflows/alerting-swagger-gen.yml @grafana/alerting-backend-product
|
/.github/workflows/alerting-swagger-gen.yml @grafana/alerting-backend-product
|
||||||
/.github/workflows/auto-milestone.yml @grafana/grafana-delivery
|
/.github/workflows/auto-milestone.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/backport.yml @grafana/grafana-delivery
|
/.github/workflows/backport.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/bump-version.yml @grafana/grafana-delivery
|
/.github/workflows/bump-version.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/close-milestone.yml @grafana/grafana-delivery
|
/.github/workflows/close-milestone.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/codeowners-validator.yml @tolzhabayev
|
/.github/workflows/codeowners-validator.yml @tolzhabayev
|
||||||
/.github/workflows/codeql-analysis.yml @DanCech
|
/.github/workflows/codeql-analysis.yml @DanCech
|
||||||
/.github/workflows/commands.yml @torkelo
|
/.github/workflows/commands.yml @torkelo
|
||||||
/.github/workflows/detect-breaking-changes-* @grafana/plugins-platform-frontend
|
/.github/workflows/detect-breaking-changes-* @grafana/plugins-platform-frontend
|
||||||
/.github/workflows/doc-validator.yml @grafana/docs-tooling
|
/.github/workflows/doc-validator.yml @grafana/docs-tooling
|
||||||
/.github/workflows/epic-add-to-platform-ux-parent-project.yml @meanmina
|
/.github/workflows/epic-add-to-platform-ux-parent-project.yml @meanmina
|
||||||
/.github/workflows/github-release.yml @grafana/grafana-delivery
|
/.github/workflows/github-release.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/issue-labeled.yml @armandgrillet
|
/.github/workflows/issue-labeled.yml @armandgrillet
|
||||||
/.github/workflows/issue-opened.yml @grafana/grafana-community-support
|
/.github/workflows/issue-opened.yml @grafana/grafana-community-support
|
||||||
/.github/workflows/metrics-collector.yml @torkelo
|
/.github/workflows/metrics-collector.yml @torkelo
|
||||||
@@ -617,16 +617,16 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/pr-codeql-analysis-python.yml @DanCech
|
/.github/workflows/pr-codeql-analysis-python.yml @DanCech
|
||||||
/.github/workflows/pr-commands-closed.yml @tolzhabayev
|
/.github/workflows/pr-commands-closed.yml @tolzhabayev
|
||||||
/.github/workflows/pr-commands.yml @marefr
|
/.github/workflows/pr-commands.yml @marefr
|
||||||
/.github/workflows/pr-patch-check.yml @grafana/grafana-delivery
|
/.github/workflows/pr-patch-check.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/sync-mirror.yml @grafana/grafana-delivery
|
/.github/workflows/sync-mirror.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/publish-technical-documentation-next.yml @grafana/docs-tooling
|
/.github/workflows/publish-technical-documentation-next.yml @grafana/docs-tooling
|
||||||
/.github/workflows/publish-technical-documentation-release.yml @grafana/docs-tooling
|
/.github/workflows/publish-technical-documentation-release.yml @grafana/docs-tooling
|
||||||
/.github/workflows/remove-milestone.yml @grafana/grafana-delivery
|
/.github/workflows/remove-milestone.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/sbom-report.yml @grafana/security-team
|
/.github/workflows/sbom-report.yml @grafana/security-team
|
||||||
/.github/workflows/scripts/json-file-to-job-output.js @grafana/plugins-platform-frontend
|
/.github/workflows/scripts/json-file-to-job-output.js @grafana/plugins-platform-frontend
|
||||||
/.github/workflows/scripts/pr-get-job-link.js @grafana/plugins-platform-frontend
|
/.github/workflows/scripts/pr-get-job-link.js @grafana/plugins-platform-frontend
|
||||||
/.github/workflows/stale.yml @grafana/grafana-delivery
|
/.github/workflows/stale.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/update-changelog.yml @grafana/grafana-delivery
|
/.github/workflows/update-changelog.yml @grafana/grafana-release-guild
|
||||||
/.github/workflows/update-make-docs.yml @grafana/docs-tooling
|
/.github/workflows/update-make-docs.yml @grafana/docs-tooling
|
||||||
/.github/workflows/snyk.yml @grafana/security-team
|
/.github/workflows/snyk.yml @grafana/security-team
|
||||||
/.github/workflows/scripts/kinds/verify-kinds.go @grafana/grafana-as-code
|
/.github/workflows/scripts/kinds/verify-kinds.go @grafana/grafana-as-code
|
||||||
@@ -636,6 +636,7 @@ embed.go @grafana/grafana-as-code
|
|||||||
/.github/workflows/dashboards-issue-add-label.yml @grafana/dashboards-squad
|
/.github/workflows/dashboards-issue-add-label.yml @grafana/dashboards-squad
|
||||||
/.github/workflows/ephemeral-instances-pr-comment.yml @grafana/grafana-operator-experience-squad
|
/.github/workflows/ephemeral-instances-pr-comment.yml @grafana/grafana-operator-experience-squad
|
||||||
/.github/workflows/ephemeral-instances-pr-opened-closed.yml @grafana/grafana-operator-experience-squad
|
/.github/workflows/ephemeral-instances-pr-opened-closed.yml @grafana/grafana-operator-experience-squad
|
||||||
|
/.github/workflows/create-security-patch-from-security-mirror.yml @grafana/grafana-release-guild
|
||||||
|
|
||||||
|
|
||||||
# Generated files not requiring owner approval
|
# Generated files not requiring owner approval
|
||||||
|
|||||||
4
.github/bot.md
vendored
4
.github/bot.md
vendored
@@ -9,8 +9,8 @@ Comment commands:
|
|||||||
|
|
||||||
Label commands:
|
Label commands:
|
||||||
|
|
||||||
* Add label `bot/question` the the bot will close with standard question message and add label `type/question`
|
* Add label `bot/question` the bot will close with standard question message and add label `type/question`
|
||||||
* Add label `bot/duplicate` the the bot will close with standard duplicate message and add label `type/duplicate`
|
* Add label `bot/duplicate` the bot will close with standard duplicate message and add label `type/duplicate`
|
||||||
* Add label `bot/needs more info` for bot to request more info (or use comment command mentioned above)
|
* Add label `bot/needs more info` for bot to request more info (or use comment command mentioned above)
|
||||||
* Add label `bot/close feature request` for bot to close a feature request with standard message and adds label `not implemented`
|
* Add label `bot/close feature request` for bot to close a feature request with standard message and adds label `not implemented`
|
||||||
* Add label `bot/no new info` for bot to close an issue where we asked for more info but has not received any updates in at least 14 days.
|
* Add label `bot/no new info` for bot to close an issue where we asked for more info but has not received any updates in at least 14 days.
|
||||||
|
|||||||
2
.github/workflows/alerting-swagger-gen.yml
vendored
2
.github/workflows/alerting-swagger-gen.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
|||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: '1.20.6'
|
go-version: '1.21.8'
|
||||||
- name: Build swagger
|
- name: Build swagger
|
||||||
run: |
|
run: |
|
||||||
make -C pkg/services/ngalert/api/tooling post.json api.json
|
make -C pkg/services/ngalert/api/tooling post.json api.json
|
||||||
|
|||||||
2
.github/workflows/auto-milestone.yml
vendored
2
.github/workflows/auto-milestone.yml
vendored
@@ -2,6 +2,8 @@ name: Auto-milestone
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
- closed
|
- closed
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
5
.github/workflows/bump-version.yml
vendored
5
.github/workflows/bump-version.yml
vendored
@@ -55,6 +55,10 @@ jobs:
|
|||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
ref: main
|
ref: main
|
||||||
|
# Go is required for also updating the schema versions as part of the precommit hook:
|
||||||
|
- uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '1.20'
|
||||||
- uses: actions/setup-node@v3.5.1
|
- uses: actions/setup-node@v3.5.1
|
||||||
with:
|
with:
|
||||||
node-version: '16'
|
node-version: '16'
|
||||||
@@ -71,3 +75,4 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
|
||||||
|
precommit_make_target: gen-cue
|
||||||
|
|||||||
2
.github/workflows/codeql-analysis.yml
vendored
2
.github/workflows/codeql-analysis.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
|||||||
name: Set go version
|
name: Set go version
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: '1.20.6'
|
go-version: '1.21.8'
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
|
|||||||
28
.github/workflows/create-security-patch-from-security-mirror.yml
vendored
Normal file
28
.github/workflows/create-security-patch-from-security-mirror.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Owned by grafana-release-guild
|
||||||
|
# Intended to be dropped into the base repo (Ex: grafana/grafana) for use in the security mirror.
|
||||||
|
name: Create security patch
|
||||||
|
run-name: create-security-patch
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
- synchronize
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
- "v*.*.*"
|
||||||
|
|
||||||
|
# This is run before the pull request has been merged, so we'll run against the src branch
|
||||||
|
jobs:
|
||||||
|
trigger_downstream_create_security_patch:
|
||||||
|
concurrency: create-patch-${{ github.ref_name }}
|
||||||
|
uses: grafana/security-patch-actions/.github/workflows/create-patch.yml@main
|
||||||
|
if: github.repository == 'grafana/grafana-security-mirror'
|
||||||
|
with:
|
||||||
|
repo: "${{ github.repository }}"
|
||||||
|
src_ref: "${{ github.head_ref }}" # this is the source branch name, Ex: "feature/newthing"
|
||||||
|
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
|
||||||
|
patch_repo: "grafana/grafana-security-patches"
|
||||||
|
patch_prefix: "${{ github.event.pull_request.number }}"
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
2
.github/workflows/doc-validator.yml
vendored
2
.github/workflows/doc-validator.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
|||||||
doc-validator:
|
doc-validator:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
container:
|
container:
|
||||||
image: "grafana/doc-validator:v3.2.1"
|
image: "grafana/doc-validator:v4.0.0"
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: "actions/checkout@v3"
|
uses: "actions/checkout@v3"
|
||||||
|
|||||||
@@ -2,11 +2,33 @@ name: 'Ephemeral instances: PR opened/closed'
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [opened, reopened, closed]
|
types: [opened, reopened, closed]
|
||||||
jobs:
|
jobs:
|
||||||
|
config:
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
outputs:
|
||||||
|
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
||||||
|
steps:
|
||||||
|
- name: "Check for secrets"
|
||||||
|
id: check
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ -n "${{ (secrets.EI_APP_ID != '' &&
|
||||||
|
secrets.EI_APP_PRIVATE_KEY != '' &&
|
||||||
|
secrets.EI_GCOM_HOST != '' &&
|
||||||
|
secrets.EI_GCOM_TOKEN != '' &&
|
||||||
|
secrets.EI_EPHEMERAL_INSTANCES_REGISTRY != '' &&
|
||||||
|
secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 != '' &&
|
||||||
|
secrets.EI_EPHEMERAL_ORG_ID != ''
|
||||||
|
) || '' }}" ]; then
|
||||||
|
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
handle-pull-request-event:
|
handle-pull-request-event:
|
||||||
|
needs: config
|
||||||
|
if: needs.config.outputs.has-secrets
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
@@ -20,13 +42,13 @@ jobs:
|
|||||||
private_key: ${{ secrets.EI_APP_PRIVATE_KEY }}
|
private_key: ${{ secrets.EI_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Checkout ephemeral instances repository
|
- name: Checkout ephemeral instances repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: grafana/ephemeral-grafana-instances-github-action
|
repository: grafana/ephemeral-grafana-instances-github-action
|
||||||
token: ${{ steps.generate_token.outputs.token }}
|
token: ${{ steps.generate_token.outputs.token }}
|
||||||
ref: main
|
ref: main
|
||||||
path: ephemeral
|
path: ephemeral
|
||||||
|
|
||||||
- name: Run action
|
- name: Run action
|
||||||
env:
|
env:
|
||||||
GITHUB_EVENT: ${{ toJson(github.event)}}
|
GITHUB_EVENT: ${{ toJson(github.event)}}
|
||||||
@@ -44,4 +66,4 @@ jobs:
|
|||||||
-REGISTRY="${{ secrets.EI_EPHEMERAL_INSTANCES_REGISTRY }}" \
|
-REGISTRY="${{ secrets.EI_EPHEMERAL_INSTANCES_REGISTRY }}" \
|
||||||
-GRAFANA_VERSION="$GRAFANA_VERSION" \
|
-GRAFANA_VERSION="$GRAFANA_VERSION" \
|
||||||
-GCP_SERVICE_ACCOUNT_KEY_BASE64="${{ secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 }}" \
|
-GCP_SERVICE_ACCOUNT_KEY_BASE64="${{ secrets.EI_GCP_SERVICE_ACCOUNT_KEY_BASE64 }}" \
|
||||||
-EPHEMERAL_ORG_ID="${{ secrets.EI_EPHEMERAL_ORG_ID }}" || true
|
-EPHEMERAL_ORG_ID="${{ secrets.EI_EPHEMERAL_ORG_ID }}" || true
|
||||||
|
|||||||
2
.github/workflows/pr-codeql-analysis-go.yml
vendored
2
.github/workflows/pr-codeql-analysis-go.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
- name: Set go version
|
- name: Set go version
|
||||||
uses: actions/setup-go@v4
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: '1.20.6'
|
go-version: '1.21.8'
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
|
|||||||
20
.github/workflows/pr-commands.yml
vendored
20
.github/workflows/pr-commands.yml
vendored
@@ -8,11 +8,29 @@ on:
|
|||||||
concurrency:
|
concurrency:
|
||||||
group: pr-commands-${{ github.event.number }}
|
group: pr-commands-${{ github.event.number }}
|
||||||
jobs:
|
jobs:
|
||||||
|
config:
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
outputs:
|
||||||
|
has-secrets: ${{ steps.check.outputs.has-secrets }}
|
||||||
|
steps:
|
||||||
|
- name: "Check for secrets"
|
||||||
|
id: check
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ -n "${{ (secrets.GRAFANA_PR_AUTOMATION_APP_ID != '' &&
|
||||||
|
secrets.GRAFANA_PR_AUTOMATION_APP_PEM != '' &&
|
||||||
|
secrets.GRAFANA_MISC_STATS_API_KEY != ''
|
||||||
|
) || '' }}" ]; then
|
||||||
|
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
main:
|
main:
|
||||||
|
needs: config
|
||||||
|
if: needs.config.outputs.has-secrets
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Actions
|
- name: Checkout Actions
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: "grafana/grafana-github-actions"
|
repository: "grafana/grafana-github-actions"
|
||||||
path: ./actions
|
path: ./actions
|
||||||
|
|||||||
6
.github/workflows/pr-patch-check.yml
vendored
6
.github/workflows/pr-patch-check.yml
vendored
@@ -1,11 +1,13 @@
|
|||||||
# Owned by grafana-delivery-squad
|
# Owned by grafana-release-guild
|
||||||
# Intended to be dropped into the base repo Ex: grafana/grafana
|
# Intended to be dropped into the base repo Ex: grafana/grafana
|
||||||
name: Check for patch conflicts
|
name: Check for patch conflicts
|
||||||
run-name: check-patch-conflicts-${{ github.base_ref }}-${{ github.head_ref }}
|
run-name: check-patch-conflicts-${{ github.base_ref }}-${{ github.head_ref }}
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
|
- reopened
|
||||||
|
- synchronize
|
||||||
branches:
|
branches:
|
||||||
- "main"
|
- "main"
|
||||||
- "v*.*.*"
|
- "v*.*.*"
|
||||||
|
|||||||
3
.github/workflows/publish-kinds-next.yml
vendored
3
.github/workflows/publish-kinds-next.yml
vendored
@@ -10,6 +10,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout Grafana repo"
|
- name: "Checkout Grafana repo"
|
||||||
@@ -20,7 +21,7 @@ jobs:
|
|||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@v4"
|
uses: "actions/setup-go@v4"
|
||||||
with:
|
with:
|
||||||
go-version: '1.20.6'
|
go-version: '1.21.8'
|
||||||
|
|
||||||
- name: "Verify kinds"
|
- name: "Verify kinds"
|
||||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||||
|
|||||||
3
.github/workflows/publish-kinds-release.yml
vendored
3
.github/workflows/publish-kinds-release.yml
vendored
@@ -12,6 +12,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
main:
|
main:
|
||||||
|
if: github.repository == 'grafana/grafana'
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout Grafana repo"
|
- name: "Checkout Grafana repo"
|
||||||
@@ -23,7 +24,7 @@ jobs:
|
|||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@v4"
|
uses: "actions/setup-go@v4"
|
||||||
with:
|
with:
|
||||||
go-version: '1.20.6'
|
go-version: '1.21.8'
|
||||||
|
|
||||||
- name: "Verify kinds"
|
- name: "Verify kinds"
|
||||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||||
|
|||||||
19
.github/workflows/scripts/kinds/verify-kinds.go
vendored
19
.github/workflows/scripts/kinds/verify-kinds.go
vendored
@@ -206,7 +206,7 @@ func loadComposableKind(name string, kind string) (kindsys.Kind, error) {
|
|||||||
|
|
||||||
fs := fstest.MapFS{
|
fs := fstest.MapFS{
|
||||||
fmt.Sprintf("%s.cue", name): &fstest.MapFile{
|
fmt.Sprintf("%s.cue", name): &fstest.MapFile{
|
||||||
Data: []byte("package grafanaplugin\n" + kind),
|
Data: []byte(kind),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ func (j *ckrJenny) Generate(k kindsys.Composable) (*codejen.File, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
newKindBytes = []byte(fmt.Sprintf("package kind\n\n%s", newKindBytes))
|
newKindBytes = []byte(fmt.Sprintf("package grafanaplugin\n\n%s", newKindBytes))
|
||||||
|
|
||||||
return codejen.NewFile(filepath.Join(j.path, "next", "composable", name+".cue"), newKindBytes, j), nil
|
return codejen.NewFile(filepath.Join(j.path, "next", "composable", name+".cue"), newKindBytes, j), nil
|
||||||
}
|
}
|
||||||
@@ -399,10 +399,17 @@ func (registry *kindRegistry) getPublishedKind(name string, category string, lat
|
|||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
kindPath := filepath.Join(
|
var cueFilePath string
|
||||||
registry.zipDir,
|
switch category {
|
||||||
fmt.Sprintf("grafana/%s/%s/%s.cue", latestRegistryDir, category, name),
|
case "core":
|
||||||
)
|
cueFilePath = fmt.Sprintf("%s/%s.cue", name, name)
|
||||||
|
case "composable":
|
||||||
|
cueFilePath = fmt.Sprintf("%s.cue", name)
|
||||||
|
default:
|
||||||
|
return "", fmt.Errorf("kind can only be core or composable")
|
||||||
|
}
|
||||||
|
|
||||||
|
kindPath := filepath.Join(latestRegistryDir, category, cueFilePath)
|
||||||
file, err := registry.zipFile.Open(kindPath)
|
file, err := registry.zipFile.Open(kindPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("failed to open file: %w", err)
|
return "", fmt.Errorf("failed to open file: %w", err)
|
||||||
|
|||||||
6
.github/workflows/sync-mirror.yml
vendored
6
.github/workflows/sync-mirror.yml
vendored
@@ -1,7 +1,7 @@
|
|||||||
# Owned by grafana-delivery-squad
|
# Owned by grafana-release-guild
|
||||||
# Intended to be dropped into the base repo, Ex: grafana/grafana
|
# Intended to be dropped into the base repo, Ex: grafana/grafana
|
||||||
name: Sync to mirror
|
name: Sync to mirror
|
||||||
run-name: sync-to-mirror-${{ github.base_ref }}-${{ github.head_ref }}
|
run-name: sync-to-mirror-${{ github.ref_name }}
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
@@ -13,7 +13,7 @@ on:
|
|||||||
# This is run after the pull request has been merged, so we'll run against the target branch
|
# This is run after the pull request has been merged, so we'll run against the target branch
|
||||||
jobs:
|
jobs:
|
||||||
trigger_downstream_patch_mirror:
|
trigger_downstream_patch_mirror:
|
||||||
concurrency: patch-mirror-${{ github.ref }}
|
concurrency: patch-mirror-${{ github.ref_name }}
|
||||||
uses: grafana/security-patch-actions/.github/workflows/mirror-branch-and-apply-patches.yml@main
|
uses: grafana/security-patch-actions/.github/workflows/mirror-branch-and-apply-patches.yml@main
|
||||||
if: github.repository == 'grafana/grafana'
|
if: github.repository == 'grafana/grafana'
|
||||||
with:
|
with:
|
||||||
|
|||||||
2
.github/workflows/verify-kinds.yml
vendored
2
.github/workflows/verify-kinds.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
|||||||
- name: "Setup Go"
|
- name: "Setup Go"
|
||||||
uses: "actions/setup-go@v4"
|
uses: "actions/setup-go@v4"
|
||||||
with:
|
with:
|
||||||
go-version: '1.20.6'
|
go-version: '1.21.8'
|
||||||
|
|
||||||
- name: "Verify kinds"
|
- name: "Verify kinds"
|
||||||
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
run: go run .github/workflows/scripts/kinds/verify-kinds.go
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ var config = {
|
|||||||
{
|
{
|
||||||
url: '${HOST}/?orgId=1',
|
url: '${HOST}/?orgId=1',
|
||||||
wait: 500,
|
wait: 500,
|
||||||
threshold: 0,
|
threshold: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: '${HOST}/d/O6f11TZWk/panel-tests-bar-gauge',
|
url: '${HOST}/d/O6f11TZWk/panel-tests-bar-gauge',
|
||||||
@@ -93,7 +93,7 @@ var config = {
|
|||||||
url: '${HOST}/?orgId=1&search=open',
|
url: '${HOST}/?orgId=1&search=open',
|
||||||
wait: 500,
|
wait: 500,
|
||||||
rootElement: '.main-view',
|
rootElement: '.main-view',
|
||||||
threshold: 0,
|
threshold: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: '${HOST}/alerting/list',
|
url: '${HOST}/alerting/list',
|
||||||
|
|||||||
536
CHANGELOG.md
536
CHANGELOG.md
@@ -1,3 +1,537 @@
|
|||||||
|
<!-- 10.1.7 START -->
|
||||||
|
|
||||||
|
# 10.1.7 (2024-01-29)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Annotations:** Split cleanup into separate queries and deletes to avoid deadlocks on MySQL. [#80678](https://github.com/grafana/grafana/issues/80678), [@alexweav](https://github.com/alexweav)
|
||||||
|
|
||||||
|
<!-- 10.1.7 END -->
|
||||||
|
<!-- 10.1.6 START -->
|
||||||
|
|
||||||
|
# 10.1.6 (2023-12-18)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Alerting:** Attempt to retry retryable errors. [#79211](https://github.com/grafana/grafana/issues/79211), [@gotjosh](https://github.com/gotjosh)
|
||||||
|
- **Unified Alerting:** Set `max_attempts` to 1 by default. [#79102](https://github.com/grafana/grafana/issues/79102), [@gotjosh](https://github.com/gotjosh)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Fix deleting rules in a folder with matching UID in another organization. [#79007](https://github.com/grafana/grafana/issues/79007), [@papagian](https://github.com/papagian)
|
||||||
|
- **Chore:** Fix timeout issues when gathering prometheus datasource stats. [#78858](https://github.com/grafana/grafana/issues/78858), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **Provisioning:** Ensure that enterprise provisioning runs [10.1.x]. [#76686](https://github.com/grafana/grafana/issues/76686), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Alerting:** Make shareable alert rule link work if rule name contains forward slashes. [#75950](https://github.com/grafana/grafana/issues/75950), [@domasx2](https://github.com/domasx2)
|
||||||
|
- **Loki:** Cache extracted labels. [#75905](https://github.com/grafana/grafana/issues/75905), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **DataSourcePicker:** Disable autocomplete for the search input . [#75900](https://github.com/grafana/grafana/issues/75900), [@ivanortegaalba](https://github.com/ivanortegaalba)
|
||||||
|
- **Plugins:** Refresh plugin info after installation. [#75225](https://github.com/grafana/grafana/issues/75225), [@oshirohugo](https://github.com/oshirohugo)
|
||||||
|
- **LDAP:** FIX Enable users on successfull login . [#75176](https://github.com/grafana/grafana/issues/75176), [@gamab](https://github.com/gamab)
|
||||||
|
- **Loki:** Fix filters not being added with multiple expressions and parsers. [#75172](https://github.com/grafana/grafana/issues/75172), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Recorded Queries:** Add org isolation (remote write target per org), and fix cross org Delete/List. (Enterprise)
|
||||||
|
- **Auditing and UsageInsights:** FIX Loki configuration to use proxy env variables. (Enterprise)
|
||||||
|
|
||||||
|
<!-- 10.1.6 END -->
|
||||||
|
<!-- 10.1.5 START -->
|
||||||
|
|
||||||
|
# 10.1.5 (2023-10-11)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Chore:** Upgrade Go to 1.20.10. [#76355](https://github.com/grafana/grafana/issues/76355), [@zerok](https://github.com/zerok)
|
||||||
|
- **Cloudwatch:** Backport 73524 Bring Back Legacy Log Group Picker. [#75031](https://github.com/grafana/grafana/issues/75031), [@sarahzinger](https://github.com/sarahzinger)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Cloudwatch:** Prevent log group requests with ARNs if feature flag is off. [#75691](https://github.com/grafana/grafana/issues/75691), [@sarahzinger](https://github.com/sarahzinger)
|
||||||
|
- **Alerting:** Add support for `keep_firing_for` field from external rulers. [#75257](https://github.com/grafana/grafana/issues/75257), [@rwwiv](https://github.com/rwwiv)
|
||||||
|
- **Canvas:** Avoid conflicting stylesheets when loading SVG icons. [#75032](https://github.com/grafana/grafana/issues/75032), [@adela-almasan](https://github.com/adela-almasan)
|
||||||
|
- **Alerting:** Prevent showing "Permissions denied" alert when not accurate. [#74925](https://github.com/grafana/grafana/issues/74925), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **BrowseDashboards:** Only remember the most recent expanded folder. [#74809](https://github.com/grafana/grafana/issues/74809), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Tempo Service Map:** Fix context menu links in service map when namespace is present. [#74796](https://github.com/grafana/grafana/issues/74796), [@javiruiz01](https://github.com/javiruiz01)
|
||||||
|
- **Logs Panel:** Performance issue while scrolling within panel in safari. [#74747](https://github.com/grafana/grafana/issues/74747), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **Bug:** Allow to uninstall a deprecated plugin. [#74704](https://github.com/grafana/grafana/issues/74704), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **Licensing:** Pass func to update env variables when starting plugin. [#74678](https://github.com/grafana/grafana/issues/74678), [@leandro-deveikis](https://github.com/leandro-deveikis)
|
||||||
|
- **Nested folders:** Fix folder hierarchy in folder responses. [#74580](https://github.com/grafana/grafana/issues/74580), [@papagian](https://github.com/papagian)
|
||||||
|
- **Share link:** Use panel relative time for direct link rendered image. [#74518](https://github.com/grafana/grafana/issues/74518), [@Clarity-89](https://github.com/Clarity-89)
|
||||||
|
- **Alerting:** Do not exit if Redis ping fails when using redis-based Alertmanager clustering. [#74399](https://github.com/grafana/grafana/issues/74399), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Alerting:** Refactor AlertRuleForm and fix annotations step description for cloud rules. [#74193](https://github.com/grafana/grafana/issues/74193), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **RBAC:** Chore fix hasPermissionInOrg. (Enterprise)
|
||||||
|
- **Licensing:** Updated grpc plugin factory newPlugin signature. (Enterprise)
|
||||||
|
- **Reporting:** Add support for old dashboard schema. (Enterprise)
|
||||||
|
|
||||||
|
<!-- 10.1.5 END -->
|
||||||
|
<!-- 10.1.4 START -->
|
||||||
|
|
||||||
|
# 10.1.4 (2023-09-29)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Azure:** Add support for Workload Identity authentication. [#75733](https://github.com/grafana/grafana/issues/75733), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
|
||||||
|
<!-- 10.1.4 END -->
|
||||||
|
<!-- 10.1.2 START -->
|
||||||
|
|
||||||
|
# 10.1.2 (2023-09-18)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Chore:** Upgrade Alpine base image to 3.18.3. [#74993](https://github.com/grafana/grafana/issues/74993), [@zerok](https://github.com/zerok)
|
||||||
|
- **Chore:** Upgrade Go to 1.20.8. [#74980](https://github.com/grafana/grafana/issues/74980), [@zerok](https://github.com/zerok)
|
||||||
|
|
||||||
|
<!-- 10.1.2 END -->
|
||||||
|
<!-- 10.1.1 START -->
|
||||||
|
|
||||||
|
# 10.1.1 (2023-08-29)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Loki:** Remove `distinct` operation. [#74003](https://github.com/grafana/grafana/issues/74003), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Whitelabeling:** Add a config option to hide the Grafana edition from the footer. [#73491](https://github.com/grafana/grafana/issues/73491), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
|
||||||
|
- **Alerting:** Optimize rule details page data fetching. [#73139](https://github.com/grafana/grafana/issues/73139), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Alerting:** Optimize external Loki queries. [#73050](https://github.com/grafana/grafana/issues/73050), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Alerting:** Limit redis pool size to 5 and make configurable. [#74059](https://github.com/grafana/grafana/issues/74059), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Elasticsearch:** Fix respecting of precision in geo hash grid. [#73933](https://github.com/grafana/grafana/issues/73933), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Dashboard:** Fix Variable Dropdown to Enforce Minimum One Selection when 'All' Option is Configured. [#73927](https://github.com/grafana/grafana/issues/73927), [@axelavargas](https://github.com/axelavargas)
|
||||||
|
- **Chore:** Fix Random Walk scenario for Grafana DS. [#73894](https://github.com/grafana/grafana/issues/73894), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **AuthProxy:** Fix user retrieval through cache. [#73824](https://github.com/grafana/grafana/issues/73824), [@kalleep](https://github.com/kalleep)
|
||||||
|
- **Alerting:** Fix auto-completion snippets for KV properties. [#73741](https://github.com/grafana/grafana/issues/73741), [@jvmdc](https://github.com/jvmdc)
|
||||||
|
- **Alerting:** Fix incorrect timing meta information for policy. [#73695](https://github.com/grafana/grafana/issues/73695), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Add new Recording Rule button when the list is empty. [#73638](https://github.com/grafana/grafana/issues/73638), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Drawer:** Clicking a `Select` arrow within a `Drawer` no longer causes it to close. [#73634](https://github.com/grafana/grafana/issues/73634), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Logs:** Fix log samples not present with empty first frame. [#73622](https://github.com/grafana/grafana/issues/73622), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Alerting:** Fix Recording Rule QueryEditor builder view. [#73621](https://github.com/grafana/grafana/issues/73621), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Transforms:** Catch errors while running transforms. [#73527](https://github.com/grafana/grafana/issues/73527), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Dashboard:** Fix version restore. [#73482](https://github.com/grafana/grafana/issues/73482), [@Clarity-89](https://github.com/Clarity-89)
|
||||||
|
- **Logs:** Fix permalinks not scrolling into view. [#73477](https://github.com/grafana/grafana/issues/73477), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **SqlDataSources:** Update metricFindQuery to pass on scopedVars to templateSrv. [#73398](https://github.com/grafana/grafana/issues/73398), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Rendering:** Fix dashboard screenshot. [#73361](https://github.com/grafana/grafana/issues/73361), [@AgnesToulet](https://github.com/AgnesToulet)
|
||||||
|
- **Loki:** Fix validation of `step` values to also allow e.g. `ms` values. [#73335](https://github.com/grafana/grafana/issues/73335), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Dashboard:** Fix repeated row panel placement with larger number of rows. [#73279](https://github.com/grafana/grafana/issues/73279), [@kaydelaney](https://github.com/kaydelaney)
|
||||||
|
- **CodeEditor:** Correctly fires onChange handler. [#73261](https://github.com/grafana/grafana/issues/73261), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Drawer:** Fix scrolling drawer content on Safari. [#73229](https://github.com/grafana/grafana/issues/73229), [@asimonok](https://github.com/asimonok)
|
||||||
|
- **Alerting:** Remove dump wrapper for yaml config. [#73215](https://github.com/grafana/grafana/issues/73215), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Alerting:** Always invalidate the AM config after mutation. [#73189](https://github.com/grafana/grafana/issues/73189), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Slug:** Combine various slugify fixes for special character handling. [#73173](https://github.com/grafana/grafana/issues/73173), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **Logs:** Fix displaying the wrong field as body. [#73037](https://github.com/grafana/grafana/issues/73037), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Alerting:** Fix "see graph button" for cloud rules. [#73029](https://github.com/grafana/grafana/issues/73029), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
|
||||||
|
<!-- 10.1.1 END -->
|
||||||
|
<!-- 10.1.0 START -->
|
||||||
|
|
||||||
|
# 10.1.0 (2023-08-01)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Usage stats:** Tune collector execution startup and interval. [#72790](https://github.com/grafana/grafana/issues/72790), [@papagian](https://github.com/papagian)
|
||||||
|
- **Prometheus:** Add support for day_of_year. [#72403](https://github.com/grafana/grafana/issues/72403), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **Transforms:** Add Alpha Format Time Transform. [#72319](https://github.com/grafana/grafana/issues/72319), [@codeincarnate](https://github.com/codeincarnate)
|
||||||
|
- **Prometheus:** Add present_over_time syntax highlighting. [#72283](https://github.com/grafana/grafana/issues/72283), [@arnaudlemaignen](https://github.com/arnaudlemaignen)
|
||||||
|
- **Login:** Show oauth error messages inline. [#72255](https://github.com/grafana/grafana/issues/72255), [@RoxanaAnamariaTurc](https://github.com/RoxanaAnamariaTurc)
|
||||||
|
- **Geomap:** Promote route + photos layer to beta, promote geojson layer to stable. [#72233](https://github.com/grafana/grafana/issues/72233), [@nmarrs](https://github.com/nmarrs)
|
||||||
|
- **Dashboards:** Add Angular deprecation alert in data source query editor. [#72211](https://github.com/grafana/grafana/issues/72211), [@xnyo](https://github.com/xnyo)
|
||||||
|
- **Auth:** Lock organization roles for users who are managed through an external auth provider. [#72204](https://github.com/grafana/grafana/issues/72204), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Tranformations:** True OUTER JOIN in the join by field transformation used for tabular data . [#72176](https://github.com/grafana/grafana/issues/72176), [@bohandley](https://github.com/bohandley)
|
||||||
|
- **NestedFolders:** Enable new nested folder picker by default for nested folders. [#72129](https://github.com/grafana/grafana/issues/72129), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Alerting:** Add dashboardUID and panelID query parameters for loki state history. [#72119](https://github.com/grafana/grafana/issues/72119), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Feature toggles management:** Define get feature toggles api. [#72106](https://github.com/grafana/grafana/issues/72106), [@jcalisto](https://github.com/jcalisto)
|
||||||
|
- **Prometheus:** Turn browser resource cache on by default. [#72105](https://github.com/grafana/grafana/issues/72105), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **Alerting:** Improve alerts names visibility on narrow panels. [#72104](https://github.com/grafana/grafana/issues/72104), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Data Sources:** Remove Admin/Data sources page in favour of Connections/Data sources. [#72102](https://github.com/grafana/grafana/issues/72102), [@mikkancso](https://github.com/mikkancso)
|
||||||
|
- **Loki:** Enable Query Splitting by default. [#72094](https://github.com/grafana/grafana/issues/72094), [@matyax](https://github.com/matyax)
|
||||||
|
- **AuthN:** Lock down manual role updates for users synced through Grafana Com portal. [#72044](https://github.com/grafana/grafana/issues/72044), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Tempo:** Remove traceqlSearch feature toggle. [#72029](https://github.com/grafana/grafana/issues/72029), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Alerting:** Keep legacy alert rule maxDataPoints and intervalMs during migration. [#71989](https://github.com/grafana/grafana/issues/71989), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Alerting:** Add min interval option to alert rule query creation. [#71986](https://github.com/grafana/grafana/issues/71986), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Alerting:** Add View YAML button for Grafana/provisioned rules. [#71983](https://github.com/grafana/grafana/issues/71983), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Plugin:** Remove error on invalid version. [#71951](https://github.com/grafana/grafana/issues/71951), [@oshirohugo](https://github.com/oshirohugo)
|
||||||
|
- **Traces:** Enable showing trace ids. [#71950](https://github.com/grafana/grafana/issues/71950), [@gabor](https://github.com/gabor)
|
||||||
|
- **RBAC:** Split non-empty scopes into `kind`, `attribute` and `identifier` fields for better search performance. [#71933](https://github.com/grafana/grafana/issues/71933), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Adminstration:** Feature toggle for feature toggle admin page. [#71887](https://github.com/grafana/grafana/issues/71887), [@IbrahimCSAE](https://github.com/IbrahimCSAE)
|
||||||
|
- **Alerting:** Improve performance of matching captures. [#71828](https://github.com/grafana/grafana/issues/71828), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **CommandPalette:** Remove parent search and fuzzy search for pages. [#71825](https://github.com/grafana/grafana/issues/71825), [@tskarhed](https://github.com/tskarhed)
|
||||||
|
- **Tracing:** Remove newTraceViewHeader feature toggle. [#71818](https://github.com/grafana/grafana/issues/71818), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **FlameGraph:** Add column in table with buttons to filter and sandwich a symbol. [#71773](https://github.com/grafana/grafana/issues/71773), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Units:** Added support for Candela (cd). [#71696](https://github.com/grafana/grafana/issues/71696), [@Frankkkkk](https://github.com/Frankkkkk)
|
||||||
|
- **Alerting:** Add contact point provisioning file export. [#71692](https://github.com/grafana/grafana/issues/71692), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Redshift:** Support caching async aws queries. [#71682](https://github.com/grafana/grafana/issues/71682), [@iwysiu](https://github.com/iwysiu)
|
||||||
|
- **Alerting:** Save and restore condition reference while switching type. [#71629](https://github.com/grafana/grafana/issues/71629), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Explore:** Remove exploreMixedDatasource feature toggle. [#71534](https://github.com/grafana/grafana/issues/71534), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **OAuth:** Introduce user_refresh_token setting and make it default for the selected providers. [#71533](https://github.com/grafana/grafana/issues/71533), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Alerting:** Adds support for toggling common labels. [#71497](https://github.com/grafana/grafana/issues/71497), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Plugin:** Validate plugin version on installation. [#71488](https://github.com/grafana/grafana/issues/71488), [@oshirohugo](https://github.com/oshirohugo)
|
||||||
|
- **Explore:** Replaced deprecated 'query' property with 'queries' in splitOpen. [#71484](https://github.com/grafana/grafana/issues/71484), [@harisrozajac](https://github.com/harisrozajac)
|
||||||
|
- **Plugins:** Remove logs button instead of disabling it. [#71448](https://github.com/grafana/grafana/issues/71448), [@fabrizio-grafana](https://github.com/fabrizio-grafana)
|
||||||
|
- **Traces:** Add inline validation and greater precision to duration fields in span filters. [#71404](https://github.com/grafana/grafana/issues/71404), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Alert:** Change error icon to exclamation-circle. [#71397](https://github.com/grafana/grafana/issues/71397), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Field Config:** Add new units (mΩ, kHz, MHz, GHz, ac, ha). [#71357](https://github.com/grafana/grafana/issues/71357), [@Develer](https://github.com/Develer)
|
||||||
|
- **Plugins:** Fail plugins installation on wrong args provided. [#71355](https://github.com/grafana/grafana/issues/71355), [@oshirohugo](https://github.com/oshirohugo)
|
||||||
|
- **Logs:** Display log row menu cell on displayed fields. [#71300](https://github.com/grafana/grafana/issues/71300), [@matyax](https://github.com/matyax)
|
||||||
|
- **Auth:** Move LDAP debug to Authentication menu. [#71285](https://github.com/grafana/grafana/issues/71285), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **AzureMonitor:** Add switch to control time-range for Logs queries. [#71278](https://github.com/grafana/grafana/issues/71278), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **Alerting:** Changes to evaluation group step. [#71251](https://github.com/grafana/grafana/issues/71251), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **PanelInspect:** Clean table display settings from field config. [#71226](https://github.com/grafana/grafana/issues/71226), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **QueryBuilder:** Preserve queries when switching from Mixed. [#71224](https://github.com/grafana/grafana/issues/71224), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **Public Dashboard:** Redesign modal (v2). [#71151](https://github.com/grafana/grafana/issues/71151), [@polibb](https://github.com/polibb)
|
||||||
|
- **Tracing:** Add services, depth to span filters metadata. [#71084](https://github.com/grafana/grafana/issues/71084), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **PluginExtensions:** Add category to link extensions. [#71074](https://github.com/grafana/grafana/issues/71074), [@mckn](https://github.com/mckn)
|
||||||
|
- **Alerting:** Add smart type selection when creating a new alert rule. [#71071](https://github.com/grafana/grafana/issues/71071), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Alerting:** Keep rule form buttons always on top. [#71056](https://github.com/grafana/grafana/issues/71056), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Feat:** Match allowed cookies with optional character. [#71047](https://github.com/grafana/grafana/issues/71047), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **Plugins:** Add feature toggle for Temporary Credentials. [#71033](https://github.com/grafana/grafana/issues/71033), [@idastambuk](https://github.com/idastambuk)
|
||||||
|
- **Tracing:** Show next/prev buttons when span filters are collapsed. [#71025](https://github.com/grafana/grafana/issues/71025), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Heatmap:** Add datalink support. [#71016](https://github.com/grafana/grafana/issues/71016), [@kureshimiru](https://github.com/kureshimiru)
|
||||||
|
- **Table:** Add custom cell rendering option. [#70999](https://github.com/grafana/grafana/issues/70999), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Alerting:** Use new "Label" components for alert instance labels. [#70997](https://github.com/grafana/grafana/issues/70997), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Prometheus:** Add disableRecordingRules datasource config. [#70903](https://github.com/grafana/grafana/issues/70903), [@shantanualsi](https://github.com/shantanualsi)
|
||||||
|
- **Alerting:** Use ToggleTip instead of Hovercard in the info popup on Math expressions. [#70881](https://github.com/grafana/grafana/issues/70881), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Alerting:** Improve time range and max data points info in QueryEditor. [#70867](https://github.com/grafana/grafana/issues/70867), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **A11y:** Do not force colors in the color swatch and icon series. [#70862](https://github.com/grafana/grafana/issues/70862), [@evictorero](https://github.com/evictorero)
|
||||||
|
- **A11y:** Add support for toggle buttons in high contrast mode. [#70838](https://github.com/grafana/grafana/issues/70838), [@evictorero](https://github.com/evictorero)
|
||||||
|
- **LogContext:** Make centered row unsticky on click. [#70832](https://github.com/grafana/grafana/issues/70832), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **LogContext:** Add button to scroll to center. [#70821](https://github.com/grafana/grafana/issues/70821), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Alerting:** Render folder selector in options for Alert List Panel only when having Grafana datasource. [#70816](https://github.com/grafana/grafana/issues/70816), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Connections console:** Add Angular badge for Angular plugins. [#70789](https://github.com/grafana/grafana/issues/70789), [@xnyo](https://github.com/xnyo)
|
||||||
|
- **Flamegraph:** Add switch for color scheme by value or by package. [#70770](https://github.com/grafana/grafana/issues/70770), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Auth:** Enforce role sync except if skip org role sync is enabled. [#70766](https://github.com/grafana/grafana/issues/70766), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **AuthZ:** Extend /api/search to work with self-contained permissions. [#70749](https://github.com/grafana/grafana/issues/70749), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Login:** Adjust error message when user exceed login attempts. [#70736](https://github.com/grafana/grafana/issues/70736), [@RoxanaAnamariaTurc](https://github.com/RoxanaAnamariaTurc)
|
||||||
|
- **Nested folders:** Paginate child folder items. [#70730](https://github.com/grafana/grafana/issues/70730), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Units:** Add events/messages/records/rows throughput units. [#70726](https://github.com/grafana/grafana/issues/70726), [@hhromic](https://github.com/hhromic)
|
||||||
|
- **Plugins:** Enable feature toggles for long running queries by deafult. [#70678](https://github.com/grafana/grafana/issues/70678), [@idastambuk](https://github.com/idastambuk)
|
||||||
|
- **I18n:** Translate phrases for new Browse Dashboards. [#70654](https://github.com/grafana/grafana/issues/70654), [@Bohdanator](https://github.com/Bohdanator)
|
||||||
|
- **Flamegraph:** Prevent cropping of tooltip by bottom of the viewport. [#70633](https://github.com/grafana/grafana/issues/70633), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Pyroscope:** Preselect default profile type or app in the query editor dropdown. [#70624](https://github.com/grafana/grafana/issues/70624), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Trend:** Support disconnect values and connect nulls options. [#70616](https://github.com/grafana/grafana/issues/70616), [@drew08t](https://github.com/drew08t)
|
||||||
|
- **StateTimeline:** Add disconnect value option. [#70610](https://github.com/grafana/grafana/issues/70610), [@drew08t](https://github.com/drew08t)
|
||||||
|
- **DSPicker:** Use new DS picker everywhere. [#70609](https://github.com/grafana/grafana/issues/70609), [@ivanortegaalba](https://github.com/ivanortegaalba)
|
||||||
|
- **Alerting:** Reduce number of unnecessary request in the alert list panel in case …. [#70583](https://github.com/grafana/grafana/issues/70583), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Docs:** Update query and resource caching documentation to improve clarity and add additional context. [#70556](https://github.com/grafana/grafana/issues/70556), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Alerting:** Adds in-app documentation for Classic Conditions. [#70540](https://github.com/grafana/grafana/issues/70540), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **Alerting:** Display a warning when a contact point is not in use. [#70506](https://github.com/grafana/grafana/issues/70506), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Dashboards:** Support an auto refresh interval that is based on the query range. [#70479](https://github.com/grafana/grafana/issues/70479), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Loki:** Preserve pipeline stages in context query. [#70472](https://github.com/grafana/grafana/issues/70472), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Logs:** Link anchored logline when opening context in split view. [#70463](https://github.com/grafana/grafana/issues/70463), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Prometheus:** Add capability to filter label names by metric in template variable editor. [#70452](https://github.com/grafana/grafana/issues/70452), [@gtk-grafana](https://github.com/gtk-grafana)
|
||||||
|
- **Alerting:** Expression card improvements. [#70395](https://github.com/grafana/grafana/issues/70395), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Logs:** Show active state of "filter for value" buttons in Logs Details. [#70328](https://github.com/grafana/grafana/issues/70328), [@matyax](https://github.com/matyax)
|
||||||
|
- **Loki:** Deprecate resolution . [#70326](https://github.com/grafana/grafana/issues/70326), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **PanelPlugin:** Allow hiding standard field config from defaults. [#70303](https://github.com/grafana/grafana/issues/70303), [@dprokop](https://github.com/dprokop)
|
||||||
|
- **InteractiveTable:** Add pagination and header tooltips. [#70281](https://github.com/grafana/grafana/issues/70281), [@abannachGrafana](https://github.com/abannachGrafana)
|
||||||
|
- **FlameGraph:** Add sandwich view. [#70268](https://github.com/grafana/grafana/issues/70268), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Login:** Show error messages inline in form instead of in toasts. [#70266](https://github.com/grafana/grafana/issues/70266), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Elasticsearch:** Enable logs samples for metric queries. [#70258](https://github.com/grafana/grafana/issues/70258), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **Geomap:** Add network layer. [#70192](https://github.com/grafana/grafana/issues/70192), [@drew08t](https://github.com/drew08t)
|
||||||
|
- **Alerting:** Bump grafana/alerting and refactor the ImageStore/Provider to provide image URL/bytes. [#70182](https://github.com/grafana/grafana/issues/70182), [@santihernandezc](https://github.com/santihernandezc)
|
||||||
|
- **Auth:** Support google OIDC and group fetching. [#70140](https://github.com/grafana/grafana/issues/70140), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **Alerting:** Make QueryEditor not collapsable. [#70112](https://github.com/grafana/grafana/issues/70112), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **TimeSeries:** Add option to disconnect values. [#70097](https://github.com/grafana/grafana/issues/70097), [@drew08t](https://github.com/drew08t)
|
||||||
|
- **Logs:** Add toggle behavior support for "filter for" and "filter out" label within Logs Details. [#70091](https://github.com/grafana/grafana/issues/70091), [@matyax](https://github.com/matyax)
|
||||||
|
- **Plugins:** Periodically update public signing key. [#70080](https://github.com/grafana/grafana/issues/70080), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **Navigation:** Add navigation customization options to config documentation. [#70072](https://github.com/grafana/grafana/issues/70072), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Config:** Add configuration option to define custom user-facing general error message for certain error types. [#70023](https://github.com/grafana/grafana/issues/70023), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Alerting:** Add notification policy provisioning file export. [#70009](https://github.com/grafana/grafana/issues/70009), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **CloudWatch:** Add missing EventBridge Pipe metrics. [#69994](https://github.com/grafana/grafana/issues/69994), [@rrhodes](https://github.com/rrhodes)
|
||||||
|
- **SSE:** Support for ML query node. [#69963](https://github.com/grafana/grafana/issues/69963), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Database:** Make dialects independent of xorm Engine. [#69955](https://github.com/grafana/grafana/issues/69955), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **Mysql Tests:** For mysql5.7 integration tests use utf8mb4 charset. [#69953](https://github.com/grafana/grafana/issues/69953), [@owensmallwood](https://github.com/owensmallwood)
|
||||||
|
- **Alerting:** Show disabled provisioned evaluation group. [#69932](https://github.com/grafana/grafana/issues/69932), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Auth:** Support Gitlab OIDC scopes. [#69890](https://github.com/grafana/grafana/issues/69890), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **InfluxDB:** Backend parser compatibility with frontend parser. [#69865](https://github.com/grafana/grafana/issues/69865), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **PublicDashboards:** Audit table pagination. [#69823](https://github.com/grafana/grafana/issues/69823), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
- **CloudWatch:** Add missing AWS/FSx metrics. [#69816](https://github.com/grafana/grafana/issues/69816), [@kevinwcyu](https://github.com/kevinwcyu)
|
||||||
|
- **Variables:** Show description instead of definition in table. [#69786](https://github.com/grafana/grafana/issues/69786), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Alerting:** Repurpose rule testing endpoint to return potential alerts. [#69755](https://github.com/grafana/grafana/issues/69755), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **NestedFolders:** Move `New folder` into a drawer. [#69706](https://github.com/grafana/grafana/issues/69706), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Loki:** Implement step editor. [#69648](https://github.com/grafana/grafana/issues/69648), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **DataFrame:** Align frame (series.name) and field naming (field.name) . [#69621](https://github.com/grafana/grafana/issues/69621), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Auth:** Use auth broker by default. [#69620](https://github.com/grafana/grafana/issues/69620), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **Dashboards:** Add dashboard embed route. [#69596](https://github.com/grafana/grafana/issues/69596), [@Clarity-89](https://github.com/Clarity-89)
|
||||||
|
- **Nested folders:** Improve loading states. [#69556](https://github.com/grafana/grafana/issues/69556), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Alerting:** Use monaco editor for admin page. [#69514](https://github.com/grafana/grafana/issues/69514), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Legend:** Sort by name. [#69490](https://github.com/grafana/grafana/issues/69490), [@adela-almasan](https://github.com/adela-almasan)
|
||||||
|
- **QueryField:** Set default value for onBlur prop. [#69487](https://github.com/grafana/grafana/issues/69487), [@idastambuk](https://github.com/idastambuk)
|
||||||
|
- **Tempo:** TraceQL editor - Match type of new values with values in dropdown. [#69468](https://github.com/grafana/grafana/issues/69468), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Logs:** Add permalink to log lines. [#69464](https://github.com/grafana/grafana/issues/69464), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Logs:** Implement "infinite" scrolling in log context. [#69459](https://github.com/grafana/grafana/issues/69459), [@gabor](https://github.com/gabor)
|
||||||
|
- **Tracing:** Use new DataSourceDescription component. [#69443](https://github.com/grafana/grafana/issues/69443), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Plugin Extensions:** Custom limits for extensions-per-plugin . [#69430](https://github.com/grafana/grafana/issues/69430), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **Alerting:** Display error if repeat interval is lower than group interval. [#69413](https://github.com/grafana/grafana/issues/69413), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Tracing:** Move upload trace to button. [#69402](https://github.com/grafana/grafana/issues/69402), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **I18n:** Add server config to detect browser language. [#69396](https://github.com/grafana/grafana/issues/69396), [@pbaumard](https://github.com/pbaumard)
|
||||||
|
- **Tempo:** Represent OTLP Span Intrinsics correctly. [#69394](https://github.com/grafana/grafana/issues/69394), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **News:** Expose config option to disable News feed. [#69365](https://github.com/grafana/grafana/issues/69365), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Alerting:** Change how we display annotations in the rule form. [#69338](https://github.com/grafana/grafana/issues/69338), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Azure:** AzureMonitorMetrics - change response to be dataplane compliant. [#69308](https://github.com/grafana/grafana/issues/69308), [@kylebrandt](https://github.com/kylebrandt)
|
||||||
|
- **JoinDataFrames:** Keep field name if possible. [#69289](https://github.com/grafana/grafana/issues/69289), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Dashboards:** Data source template variable options now specify a current value using uid. [#69259](https://github.com/grafana/grafana/issues/69259), [@darrenjaneczek](https://github.com/darrenjaneczek)
|
||||||
|
- **Alerting:** Add more context to delete modals. [#69244](https://github.com/grafana/grafana/issues/69244), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Plugins:** Forbid loading Angular plugins when Angular is disabled. [#69225](https://github.com/grafana/grafana/issues/69225), [@xnyo](https://github.com/xnyo)
|
||||||
|
- **Tempo:** TraceQL query response streaming. [#69212](https://github.com/grafana/grafana/issues/69212), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Catalog:** Display badges for Angular plugins and disable install if Angular is disabled. [#69084](https://github.com/grafana/grafana/issues/69084), [@xnyo](https://github.com/xnyo)
|
||||||
|
- **Chore:** Adding "allowed_groups" Configuration Parameter to Generic OAuth Method. [#69025](https://github.com/grafana/grafana/issues/69025), [@vsychov](https://github.com/vsychov)
|
||||||
|
- **Loki:** Add support for distinct operation in autocomplete and query builder. [#69003](https://github.com/grafana/grafana/issues/69003), [@matyax](https://github.com/matyax)
|
||||||
|
- **Chore:** Avoid unnecessary byte/string conversions. [#69001](https://github.com/grafana/grafana/issues/69001), [@Juneezee](https://github.com/Juneezee)
|
||||||
|
- **Loki:** Implement `decolorize` logql operation. [#68972](https://github.com/grafana/grafana/issues/68972), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **CloudWatch:** Wrap VariableEditor dimension fields. [#68967](https://github.com/grafana/grafana/issues/68967), [@iSatVeerSingh](https://github.com/iSatVeerSingh)
|
||||||
|
- **TimeSeries:** Add zoom-out functionality on double click. [#68936](https://github.com/grafana/grafana/issues/68936), [@simPod](https://github.com/simPod)
|
||||||
|
- **Plugins:** Bump Plugin SDK version and address instance management breaking changes. [#68900](https://github.com/grafana/grafana/issues/68900), [@wbrowne](https://github.com/wbrowne)
|
||||||
|
- **FlameGraph:** Add option to align text left or right. [#68893](https://github.com/grafana/grafana/issues/68893), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Logs:** Added copy-to-clipboard fallback support and visual feedback after copying. [#68874](https://github.com/grafana/grafana/issues/68874), [@matyax](https://github.com/matyax)
|
||||||
|
- **Auth:** Respect cache control for JWKS in auth.jwt. [#68872](https://github.com/grafana/grafana/issues/68872), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **Pyroscope:** Rename phlare to grafana-pyroscope-datasource. [#68859](https://github.com/grafana/grafana/issues/68859), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Alerting:** Add notification policies preview in alert creation. [#68839](https://github.com/grafana/grafana/issues/68839), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Page:** Add inline rename functionality. [#68828](https://github.com/grafana/grafana/issues/68828), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Tracing:** Rename reset to clear for consistency. [#68821](https://github.com/grafana/grafana/issues/68821), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Alerting:** Adds support for timezones in mute timings. [#68813](https://github.com/grafana/grafana/issues/68813), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Datasources:** Deprecate and log creating/updating datasources with invalid UIDs. [#68800](https://github.com/grafana/grafana/issues/68800), [@xnyo](https://github.com/xnyo)
|
||||||
|
- **Tracing:** Upgrade tracing data source configuration editors. [#68764](https://github.com/grafana/grafana/issues/68764), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Loki:** Preserve pre-selected labels in the log context UI. [#68700](https://github.com/grafana/grafana/issues/68700), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **NestedFolders:** Improve performance of Browse Dashboards by loading one page at a time. [#68617](https://github.com/grafana/grafana/issues/68617), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Plugins:** Add a new UI Extension type. [#68600](https://github.com/grafana/grafana/issues/68600), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **StateTimeline:** Support hideFrom field config. [#68586](https://github.com/grafana/grafana/issues/68586), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Chore:** Remove alpha icon panel. [#68573](https://github.com/grafana/grafana/issues/68573), [@nmarrs](https://github.com/nmarrs)
|
||||||
|
- **PublicDashboards:** Support timezone on query API. [#68560](https://github.com/grafana/grafana/issues/68560), [@evictorero](https://github.com/evictorero)
|
||||||
|
- **API:** Add deprecation notice for updating folder UID. [#68543](https://github.com/grafana/grafana/issues/68543), [@papagian](https://github.com/papagian)
|
||||||
|
- **Accessibility:** Make QueryOptions in Phlare and Parca accessible. [#68515](https://github.com/grafana/grafana/issues/68515), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Chore:** Test datasource to support template $seriesIndex in label values. [#68497](https://github.com/grafana/grafana/issues/68497), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Loki:** Add functionality to revert to initial query in log context. [#68484](https://github.com/grafana/grafana/issues/68484), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Alerting:** Reorder new alert and export buttons. [#68418](https://github.com/grafana/grafana/issues/68418), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Accessibility:** Prevent TimePickerContent overflowing page height. [#68356](https://github.com/grafana/grafana/issues/68356), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Build:** Update plugin installation in custom Dockerfile. [#68310](https://github.com/grafana/grafana/issues/68310), [@hoptical](https://github.com/hoptical)
|
||||||
|
- **Alerting:** Enable alerts preview on notification policies page. [#68291](https://github.com/grafana/grafana/issues/68291), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Accessibility:** Adds aria tags to VizTooltip so screen readers announce them. [#68247](https://github.com/grafana/grafana/issues/68247), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
|
||||||
|
- **Breadcrumbs:** Don't add breadcrumb for the current tab. [#68230](https://github.com/grafana/grafana/issues/68230), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **NewsDrawer:** Add grot to news drawer (after news items) . [#68173](https://github.com/grafana/grafana/issues/68173), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Tempo:** Integrate scoped tags API. [#68106](https://github.com/grafana/grafana/issues/68106), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Auth:** Use PKCE by default (If OAuth provider supports PKCE). [#68095](https://github.com/grafana/grafana/issues/68095), [@arukiidou](https://github.com/arukiidou)
|
||||||
|
- **Accessibility:** Add `Skip to content` link. [#68065](https://github.com/grafana/grafana/issues/68065), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Auth:** Add alpha version of the Extended JWT client . [#67999](https://github.com/grafana/grafana/issues/67999), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Alerting:** Add option for memberlist label. [#67982](https://github.com/grafana/grafana/issues/67982), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
|
||||||
|
- **Breadcrumbs:** Improve responsiveness. [#67955](https://github.com/grafana/grafana/issues/67955), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **PluginExtensions:** Expose scopedVars via the context to plugins that extends the dashboard panel menu. [#67917](https://github.com/grafana/grafana/issues/67917), [@mckn](https://github.com/mckn)
|
||||||
|
- **Trace View:** Rename span detail attribute sections. [#67849](https://github.com/grafana/grafana/issues/67849), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Chore:** Upgrade Go to 1.20.4. [#67748](https://github.com/grafana/grafana/issues/67748), [@papagian](https://github.com/papagian)
|
||||||
|
- **Correlations:** Add links to prometheus dataframe where labels are split out. [#67736](https://github.com/grafana/grafana/issues/67736), [@gelicia](https://github.com/gelicia)
|
||||||
|
- **Theme:** Change dark theme borders to improve contrast on primary background. [#67699](https://github.com/grafana/grafana/issues/67699), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Alerting:** Refactor the ImageStore/Provider to provide image URL/bytes. [#67693](https://github.com/grafana/grafana/issues/67693), [@santihernandezc](https://github.com/santihernandezc)
|
||||||
|
- **Alerting:** Allow to tab onto elements for a11y. [#67684](https://github.com/grafana/grafana/issues/67684), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Grafana:** Upgrades mysql images from 5.7 to 8. [#67604](https://github.com/grafana/grafana/issues/67604), [@owensmallwood](https://github.com/owensmallwood)
|
||||||
|
- **Chore:** Bump github.com/go-sql-driver/mysql from 1.6.0 to 1.7.1. [#67584](https://github.com/grafana/grafana/issues/67584)
|
||||||
|
- **Frontend logging:** Remove Sentry javascript agent support. [#67493](https://github.com/grafana/grafana/issues/67493), [@domasx2](https://github.com/domasx2)
|
||||||
|
- **HTTP:** Add TLS version configurability for grafana server. [#67482](https://github.com/grafana/grafana/issues/67482), [@venkatbvc](https://github.com/venkatbvc)
|
||||||
|
- **NestedFolders:** Use new Browse Dashboards UI behind feature flag. [#67416](https://github.com/grafana/grafana/issues/67416), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **CloudWatch:** Remove dynamic labels feature toggle. [#67371](https://github.com/grafana/grafana/issues/67371), [@fridgepoet](https://github.com/fridgepoet)
|
||||||
|
- **Suggestions:** Prioritize preferred visualizations for suggestion list. [#67326](https://github.com/grafana/grafana/issues/67326), [@sarahzinger](https://github.com/sarahzinger)
|
||||||
|
- **Explore:** Allow the use of plugin panels. [#66982](https://github.com/grafana/grafana/issues/66982), [@Umaaz](https://github.com/Umaaz)
|
||||||
|
- **Grafana/ui:** Add UserIcon and UsersIndicator components. [#66906](https://github.com/grafana/grafana/issues/66906), [@Clarity-89](https://github.com/Clarity-89)
|
||||||
|
- **Connections:** Simplify connections nav. [#66813](https://github.com/grafana/grafana/issues/66813), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Variables:** Add support for `$__timezone` template variable. [#66785](https://github.com/grafana/grafana/issues/66785), [@VictorColomb](https://github.com/VictorColomb)
|
||||||
|
- **Design System:** Refactor IconButton and update documentation. [#66774](https://github.com/grafana/grafana/issues/66774), [@L-M-K-B](https://github.com/L-M-K-B)
|
||||||
|
- **CloudWatch:** Update metric stat editor to match aws statistics. [#66532](https://github.com/grafana/grafana/issues/66532), [@sladyn98](https://github.com/sladyn98)
|
||||||
|
- **Chore:** Replace go-multierror with errors package. [#66432](https://github.com/grafana/grafana/issues/66432), [@iSatVeerSingh](https://github.com/iSatVeerSingh)
|
||||||
|
- **Explore:** Make toolbar action extendable by plugins. [#65524](https://github.com/grafana/grafana/issues/65524), [@mckn](https://github.com/mckn)
|
||||||
|
- **Loki:** Add the ability to prettify logql queries. [#64337](https://github.com/grafana/grafana/issues/64337), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **TimeSeries / StateTimeline:** Add support for rendering enum fields. [#64179](https://github.com/grafana/grafana/issues/64179), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Elasticsearch:** Improve query type selection. [#63402](https://github.com/grafana/grafana/issues/63402), [@gabor](https://github.com/gabor)
|
||||||
|
- **Metrics:** Update Help to mention active viewers. [#63384](https://github.com/grafana/grafana/issues/63384), [@monteiro-renato](https://github.com/monteiro-renato)
|
||||||
|
- **MySQL:** Add option to allow cleartext passwords. [#63232](https://github.com/grafana/grafana/issues/63232), [@enginecan](https://github.com/enginecan)
|
||||||
|
- **Platform:** Add support for Postgresql pgpass file. [#61517](https://github.com/grafana/grafana/issues/61517), [@gjacquet](https://github.com/gjacquet)
|
||||||
|
- **ServiceAccounts:** Add secret scan service docs. [#57926](https://github.com/grafana/grafana/issues/57926), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **Azure:** Configuration for user identity authentication in datasources (Experimental). [#50277](https://github.com/grafana/grafana/issues/50277), [@kostrse](https://github.com/kostrse)
|
||||||
|
- **Mysql Tests:** Mysql5.7 integration tests, use utf8mb4 charset. (Enterprise)
|
||||||
|
- **RBAC:** Validate provided Action for Create/Update Role. (Enterprise)
|
||||||
|
- **Reports:** Activate draft reports. (Enterprise)
|
||||||
|
- **Grafana:** Upgrades mysql images from 5.7 to 8. (Enterprise)
|
||||||
|
- **Usage Insights:** Use the insights components from grafana/ui. (Enterprise)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **DataSourceProxy:** Fix url validation error handling. [#73322](https://github.com/grafana/grafana/issues/73322), [@ricci2511](https://github.com/ricci2511)
|
||||||
|
- **AzureMonitor:** Allow `serviceTags` and `tags` to be empty for trace results. [#73197](https://github.com/grafana/grafana/issues/73197), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **UserSync:** Avoid UpdateLastSeenAt with invalid user ids. [#72784](https://github.com/grafana/grafana/issues/72784), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Nested folders:** Fix search query for empty self-contained permissions. [#72733](https://github.com/grafana/grafana/issues/72733), [@papagian](https://github.com/papagian)
|
||||||
|
- **Auth:** Lock down Grafana admin role updates if the role is externally synced. [#72691](https://github.com/grafana/grafana/issues/72691), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **DS Picker:** Ignore capitalization when sorting dropdown list. [#72668](https://github.com/grafana/grafana/issues/72668), [@ivanortegaalba](https://github.com/ivanortegaalba)
|
||||||
|
- **Logs:** Fix ui getting stuck when removing fields. [#72603](https://github.com/grafana/grafana/issues/72603), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Data sources:** Dashboards page now loads correctly from direct url. [#72495](https://github.com/grafana/grafana/issues/72495), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Provisioning:** Fix overwrite SecureJSONData on provisioning. [#72455](https://github.com/grafana/grafana/issues/72455), [@oshirohugo](https://github.com/oshirohugo)
|
||||||
|
- **Loki:** Run logs volume for query when switching from trace to logs. [#72268](https://github.com/grafana/grafana/issues/72268), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Alerting:** Fix refetching grafana rules on alert list panel. [#72242](https://github.com/grafana/grafana/issues/72242), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Alerting:** Fix contact point testing with secure settings. [#72235](https://github.com/grafana/grafana/issues/72235), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Alerting:** Exclude expression refIDs from NoData state. [#72219](https://github.com/grafana/grafana/issues/72219), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Alerting:** Fix state manager to not keep datasource_uid and ref_id labels in state after Error. [#72216](https://github.com/grafana/grafana/issues/72216), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Dashboards:** Fix small drop target for importing dashboards. [#72170](https://github.com/grafana/grafana/issues/72170), [@kunxl-gg](https://github.com/kunxl-gg)
|
||||||
|
- **TimeSeries:** Fix zoom not working after editing panel. [#72163](https://github.com/grafana/grafana/issues/72163), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Dashboard:** New Datasource picker link is keyboard accessible. [#72134](https://github.com/grafana/grafana/issues/72134), [@polibb](https://github.com/polibb)
|
||||||
|
- **CloudMonitoring:** Correctly set title and text fields for annotations. [#71888](https://github.com/grafana/grafana/issues/71888), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **AzureMonitor:** Fix ResourcePicker hanging. [#71886](https://github.com/grafana/grafana/issues/71886), [@asimpson](https://github.com/asimpson)
|
||||||
|
- **Fix:** Hide Forward OAuth Identity toggle when azure auth is enabled. [#71640](https://github.com/grafana/grafana/issues/71640), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **Flamegraph:** Fix wrong positioning of tooltip in dashboards. [#71396](https://github.com/grafana/grafana/issues/71396), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Dashboards:** Save tags on dashboard creation. [#71394](https://github.com/grafana/grafana/issues/71394), [@evictorero](https://github.com/evictorero)
|
||||||
|
- **A11y:** Fix keyboard accessibility in LayerDragDropList. [#71386](https://github.com/grafana/grafana/issues/71386), [@Develer](https://github.com/Develer)
|
||||||
|
- **DataLinks:** Fix bug where links which used built in variables could be hidden. [#71372](https://github.com/grafana/grafana/issues/71372), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **LogContext:** Fix a bug where multiple logs with similar nanosecond timestamps were loaded too often. [#71319](https://github.com/grafana/grafana/issues/71319), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Dashboard:** Slider overlapping with right input field. [#71282](https://github.com/grafana/grafana/issues/71282), [@Develer](https://github.com/Develer)
|
||||||
|
- **Alerting:** Support spaces in alert names for creating silence links. [#71280](https://github.com/grafana/grafana/issues/71280), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Swagger:** Fix response for the search users endpoint. [#71272](https://github.com/grafana/grafana/issues/71272), [@papagian](https://github.com/papagian)
|
||||||
|
- **Auth:** Fix US gov azure ad oauth URL parsing. [#71254](https://github.com/grafana/grafana/issues/71254), [@douglasryanadams](https://github.com/douglasryanadams)
|
||||||
|
- **SSE:** DSNode to update result with names to make each value identifiable by labels (only Graphite and TestData). [#71246](https://github.com/grafana/grafana/issues/71246), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **PanelChrome:** Fixes issues with hover header and resizing panel above. [#71040](https://github.com/grafana/grafana/issues/71040), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Dashboard:** Add suggestion box for Flame Graph. [#70763](https://github.com/grafana/grafana/issues/70763), [@fabrizio-grafana](https://github.com/fabrizio-grafana)
|
||||||
|
- **Slug:** Use urlencoding to support non-ASCII characters. [#70691](https://github.com/grafana/grafana/issues/70691), [@sakjur](https://github.com/sakjur)
|
||||||
|
- **Checkbox:** Fix alignment in Safari. [#70673](https://github.com/grafana/grafana/issues/70673), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Alerting:** Fixes clone url for instances hosted on sub path. [#70543](https://github.com/grafana/grafana/issues/70543), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Support concurrent queries for saving alert instances. [#70525](https://github.com/grafana/grafana/issues/70525), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **Dashboards:** Allow dashboards with same name in different folders. [#70378](https://github.com/grafana/grafana/issues/70378), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Query:** Fix concurrency handling for mixed datasource queries. [#70100](https://github.com/grafana/grafana/issues/70100), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Alerting:** Allow executing "hidden" queries. [#70064](https://github.com/grafana/grafana/issues/70064), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **EchoBackend:** Make EchoSrvTransport batched. [#70012](https://github.com/grafana/grafana/issues/70012), [@kpelelis](https://github.com/kpelelis)
|
||||||
|
- **CodeEditor:** Ensure suggestions only apply to the instance of the editor that registered them. [#69995](https://github.com/grafana/grafana/issues/69995), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **NestedFolders:** Ensure `New dashboard` page has the correct breadcrumb hierarchy. [#69758](https://github.com/grafana/grafana/issues/69758), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Transformations:** Config overrides being lost when config from query transform is applied. [#69720](https://github.com/grafana/grafana/issues/69720), [@IbrahimCSAE](https://github.com/IbrahimCSAE)
|
||||||
|
- **Azure:** Fix Kusto auto-completion for Azure datasources. [#69685](https://github.com/grafana/grafana/issues/69685), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **Loki:** Fix parsing of escaped quotes in LogQL. [#69584](https://github.com/grafana/grafana/issues/69584), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Fix showing of correct line limit in options. [#69572](https://github.com/grafana/grafana/issues/69572), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Alerting:** Fix notification policies inheritance algorithm. [#69304](https://github.com/grafana/grafana/issues/69304), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Checkbox:** Fix extraneous right hand margin when no label is present. [#68885](https://github.com/grafana/grafana/issues/68885), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Preferences:** Can reset timezone preference back to default correctly. [#68881](https://github.com/grafana/grafana/issues/68881), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Azuremonitor:** Multi resource fix. [#68759](https://github.com/grafana/grafana/issues/68759), [@bossinc](https://github.com/bossinc)
|
||||||
|
- **AzureMonitor:** Support multi-resource aliases and subscription aliases. [#68648](https://github.com/grafana/grafana/issues/68648), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **Revert:** Allow editors to access GET /datasources. [#68632](https://github.com/grafana/grafana/issues/68632), [@eleijonmarck](https://github.com/eleijonmarck)
|
||||||
|
- **MySQL:** Use transaction_isolation instead of tx_isolation. [#68575](https://github.com/grafana/grafana/issues/68575), [@owensmallwood](https://github.com/owensmallwood)
|
||||||
|
- **Logs:** Change logic creating uid in LogRowModel. [#68569](https://github.com/grafana/grafana/issues/68569), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Dashboard:** Re-align Save form. [#68565](https://github.com/grafana/grafana/issues/68565), [@polibb](https://github.com/polibb)
|
||||||
|
- **Elasticsearch:** Implement filter query to not run hidden queries trough backend. [#68563](https://github.com/grafana/grafana/issues/68563), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Elasticsearch:** Fix passing of limit and datalinks to logs data frame. [#68554](https://github.com/grafana/grafana/issues/68554), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Dashboards:** Improve delete dashboard performance due to slow annotations query. [#68544](https://github.com/grafana/grafana/issues/68544), [@17billion](https://github.com/17billion)
|
||||||
|
- **Elasticsearch:** Handle no-index case in backend mode. [#68534](https://github.com/grafana/grafana/issues/68534), [@gabor](https://github.com/gabor)
|
||||||
|
- **GrafanaUI:** Support Tooltip as Dropdown child. [#68521](https://github.com/grafana/grafana/issues/68521), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Node graph:** Fix req/s in value. [#68441](https://github.com/grafana/grafana/issues/68441), [@domasx2](https://github.com/domasx2)
|
||||||
|
- **FlameGraph:** Debounce search update preventing too frequent rerenders . [#68405](https://github.com/grafana/grafana/issues/68405), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Settings:** Add ability to override `skip_org_role_sync` with Env variables. [#68364](https://github.com/grafana/grafana/issues/68364), [@eleijonmarck](https://github.com/eleijonmarck)
|
||||||
|
- **DarkTheme:** Fix dark theme shadows. [#68358](https://github.com/grafana/grafana/issues/68358), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Heatmap:** Fix color rendering for value ranges < 1. [#68156](https://github.com/grafana/grafana/issues/68156), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **AzureMonitor:** Clear queries if header value changes. [#67916](https://github.com/grafana/grafana/issues/67916), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **AzureMonitor:** Fix logs query multi-resource and timespan values. [#67914](https://github.com/grafana/grafana/issues/67914), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **CloudWatch:** Use grafana-aws-sdk v0.15.0. [#67876](https://github.com/grafana/grafana/issues/67876), [@iwysiu](https://github.com/iwysiu)
|
||||||
|
- **Datasource:** Fix missing raw SQL query in Query Inspector when query returns zero rows. [#67844](https://github.com/grafana/grafana/issues/67844), [@baldm0mma](https://github.com/baldm0mma)
|
||||||
|
- **LibraryPanels:** Don't include ScopedVars with persisted model. [#67843](https://github.com/grafana/grafana/issues/67843), [@kaydelaney](https://github.com/kaydelaney)
|
||||||
|
- **Elasticsearch:** Fix processing of logs with not-recognized time format. [#67767](https://github.com/grafana/grafana/issues/67767), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Google Cloud Monitor:** Fix mem usage for dropdown. [#67683](https://github.com/grafana/grafana/issues/67683), [@asimpson](https://github.com/asimpson)
|
||||||
|
- **Cloudwatch Logs:** Ignore non-time grouping fields in expressions and alerts. [#67608](https://github.com/grafana/grafana/issues/67608), [@iwysiu](https://github.com/iwysiu)
|
||||||
|
- **Correlations:** Enable traceView formatted links. [#67160](https://github.com/grafana/grafana/issues/67160), [@gelicia](https://github.com/gelicia)
|
||||||
|
- **SQL Datasources:** Reinstate SQL data source behavior around database selection when default configured databases already exist. [#65659](https://github.com/grafana/grafana/issues/65659), [@baldm0mma](https://github.com/baldm0mma)
|
||||||
|
- **API:** Fix status code when starring already starred dashboard. [#63478](https://github.com/grafana/grafana/issues/63478), [@MTLChrisLEE](https://github.com/MTLChrisLEE)
|
||||||
|
- **Dashboard:** Update query group options. [#63138](https://github.com/grafana/grafana/issues/63138), [@songhn233](https://github.com/songhn233)
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
This change impacts all instances that use external authentication providers to manage users and organization role assignments.
|
||||||
|
|
||||||
|
From Grafana 10.1, it will no longer be possible to manually update organization roles (Viewer, Editor and Admin) that are managed by an external auth provider. We are making this change to clearly separate between roles managed by an external auth provider and manually assigned roles, which increases security and clarity around role management.
|
||||||
|
|
||||||
|
If you prefer to manually set user organization roles, use `skip_org_role_sync` option in the Grafana configuration file of your OAuth provider.
|
||||||
|
|
||||||
|
Refer to the [release notes of Grafana 9.5](https://grafana.com/docs/grafana/latest/whatsnew/whats-new-in-v9-5/#auth-lock-organization-roles-synced-from-auth-providers) for context on the previous work done to build up to this change. Issue [#72204](https://github.com/grafana/grafana/issues/72204)
|
||||||
|
|
||||||
|
This change impacts GitHub OAuth, Gitlab OAuth, Okta OAuth and Generic OAuth
|
||||||
|
|
||||||
|
Currently if no organization role mapping is found for a user when connecting via OAuth, Grafana doesn’t update the user’s organization role.
|
||||||
|
|
||||||
|
With Grafana 10.1, on every login, if the role_attribute_path property does not return a role, then the user is assigned the role specified by [the auto_assign_org_role option](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#auto_assign_org_role).
|
||||||
|
|
||||||
|
To avoid overriding manually set roles, enable the `skip_org_role_sync` option in the Grafana configuration for your OAuth provider. Issue [#70766](https://github.com/grafana/grafana/issues/70766)
|
||||||
|
|
||||||
|
InfluxDB backend parser returns incompatible data with frontend. The data was being parsed by frontend and we moving towards migrating InfluxDB fully backend. One caveat is Frontend is generating data frames with fields `Time` and `Value`. The backend parser, however, generates `time` and `value`. This is causing issues and inconsistencies for the features (i.e. transformations) relying on those. In order to have a unique approach we choose to support what most of the users already have. Existing Transformations that depend on `time` fields have to be updated to use `Time` fields. Issue [#69865](https://github.com/grafana/grafana/issues/69865)
|
||||||
|
|
||||||
|
For accessibility reasons `tooltip` or `aria-label` are now required properties for `IconButton`. In order to continue to use `IconButton`, you must ensure all `IconButton` components have a corresponding tooltip or aria-label text. The tooltip text will also be used as the aria-label if you didn't set one separately. In case you add an aria-label the IconButton will not show a tooltip. Issue [#69699](https://github.com/grafana/grafana/issues/69699)
|
||||||
|
|
||||||
|
The implementation for template macro `${__series.name}` was not always correct, resulting in an interpolation that was very different from the series name displayed in the visualization. We have now fixed this issue so that it does show the same name. Depending on how `${__series.name}` is used this could result in a minor breaking change. Issue [#69621](https://github.com/grafana/grafana/issues/69621)
|
||||||
|
|
||||||
|
The data source template variable type has changed the way it represents its options. The `text` field still represents the data source name, but the `value` has been changed to the `uid` of the data source. This allows dashboards to declare the currently selected option by `uid`, however it changes how a datasource template variable value will be rendered by default. If the name of the data source is expected, the variable syntax will have to be changed to specify the [text format](https://grafana.com/docs/grafana/latest/dashboards/variables/variable-syntax/#text).
|
||||||
|
|
||||||
|
For example, given a data source variable (datasourceVariable), the following string:
|
||||||
|
|
||||||
|
```
|
||||||
|
${datasourceVariable}<br/>
|
||||||
|
Name: ${datasourceVariable:text}<br/>
|
||||||
|
UID: ${datasourceVariable:raw}
|
||||||
|
```
|
||||||
|
|
||||||
|
was previously interpolated as:
|
||||||
|
|
||||||
|
```
|
||||||
|
grafanacloud-k8smonitoring-prom
|
||||||
|
Name: grafanacloud-k8smonitoring-prom
|
||||||
|
UID: grafanacloud-k8smonitoring-prom
|
||||||
|
```
|
||||||
|
|
||||||
|
After these changes, it's interpolated as:
|
||||||
|
|
||||||
|
```
|
||||||
|
d7bbe725-9e48-4af8-a0cb-6cb255d873a3
|
||||||
|
Name: grafanacloud-k8smonitoring-prom
|
||||||
|
UID: d7bbe725-9e48-4af8-a0cb-6cb255d873a3
|
||||||
|
```
|
||||||
|
|
||||||
|
Any dashboards that are relying on the data source name being returned by `${datasourceVariable}` will have to update all their usages to `${datasourceVariable:text}` in order to get the previous behavior.
|
||||||
|
|
||||||
|
Affected use cases:
|
||||||
|
|
||||||
|
- Using `${datasourceVariable}` to display the data source name in text panel or in the panel title.
|
||||||
|
- Using `${datasourceVariable}` to use the data source name as part of the query content.
|
||||||
|
|
||||||
|
Unaffected use cases:
|
||||||
|
|
||||||
|
- Using the `${datasourceVariable}` to choose which data source to use for a query (through its data source picker) will not be affected since it can use both the name and the uid Issue [#69259](https://github.com/grafana/grafana/issues/69259)
|
||||||
|
|
||||||
|
We are changing the logic that creates `uid` in `LogRowModel`. Previously, for `uid` we used `id` field from log's data frame. Unfortunately, when users run multiple queries that returned duplicate logs data, `uid` was not unique which was causing bugs. To make `uid` unique across multiple queries that return duplicate logs data, we are now prepending `uid` with `refId` of query that produced the log line. We recommend not to rely on `LogRowModel` `uid` and instead use `dataFrame` `id` field. Issue [#68569](https://github.com/grafana/grafana/issues/68569)
|
||||||
|
|
||||||
|
The deprecated support for monitoring Grafana frontend using Sentry javascript agent has been removed in this release. If you have frontend logging enabled and are sending telemetry to Sentry by setting `sentry_dsn` configuration property, this will no longer work. Otherwise, if frontend logging is enabled, it will now automatically use Grafana Faro agent. Issue [#67493](https://github.com/grafana/grafana/issues/67493)
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
|
||||||
|
The query parameter of Explore's `SplitOpen` function is deprecated (passed in `mapInternalLinkToExplore`). Please use the `queries` parameter instead, which allows passing multiple queries to `SplitOpen` function. To pass a single query to `SplitOpen` function, set the `queries` parameter to an array containing that single query.
|
||||||
|
|
||||||
|
Fixes: https://github.com/grafana/grafana/issues/62567 Issue [#71484](https://github.com/grafana/grafana/issues/71484)
|
||||||
|
|
||||||
|
Starting with 10.0, changing the folder UID is deprecated. It will be removed in a future release. Please avoid using it because it can result in folder losing its permissions. Issue [#68543](https://github.com/grafana/grafana/issues/68543)
|
||||||
|
|
||||||
|
### Plugin development fixes & changes
|
||||||
|
|
||||||
|
- **GrafanaUI:** Define tooltip or aria-label as required for IconButton. [#69699](https://github.com/grafana/grafana/issues/69699), [@L-M-K-B](https://github.com/L-M-K-B)
|
||||||
|
- **Select:** Performance improvements when opening menu and when hovering over options. [#69230](https://github.com/grafana/grafana/issues/69230), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
|
||||||
|
- **ConfirmModal:** Ignore case for confirmation text. [#69000](https://github.com/grafana/grafana/issues/69000), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Grafana/ui:** Fix margin in RadioButtonGroup option when only icon is present. [#68899](https://github.com/grafana/grafana/issues/68899), [@aocenas](https://github.com/aocenas)
|
||||||
|
|
||||||
|
<!-- 10.1.0 END -->
|
||||||
|
<!-- 10.0.4 START -->
|
||||||
|
|
||||||
|
# 10.0.4 (2023-08-22)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Usage stats:** Tune collector execution startup and interval. [#72789](https://github.com/grafana/grafana/issues/72789), [@papagian](https://github.com/papagian)
|
||||||
|
- **Prometheus:** Add present_over_time syntax highlighting. [#72368](https://github.com/grafana/grafana/issues/72368), [@arnaudlemaignen](https://github.com/arnaudlemaignen)
|
||||||
|
- **Alerting:** Improve performance of matching captures. [#71999](https://github.com/grafana/grafana/issues/71999), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **AzureMonitor:** Allow `serviceTags` and `tags` to be empty for trace results. [#73196](https://github.com/grafana/grafana/issues/73196), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **Cloud Monitoring:** Support AliasBy property in MQL mode. [#73165](https://github.com/grafana/grafana/issues/73165), [@alyssabull](https://github.com/alyssabull)
|
||||||
|
- **Alerting:** Exclude expression refIDs from NoData state. [#72394](https://github.com/grafana/grafana/issues/72394), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Alerting:** Fix state manager to not keep datasource_uid and ref_id labels in state after Error. [#72393](https://github.com/grafana/grafana/issues/72393), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **Dashboard:** New Datasource picker link is keyboard accessible. [#72371](https://github.com/grafana/grafana/issues/72371), [@polibb](https://github.com/polibb)
|
||||||
|
- **AzureMonitor:** Fix ResourcePicker hanging. [#72357](https://github.com/grafana/grafana/issues/72357), [@asimpson](https://github.com/asimpson)
|
||||||
|
- **Alerting:** Fix refetching grafana rules on alert list panel. [#72333](https://github.com/grafana/grafana/issues/72333), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Alerting:** Fix contact point testing with secure settings. [#72282](https://github.com/grafana/grafana/issues/72282), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **TimeSeries:** Fix zoom not working after editing panel. [#72224](https://github.com/grafana/grafana/issues/72224), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **CloudMonitoring:** Correctly set title and text fields for annotations. [#72153](https://github.com/grafana/grafana/issues/72153), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
|
||||||
|
<!-- 10.0.4 END -->
|
||||||
<!-- 10.0.3 START -->
|
<!-- 10.0.3 START -->
|
||||||
|
|
||||||
# 10.0.3 (2023-07-18)
|
# 10.0.3 (2023-07-18)
|
||||||
@@ -368,7 +902,7 @@ Issue [#67014](https://github.com/grafana/grafana/issues/67014)
|
|||||||
|
|
||||||
Grafana requires an Elasticsearch version of 7.16 or newer. If you use an older Elasticsearch version, you will get warnings in the query editor and on the datasource configuration page. Issue [#66928](https://github.com/grafana/grafana/issues/66928)
|
Grafana requires an Elasticsearch version of 7.16 or newer. If you use an older Elasticsearch version, you will get warnings in the query editor and on the datasource configuration page. Issue [#66928](https://github.com/grafana/grafana/issues/66928)
|
||||||
|
|
||||||
The deprecated `plugin:create` and `component:create` commands in the Grafana Toolkit have been removed in this release. The replacement `create-plugin` tool is recommended for [scaffolding new plugins](https://grafana.github.io/plugin-tools/docs/creating-a-plugin) and a migration guide for moving from the toolkit is available [here](https://grafana.github.io/plugin-tools/docs/migrating-from-toolkit). Issue [#66729](https://github.com/grafana/grafana/issues/66729)
|
The deprecated `plugin:create` and `component:create` commands in the Grafana Toolkit have been removed in this release. The replacement `create-plugin` tool is recommended for [scaffolding new plugins](https://grafana.github.io/plugin-tools/docs/getting-started/creating-a-plugin) and a migration guide for moving from the toolkit is available [here](https://grafana.github.io/plugin-tools/docs/getting-started/migrating-from-toolkit). Issue [#66729](https://github.com/grafana/grafana/issues/66729)
|
||||||
|
|
||||||
We've removed some now unused properties from the `NavModel` interface. Issue [#66548](https://github.com/grafana/grafana/issues/66548)
|
We've removed some now unused properties from the `NavModel` interface. Issue [#66548](https://github.com/grafana/grafana/issues/66548)
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,6 @@ Before we can accept your pull request, you need to [sign our CLA](https://grafa
|
|||||||
## Where do I go from here?
|
## Where do I go from here?
|
||||||
|
|
||||||
- Set up your [development environment](contribute/developer-guide.md).
|
- Set up your [development environment](contribute/developer-guide.md).
|
||||||
- Learn how to [contribute documentation](contribute/README.md).
|
- Learn how to [contribute to our documentation](contribute/documentation/README.md).
|
||||||
- Get started [developing plugins](https://grafana.com/docs/grafana/latest/developers/plugins/) for Grafana.
|
- Get started [developing plugins](https://grafana.com/developers/plugin-tools) for Grafana.
|
||||||
- Look through the resources in the [contribute](contribute) folder.
|
- Look through the resources in the [contribute](contribute) folder.
|
||||||
|
|||||||
10
Dockerfile
10
Dockerfile
@@ -1,9 +1,9 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
ARG BASE_IMAGE=alpine:3.17
|
ARG BASE_IMAGE=alpine:3.18.3
|
||||||
ARG JS_IMAGE=node:18-alpine3.17
|
ARG JS_IMAGE=node:18-alpine3.18
|
||||||
ARG JS_PLATFORM=linux/amd64
|
ARG JS_PLATFORM=linux/amd64
|
||||||
ARG GO_IMAGE=golang:1.20.6-alpine3.17
|
ARG GO_IMAGE=golang:1.21.8-alpine3.18
|
||||||
|
|
||||||
ARG GO_SRC=go-builder
|
ARG GO_SRC=go-builder
|
||||||
ARG JS_SRC=js-builder
|
ARG JS_SRC=js-builder
|
||||||
@@ -64,6 +64,7 @@ COPY pkg pkg
|
|||||||
COPY scripts scripts
|
COPY scripts scripts
|
||||||
COPY conf conf
|
COPY conf conf
|
||||||
COPY .github .github
|
COPY .github .github
|
||||||
|
COPY LICENSE ./
|
||||||
|
|
||||||
ENV COMMIT_SHA=${COMMIT_SHA}
|
ENV COMMIT_SHA=${COMMIT_SHA}
|
||||||
ENV BUILD_BRANCH=${BUILD_BRANCH}
|
ENV BUILD_BRANCH=${BUILD_BRANCH}
|
||||||
@@ -110,7 +111,7 @@ RUN if grep -i -q alpine /etc/issue; then \
|
|||||||
elif grep -i -q ubuntu /etc/issue; then \
|
elif grep -i -q ubuntu /etc/issue; then \
|
||||||
DEBIAN_FRONTEND=noninteractive && \
|
DEBIAN_FRONTEND=noninteractive && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get install -y ca-certificates curl tzdata && \
|
apt-get install -y ca-certificates curl tzdata musl && \
|
||||||
apt-get autoremove -y && \
|
apt-get autoremove -y && \
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
else \
|
else \
|
||||||
@@ -165,6 +166,7 @@ RUN if [ ! $(getent group "$GF_GID") ]; then \
|
|||||||
|
|
||||||
COPY --from=go-src /tmp/grafana/bin/grafana* /tmp/grafana/bin/*/grafana* ./bin/
|
COPY --from=go-src /tmp/grafana/bin/grafana* /tmp/grafana/bin/*/grafana* ./bin/
|
||||||
COPY --from=js-src /tmp/grafana/public ./public
|
COPY --from=js-src /tmp/grafana/public ./public
|
||||||
|
COPY --from=go-src /tmp/grafana/LICENSE ./
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
|
|||||||
72
Makefile
72
Makefile
@@ -36,36 +36,68 @@ node_modules: package.json yarn.lock ## Install node modules.
|
|||||||
|
|
||||||
##@ Swagger
|
##@ Swagger
|
||||||
SPEC_TARGET = public/api-spec.json
|
SPEC_TARGET = public/api-spec.json
|
||||||
MERGED_SPEC_TARGET := public/api-merged.json
|
ENTERPRISE_SPEC_TARGET = public/api-enterprise-spec.json
|
||||||
|
MERGED_SPEC_TARGET = public/api-merged.json
|
||||||
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json
|
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json
|
||||||
|
|
||||||
$(NGALERT_SPEC_TARGET):
|
$(NGALERT_SPEC_TARGET):
|
||||||
+$(MAKE) -C pkg/services/ngalert/api/tooling api.json
|
+$(MAKE) -C pkg/services/ngalert/api/tooling api.json
|
||||||
|
|
||||||
$(MERGED_SPEC_TARGET): $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs
|
$(MERGED_SPEC_TARGET): swagger-oss-gen swagger-enterprise-gen $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs
|
||||||
# known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs)
|
# known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs)
|
||||||
$(SWAGGER) mixin $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET)
|
$(SWAGGER) mixin $(SPEC_TARGET) $(ENTERPRISE_SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET)
|
||||||
|
|
||||||
$(SPEC_TARGET): $(SWAGGER) ## Generate API Swagger specification
|
swagger-oss-gen: $(SWAGGER) ## Generate API Swagger specification
|
||||||
|
@echo "re-generating swagger for OSS"
|
||||||
|
rm -f $(SPEC_TARGET)
|
||||||
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(SPEC_TARGET) \
|
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(SPEC_TARGET) \
|
||||||
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
||||||
-x "github.com/prometheus/alertmanager" \
|
-x "github.com/prometheus/alertmanager" \
|
||||||
-i pkg/api/swagger_tags.json \
|
-i pkg/api/swagger_tags.json \
|
||||||
--exclude-tag=alpha
|
--exclude-tag=alpha \
|
||||||
go run pkg/services/ngalert/api/tooling/cmd/clean-swagger/main.go -if $@ -of $@
|
--exclude-tag=enterprise
|
||||||
|
|
||||||
swagger-api-spec: gen-go $(SPEC_TARGET) $(MERGED_SPEC_TARGET) validate-api-spec
|
# this file only exists if enterprise is enabled
|
||||||
|
ENTERPRISE_EXT_FILE = pkg/extensions/ext.go
|
||||||
|
ifeq ("$(wildcard $(ENTERPRISE_EXT_FILE))","") ## if enterprise is not enabled
|
||||||
|
swagger-enterprise-gen:
|
||||||
|
@echo "skipping re-generating swagger for enterprise: not enabled"
|
||||||
|
else
|
||||||
|
swagger-enterprise-gen: $(SWAGGER) ## Generate API Swagger specification
|
||||||
|
@echo "re-generating swagger for enterprise"
|
||||||
|
rm -f $(ENTERPRISE_SPEC_TARGET)
|
||||||
|
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(ENTERPRISE_SPEC_TARGET) \
|
||||||
|
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
||||||
|
-x "github.com/prometheus/alertmanager" \
|
||||||
|
-i pkg/api/swagger_tags.json \
|
||||||
|
--exclude-tag=alpha \
|
||||||
|
--include-tag=enterprise
|
||||||
|
endif
|
||||||
|
|
||||||
validate-api-spec: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec
|
swagger-gen: gen-go $(MERGED_SPEC_TARGET) swagger-validate
|
||||||
|
|
||||||
|
swagger-validate: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec
|
||||||
$(SWAGGER) validate $(<)
|
$(SWAGGER) validate $(<)
|
||||||
|
|
||||||
clean-api-spec:
|
swagger-clean:
|
||||||
rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
||||||
|
|
||||||
|
.PHONY: cleanup-old-git-hooks
|
||||||
|
cleanup-old-git-hooks:
|
||||||
|
./scripts/cleanup-husky.sh
|
||||||
|
|
||||||
|
.PHONY: lefthook-install
|
||||||
|
lefthook-install: cleanup-old-git-hooks $(LEFTHOOK) # install lefthook for pre-commit hooks
|
||||||
|
$(LEFTHOOK) install -f
|
||||||
|
|
||||||
|
.PHONY: lefthook-uninstall
|
||||||
|
lefthook-uninstall: $(LEFTHOOK)
|
||||||
|
$(LEFTHOOK) uninstall
|
||||||
|
|
||||||
##@ OpenAPI 3
|
##@ OpenAPI 3
|
||||||
OAPI_SPEC_TARGET = public/openapi3.json
|
OAPI_SPEC_TARGET = public/openapi3.json
|
||||||
|
|
||||||
openapi3-gen: swagger-api-spec ## Generates OpenApi 3 specs from the Swagger 2 already generated
|
openapi3-gen: swagger-gen ## Generates OpenApi 3 specs from the Swagger 2 already generated
|
||||||
$(GO) run scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
$(GO) run scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
||||||
|
|
||||||
##@ Building
|
##@ Building
|
||||||
@@ -132,6 +164,13 @@ test-go-integration: ## Run integration tests for backend with flags.
|
|||||||
@echo "test backend integration tests"
|
@echo "test backend integration tests"
|
||||||
$(GO) test -count=1 -run "^TestIntegration" -covermode=atomic -timeout=5m $(GO_INTEGRATION_TESTS)
|
$(GO) test -count=1 -run "^TestIntegration" -covermode=atomic -timeout=5m $(GO_INTEGRATION_TESTS)
|
||||||
|
|
||||||
|
.PHONY: test-go-integration-alertmanager
|
||||||
|
test-go-integration-alertmanager: ## Run integration tests for the remote alertmanager (config taken from the mimir_backend block).
|
||||||
|
@echo "test remote alertmanager integration tests"
|
||||||
|
$(GO) clean -testcache
|
||||||
|
AM_URL=http://localhost:8080 AM_TENANT_ID=test AM_PASSWORD=test \
|
||||||
|
$(GO) test -count=1 -run "^TestIntegrationRemoteAlertmanager" -covermode=atomic -timeout=5m ./pkg/services/ngalert/notifier/...
|
||||||
|
|
||||||
.PHONY: test-go-integration-postgres
|
.PHONY: test-go-integration-postgres
|
||||||
test-go-integration-postgres: devenv-postgres ## Run integration tests for postgres backend with flags.
|
test-go-integration-postgres: devenv-postgres ## Run integration tests for postgres backend with flags.
|
||||||
@echo "test backend integration postgres tests"
|
@echo "test backend integration postgres tests"
|
||||||
@@ -190,7 +229,7 @@ build-docker-full: ## Build Docker image for development.
|
|||||||
--build-arg BINGO=false \
|
--build-arg BINGO=false \
|
||||||
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
||||||
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
||||||
--build-arg COMMIT_SHA=$$(git rev-parse --short HEAD) \
|
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
||||||
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
||||||
--tag grafana/grafana$(TAG_SUFFIX):dev \
|
--tag grafana/grafana$(TAG_SUFFIX):dev \
|
||||||
$(DOCKER_BUILD_ARGS)
|
$(DOCKER_BUILD_ARGS)
|
||||||
@@ -203,10 +242,10 @@ build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
|||||||
--build-arg BINGO=false \
|
--build-arg BINGO=false \
|
||||||
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
||||||
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
||||||
--build-arg COMMIT_SHA=$$(git rev-parse --short HEAD) \
|
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
||||||
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
||||||
--build-arg BASE_IMAGE=ubuntu:20.04 \
|
--build-arg BASE_IMAGE=ubuntu:22.04 \
|
||||||
--build-arg GO_IMAGE=golang:1.20.6 \
|
--build-arg GO_IMAGE=golang:1.21.8 \
|
||||||
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
||||||
$(DOCKER_BUILD_ARGS)
|
$(DOCKER_BUILD_ARGS)
|
||||||
|
|
||||||
@@ -251,6 +290,9 @@ devenv-mysql:
|
|||||||
protobuf: ## Compile protobuf definitions
|
protobuf: ## Compile protobuf definitions
|
||||||
bash scripts/protobuf-check.sh
|
bash scripts/protobuf-check.sh
|
||||||
bash pkg/plugins/backendplugin/pluginextensionv2/generate.sh
|
bash pkg/plugins/backendplugin/pluginextensionv2/generate.sh
|
||||||
|
bash pkg/plugins/backendplugin/secretsmanagerplugin/generate.sh
|
||||||
|
bash pkg/services/store/entity/generate.sh
|
||||||
|
bash pkg/infra/grn/generate.sh
|
||||||
|
|
||||||
clean: ## Clean up intermediate build artifacts.
|
clean: ## Clean up intermediate build artifacts.
|
||||||
@echo "cleaning"
|
@echo "cleaning"
|
||||||
@@ -276,7 +318,7 @@ scripts/drone/TAGS: $(shell find scripts/drone -name '*.star')
|
|||||||
etags --lang none --regex="/def \(\w+\)[^:]+:/\1/" --regex="/\s*\(\w+\) =/\1/" $^ -o $@
|
etags --lang none --regex="/def \(\w+\)[^:]+:/\1/" --regex="/\s*\(\w+\) =/\1/" $^ -o $@
|
||||||
|
|
||||||
format-drone:
|
format-drone:
|
||||||
buildifier -r scripts/drone
|
buildifier --lint=fix -r scripts/drone
|
||||||
|
|
||||||
help: ## Display this help.
|
help: ## Display this help.
|
||||||
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ reporting_distributor = grafana-labs
|
|||||||
# for new versions of grafana. The check is used
|
# for new versions of grafana. The check is used
|
||||||
# in some UI views to notify that a grafana update exists.
|
# in some UI views to notify that a grafana update exists.
|
||||||
# This option does not cause any auto updates, nor send any information
|
# This option does not cause any auto updates, nor send any information
|
||||||
# only a GET request to https://raw.githubusercontent.com/grafana/grafana/main/latest.json to get the latest version.
|
# only a GET request to https://grafana.com/api/grafana/versions/stable to get the latest version.
|
||||||
check_for_updates = true
|
check_for_updates = true
|
||||||
|
|
||||||
# Set to false to disable all checks to https://grafana.com
|
# Set to false to disable all checks to https://grafana.com
|
||||||
@@ -562,6 +562,17 @@ azure_auth_enabled = false
|
|||||||
# Use email lookup in addition to the unique ID provided by the IdP
|
# Use email lookup in addition to the unique ID provided by the IdP
|
||||||
oauth_allow_insecure_email_lookup = false
|
oauth_allow_insecure_email_lookup = false
|
||||||
|
|
||||||
|
# Set to true to include id of identity as a response header
|
||||||
|
id_response_header_enabled = false
|
||||||
|
|
||||||
|
# Prefix used for the id response header, X-Grafana-Identity-Id
|
||||||
|
id_response_header_prefix = X-Grafana
|
||||||
|
|
||||||
|
# List of identity namespaces to add id response headers for, separated by space.
|
||||||
|
# Available namespaces are user, api-key and service-account.
|
||||||
|
# The header value will encode the namespace ("user:<id>", "api-key:<id>", "service-account:<id>")
|
||||||
|
id_response_header_namespaces = user api-key service-account
|
||||||
|
|
||||||
#################################### Anonymous Auth ######################
|
#################################### Anonymous Auth ######################
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
# enable anonymous access
|
# enable anonymous access
|
||||||
@@ -845,6 +856,24 @@ managed_identity_enabled = false
|
|||||||
# Should be set for user-assigned identity and should be empty for system-assigned identity
|
# Should be set for user-assigned identity and should be empty for system-assigned identity
|
||||||
managed_identity_client_id =
|
managed_identity_client_id =
|
||||||
|
|
||||||
|
# Specifies whether Azure AD Workload Identity authentication should be enabled in datasources that support it
|
||||||
|
# For more documentation on Azure AD Workload Identity, review this documentation:
|
||||||
|
# https://azure.github.io/azure-workload-identity/docs/
|
||||||
|
# Disabled by default, needs to be explicitly enabled
|
||||||
|
workload_identity_enabled = false
|
||||||
|
|
||||||
|
# Tenant ID of the Azure AD Workload Identity
|
||||||
|
# Allows to override default tenant ID of the Azure AD identity associated with the Kubernetes service account
|
||||||
|
workload_identity_tenant_id =
|
||||||
|
|
||||||
|
# Client ID of the Azure AD Workload Identity
|
||||||
|
# Allows to override default client ID of the Azure AD identity associated with the Kubernetes service account
|
||||||
|
workload_identity_client_id =
|
||||||
|
|
||||||
|
# Custom path to token file for the Azure AD Workload Identity
|
||||||
|
# Allows to set a custom path to the projected service account token file
|
||||||
|
workload_identity_token_file =
|
||||||
|
|
||||||
# Specifies whether user identity authentication (on behalf of currently signed-in user) should be enabled in datasources
|
# Specifies whether user identity authentication (on behalf of currently signed-in user) should be enabled in datasources
|
||||||
# that support it (requires AAD authentication)
|
# that support it (requires AAD authentication)
|
||||||
# Disabled by default, needs to be explicitly enabled
|
# Disabled by default, needs to be explicitly enabled
|
||||||
@@ -1059,6 +1088,9 @@ ha_redis_prefix =
|
|||||||
# provided, a random one will be generated.
|
# provided, a random one will be generated.
|
||||||
ha_redis_peer_name =
|
ha_redis_peer_name =
|
||||||
|
|
||||||
|
# The maximum number of simultaneous redis connections.
|
||||||
|
ha_redis_max_conns = 5
|
||||||
|
|
||||||
# Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port.
|
# Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port.
|
||||||
ha_listen_address = "0.0.0.0:9094"
|
ha_listen_address = "0.0.0.0:9094"
|
||||||
|
|
||||||
@@ -1096,8 +1128,8 @@ execute_alerts = true
|
|||||||
# The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
# The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
||||||
evaluation_timeout = 30s
|
evaluation_timeout = 30s
|
||||||
|
|
||||||
# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. This option has a legacy version in the `[alerting]` section that takes precedence.
|
# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is 1.
|
||||||
max_attempts = 3
|
max_attempts = 1
|
||||||
|
|
||||||
# Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence.
|
# Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence.
|
||||||
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
||||||
@@ -1292,6 +1324,8 @@ enabled = true
|
|||||||
interval_seconds = 10
|
interval_seconds = 10
|
||||||
# Disable total stats (stat_totals_*) metrics to be generated
|
# Disable total stats (stat_totals_*) metrics to be generated
|
||||||
disable_total_stats = false
|
disable_total_stats = false
|
||||||
|
# The interval at which the total stats collector will update the stats. Default is 1800 seconds.
|
||||||
|
total_stats_collector_interval_seconds = 1800
|
||||||
|
|
||||||
#If both are set, basic auth will be required for the metrics endpoints.
|
#If both are set, basic auth will be required for the metrics endpoints.
|
||||||
basic_auth_username =
|
basic_auth_username =
|
||||||
|
|||||||
@@ -252,7 +252,7 @@
|
|||||||
# for new versions of grafana. The check is used
|
# for new versions of grafana. The check is used
|
||||||
# in some UI views to notify that a grafana update exists.
|
# in some UI views to notify that a grafana update exists.
|
||||||
# This option does not cause any auto updates, nor send any information
|
# This option does not cause any auto updates, nor send any information
|
||||||
# only a GET request to https://raw.githubusercontent.com/grafana/grafana/main/latest.json to get the latest version.
|
# only a GET request to https://grafana.com/api/grafana/versions/stable to get the latest version.
|
||||||
;check_for_updates = true
|
;check_for_updates = true
|
||||||
|
|
||||||
# Set to false to disable all checks to https://grafana.com
|
# Set to false to disable all checks to https://grafana.com
|
||||||
@@ -551,6 +551,17 @@
|
|||||||
# Use email lookup in addition to the unique ID provided by the IdP
|
# Use email lookup in addition to the unique ID provided by the IdP
|
||||||
;oauth_allow_insecure_email_lookup = false
|
;oauth_allow_insecure_email_lookup = false
|
||||||
|
|
||||||
|
# Set to true to include id of identity as a response header
|
||||||
|
;id_response_header_enabled = false
|
||||||
|
|
||||||
|
# Prefix used for the id response header, X-Grafana-Identity-Id
|
||||||
|
;id_response_header_prefix = X-Grafana
|
||||||
|
|
||||||
|
# List of identity namespaces to add id response headers for, separated by space.
|
||||||
|
# Available namespaces are user, api-key and service-account.
|
||||||
|
# The header value will encode the namespace ("user:<id>", "api-key:<id>", "service-account:<id>")
|
||||||
|
;id_response_header_namespaces = user api-key service-account
|
||||||
|
|
||||||
#################################### Anonymous Auth ######################
|
#################################### Anonymous Auth ######################
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
# enable anonymous access
|
# enable anonymous access
|
||||||
@@ -797,6 +808,24 @@
|
|||||||
# Should be set for user-assigned identity and should be empty for system-assigned identity
|
# Should be set for user-assigned identity and should be empty for system-assigned identity
|
||||||
;managed_identity_client_id =
|
;managed_identity_client_id =
|
||||||
|
|
||||||
|
# Specifies whether Azure AD Workload Identity authentication should be enabled in datasources that support it
|
||||||
|
# For more documentation on Azure AD Workload Identity, review this documentation:
|
||||||
|
# https://azure.github.io/azure-workload-identity/docs/
|
||||||
|
# Disabled by default, needs to be explicitly enabled
|
||||||
|
;workload_identity_enabled = false
|
||||||
|
|
||||||
|
# Tenant ID of the Azure AD Workload Identity
|
||||||
|
# Allows to override default tenant ID of the Azure AD identity associated with the Kubernetes service account
|
||||||
|
;workload_identity_tenant_id =
|
||||||
|
|
||||||
|
# Client ID of the Azure AD Workload Identity
|
||||||
|
# Allows to override default client ID of the Azure AD identity associated with the Kubernetes service account
|
||||||
|
;workload_identity_client_id =
|
||||||
|
|
||||||
|
# Custom path to token file for the Azure AD Workload Identity
|
||||||
|
# Allows to set a custom path to the projected service account token file
|
||||||
|
;workload_identity_token_file =
|
||||||
|
|
||||||
# Specifies whether user identity authentication (on behalf of currently signed-in user) should be enabled in datasources
|
# Specifies whether user identity authentication (on behalf of currently signed-in user) should be enabled in datasources
|
||||||
# that support it (requires AAD authentication)
|
# that support it (requires AAD authentication)
|
||||||
# Disabled by default, needs to be explicitly enabled
|
# Disabled by default, needs to be explicitly enabled
|
||||||
@@ -1046,8 +1075,8 @@
|
|||||||
# The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
# The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
||||||
;evaluation_timeout = 30s
|
;evaluation_timeout = 30s
|
||||||
|
|
||||||
# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. This option has a legacy version in the `[alerting]` section that takes precedence.
|
# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is 1.
|
||||||
;max_attempts = 3
|
;max_attempts = 1
|
||||||
|
|
||||||
# Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence.
|
# Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence.
|
||||||
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
|
||||||
@@ -1214,6 +1243,8 @@
|
|||||||
;interval_seconds = 10
|
;interval_seconds = 10
|
||||||
# Disable total stats (stat_totals_*) metrics to be generated
|
# Disable total stats (stat_totals_*) metrics to be generated
|
||||||
;disable_total_stats = false
|
;disable_total_stats = false
|
||||||
|
# The interval at which the total stats collector will update the stats. Default is 1800 seconds.
|
||||||
|
;total_stats_collector_interval_seconds = 1800
|
||||||
|
|
||||||
#If both are set, basic auth will be required for the metrics endpoints.
|
#If both are set, basic auth will be required for the metrics endpoints.
|
||||||
; basic_auth_username =
|
; basic_auth_username =
|
||||||
|
|||||||
22
contribute/backend/upgrading-go-version.md
Normal file
22
contribute/backend/upgrading-go-version.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Upgrading Go Version
|
||||||
|
|
||||||
|
Notes on upgrading Go version.
|
||||||
|
|
||||||
|
Example PR: https://github.com/grafana/grafana/pull/79329
|
||||||
|
|
||||||
|
## The main areas that need to change during the upgrade are:
|
||||||
|
|
||||||
|
- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/scripts/drone/variables.star#L6
|
||||||
|
- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/Makefile#L264
|
||||||
|
- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/Dockerfile#L6
|
||||||
|
|
||||||
|
Make sure to run `make drone` so that changes to `.star` files are reflected and `drone.yml` is generated.
|
||||||
|
|
||||||
|
### Additional files to change
|
||||||
|
|
||||||
|
- Take a look in `.github/workflows` folder for what `go` version is being used there in various workflows.
|
||||||
|
- Make sure to create a PR with the corresponding changes in `grafana/grafana-enterprise` repository.
|
||||||
|
|
||||||
|
## Updating the go.mod file
|
||||||
|
|
||||||
|
Please avoid updating the `go.mod` to the newest version unless really necessary. This ensures backwards compatibility and introduces less breaking changes. Always upgrade Go version in the runtime files above first, let them run for a couple of weeks and only then consider updating the `go.mod` file if necessary.
|
||||||
@@ -104,7 +104,7 @@ myOldFunction(name: string) {
|
|||||||
2. Add info in the comment about **when it is going to be removed**
|
2. Add info in the comment about **when it is going to be removed**
|
||||||
3. Add info in the comment about **what should be used instead**
|
3. Add info in the comment about **what should be used instead**
|
||||||
4. In case it's a function or a method, use `deprecationWarning(<file name>, <old name>, <new name>)` to raise attention during runtime as well
|
4. In case it's a function or a method, use `deprecationWarning(<file name>, <old name>, <new name>)` to raise attention during runtime as well
|
||||||
5. Update the [migration guide](../docs/sources/developers/plugins/migration-guide.md) with your instructions
|
5. Update the [migration guidance](/developers/plugin-tools/migration-guides/) for plugin developers with your instructions
|
||||||
|
|
||||||
### Communicate
|
### Communicate
|
||||||
|
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ The Drone pipelines are built with [Starlark](https://github.com/bazelbuild/star
|
|||||||
- Open a PR where you can do test runs for your changes. If you need to experiment with secrets, create a PR in the [grafana-ci-sandbox repo](https://github.com/grafana/grafana-ci-sandbox), before opening a PR in the main repo.
|
- Open a PR where you can do test runs for your changes. If you need to experiment with secrets, create a PR in the [grafana-ci-sandbox repo](https://github.com/grafana/grafana-ci-sandbox), before opening a PR in the main repo.
|
||||||
- Run `make drone` after making changes to the Starlark files. This builds the `.drone.yml` file.
|
- Run `make drone` after making changes to the Starlark files. This builds the `.drone.yml` file.
|
||||||
|
|
||||||
For further questions, reach out to the grafana-delivery squad.
|
For further questions, reach out to the grafana-release-guild squad.
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ Instead, when it is merged & closed then a bot will look for the most appropriat
|
|||||||
|
|
||||||
That milestone should always reflect the branch that the pull request is merged into.
|
That milestone should always reflect the branch that the pull request is merged into.
|
||||||
For every major and minor release there is a milestone ending with `.x` (e.g. `10.0.x` for the 10.0.x releases).
|
For every major and minor release there is a milestone ending with `.x` (e.g. `10.0.x` for the 10.0.x releases).
|
||||||
Pull requests targetting `main` should use the `.x` milestone of the next minor (or major) version (you can find that version number inside the `package.json` file).
|
Pull requests targeting `main` should use the `.x` milestone of the next minor (or major) version (you can find that version number inside the `package.json` file).
|
||||||
Backport pull requestss should use the version of the target branch (e.g. `9.4.x` for the `v9.4.x` branch).
|
Backport pull requests should use the version of the target branch (e.g. `9.4.x` for the `v9.4.x` branch).
|
||||||
|
|
||||||
### Include in changelog and release notes?
|
### Include in changelog and release notes?
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ const getStyles = (theme: GrafanaTheme2) => ({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
Use hook useStyles2(getStyles) to memoize the styles generation and try to avoid passing props to the the getStyles function and instead compose classes using emotion cx function.
|
Use hook useStyles2(getStyles) to memoize the styles generation and try to avoid passing props to the getStyles function and instead compose classes using emotion cx function.
|
||||||
|
|
||||||
#### Use `ALL_CAPS` for constants.
|
#### Use `ALL_CAPS` for constants.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
FROM nginx:1.19.3-alpine
|
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
|
||||||
COPY htpasswd /etc/nginx/htpasswd
|
|
||||||
@@ -5,5 +5,11 @@
|
|||||||
# root_url = %(protocol)s://%(domain)s:10080/grafana/
|
# root_url = %(protocol)s://%(domain)s:10080/grafana/
|
||||||
|
|
||||||
nginxproxy:
|
nginxproxy:
|
||||||
build: docker/blocks/auth/nginx_proxy
|
image: nginx:1.24-alpine
|
||||||
network_mode: host
|
volumes:
|
||||||
|
- "./docker/blocks/auth/nginx_proxy/nginx.conf:/etc/nginx/nginx.conf"
|
||||||
|
- "./docker/blocks/auth/nginx_proxy/htpasswd:/etc/nginx/htpasswd"
|
||||||
|
ports:
|
||||||
|
- "8090:8090"
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|||||||
@@ -4,14 +4,20 @@ http {
|
|||||||
sendfile on;
|
sendfile on;
|
||||||
|
|
||||||
proxy_redirect off;
|
proxy_redirect off;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host:$server_port;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Host $server_name;
|
proxy_set_header X-Forwarded-Host $server_name;
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 10080;
|
listen 8090;
|
||||||
|
|
||||||
|
###############################################################
|
||||||
|
# Location is under the sub path /grafana/. We need to update the
|
||||||
|
# config.ini file accordingly.
|
||||||
|
# [server]
|
||||||
|
# root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/
|
||||||
|
###############################################################
|
||||||
location /grafana/ {
|
location /grafana/ {
|
||||||
################################################################
|
################################################################
|
||||||
# Enable these settings to test with basic auth and an auth proxy header
|
# Enable these settings to test with basic auth and an auth proxy header
|
||||||
@@ -19,8 +25,10 @@ http {
|
|||||||
# user1: grafana and user2: grafana
|
# user1: grafana and user2: grafana
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
# auth_basic "Restricted Content";
|
auth_basic "Restricted Content";
|
||||||
# auth_basic_user_file /etc/nginx/htpasswd;
|
auth_basic_user_file /etc/nginx/htpasswd;
|
||||||
|
# Remove the authentication header meant for NGINX
|
||||||
|
proxy_set_header "Authorization" "";
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# To use the auth proxy header, set the following in custom.ini:
|
# To use the auth proxy header, set the following in custom.ini:
|
||||||
@@ -28,11 +36,12 @@ http {
|
|||||||
# enabled = true
|
# enabled = true
|
||||||
# header_name = X-WEBAUTH-USER
|
# header_name = X-WEBAUTH-USER
|
||||||
# header_property = username
|
# header_property = username
|
||||||
|
# enable_login_token = false
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
# proxy_set_header X-WEBAUTH-USER $remote_user;
|
proxy_set_header X-WEBAUTH-USER $remote_user;
|
||||||
|
|
||||||
proxy_pass http://localhost:3000/;
|
proxy_pass http://host.docker.internal:3000/;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ http {
|
|||||||
proxy_set_header X-Forwarded-Host $server_name;
|
proxy_set_header X-Forwarded-Host $server_name;
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 10080;
|
listen 8090;
|
||||||
|
|
||||||
location /grafana/ {
|
location /grafana/ {
|
||||||
################################################################
|
################################################################
|
||||||
@@ -26,17 +26,18 @@ http {
|
|||||||
# enabled = true
|
# enabled = true
|
||||||
# header_name = X-WEBAUTH-USER
|
# header_name = X-WEBAUTH-USER
|
||||||
# header_property = username
|
# header_property = username
|
||||||
|
# enable_login_token = true
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
location /grafana/login {
|
location /grafana/login {
|
||||||
auth_basic "Restricted Content";
|
auth_basic "Restricted Content";
|
||||||
auth_basic_user_file /etc/nginx/htpasswd;
|
auth_basic_user_file /etc/nginx/htpasswd;
|
||||||
proxy_set_header X-WEBAUTH-USER $remote_user;
|
proxy_set_header X-WEBAUTH-USER $remote_user;
|
||||||
proxy_pass http://localhost:3000/login;
|
proxy_pass http://host.docker.internal:3000/login;
|
||||||
}
|
}
|
||||||
|
|
||||||
proxy_set_header Authorization "";
|
proxy_set_header Authorization "";
|
||||||
proxy_pass http://localhost:3000/;
|
proxy_pass http://host.docker.internal:3000/;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
docs/docs.mk
14
docs/docs.mk
@@ -76,11 +76,11 @@ docs-rm: ## Remove the docs container.
|
|||||||
|
|
||||||
.PHONY: docs-pull
|
.PHONY: docs-pull
|
||||||
docs-pull: ## Pull documentation base image.
|
docs-pull: ## Pull documentation base image.
|
||||||
$(PODMAN) pull $(DOCS_IMAGE)
|
$(PODMAN) pull -q $(DOCS_IMAGE)
|
||||||
|
|
||||||
make-docs: ## Fetch the latest make-docs script.
|
make-docs: ## Fetch the latest make-docs script.
|
||||||
make-docs:
|
make-docs:
|
||||||
if [[ ! -f "$(PWD)/make-docs" ]]; then
|
if [[ ! -f "$(CURDIR)/make-docs" ]]; then
|
||||||
echo 'WARN: No make-docs script found in the working directory. Run `make update` to download it.' >&2
|
echo 'WARN: No make-docs script found in the working directory. Run `make update` to download it.' >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -88,27 +88,27 @@ make-docs:
|
|||||||
.PHONY: docs
|
.PHONY: docs
|
||||||
docs: ## Serve documentation locally, which includes pulling the latest `DOCS_IMAGE` (default: `grafana/docs-base:latest`) container image. See also `docs-no-pull`.
|
docs: ## Serve documentation locally, which includes pulling the latest `DOCS_IMAGE` (default: `grafana/docs-base:latest`) container image. See also `docs-no-pull`.
|
||||||
docs: docs-pull make-docs
|
docs: docs-pull make-docs
|
||||||
$(PWD)/make-docs $(PROJECTS)
|
$(CURDIR)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: docs-no-pull
|
.PHONY: docs-no-pull
|
||||||
docs-no-pull: ## Serve documentation locally without pulling the `DOCS_IMAGE` (default: `grafana/docs-base:latest`) container image.
|
docs-no-pull: ## Serve documentation locally without pulling the `DOCS_IMAGE` (default: `grafana/docs-base:latest`) container image.
|
||||||
docs-no-pull: make-docs
|
docs-no-pull: make-docs
|
||||||
$(PWD)/make-docs $(PROJECTS)
|
$(CURDIR)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: docs-debug
|
.PHONY: docs-debug
|
||||||
docs-debug: ## Run Hugo web server with debugging enabled. TODO: support all SERVER_FLAGS defined in website Makefile.
|
docs-debug: ## Run Hugo web server with debugging enabled. TODO: support all SERVER_FLAGS defined in website Makefile.
|
||||||
docs-debug: make-docs
|
docs-debug: make-docs
|
||||||
WEBSITE_EXEC='hugo server --bind 0.0.0.0 --port 3002 --debug' $(PWD)/make-docs $(PROJECTS)
|
WEBSITE_EXEC='hugo server --bind 0.0.0.0 --port 3002 --debug' $(CURDIR)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: doc-validator
|
.PHONY: doc-validator
|
||||||
doc-validator: ## Run doc-validator on the entire docs folder.
|
doc-validator: ## Run doc-validator on the entire docs folder.
|
||||||
doc-validator: make-docs
|
doc-validator: make-docs
|
||||||
DOCS_IMAGE=$(DOC_VALIDATOR_IMAGE) $(PWD)/make-docs $(PROJECTS)
|
DOCS_IMAGE=$(DOC_VALIDATOR_IMAGE) $(CURDIR)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: vale
|
.PHONY: vale
|
||||||
vale: ## Run vale on the entire docs folder.
|
vale: ## Run vale on the entire docs folder.
|
||||||
vale: make-docs
|
vale: make-docs
|
||||||
DOCS_IMAGE=$(VALE_IMAGE) $(PWD)/make-docs $(PROJECTS)
|
DOCS_IMAGE=$(VALE_IMAGE) $(CURDIR)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: update
|
.PHONY: update
|
||||||
update: ## Fetch the latest version of this Makefile and the `make-docs` script from Writers' Toolkit.
|
update: ## Fetch the latest version of this Makefile and the `make-docs` script from Writers' Toolkit.
|
||||||
|
|||||||
204
docs/make-docs
204
docs/make-docs
@@ -6,6 +6,19 @@
|
|||||||
# [Semantic versioning](https://semver.org/) is used to help the reader identify the significance of changes.
|
# [Semantic versioning](https://semver.org/) is used to help the reader identify the significance of changes.
|
||||||
# Changes are relevant to this script and the support docs.mk GNU Make interface.
|
# Changes are relevant to this script and the support docs.mk GNU Make interface.
|
||||||
|
|
||||||
|
# ## 4.2.1 (2023-09-13)
|
||||||
|
|
||||||
|
# ## Fixed
|
||||||
|
|
||||||
|
# - Improved consistency of the webserver request loop by polling the Hugo port rather than the proxy port.
|
||||||
|
|
||||||
|
# ## 4.2.0 (2023-09-01)
|
||||||
|
|
||||||
|
# ### Added
|
||||||
|
|
||||||
|
# - Retry the initial webserver request up to ten times to allow for the process to start.
|
||||||
|
# If it is still failing after ten seconds, an error message is logged.
|
||||||
|
|
||||||
# ## 4.1.1 (2023-07-20)
|
# ## 4.1.1 (2023-07-20)
|
||||||
|
|
||||||
# ### Fixed
|
# ### Fixed
|
||||||
@@ -133,6 +146,21 @@ readonly WEBSITE_MOUNTS="${WEBSITE_MOUNTS:-}"
|
|||||||
|
|
||||||
PODMAN="$(if command -v podman >/dev/null 2>&1; then echo podman; else echo docker; fi)"
|
PODMAN="$(if command -v podman >/dev/null 2>&1; then echo podman; else echo docker; fi)"
|
||||||
|
|
||||||
|
if ! command -v curl >/dev/null 2>&1; then
|
||||||
|
if ! command -v wget >/dev/null 2>&1; then
|
||||||
|
errr 'either `curl` or `wget` must be installed for this script to work.'
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v "${PODMAN}" >/dev/null 2>&1; then
|
||||||
|
errr 'either `podman` or `docker` must be installed for this script to work.'
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
about() {
|
about() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Test documentation locally with multiple source repositories.
|
Test documentation locally with multiple source repositories.
|
||||||
@@ -331,9 +359,10 @@ repo_path() {
|
|||||||
done
|
done
|
||||||
unset IFS
|
unset IFS
|
||||||
|
|
||||||
echo "ERRR: could not find project '${_repo}' in any of the paths in REPOS_PATH '${REPOS_PATH}'." >&2
|
errr "could not find project '${_repo}' in any of the paths in REPOS_PATH '${REPOS_PATH}'."
|
||||||
echo "NOTE: you must have a checkout of the project '${_repo}' at '${REPOS_PATH##:*}/${_repo}'." >&2
|
note "you must have a checkout of the project '${_repo}' at '${REPOS_PATH##:*}/${_repo}'."
|
||||||
echo "NOTE: if you have cloned the repository into a directory with a different name, consider changing it to ${_repo}." >&2
|
note "if you have cloned the repository into a directory with a different name, consider changing it to ${_repo}."
|
||||||
|
|
||||||
unset _repo
|
unset _repo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@@ -419,6 +448,61 @@ POSIX_HERESTRING
|
|||||||
unset _project _version _repo _path
|
unset _project _version _repo _path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await_build() {
|
||||||
|
url="$1"
|
||||||
|
req="$(if command -v curl >/dev/null 2>&1; then echo 'curl -s -o /dev/null'; else echo 'wget -q'; fi)"
|
||||||
|
|
||||||
|
i=1
|
||||||
|
max=10
|
||||||
|
while [ "${i}" -ne "${max}" ]
|
||||||
|
do
|
||||||
|
sleep 1
|
||||||
|
debg "Retrying request to webserver assuming the process is still starting up."
|
||||||
|
i=$((i + 1))
|
||||||
|
|
||||||
|
if ${req} "${url}"; then
|
||||||
|
echo
|
||||||
|
echo "View documentation locally:"
|
||||||
|
for x in ${url_src_dst_vers}; do
|
||||||
|
IFS='^' read -r url _ _ <<POSIX_HERESTRING
|
||||||
|
$x
|
||||||
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ -n "${url}" ]; then
|
||||||
|
if [ "${_url}" != "arbitrary" ]; then
|
||||||
|
echo " ${url}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
echo 'Press Ctrl+c to stop the server'
|
||||||
|
|
||||||
|
unset i max req url
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
errr 'The build was interrupted or a build error occurred, check the previous logs for possible causes.'
|
||||||
|
note 'You might need to use Ctrl+c to end the process.'
|
||||||
|
|
||||||
|
unset i max req url
|
||||||
|
}
|
||||||
|
|
||||||
|
debg() {
|
||||||
|
if [ -n "${DEBUG}" ]; then
|
||||||
|
echo "DEBG: $1" >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
errr() {
|
||||||
|
echo "ERRR: $1" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
note() {
|
||||||
|
echo "NOTE: $1" >&2
|
||||||
|
}
|
||||||
|
|
||||||
url_src_dst_vers="$(url_src_dst_vers "$@")"
|
url_src_dst_vers="$(url_src_dst_vers "$@")"
|
||||||
|
|
||||||
volumes=""
|
volumes=""
|
||||||
@@ -444,13 +528,14 @@ POSIX_HERESTRING
|
|||||||
|
|
||||||
if [ "${_url}" != "arbitrary" ]; then
|
if [ "${_url}" != "arbitrary" ]; then
|
||||||
if [ ! -f "${_src}/_index.md" ]; then
|
if [ ! -f "${_src}/_index.md" ]; then
|
||||||
echo "ERRR: Index file '${_src}/_index.md' does not exist." >&2
|
errr "Index file '${_src}/_index.md' does not exist."
|
||||||
echo "Is '${_src}' the correct source directory?" >&2
|
note "Is '${_src}' the correct source directory?"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "DEBG: Mounting '${_src}' at container path '${_dst}'" >&2
|
debg "DEBG: Mounting '${_src}' at container path '${_dst}'"
|
||||||
|
|
||||||
if [ -z "${volumes}" ]; then
|
if [ -z "${volumes}" ]; then
|
||||||
volumes="--volume=${_src}:${_dst}"
|
volumes="--volume=${_src}:${_dst}"
|
||||||
else
|
else
|
||||||
@@ -476,35 +561,35 @@ case "${image}" in
|
|||||||
proj="$(new_proj "$1")"
|
proj="$(new_proj "$1")"
|
||||||
echo
|
echo
|
||||||
"${PODMAN}" run \
|
"${PODMAN}" run \
|
||||||
--init \
|
--init \
|
||||||
--interactive \
|
--interactive \
|
||||||
--name "${DOCS_CONTAINER}" \
|
--name "${DOCS_CONTAINER}" \
|
||||||
--platform linux/amd64 \
|
--platform linux/amd64 \
|
||||||
--rm \
|
--rm \
|
||||||
--tty \
|
--tty \
|
||||||
${volumes} \
|
${volumes} \
|
||||||
"${DOCS_IMAGE}" \
|
"${DOCS_IMAGE}" \
|
||||||
"--include=${DOC_VALIDATOR_INCLUDE}" \
|
"--include=${DOC_VALIDATOR_INCLUDE}" \
|
||||||
"--skip-checks=${DOC_VALIDATOR_SKIP_CHECKS}" \
|
"--skip-checks=${DOC_VALIDATOR_SKIP_CHECKS}" \
|
||||||
/hugo/content/docs \
|
/hugo/content/docs \
|
||||||
"$(proj_canonical "${proj}")" | sed "s#$(proj_dst "${proj}")#sources#"
|
"$(proj_canonical "${proj}")" | sed "s#$(proj_dst "${proj}")#sources#"
|
||||||
;;
|
;;
|
||||||
'grafana/vale')
|
'grafana/vale')
|
||||||
proj="$(new_proj "$1")"
|
proj="$(new_proj "$1")"
|
||||||
echo
|
echo
|
||||||
"${PODMAN}" run \
|
"${PODMAN}" run \
|
||||||
--init \
|
--init \
|
||||||
--interactive \
|
--interactive \
|
||||||
--name "${DOCS_CONTAINER}" \
|
--name "${DOCS_CONTAINER}" \
|
||||||
--platform linux/amd64 \
|
--platform linux/amd64 \
|
||||||
--rm \
|
--rm \
|
||||||
--tty \
|
--tty \
|
||||||
${volumes} \
|
${volumes} \
|
||||||
"${DOCS_IMAGE}" \
|
"${DOCS_IMAGE}" \
|
||||||
"--minAlertLevel=${VALE_MINALERTLEVEL}" \
|
"--minAlertLevel=${VALE_MINALERTLEVEL}" \
|
||||||
--config=/etc/vale/.vale.ini \
|
--config=/etc/vale/.vale.ini \
|
||||||
--output=line \
|
--output=line \
|
||||||
/hugo/content/docs | sed "s#$(proj_dst "${proj}")#sources#"
|
/hugo/content/docs | sed "s#$(proj_dst "${proj}")#sources#"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
tempfile="$(mktemp -t make-docs.XXX)"
|
tempfile="$(mktemp -t make-docs.XXX)"
|
||||||
@@ -534,33 +619,38 @@ EOF
|
|||||||
volumes="${volumes} --volume=${tempfile}:/entrypoint"
|
volumes="${volumes} --volume=${tempfile}:/entrypoint"
|
||||||
readonly volumes
|
readonly volumes
|
||||||
|
|
||||||
echo
|
IFS='' read -r cmd <<EOF
|
||||||
echo "Documentation will be served at the following URLs:"
|
${PODMAN} run \
|
||||||
for x in ${url_src_dst_vers}; do
|
--env=HUGO_REFLINKSERRORLEVEL=${HUGO_REFLINKSERRORLEVEL} \
|
||||||
IFS='^' read -r url _ _ <<POSIX_HERESTRING
|
--init \
|
||||||
$x
|
--interactive \
|
||||||
POSIX_HERESTRING
|
--name=${DOCS_CONTAINER} \
|
||||||
|
--platform=linux/amd64 \
|
||||||
|
--publish=${DOCS_HOST_PORT}:3002 \
|
||||||
|
--publish=3003:3003 \
|
||||||
|
--rm \
|
||||||
|
--tty \
|
||||||
|
${volumes} \
|
||||||
|
${DOCS_IMAGE} \
|
||||||
|
/entrypoint
|
||||||
|
EOF
|
||||||
|
await_build http://localhost:3003 &
|
||||||
|
|
||||||
if [ -n "${url}" ]; then
|
if [ -n "${DEBUG}" ]; then
|
||||||
if [ "${_url}" != "arbitrary" ]; then
|
${cmd}
|
||||||
echo " ${url}"
|
else
|
||||||
fi
|
${cmd} 2>&1| sed \
|
||||||
fi
|
-e '/Web Server is available at http:\/\/localhost:3003\/ (bind address 0.0.0.0)/ d' \
|
||||||
done
|
-e '/^hugo server/ d' \
|
||||||
|
-e '/fatal: not a git repository (or any parent up to mount point \/)/ d' \
|
||||||
echo
|
-e '/Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)./ d' \
|
||||||
"${PODMAN}" run \
|
-e "/Makefile:[0-9]*: warning: overriding recipe for target 'docs'/ d" \
|
||||||
--env "HUGO_REFLINKSERRORLEVEL=${HUGO_REFLINKSERRORLEVEL}" \
|
-e "/docs.mk:[0-9]*: warning: ignoring old recipe for target 'docs'/ d" \
|
||||||
--init \
|
-e '/\/usr\/bin\/make -j 2 proxy hserver-docs HUGO_PORT=3003/ d' \
|
||||||
--interactive \
|
-e '/website-proxy/ d' \
|
||||||
--name "${DOCS_CONTAINER}" \
|
-e '/rm -rf dist*/ d' \
|
||||||
--platform linux/amd64 \
|
-e '/Press Ctrl+C to stop/ d' \
|
||||||
--publish "${DOCS_HOST_PORT}:3002" \
|
-e '/make/ d' || echo
|
||||||
--publish "3003:3003" \
|
fi
|
||||||
--rm \
|
|
||||||
--tty \
|
|
||||||
${volumes} \
|
|
||||||
"${DOCS_IMAGE}" \
|
|
||||||
/entrypoint
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -39,12 +39,16 @@ title: Grafana documentation
|
|||||||
<img src="/static/img/logos/logo-docker.svg">
|
<img src="/static/img/logos/logo-docker.svg">
|
||||||
<h5>Run Docker image</h5>
|
<h5>Run Docker image</h5>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="{{< relref "setup-grafana/installation/kubernetes/" >}}" class="nav-cards__item nav-cards__item--install">
|
||||||
|
<img src="/static/img/logos/logo-kubernetes.svg">
|
||||||
|
<h5>Run on Kubernetes</h5>
|
||||||
|
</a>
|
||||||
<a href="https://grafana.com/docs/grafana-cloud/" class="nav-cards__item nav-cards__item--install">
|
<a href="https://grafana.com/docs/grafana-cloud/" class="nav-cards__item nav-cards__item--install">
|
||||||
<div class="nav-cards__icon fa fa-cloud">
|
<div class="nav-cards__icon fa fa-cloud">
|
||||||
</div>
|
</div>
|
||||||
<h5>Grafana Cloud</h5>
|
<h5>Grafana Cloud</h5>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://grafana.com/grafana/nightly?edition=oss" class="nav-cards__item nav-cards__item--install">
|
<a href="https://grafana.com/grafana/download/nightly?edition=oss" class="nav-cards__item nav-cards__item--install">
|
||||||
<div class="nav-cards__icon fa fa-moon-o">
|
<div class="nav-cards__icon fa fa-moon-o">
|
||||||
</div>
|
</div>
|
||||||
<h5>Nightly builds</h5>
|
<h5>Nightly builds</h5>
|
||||||
@@ -74,8 +78,8 @@ title: Grafana documentation
|
|||||||
<h4>Provisioning</h4>
|
<h4>Provisioning</h4>
|
||||||
<p>Learn how to automate your Grafana configuration.</p>
|
<p>Learn how to automate your Grafana configuration.</p>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{< relref "whatsnew/whats-new-in-v10-0/" >}}" class="nav-cards__item nav-cards__item--guide">
|
<a href="{{< relref "whatsnew/whats-new-in-v10-1/" >}}" class="nav-cards__item nav-cards__item--guide">
|
||||||
<h4>What's new in v10</h4>
|
<h4>What's new in v10.1</h4>
|
||||||
<p>Explore the features and enhancements in the latest release.</p>
|
<p>Explore the features and enhancements in the latest release.</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ Complete the following steps to migrate from API keys to service accounts for AP
|
|||||||
This action generates a service account token.
|
This action generates a service account token.
|
||||||
|
|
||||||
1. Store the ID and secret that the system returns to you.
|
1. Store the ID and secret that the system returns to you.
|
||||||
1. Pass the token in the `Authrorization` header, prefixed with `Bearer`.
|
1. Pass the token in the `Authorization` header, prefixed with `Bearer`.
|
||||||
|
|
||||||
This action authenticates API requests.
|
This action authenticates API requests.
|
||||||
|
|
||||||
|
|||||||
15
docs/sources/administration/back-up-grafana/index.md
Normal file
15
docs/sources/administration/back-up-grafana/index.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
description: Describes how to back up a locally provisioned Grafana instance.
|
||||||
|
keywords:
|
||||||
|
- grafana
|
||||||
|
- backup
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
title: Back up Grafana
|
||||||
|
weight: 80
|
||||||
|
menuTitle: Back up Grafana
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< docs/shared lookup="back-up/back-up-grafana.md" source="grafana" version="<GRAFANA VERSION>" >}}
|
||||||
@@ -14,25 +14,30 @@ weight: 900
|
|||||||
|
|
||||||
You can create interactive links for Explore visualizations to run queries related to presented data by setting up Correlations.
|
You can create interactive links for Explore visualizations to run queries related to presented data by setting up Correlations.
|
||||||
|
|
||||||
A correlation defines how data in one [data source]({{< relref "/docs/grafana/latest/datasources/" >}}) is used to query data in another data source. Some examples:
|
A correlation defines how data in one [data source]({{< relref "../../datasources" >}}) is used to query data in another data source.
|
||||||
|
Some examples:
|
||||||
|
|
||||||
- an application name returned in a logs data source can be used to query metrics related to that application in a metrics data source, or
|
- an application name returned in a logs data source can be used to query metrics related to that application in a metrics data source, or
|
||||||
- a user name returned by an SQL data source can be used to query logs related to that particular user in a logs data source
|
- a user name returned by an SQL data source can be used to query logs related to that particular user in a logs data source
|
||||||
|
|
||||||
[Explore]({{< relref "/docs/grafana/latest/explore/" >}}) takes user-defined correlations to display links inside the visualizations. You can click on a link to run the related query and see results in [Explore Split View]({{< relref "/docs/grafana/latest/explore/#split-and-compare" >}}).
|
[Explore]({{< relref "../../explore" >}}) takes user-defined correlations to display links inside the visualizations.
|
||||||
|
You can click on a link to run the related query and see results in [Explore Split View]({{< relref "../../explore#split-and-compare" >}}).
|
||||||
|
|
||||||
Explore visualizations that currently support showing links based on correlations:
|
Explore visualizations that currently support showing links based on correlations:
|
||||||
|
|
||||||
- [Logs Panel]({{< relref "./use-correlations-in-visualizations#correlations-in-logs-panel">}})
|
- [Logs Panel]({{< relref "./use-correlations-in-visualizations#correlations-in-logs-panel">}})
|
||||||
- [Table]({{< relref "./use-correlations-in-visualizations#correlations-in-table">}})
|
- [Table]({{< relref "./use-correlations-in-visualizations#correlations-in-table">}})
|
||||||
|
|
||||||
You can configure correlations using [Administration > Correlation page]({{< relref "/docs/grafana/latest/administration/" >}}) or with [provisioning]({{< relref "/docs/grafana/latest/administration/provisioning" >}}).
|
You can configure correlations using the **Administration > Correlation** page in Grafana or with [provisioning]({{< relref "../provisioning" >}}).
|
||||||
|
|
||||||
> **Note:** Correlations are available in Grafana 10.0+ as an opt-in beta feature. Modify Grafana [configuration file]({{< relref "/docs/grafana/latest/setup-grafana/configure-grafana/#configuration-file-location" >}}) to enable the `correlations` [feature toggle]({{< relref "/docs/grafana/latest/setup-grafana/configure-grafana/#feature_toggles" >}}) to use it.
|
{{% admonition type="note" %}}
|
||||||
|
Correlations are available in Grafana 10.0+ as an opt-in beta feature.
|
||||||
|
Modify the Grafana [configuration file]({{< relref "../../setup-grafana/configure-grafana#configuration-file-location" >}}) to enable the `correlations` [feature toggle]({{< relref "../../setup-grafana/configure-grafana#feature_toggles" >}}) to use it.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Example of how links work in Explore once set up
|
## Example of how links work in Explore once set up
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/correlations/correlations-in-explore-10-0.gif" caption="Correlations links in Explore" >}}
|
{{< figure src="/static/img/docs/correlations/correlations-in-explore-10-0.gif" alt="Demonstration of following a correlation link in Grafana Explore" caption="Correlations links in Explore" >}}
|
||||||
|
|
||||||
See also:
|
See also:
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ weight: 30
|
|||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
Adding access to create correlations for [Viewers and Editors]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/" >}}) is available with [Role-based access control]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/access-control/" >}}).
|
Adding access to create correlations for [Viewers and Editors]({{< relref "../../../administration/roles-and-permissions" >}}) is available with [Role-based access control]({{< relref "../../../administration/roles-and-permissions/access-control" >}}).
|
||||||
|
|
||||||
## Add permissions to create correlations
|
## Add permissions to create correlations
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,9 @@ Learn how to create correlations using the [Administration page]({{< relref "./c
|
|||||||
|
|
||||||
## Source data source and result field
|
## Source data source and result field
|
||||||
|
|
||||||
Links are shown in Explore visualizations for the results from the correlation’s source data source. A link is assigned to one of the fields from the result provided in the correlation configuration (the results field). Each visualization displays fields with links in a different way ([Correlations in Logs Panel]({{< relref "./use-correlations-in-visualizations#correlations-in-logs-panel">}}) and see [Correlations in Table]({{< relref "./use-correlations-in-visualizations#correlations-in-table">}}))
|
Links are shown in Explore visualizations for the results from the correlation’s source data source.
|
||||||
|
A link is assigned to one of the fields from the result provided in the correlation configuration (the results field).
|
||||||
|
Each visualization displays fields with links in a different way ([Correlations in Logs Panel]({{< relref "./use-correlations-in-visualizations#correlations-in-logs-panel">}}) and see [Correlations in Table]({{< relref "./use-correlations-in-visualizations#correlations-in-table">}})).
|
||||||
|
|
||||||
## Target query
|
## Target query
|
||||||
|
|
||||||
@@ -41,9 +43,11 @@ The target query is run when a link is clicked in the visualization. You can use
|
|||||||
|
|
||||||
### Correlation Variables
|
### Correlation Variables
|
||||||
|
|
||||||
You can use variables inside the target query to access the source data related to the query. Correlations use [Grafana variable syntax]({{< relref "/docs/grafana/latest/dashboards/variables/variable-syntax" >}}). Variables are filled with values from the source results when the link is clicked. There are two types of variables you can use:
|
You can use variables inside the target query to access the source data related to the query.
|
||||||
|
Correlations use [Grafana variable syntax]({{< relref "../../../dashboards/variables/variable-syntax" >}}).
|
||||||
|
Variables are filled with values from the source results when the link is clicked. There are two types of variables you can use:
|
||||||
|
|
||||||
- [field variables]({{< relref "/docs/grafana/latest/panels-visualizations/configure-data-links#field-variables" >}}) (allows to access field values and labels)
|
- [field variables]({{< relref "../../../panels-visualizations/configure-data-links#field-variables" >}}) (allows to access field values and labels)
|
||||||
- correlation variables (allows to access field values and transformations)
|
- correlation variables (allows to access field values and transformations)
|
||||||
|
|
||||||
Example: If source results contain a field called “employee”, the value of the field can be accessed with:
|
Example: If source results contain a field called “employee”, the value of the field can be accessed with:
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ weight: 20
|
|||||||
|
|
||||||
# Permissions
|
# Permissions
|
||||||
|
|
||||||
Users with [Viewer base role]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/" >}}) or with [datasources:query RBAC role]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/access-control/" >}}) can:
|
Users with [Viewer base role]({{< relref "../../../administration/roles-and-permissions" >}}) or with [datasources:query RBAC role]({{< relref "../../../administration/roles-and-permissions/access-control" >}}) can:
|
||||||
|
|
||||||
- Use correlations in Explore’s visualizations
|
- Use correlations in Explore’s visualizations.
|
||||||
- List all available correlations in read-only mode
|
- List all available correlations in read-only mode.
|
||||||
|
|
||||||
Users with [Admin base role]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/" >}}) or with [datasources:write RBAC role]({{< relref "/docs/grafana/latest/administration/roles-and-permissions/access-control/" >}}) can:
|
Users with [Admin base role]({{< relref "../../../administration/roles-and-permissions" >}}) or with [datasources:write RBAC role]({{< relref "../../../administration/roles-and-permissions/access-control" >}}) can:
|
||||||
|
|
||||||
- Add, edit and delete correlations
|
- Add, edit and delete correlations.
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ Description of provisioning properties:
|
|||||||
: Correlation type. “query” is the only supported type at the moment
|
: Correlation type. “query” is the only supported type at the moment
|
||||||
|
|
||||||
**config.target**
|
**config.target**
|
||||||
: [Target query model]({{< relref "#determine-target-query-model-structure" >}})
|
: [Target query model](#determine-target-query-model-structure)
|
||||||
|
|
||||||
**config.field**
|
**config.field**
|
||||||
: Name of the field where link is shown
|
: Name of the field where link is shown
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ weight: 70
|
|||||||
1. Open Explore.
|
1. Open Explore.
|
||||||
1. Select a data source that you chose as the source data source of the correlation.
|
1. Select a data source that you chose as the source data source of the correlation.
|
||||||
1. Run a query that results in data containing fields required to build variables in the target query.
|
1. Run a query that results in data containing fields required to build variables in the target query.
|
||||||
1. Links are added to cell rows in the column representing the field with the assigned link ([the results field]({{< relref "/docs/grafana/latest/administration/correlations/correlation-configuration#source-data-source-and-result-field" >}}).
|
1. Links are added to cell rows in the column representing the field with the assigned link ([the results field]({{< relref "../correlation-configuration#source-data-source-and-result-field" >}}).
|
||||||
1. Cells containing multiple links accessible with a context menu.
|
1. Cells containing multiple links accessible with a context menu.
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/correlations/correlations-in-table-10-0.png" max-width="600px" caption="Correlations links in table" >}}
|
{{< figure src="/static/img/docs/correlations/correlations-in-table-10-0.png" max-width="600px" caption="Correlations links in table" >}}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ Instructions below show how to set up a link that can run metrics query for the
|
|||||||
- Required correlation type (query)
|
- Required correlation type (query)
|
||||||
- Target query matching test data source model
|
- Target query matching test data source model
|
||||||
- “App metrics” correlation contains the following configuration:
|
- “App metrics” correlation contains the following configuration:
|
||||||
- Alias is set to ${application} variable (note that in provisioning files $ is used to access environment variables so it has to be [escaped]({{< relref "/docs/grafana/latest/administration/provisioning#using-environment-variables" >}})).
|
- Alias is set to ${application} variable (note that in provisioning files $ is used to access environment variables so it has to be [escaped]({{< relref "../../../administration/provisioning#using-environment-variables" >}})).
|
||||||
- Regular expression transformation is created to extract values from “msg” field
|
- Regular expression transformation is created to extract values from “msg” field
|
||||||
- Regular expression transformation is used to capture the application name from the full name of the service stored in the log line.
|
- Regular expression transformation is used to capture the application name from the full name of the service stored in the log line.
|
||||||
- The output of the transformation is mapped to a variable called “application”.
|
- The output of the transformation is mapped to a variable called “application”.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ For links to data source-specific documentation, see [Data sources]({{< relref "
|
|||||||
You can configure data source permissions to allow or deny certain users the ability to query or edit a data source. Each data source’s configuration includes a Permissions tab where you can restrict data source permissions to specific users, teams, or roles.
|
You can configure data source permissions to allow or deny certain users the ability to query or edit a data source. Each data source’s configuration includes a Permissions tab where you can restrict data source permissions to specific users, teams, or roles.
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
{{% admonition type="note" %}}
|
||||||
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Pro and Advanced](/docs/grafana-cloud).
|
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
{{% /admonition %}}
|
{{% /admonition %}}
|
||||||
|
|
||||||
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just queries that exist on dashboards to which they have access. Additionally, by default, data sources can be edited by the user who created the data source, as well as users with the `Admin` role.
|
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just queries that exist on dashboards to which they have access. Additionally, by default, data sources can be edited by the user who created the data source, as well as users with the `Admin` role.
|
||||||
@@ -89,12 +89,12 @@ You can assign data source permissions to users, teams, and roles which will all
|
|||||||
|
|
||||||
When you enable query and resource caching, Grafana temporarily stores the results of data source queries and resource requests. When you or another user submit the same query or resource request again, the results will come back from the cache instead of from the data source.
|
When you enable query and resource caching, Grafana temporarily stores the results of data source queries and resource requests. When you or another user submit the same query or resource request again, the results will come back from the cache instead of from the data source.
|
||||||
|
|
||||||
When using Grafana, a query pertains to a request for data frames to be modified or displayed. A resource relates to any HTTP requests made by a plugin, such as the Amazon Timestream plugin requesting a list of available databases from AWS. For more information on data source queries and resources, please see the developers page on [backend plugins]({{< relref "../../developers/plugins/introduction-to-plugin-development/backend/" >}}).
|
When using Grafana, a query pertains to a request for data frames to be modified or displayed. A resource relates to any HTTP requests made by a plugin, such as the Amazon Timestream plugin requesting a list of available databases from AWS. For more information on data source queries and resources, please see the developers page on [backend plugins](/developers/plugin-tools/introduction/backend-plugins).
|
||||||
|
|
||||||
The caching feature works for **all** backend data sources. You can enable the cache globally in Grafana's [configuration]({{< relref "../../setup-grafana/configure-grafana/enterprise-configuration/#caching" >}}), and configure a cache duration (also called Time to Live, or TTL) for each data source individually.
|
The caching feature works for **all** backend data sources. You can enable the cache globally in Grafana's [configuration]({{< relref "../../setup-grafana/configure-grafana/enterprise-configuration/#caching" >}}), and configure a cache duration (also called Time to Live, or TTL) for each data source individually.
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
{{% admonition type="note" %}}
|
||||||
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Pro and Advanced](/docs/grafana-cloud/).
|
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud/).
|
||||||
{{% /admonition %}}
|
{{% /admonition %}}
|
||||||
|
|
||||||
The following cache backend options are available: in-memory, Redis, and Memcached.
|
The following cache backend options are available: in-memory, Redis, and Memcached.
|
||||||
@@ -124,7 +124,7 @@ Query caching works for Grafana's [built-in data sources]({{< relref "../../data
|
|||||||
To verify that a data source works with query caching, follow the [instructions below](#enable-and-configure-query-caching) to **Enable and Configure query caching**. If caching is enabled in Grafana but the Caching tab is not visible for the given data source, then query caching is not available for that data source.
|
To verify that a data source works with query caching, follow the [instructions below](#enable-and-configure-query-caching) to **Enable and Configure query caching**. If caching is enabled in Grafana but the Caching tab is not visible for the given data source, then query caching is not available for that data source.
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
{{% admonition type="note" %}}
|
||||||
Some data sources, such as Elasticsearch, Prometheus, and Loki, cache queries themselves, so Grafana _query_ caching does not significantly improve performance. However, _resource_ caching may help. See the developers page on [plugin resources]({{< relref "../../developers/plugins/introduction-to-plugin-development/backend/#resources" >}}) for details.
|
Some data sources, such as Elasticsearch, Prometheus, and Loki, cache queries themselves, so Grafana _query_ caching does not significantly improve performance. However, _resource_ caching may help. See the developers page on [plugin resources](/developers/plugin-tools/introduction/backend-plugins#resources) for details.
|
||||||
{{% /admonition %}}
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Enable and configure query caching
|
### Enable and configure query caching
|
||||||
@@ -195,4 +195,4 @@ For more documentation on a specific data source plugin's features, including it
|
|||||||
|
|
||||||
### Create a data source plugin
|
### Create a data source plugin
|
||||||
|
|
||||||
To build your own data source plugin, refer to the ["Build a data source plugin"](/tutorials/build-a-data-source-plugin/) tutorial and our documentation about [building a plugin](/developers/plugins/).
|
To build your own data source plugin, refer to the ["Build a data source plugin"](/developers/plugin-tools/tutorials/build-a-data-source-plugin) tutorial and our documentation about [building a plugin](/developers/plugin-tools).
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ weight: 600
|
|||||||
|
|
||||||
Besides the wide range of visualizations and data sources that are available immediately after you install Grafana, you can extend your Grafana experience with _plugins_.
|
Besides the wide range of visualizations and data sources that are available immediately after you install Grafana, you can extend your Grafana experience with _plugins_.
|
||||||
|
|
||||||
You can [install]({{< relref "#install-a-plugin" >}}) one of the plugins built by the Grafana community, or [build one yourself]({{< relref "../../developers/plugins/" >}}).
|
You can [install](#install-a-plugin) one of the plugins built by the Grafana community, or [build one yourself](/developers/plugin-tools).
|
||||||
|
|
||||||
Grafana supports three types of plugins: [panels](/grafana/plugins?type=panel), [data sources](/plugins?type=datasource), and [apps](/grafana/plugins?type=app).
|
Grafana supports three types of plugins: [panels](/grafana/plugins?type=panel), [data sources](/plugins?type=datasource), and [apps](/grafana/plugins?type=app).
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ Applications, or _app plugins_, bundle data sources and panels to provide a cohe
|
|||||||
|
|
||||||
Apps can also add custom pages for things like control panels.
|
Apps can also add custom pages for things like control panels.
|
||||||
|
|
||||||
Use app plugins when you want to create an custom out-of-the-box monitoring experience.
|
Use app plugins when you want an out-of-the-box monitoring experience.
|
||||||
|
|
||||||
### Managing app plugins access
|
### Managing app plugins access
|
||||||
|
|
||||||
@@ -100,6 +100,7 @@ To browse for available plugins:
|
|||||||
To install a plugin:
|
To install a plugin:
|
||||||
|
|
||||||
1. In Grafana, click **Administration > Plugins** in the side navigation menu to view installed plugins.
|
1. In Grafana, click **Administration > Plugins** in the side navigation menu to view installed plugins.
|
||||||
|
1. Click the **All** filter to browse all available plugins.
|
||||||
1. Browse and find a plugin.
|
1. Browse and find a plugin.
|
||||||
1. Click on the plugin logo.
|
1. Click on the plugin logo.
|
||||||
1. Click **Install**.
|
1. Click **Install**.
|
||||||
@@ -171,7 +172,7 @@ Grafana also writes an error message to the server log:
|
|||||||
WARN[05-26|12:00:00] Some plugin scanning errors were found errors="plugin '<plugin id>' is unsigned, plugin '<plugin id>' has an invalid signature"
|
WARN[05-26|12:00:00] Some plugin scanning errors were found errors="plugin '<plugin id>' is unsigned, plugin '<plugin id>' has an invalid signature"
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are a plugin developer and want to know how to sign your plugin, refer to [Sign a plugin]({{< relref "../../developers/plugins/publish-a-plugin/sign-a-plugin.md" >}}).
|
If you are a plugin developer and want to know how to sign your plugin, refer to [Sign a plugin](/developers/plugin-tools/publish-a-plugin/sign-a-plugin).
|
||||||
|
|
||||||
| Signature status | Description |
|
| Signature status | Description |
|
||||||
| ------------------ | ------------------------------------------------------------------------------- |
|
| ------------------ | ------------------------------------------------------------------------------- |
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ Currently we do not provide any scripts/manifests for configuring Grafana. Rathe
|
|||||||
| Tool | Project |
|
| Tool | Project |
|
||||||
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
||||||
| Puppet | [https://forge.puppet.com/puppet/grafana](https://forge.puppet.com/puppet/grafana) |
|
| Puppet | [https://forge.puppet.com/puppet/grafana](https://forge.puppet.com/puppet/grafana) |
|
||||||
| Ansible | [https://github.com/cloudalchemy/ansible-grafana](https://github.com/cloudalchemy/ansible-grafana) |
|
| Ansible | [https://github.com/grafana/grafana-ansible-collection](https://github.com/grafana/grafana-ansible-collection) |
|
||||||
| Chef | [https://github.com/sous-chefs/chef-grafana](https://github.com/sous-chefs/chef-grafana) |
|
| Chef | [https://github.com/sous-chefs/chef-grafana](https://github.com/sous-chefs/chef-grafana) |
|
||||||
| Saltstack | [https://github.com/salt-formulas/salt-formula-grafana](https://github.com/salt-formulas/salt-formula-grafana) |
|
| Saltstack | [https://github.com/salt-formulas/salt-formula-grafana](https://github.com/salt-formulas/salt-formula-grafana) |
|
||||||
| Jsonnet | [https://github.com/grafana/grafonnet-lib/](https://github.com/grafana/grafonnet-lib/) |
|
| Jsonnet | [https://github.com/grafana/grafonnet-lib/](https://github.com/grafana/grafonnet-lib/) |
|
||||||
@@ -371,8 +371,8 @@ By default, Grafana deletes dashboards in the database if the file is removed. Y
|
|||||||
|
|
||||||
{{% admonition type="note" %}}
|
{{% admonition type="note" %}}
|
||||||
Provisioning allows you to overwrite existing dashboards
|
Provisioning allows you to overwrite existing dashboards
|
||||||
which leads to problems if you re-use settings that are supposed to be unique.
|
which leads to problems if you reuse settings that are supposed to be unique.
|
||||||
Be careful not to re-use the same `title` multiple times within a folder
|
Be careful not to reuse the same `title` multiple times within a folder
|
||||||
or `uid` within the same installation as this will cause weird behaviors.
|
or `uid` within the same installation as this will cause weird behaviors.
|
||||||
{{% /admonition %}}
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ The following tables list permissions associated with basic and fixed roles.
|
|||||||
|
|
||||||
### Alerting roles
|
### Alerting roles
|
||||||
|
|
||||||
If alerting is [enabled]({{< relref "../../../../alerting/set-up/migrating-alerts/opt-out/" >}}), you can use predefined roles to manage user access to alert rules, alert instances, and alert notification settings and create custom roles to limit user access to alert rules in a folder.
|
If alerting is [enabled]({{< relref "../../../../alerting/set-up/migrating-alerts" >}}), you can use predefined roles to manage user access to alert rules, alert instances, and alert notification settings and create custom roles to limit user access to alert rules in a folder.
|
||||||
|
|
||||||
Access to Grafana alert rules is an intersection of many permissions:
|
Access to Grafana alert rules is an intersection of many permissions:
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ filters = accesscontrol:debug accesscontrol.evaluator:debug dashboard.permission
|
|||||||
## Enable audit logging
|
## Enable audit logging
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
{{% admonition type="note" %}}
|
||||||
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) version 7.3 and later, and [Grafana Cloud](/docs/grafana-cloud).
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) version 7.3 and later, and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
{{% /admonition %}}
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can enable auditing in the Grafana configuration file.
|
You can enable auditing in the Grafana configuration file.
|
||||||
|
|||||||
@@ -92,9 +92,9 @@ Here are some tips on how to create an effective alert management set up for you
|
|||||||
- [Introduction to Alerting][fundamentals]
|
- [Introduction to Alerting][fundamentals]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alerting-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules"
|
[alerting-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules"
|
||||||
[alerting-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules"
|
[alerting-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules"
|
||||||
|
|
||||||
[fundamentals]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals"
|
[fundamentals]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals"
|
||||||
[fundamentals]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals"
|
[fundamentals]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -41,21 +41,18 @@ For information on how to configure contact points, see [Configure contact point
|
|||||||
For information on how to configure notification policies, see [Configure notification policies][create-notification-policy].
|
For information on how to configure notification policies, see [Configure notification policies][create-notification-policy].
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[create-mimir-loki-managed-rule]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/create-mimir-loki-managed-rule"
|
[create-mimir-loki-managed-rule]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-mimir-loki-managed-rule"
|
||||||
[create-mimir-loki-managed-rule]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-mimir-loki-managed-rule"
|
[create-mimir-loki-managed-rule]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-mimir-loki-managed-rule"
|
||||||
|
|
||||||
[create-mimir-loki-managed-recording-rule]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/create-mimir-loki-managed-recording-rule"
|
[create-mimir-loki-managed-recording-rule]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-mimir-loki-managed-recording-rule"
|
||||||
[create-mimir-loki-managed-recording-rule]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-mimir-loki-managed-recording-rule"
|
[create-mimir-loki-managed-recording-rule]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-mimir-loki-managed-recording-rule"
|
||||||
|
|
||||||
[edit-mimir-loki-namespace-group]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/edit-mimir-loki-namespace-group"
|
[create-grafana-managed-rule]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-grafana-managed-rule"
|
||||||
[edit-mimir-loki-namespace-group]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/edit-mimir-loki-namespace-group"
|
|
||||||
|
|
||||||
[create-grafana-managed-rule]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/create-grafana-managed-rule"
|
|
||||||
[create-grafana-managed-rule]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-grafana-managed-rule"
|
[create-grafana-managed-rule]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-grafana-managed-rule"
|
||||||
|
|
||||||
[manage-contact-points]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/manage-contact-points"
|
[manage-contact-points]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/manage-contact-points"
|
||||||
[manage-contact-points]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/manage-contact-points"
|
[manage-contact-points]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/manage-contact-points"
|
||||||
|
|
||||||
[create-notification-policy]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/create-notification-policy"
|
[create-notification-policy]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-notification-policy"
|
||||||
[create-notification-policy]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-notification-policy"
|
[create-notification-policy]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-notification-policy"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ Multiple alert instances can be created as a result of one alert rule (also know
|
|||||||
|
|
||||||
Grafana managed alert rules can only be edited or deleted by users with Edit permissions for the folder storing the rules.
|
Grafana managed alert rules can only be edited or deleted by users with Edit permissions for the folder storing the rules.
|
||||||
|
|
||||||
|
If you delete an alerting resource created in the UI, you can no longer retrieve it.
|
||||||
|
To make a backup of your configuration and to be able to restore deleted alerting resources, create your alerting resources using file provisioning, Terraform, or the Alerting API.
|
||||||
|
|
||||||
Watch this video to learn more about creating alert rules: {{< vimeo 720001934 >}}
|
Watch this video to learn more about creating alert rules: {{< vimeo 720001934 >}}
|
||||||
|
|
||||||
In the following sections, we’ll guide you through the process of creating your Grafana-managed alert rules.
|
In the following sections, we’ll guide you through the process of creating your Grafana-managed alert rules.
|
||||||
@@ -65,7 +68,10 @@ Define a query to get the data you want to measure and a condition that needs to
|
|||||||
1. Add one or more [expressions][expression-queries].
|
1. Add one or more [expressions][expression-queries].
|
||||||
a. For each expression, select either **Classic condition** to create a single alert rule, or choose from the **Math**, **Reduce**, and **Resample** options to generate separate alert for each series.
|
a. For each expression, select either **Classic condition** to create a single alert rule, or choose from the **Math**, **Reduce**, and **Resample** options to generate separate alert for each series.
|
||||||
|
|
||||||
For details on these options, see [Single and multi dimensional rule]
|
{{% admonition type="note" %}}
|
||||||
|
When using Prometheus, you can use an instant vector and built-in functions, so you don't need to add additional expressions.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
b. Click **Preview** to verify that the expression is successful.
|
b. Click **Preview** to verify that the expression is successful.
|
||||||
|
|
||||||
1. Click **Set as alert condition** on the query or expression you want to set as your alert condition.
|
1. Click **Set as alert condition** on the query or expression you want to set as your alert condition.
|
||||||
@@ -91,11 +97,11 @@ To do this, you need to make sure that your alert rule is in the right evaluatio
|
|||||||
|
|
||||||
1. Turn on pause alert notifications, if required.
|
1. Turn on pause alert notifications, if required.
|
||||||
|
|
||||||
**Note**:
|
{{< admonition type="note" >}}
|
||||||
|
You can pause alert rule evaluation to prevent noisy alerting while tuning your alerts.
|
||||||
Pause alert rule evaluation to prevent noisy alerting while tuning your alerts. Pausing stops alert rule evaluation and does not create any alert instances. This is different to mute timings, which stop notifications from being delivered, but still allow for alert rule evaluation and the creation of alert instances.
|
Pausing stops alert rule evaluation and doesn't create any alert instances.
|
||||||
|
This is different to mute timings, which stop notifications from being delivered, but still allows for alert rule evaluation and the creation of alert instances.
|
||||||
You can pause alert rule evaluation to prevent noisy alerting while tuning your alerts. Pausing stops alert rule evaluation and does not create any alert instances. This is different to mute timings, which stop notifications from being delivered, but still allow for alert rule evaluation and the creation of alert instances.
|
{{< /admonition >}}
|
||||||
|
|
||||||
1. In **Configure no data and error handling**, configure alerting behavior in the absence of data.
|
1. In **Configure no data and error handling**, configure alerting behavior in the absence of data.
|
||||||
|
|
||||||
@@ -194,21 +200,21 @@ An alert instance is considered stale if its dimension or series has disappeared
|
|||||||
Stale alert instances that are in the **Alerting**/**NoData**/**Error** states are automatically marked as **Resolved** and the grafana_state_reason annotation is added to the alert instance with the reason **MissingSeries**.
|
Stale alert instances that are in the **Alerting**/**NoData**/**Error** states are automatically marked as **Resolved** and the grafana_state_reason annotation is added to the alert instance with the reason **MissingSeries**.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[add-a-query]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/panels-visualizations/query-transform-data#add-a-query"
|
[add-a-query]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data#add-a-query"
|
||||||
[add-a-query]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/panels-visualizations/query-transform-data#add-a-query"
|
[add-a-query]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data#add-a-query"
|
||||||
|
|
||||||
[alerting-on-numeric-data]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/evaluate-grafana-alerts#alerting-on-numeric-data-1")
|
[alerting-on-numeric-data]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/evaluate-grafana-alerts#alerting-on-numeric-data-1"
|
||||||
[alerting-on-numeric-data]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/evaluate-grafana-alerts#alerting-on-numeric-data-1")
|
[alerting-on-numeric-data]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/evaluate-grafana-alerts#alerting-on-numeric-data-1"
|
||||||
|
|
||||||
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label"
|
||||||
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
||||||
|
|
||||||
[expression-queries]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/panels-visualizations/query-transform-data/expression-queries"
|
[expression-queries]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data/expression-queries"
|
||||||
[expression-queries]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/panels-visualizations/query-transform-data/expression-queries"
|
[expression-queries]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data/expression-queries"
|
||||||
|
|
||||||
[fundamentals]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals"
|
[fundamentals]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals"
|
||||||
[fundamentals]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals"
|
[fundamentals]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals"
|
||||||
|
|
||||||
[time-units-and-relative-ranges]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/dashboards/use-dashboards#time-units-and-relative-ranges"
|
[time-units-and-relative-ranges]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/dashboards/use-dashboards#time-units-and-relative-ranges"
|
||||||
[time-units-and-relative-ranges]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/dashboards/use-dashboards#time-units-and-relative-ranges"
|
[time-units-and-relative-ranges]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/dashboards/use-dashboards#time-units-and-relative-ranges"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -58,19 +58,16 @@ To create recording rules, follow these steps.
|
|||||||
- Select your Loki or Prometheus data source.
|
- Select your Loki or Prometheus data source.
|
||||||
- Enter a query.
|
- Enter a query.
|
||||||
1. Add namespace and group.
|
1. Add namespace and group.
|
||||||
- From the **Namespace** dropdown, select an existing rule namespace or add a new one. Namespaces can contain one or more rule groups and only have an organizational purpose. For more information, see [Grafana Mimir or Loki rule groups and namespaces][edit-mimir-loki-namespace-group].
|
- From the **Namespace** dropdown, select an existing rule namespace or add a new one. Namespaces can contain one or more rule groups and only have an organizational purpose.
|
||||||
- From the **Group** dropdown, select an existing group within the selected namespace or add a new one. Newly created rules are appended to the end of the group. Rules within a group are run sequentially at a regular interval, with the same evaluation time.
|
- From the **Group** dropdown, select an existing group within the selected namespace or add a new one. Newly created rules are appended to the end of the group. Rules within a group are run sequentially at a regular interval, with the same evaluation time.
|
||||||
1. Add labels.
|
1. Add labels.
|
||||||
- Add custom labels selecting existing key-value pairs from the drop down, or add new labels by entering the new key or value .
|
- Add custom labels selecting existing key-value pairs from the drop down, or add new labels by entering the new key or value .
|
||||||
1. Click **Save rule** to save the rule or **Save rule and exit** to save the rule and go back to the Alerting page.
|
1. Click **Save rule** to save the rule or **Save rule and exit** to save the rule and go back to the Alerting page.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label"
|
||||||
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
||||||
|
|
||||||
[configure-grafana]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/configure-grafana"
|
[configure-grafana]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana"
|
||||||
[configure-grafana]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/configure-grafana"
|
[configure-grafana]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana"
|
||||||
|
|
||||||
[edit-mimir-loki-namespace-group]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/edit-mimir-loki-namespace-group"
|
|
||||||
[edit-mimir-loki-namespace-group]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/edit-mimir-loki-namespace-group"
|
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ Create alert rules for an external Grafana Mimir or Loki instance that has ruler
|
|||||||
|
|
||||||
Alert rules for an external Grafana Mimir or Loki instance can be edited or deleted by users with Editor or Admin roles.
|
Alert rules for an external Grafana Mimir or Loki instance can be edited or deleted by users with Editor or Admin roles.
|
||||||
|
|
||||||
|
If you delete an alerting resource created in the UI, you can no longer retrieve it.
|
||||||
|
To make a backup of your configuration and to be able to restore deleted alerting resources, create your alerting resources using file provisioning, Terraform, or the Alerting API.
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
- Verify that you have write permission to the Prometheus or Loki data source. Otherwise, you will not be able to create or update Grafana Mimir managed alert rules.
|
- Verify that you have write permission to the Prometheus or Loki data source. Otherwise, you will not be able to create or update Grafana Mimir managed alert rules.
|
||||||
@@ -63,7 +66,10 @@ Define a query to get the data you want to measure and a condition that needs to
|
|||||||
|
|
||||||
All alert rules are managed by Grafana by default. To switch to a data source-managed alert rule, click **Switch to data source-managed alert rule**.
|
All alert rules are managed by Grafana by default. To switch to a data source-managed alert rule, click **Switch to data source-managed alert rule**.
|
||||||
|
|
||||||
1. Select a data source.
|
1. Select a data source from the drop-down list.
|
||||||
|
|
||||||
|
You can also click **Open advanced data source picker** to see more options, including adding a data source (Admins only).
|
||||||
|
|
||||||
1. Enter a PromQL or LogQL query.
|
1. Enter a PromQL or LogQL query.
|
||||||
1. Click **Preview alerts**.
|
1. Click **Preview alerts**.
|
||||||
|
|
||||||
@@ -86,7 +92,7 @@ Use alert rule evaluation to determine how frequently an alert rule should be ev
|
|||||||
|
|
||||||
## Add annotations
|
## Add annotations
|
||||||
|
|
||||||
Add [annotations][annotation-label]. to provide more context on the alert in your alert notifications.
|
Add [annotations][annotation-label] to provide more context on the alert in your alert notifications.
|
||||||
|
|
||||||
Annotations add metadata to provide more information on the alert in your alert notifications. For example, add a **Summary** annotation to tell you which value caused the alert to fire or which server it happened on.
|
Annotations add metadata to provide more information on the alert in your alert notifications. For example, add a **Summary** annotation to tell you which value caused the alert to fire or which server it happened on.
|
||||||
|
|
||||||
@@ -120,15 +126,6 @@ All alert rules and instances, irrespective of their labels, match the default n
|
|||||||
1. Click **Save rule**.
|
1. Click **Save rule**.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alerting]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting"
|
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label"
|
||||||
[alerting]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting"
|
|
||||||
|
|
||||||
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/annotation-label"
|
|
||||||
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
||||||
|
|
||||||
[edit-mimir-loki-namespace-group]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules/edit-mimir-loki-namespace-group"
|
|
||||||
[edit-mimir-loki-namespace-group]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/edit-mimir-loki-namespace-group"
|
|
||||||
|
|
||||||
[fundamentals]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals"
|
|
||||||
[fundamentals]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals"
|
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -54,10 +54,12 @@ Before Grafana v8.2, the configuration of the embedded Alertmanager was shared a
|
|||||||
|
|
||||||
## Add new nested policy
|
## Add new nested policy
|
||||||
|
|
||||||
|
To create a new notification policy, you need to follow its tree structure. New policies created on the trunk of the tree (default policy), are the tree branches. And, subsequently, each branch can bear their own child policies. This is why you will always be adding a new **nested** policy under either the default policy, or under a already nested policy.
|
||||||
|
|
||||||
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
|
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
|
||||||
1. Click **Notification policies**.
|
1. Click **Notification policies**.
|
||||||
1. From the **Choose Alertmanager** dropdown, select an Alertmanager. By default, the **Grafana Alertmanager** is selected.
|
1. From the **Choose Alertmanager** dropdown, select an Alertmanager. By default, the **Grafana Alertmanager** is selected.
|
||||||
1. To add a top level specific policy, go to the Specific routing section and click **+New specific policy**.
|
1. To add a top level specific policy, go to the Specific routing section (either to the default policy, or to another existing policy in which you would like to add a new nested policy) and click **+New nested policy**.
|
||||||
1. In the Matching labels section, add one or more rules for matching alert labels.
|
1. In the Matching labels section, add one or more rules for matching alert labels.
|
||||||
1. In the **Contact point** dropdown, select the contact point to send notification to if alert matches only this specific policy and not any of the nested policies.
|
1. In the **Contact point** dropdown, select the contact point to send notification to if alert matches only this specific policy and not any of the nested policies.
|
||||||
1. Optionally, enable **Continue matching subsequent sibling nodes** to continue matching sibling policies even after the alert matched the current policy. When this option is enabled, you can get more than one notification for one alert.
|
1. Optionally, enable **Continue matching subsequent sibling nodes** to continue matching sibling policies even after the alert matched the current policy. When this option is enabled, you can get more than one notification for one alert.
|
||||||
@@ -109,6 +111,6 @@ An example of an alert configuration.
|
|||||||
- Create specific routes for particular teams that handle their own on-call rotations.
|
- Create specific routes for particular teams that handle their own on-call rotations.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[notification-policies]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/notification-policies"
|
[notification-policies]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notification-policies"
|
||||||
[notification-policies]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notification-policies"
|
[notification-policies]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notification-policies"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- ../../contact-points/create-contact-point/
|
- ../contact-points/ # /docs/grafana/<GRAFANA_VERSION>/alerting/contact-points/
|
||||||
- ../../contact-points/delete-contact-point/
|
- ../contact-points/create-contact-point/ # /docs/grafana/<GRAFANA_VERSION>/alerting/contact-points/create-contact-point/
|
||||||
- ../../contact-points/edit-contact-point/
|
- ../contact-points/delete-contact-point/ # /docs/grafana/<GRAFANA_VERSION>/alerting/contact-points/delete-contact-point/
|
||||||
- ../../contact-points/test-contact-point/
|
- ../contact-points/edit-contact-point/ # /docs/grafana/<GRAFANA_VERSION>/alerting/contact-points/edit-contact-point/
|
||||||
- ../create-contact-point/
|
- ../contact-points/test-contact-point/ # /docs/grafana/<GRAFANA_VERSION>/alerting/contact-points/test-contact-point/
|
||||||
- alerting/manage-notifications/manage-contact-points/
|
- ../manage-notifications/manage-contact-points/ # /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/manage-contact-points/
|
||||||
|
- create-contact-point/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-contact-point/
|
||||||
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/manage-contact-points/
|
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/manage-contact-points/
|
||||||
description: How to manage your contact points
|
description: How to manage your contact points
|
||||||
keywords:
|
keywords:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
_build:
|
_build:
|
||||||
list: false
|
list: false
|
||||||
aliases:
|
aliases:
|
||||||
- unified-alerting/difference-old-new/
|
- ./unified-alerting/difference-old-new/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/difference-old-new/
|
||||||
canonical: https://grafana.com/docs/grafana/latest/alerting/difference-old-new/
|
canonical: https://grafana.com/docs/grafana/latest/alerting/difference-old-new/
|
||||||
description: Compare new unified alerting compared to legacy dashboard alerting
|
description: Compare new unified alerting compared to legacy dashboard alerting
|
||||||
keywords:
|
keywords:
|
||||||
|
|||||||
@@ -65,6 +65,6 @@ Add silences to stop notifications from one or more alert instances or use mute
|
|||||||
The difference between the two being that a silence only lasts for only a specified window of time whereas a mute timing recurs on a schedule, for example, during a maintenance period.
|
The difference between the two being that a silence only lasts for only a specified window of time whereas a mute timing recurs on a schedule, for example, during a maintenance period.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[notification-policies]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/notification-policies"
|
[notification-policies]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notification-policies"
|
||||||
[notification-policies]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notification-policies"
|
[notification-policies]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notification-policies"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ An alert rule is a set of evaluation criteria for when an alert rule should fire
|
|||||||
|
|
||||||
While queries and expressions select the data set to evaluate, a condition sets the threshold that an alert must meet or exceed to create an alert.
|
While queries and expressions select the data set to evaluate, a condition sets the threshold that an alert must meet or exceed to create an alert.
|
||||||
|
|
||||||
An interval specifies how frequently an alerting rule is evaluated. Duration, when configured, indicates how long a condition must be met. The alert rules can also define alerting behavior in the absence of data.
|
An interval specifies how frequently an alert rule is evaluated. Duration, when configured, indicates how long a condition must be met. The alert rules can also define alerting behavior in the absence of data.
|
||||||
|
|
||||||
- [Alert rule types][alert-rule-types]
|
- [Alert rule types][alert-rule-types]
|
||||||
- [Alert instances][alert-instances]
|
- [Alert instances][alert-instances]
|
||||||
@@ -28,15 +28,15 @@ An interval specifies how frequently an alerting rule is evaluated. Duration, wh
|
|||||||
- [Annotation and labels][annotation-label]
|
- [Annotation and labels][annotation-label]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alert-instances]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/alert-rules/alert-instances"
|
[alert-instances]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/alert-instances"
|
||||||
[alert-instances]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/alert-instances"
|
[alert-instances]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/alert-instances"
|
||||||
|
|
||||||
[alert-rule-types]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/alert-rules/alert-rule-types"
|
[alert-rule-types]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/alert-rule-types"
|
||||||
[alert-rule-types]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/alert-rule-types"
|
[alert-rule-types]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/alert-rule-types"
|
||||||
|
|
||||||
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label"
|
||||||
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
[annotation-label]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label"
|
||||||
|
|
||||||
[organising-alerts]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/alert-rules/organising-alerts"
|
[organising-alerts]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/organising-alerts"
|
||||||
[organising-alerts]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/organising-alerts"
|
[organising-alerts]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/organising-alerts"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -59,11 +59,11 @@ Alert summary:
|
|||||||
|
|
||||||
You can use any of the following built-in template options to embed custom templates.
|
You can use any of the following built-in template options to embed custom templates.
|
||||||
|
|
||||||
| Name | Notes |
|
| Name | Notes |
|
||||||
| ----------------------- | ------------------------------------------------------------- |
|
| ----------------------- | ------------------------------------------------------------ |
|
||||||
| `default.title` | Displays high-level status information. |
|
| `default.title` | Displays high-level status information. |
|
||||||
| `default.message` | Provides a formatted summary of firing and resolved alerts. |
|
| `default.message` | Provides a formatted summary of firing and resolved alerts. |
|
||||||
| `teams.default.message` | Similar to `default.messsage`, formatted for Microsoft Teams. |
|
| `teams.default.message` | Similar to `default.message`, formatted for Microsoft Teams. |
|
||||||
|
|
||||||
### HTML in notification templates
|
### HTML in notification templates
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,27 @@ Checks if any time series data matches the alert condition.
|
|||||||
Classic condition expression queries always produce one alert instance only, no matter how many time series meet the condition.
|
Classic condition expression queries always produce one alert instance only, no matter how many time series meet the condition.
|
||||||
Classic conditions exist mainly for compatibility reasons and should be avoided if possible.
|
Classic conditions exist mainly for compatibility reasons and should be avoided if possible.
|
||||||
|
|
||||||
|
## Aggregations
|
||||||
|
|
||||||
|
Grafana Alerting provides the following aggregation functions to enable you to further refine your query.
|
||||||
|
|
||||||
|
These functions are available for **Reduce** and **Classic condition** expressions only.
|
||||||
|
|
||||||
|
| Function | Expression | What it does |
|
||||||
|
| ---------------- | ---------------- | ------------------------------------------------------------------------------- |
|
||||||
|
| avg | Reduce / Classic | Displays the average of the values |
|
||||||
|
| min | Reduce / Classic | Displays the lowest value |
|
||||||
|
| max | Reduce / Classic | Displays the highest value |
|
||||||
|
| sum | Reduce / Classic | Displays the sum of all values |
|
||||||
|
| count | Reduce / Classic | Counts the number of values in the result |
|
||||||
|
| last | Reduce / Classic | Displays the last value |
|
||||||
|
| median | Reduce / Classic | Displays the median value |
|
||||||
|
| diff | Classic | Displays the difference between the newest and oldest value |
|
||||||
|
| diff_abs | Classic | Displays the absolute value of diff |
|
||||||
|
| percent_diff | Classic | Displays the percentage value of the difference between newest and oldest value |
|
||||||
|
| percent_diff_abs | Classic | Displays the absolute value of percent_diff |
|
||||||
|
| count_non_null | Classic | Displays a count of values in the result set that aren't `null` |
|
||||||
|
|
||||||
## Alert condition
|
## Alert condition
|
||||||
|
|
||||||
An alert condition is the query or expression that determines whether the alert will fire or not depending on the value it yields. There can be only one condition which will determine the triggering of the alert.
|
An alert condition is the query or expression that determines whether the alert will fire or not depending on the value it yields. There can be only one condition which will determine the triggering of the alert.
|
||||||
@@ -108,9 +129,9 @@ When the queried data satisfies the defined condition, Grafana triggers the asso
|
|||||||
By default, the last expression added is used as the alert condition.
|
By default, the last expression added is used as the alert condition.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[data-source-alerting]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/data-source-alerting"
|
[data-source-alerting]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/data-source-alerting"
|
||||||
[data-source-alerting]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/data-source-alerting"
|
[data-source-alerting]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/data-source-alerting"
|
||||||
|
|
||||||
[query-transform-data]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/panels-visualizations/query-transform-data"
|
[query-transform-data]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data"
|
||||||
[query-transform-data]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/panels-visualizations/query-transform-data"
|
[query-transform-data]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -22,9 +22,11 @@ To do this, you need to make sure that your alert rule is in the right evaluatio
|
|||||||
|
|
||||||
## Evaluation group
|
## Evaluation group
|
||||||
|
|
||||||
Every alert rule is part of an evaluation group. Each evaluation group contains an evaluation interval that determines how frequently the alert rule is checked. Alert rules within the same group are evaluated one after the other, while alert rules in different groups can be evaluated simultaneously.
|
Every alert rule is part of an evaluation group. Each evaluation group contains an evaluation interval that determines how frequently the alert rule is checked.
|
||||||
|
|
||||||
This feature is especially useful for Prometheus/Mimir rules when you want to ensure that recording rules are evaluated before any alert rules.
|
**Data-source managed** alert rules within the same group are evaluated one after the other, while alert rules in different groups can be evaluated simultaneously. This feature is especially useful when you want to ensure that recording rules are evaluated before any alert rules.
|
||||||
|
|
||||||
|
**Grafana-managed** alert rules are evaluated at the same time, regardless of alert rule group. The default evaluation interval is set at 10 seconds, which means that Grafana-managed alert rules are evaluated every 10 seconds to the closest 10-second window on the clock, for example, 10:00:00, 10:00:10, 10:00:20, and so on. You can also configure your own evaluation interval, if required.
|
||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
|
|
||||||
@@ -45,7 +47,7 @@ Evaluation will occur as follows:
|
|||||||
[00:30] First evaluation - condition not met.
|
[00:30] First evaluation - condition not met.
|
||||||
|
|
||||||
[01:00] Second evaluation - condition breached.
|
[01:00] Second evaluation - condition breached.
|
||||||
Pending counter starts. **Alert stars pending.**
|
Pending counter starts. **Alert starts pending.**
|
||||||
|
|
||||||
[01:30] Third evaluation - condition breached. Pending counter = 30s. **Pending state.**
|
[01:30] Third evaluation - condition breached. Pending counter = 30s. **Pending state.**
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ labels:
|
|||||||
- cloud
|
- cloud
|
||||||
- enterprise
|
- enterprise
|
||||||
- oss
|
- oss
|
||||||
title: State and health of alerting rules
|
title: State and health of alert rules
|
||||||
weight: 405
|
weight: 405
|
||||||
---
|
---
|
||||||
|
|
||||||
# State and health of alerting rules
|
# State and health of alert rules
|
||||||
|
|
||||||
The state and health of alerting rules help you understand several key status indicators about your alerts.
|
The state and health of alert rules help you understand several key status indicators about your alerts.
|
||||||
|
|
||||||
There are three key components: [alert rule state](#alert-rule-state), [alert instance state](#alert-instance-state), and [alert rule health](#alert-rule-health). Although related, each component conveys subtly different information.
|
There are three key components: [alert rule state](#alert-rule-state), [alert instance state](#alert-instance-state), and [alert rule health](#alert-rule-health). Although related, each component conveys subtly different information.
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ An alert instance can be in either of the following states:
|
|||||||
| **Pending** | The state of an alert that has been active for less than the configured threshold duration. |
|
| **Pending** | The state of an alert that has been active for less than the configured threshold duration. |
|
||||||
| **Alerting** | The state of an alert that has been active for longer than the configured threshold duration. |
|
| **Alerting** | The state of an alert that has been active for longer than the configured threshold duration. |
|
||||||
| **NoData** | No data has been received for the configured time window. |
|
| **NoData** | No data has been received for the configured time window. |
|
||||||
| **Error** | The error that occurred when attempting to evaluate an alerting rule. |
|
| **Error** | The error that occurred when attempting to evaluate an alert rule. |
|
||||||
|
|
||||||
## Alert rule health
|
## Alert rule health
|
||||||
|
|
||||||
@@ -55,13 +55,13 @@ An alert rule can have one the following health statuses:
|
|||||||
|
|
||||||
| State | Description |
|
| State | Description |
|
||||||
| ---------- | ---------------------------------------------------------------------------------- |
|
| ---------- | ---------------------------------------------------------------------------------- |
|
||||||
| **Ok** | No error when evaluating an alerting rule. |
|
| **Ok** | No error when evaluating an alert rule. |
|
||||||
| **Error** | An error occurred when evaluating an alerting rule. |
|
| **Error** | An error occurred when evaluating an alert rule. |
|
||||||
| **NoData** | The absence of data in at least one time series returned during a rule evaluation. |
|
| **NoData** | The absence of data in at least one time series returned during a rule evaluation. |
|
||||||
|
|
||||||
## Special alerts for `NoData` and `Error`
|
## Special alerts for `NoData` and `Error`
|
||||||
|
|
||||||
When evaluation of an alerting rule produces state `NoData` or `Error`, Grafana Alerting will generate alert instances that have the following additional labels:
|
When evaluation of an alert rule produces state `NoData` or `Error`, Grafana Alerting will generate alert instances that have the following additional labels:
|
||||||
|
|
||||||
| Label | Description |
|
| Label | Description |
|
||||||
| ------------------ | ---------------------------------------------------------------------- |
|
| ------------------ | ---------------------------------------------------------------------- |
|
||||||
|
|||||||
@@ -54,6 +54,6 @@ If you are provisioning your data source, set the flag `handleGrafanaManagedAler
|
|||||||
[Add an external Alertmanager][configure-alertmanager]
|
[Add an external Alertmanager][configure-alertmanager]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[configure-alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/configure-alertmanager"
|
[configure-alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-alertmanager"
|
||||||
[configure-alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-alertmanager"
|
[configure-alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-alertmanager"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -48,6 +48,6 @@ It is also important to make sure that the label set for an alert does not have
|
|||||||
Annotations are named pairs that add additional information to existing alerts. There are a number of suggested annotations in Grafana such as `description`, `summary`, `runbook_url`, `dashboardUId` and `panelId`. Like custom labels, annotations must have a name, and their value can contain a combination of text and template code that is evaluated when an alert is fired. If an annotation contains template code, the template is evaluated once when the alert is fired. It is not re-evaluated, even when the alert is resolved. Documentation on how to template annotations can be found [here][variables-label-annotation].
|
Annotations are named pairs that add additional information to existing alerts. There are a number of suggested annotations in Grafana such as `description`, `summary`, `runbook_url`, `dashboardUId` and `panelId`. Like custom labels, annotations must have a name, and their value can contain a combination of text and template code that is evaluated when an alert is fired. If an annotation contains template code, the template is evaluated once when the alert is fired. It is not re-evaluated, even when the alert is resolved. Documentation on how to template annotations can be found [here][variables-label-annotation].
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[variables-label-annotation]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/annotation-label/variables-label-annotation"
|
[variables-label-annotation]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label/variables-label-annotation"
|
||||||
[variables-label-annotation]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label/variables-label-annotation"
|
[variables-label-annotation]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label/variables-label-annotation"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -55,9 +55,9 @@ Grafana reserved labels can be used in the same way as manually configured label
|
|||||||
| grafana_folder | Title of the folder containing the alert. |
|
| grafana_folder | Title of the folder containing the alert. |
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alerting-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules"
|
[alerting-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules"
|
||||||
[alerting-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules"
|
[alerting-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules"
|
||||||
|
|
||||||
[unified-alerting-reserved-labels]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/configure-grafana#unified_alertingreserved_labels"
|
[unified-alerting-reserved-labels]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana#unified_alertingreserved_labels"
|
||||||
[unified-alerting-reserved-labels]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/configure-grafana#unified_alertingreserved_labels"
|
[unified-alerting-reserved-labels]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana#unified_alertingreserved_labels"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -50,3 +50,15 @@ then:
|
|||||||
- A label matcher defined as `id=~[0-9]+` matches this alert rule.
|
- A label matcher defined as `id=~[0-9]+` matches this alert rule.
|
||||||
- A label matcher defined as `baz!~[0-9]+` matches this alert rule.
|
- A label matcher defined as `baz!~[0-9]+` matches this alert rule.
|
||||||
- Two label matchers defined as `foo=bar` and `id=~[0-9]+` match this alert rule.
|
- Two label matchers defined as `foo=bar` and `id=~[0-9]+` match this alert rule.
|
||||||
|
|
||||||
|
## Exclude labels
|
||||||
|
|
||||||
|
You can also write label matchers to exclude labels.
|
||||||
|
|
||||||
|
Here is an example that shows how to exclude the label `Team`. You can choose between any of the values below to exclude labels.
|
||||||
|
|
||||||
|
| Label | Operator | Value |
|
||||||
|
| ------ | -------- | ----- |
|
||||||
|
| `team` | `=` | `""` |
|
||||||
|
| `team` | `!~` | `.+` |
|
||||||
|
| `team` | `=~` | `^$` |
|
||||||
|
|||||||
@@ -103,15 +103,35 @@ If you were to print the value of the expression with RefID `B` in the summary o
|
|||||||
The summary will contain just the value:
|
The summary will contain just the value:
|
||||||
|
|
||||||
```
|
```
|
||||||
api has an over 5% of responses with 5xx errors: 6.789%
|
api has over 5% of responses with 5xx errors: 6.78912%
|
||||||
```
|
```
|
||||||
|
|
||||||
However, while `{{ $values.B }}` prints the number 6.789, it is actually a string as you are printing the object that contains both the labels and value for RefID B, not the floating point value of B. To use the floating point value of RefID B you must use the `Value` field from `$values.B`. If you were to humanize the floating point value in the summary of an alert:
|
However, while `{{ $values.B }}` prints the number 6.78912, it is actually a string as you are printing the object that contains both the labels and value for RefID B, not the floating point value of B. To use the floating point value of RefID B you must use the `Value` field from `$values.B`.
|
||||||
|
|
||||||
|
If you were to print the humanized floating point value in the summary of an alert:
|
||||||
|
|
||||||
```
|
```
|
||||||
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
|
{{ $labels.service }} has over 5% of responses with 5xx errors: {{ humanize $values.B.Value }}%
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The summary will contain the humanized value:
|
||||||
|
|
||||||
|
```
|
||||||
|
api has over 5% of responses with 5xx errors: 6.789%
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also compare the floating point value using the `eq`, `ne`, `lt`, `le`, `gt` and `ge` comparison operators:
|
||||||
|
|
||||||
|
```
|
||||||
|
{{ if gt $values.B.Value 50.0 -}}
|
||||||
|
Critical 5xx error rate
|
||||||
|
{{ else -}}
|
||||||
|
Elevated 5xx error rate
|
||||||
|
{{ end }}
|
||||||
|
```
|
||||||
|
|
||||||
|
When using comparison operators with `$values` make sure to compare it to a floating point number such as `50.0` and not an integer such as `50`. Go templates do not support implicit type coercion, and comparing a floating point number to an integer will break your template.
|
||||||
|
|
||||||
### No data, execution errors and timeouts
|
### No data, execution errors and timeouts
|
||||||
|
|
||||||
If the query in your alert rule returns no data, or fails because of a datasource error or timeout, then any Threshold, Reduce or Math expressions that use that query will also return no data or an error. When this happens these expression will be absent from `$values`. It is good practice to check that a RefID is present before using it as otherwise your template will break should your query return no data or an error. You can do this using an if statement:
|
If the query in your alert rule returns no data, or fails because of a datasource error or timeout, then any Threshold, Reduce or Math expressions that use that query will also return no data or an error. When this happens these expression will be absent from `$values`. It is good practice to check that a RefID is present before using it as otherwise your template will break should your query return no data or an error. You can do this using an if statement:
|
||||||
@@ -351,6 +371,6 @@ example.com:8080
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[explore]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/explore"
|
[explore]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/explore"
|
||||||
[explore]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/explore"
|
[explore]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/explore"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ labels:
|
|||||||
- cloud
|
- cloud
|
||||||
- enterprise
|
- enterprise
|
||||||
- oss
|
- oss
|
||||||
title: Data sources
|
title: Data sources and Grafana Alerting
|
||||||
weight: 100
|
weight: 100
|
||||||
---
|
---
|
||||||
|
|
||||||
# Data sources
|
# Data sources and Grafana Alerting
|
||||||
|
|
||||||
There are a number of data sources that are compatible with Grafana Alerting. Each data source is supported by a plugin. You can use one of the built-in data sources listed below, use [external data source plugins](/grafana/plugins/?type=datasource), or create your own data source plugin.
|
There are a number of data sources that are compatible with Grafana Alerting. Each data source is supported by a plugin. You can use one of the built-in data sources listed below, use [external data source plugins](/grafana/plugins/?type=datasource), or create your own data source plugin.
|
||||||
|
|
||||||
@@ -20,75 +20,76 @@ Specifying `{ "alerting": true, “backend”: true }` in the plugin.json file i
|
|||||||
|
|
||||||
These are the data sources that are compatible with and supported by Grafana Alerting.
|
These are the data sources that are compatible with and supported by Grafana Alerting.
|
||||||
|
|
||||||
- [AWS CloudWatch][aws-cloudwatch]
|
- [AWS CloudWatch][]
|
||||||
- [Azure Monitor][azure-monitor]
|
- [Azure Monitor][]
|
||||||
- [Elasticsearch][elasticsearch]
|
- [Elasticsearch][]
|
||||||
- [Google Cloud Monitoring][google-cloud-monitoring]
|
- [Google Cloud Monitoring][]
|
||||||
- [Graphite][graphite]
|
- [Graphite][]
|
||||||
- [InfluxDB][influxdb]
|
- [InfluxDB][]
|
||||||
- [Loki][loki]
|
- [Loki][]
|
||||||
- [Microsoft SQL Server MSSQL][mssql]
|
- [Microsoft SQL Server (MSSQL)][]
|
||||||
- [MySQL][mysql]
|
- [MySQL][]
|
||||||
- [Open TSDB][opentsdb]
|
- [Open TSDB][]
|
||||||
- [PostgreSQL][postgres]
|
- [PostgreSQL][]
|
||||||
- [Prometheus][prometheus]
|
- [Prometheus][]
|
||||||
- [Jaeger][jaeger]
|
- [Jaeger][]
|
||||||
- [Zipkin][zipkin]
|
- [Zipkin][]
|
||||||
- [Tempo][tempo]
|
- [Tempo][]
|
||||||
- [Testdata][testdata]
|
- [Testdata][]
|
||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
- [Grafana data sources][datasources]
|
- [Grafana data sources][]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[datasources]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources"
|
[Grafana data sources]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources"
|
||||||
|
[Grafana data sources]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources"
|
||||||
|
|
||||||
[aws-cloudwatch]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/aws-cloudwatch"
|
[AWS CloudWatch]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/aws-cloudwatch"
|
||||||
[aws-cloudwatch]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/aws-cloudwatch"
|
[AWS CloudWatch]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/aws-cloudwatch"
|
||||||
|
|
||||||
[azure-monitor]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/azure-monitor"
|
[Azure Monitor]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/azure-monitor"
|
||||||
[azure-monitor]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/azure-monitor"
|
[Azure Monitor]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/azure-monitor"
|
||||||
|
|
||||||
[elasticsearch]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/elasticsearch"
|
[Elasticsearch]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/elasticsearch"
|
||||||
[elasticsearch]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/elasticsearch"
|
[Elasticsearch]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/elasticsearch"
|
||||||
|
|
||||||
[google-cloud-monitoring]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/google-cloud-monitoring"
|
[Google Cloud Monitoring]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/google-cloud-monitoring"
|
||||||
[google-cloud-monitoring]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/google-cloud-monitoring"
|
[Google Cloud Monitoring]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/google-cloud-monitoring"
|
||||||
|
|
||||||
[graphite]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/graphite"
|
[Graphite]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/graphite"
|
||||||
[graphite]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/graphite"
|
[Graphite]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/graphite"
|
||||||
|
|
||||||
[influxdb]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/influxdb"
|
[InfluxDB]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/influxdb"
|
||||||
[influxdb]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/influxdb"
|
[InfluxDB]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/influxdb"
|
||||||
|
|
||||||
[loki]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/loki"
|
[Loki]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/loki"
|
||||||
[loki]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/loki"
|
[Loki]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/loki"
|
||||||
|
|
||||||
[mssql]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/mssql"
|
[Microsoft SQL Server (MSSQL)]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/mssql"
|
||||||
[mssql]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/mssql"
|
[Microsoft SQL Server (MSSQL)]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/mssql"
|
||||||
|
|
||||||
[mysql]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/mysql"
|
[MySQL]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/mysql"
|
||||||
[mysql]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/mysql"
|
[MySQL]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/mysql"
|
||||||
|
|
||||||
[opentsdb]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/opentsdb"
|
[Open TSDB]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/opentsdb"
|
||||||
[opentsdb]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/opentsdb"
|
[Open TSDB]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/opentsdb"
|
||||||
|
|
||||||
[postgres]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/postgres"
|
[PostgreSQL]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/postgres"
|
||||||
[postgres]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/postgres"
|
[PostgreSQL]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/postgres"
|
||||||
|
|
||||||
[prometheus]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/prometheus"
|
[Prometheus]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/prometheus"
|
||||||
[prometheus]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/prometheus"
|
[Prometheus]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/prometheus"
|
||||||
|
|
||||||
[jaeger]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/jaeger"
|
[Jaeger]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/jaeger"
|
||||||
[jaeger]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/jaeger"
|
[Jaeger]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/jaeger"
|
||||||
|
|
||||||
[zipkin]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/zipkin"
|
[Zipkin]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/zipkin"
|
||||||
[zipkin]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/zipkin"
|
[Zipkin]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/zipkin"
|
||||||
|
|
||||||
[tempo]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/tempo"
|
[Tempo]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/tempo"
|
||||||
[tempo]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/tempo"
|
[Tempo]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/tempo"
|
||||||
|
|
||||||
[testdata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/testdata"
|
[Testdata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/testdata"
|
||||||
[testdata]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/testdata"
|
[Testdata]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/testdata"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Grafana managed alerts query the following backend data sources that have alerti
|
|||||||
|
|
||||||
- built-in data sources or those developed and maintained by Grafana: `Graphite`, `Prometheus`, `Loki`, `InfluxDB`, `Elasticsearch`,
|
- built-in data sources or those developed and maintained by Grafana: `Graphite`, `Prometheus`, `Loki`, `InfluxDB`, `Elasticsearch`,
|
||||||
`Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Monitor`
|
`Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Monitor`
|
||||||
- community developed backend data sources with alerting enabled (`backend` and `alerting` properties are set in the [plugin.json][metadata])
|
- community developed backend data sources with alerting enabled (`backend` and `alerting` properties are set in the [plugin.json](/developers/plugin-tools/reference-plugin-json))
|
||||||
|
|
||||||
### Metrics from the alerting engine
|
### Metrics from the alerting engine
|
||||||
|
|
||||||
@@ -108,9 +108,6 @@ When this query is used as the **condition** in an alert rule, then the non-zero
|
|||||||
| {Host=web3,disk=/var} | Normal |
|
| {Host=web3,disk=/var} | Normal |
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[metadata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/developers/plugins/metadata"
|
[set-up-grafana-monitoring]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/set-up-grafana-monitoring"
|
||||||
[metadata]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/developers/plugins/metadata"
|
[set-up-grafana-monitoring]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/set-up-grafana-monitoring"
|
||||||
|
|
||||||
[set-up-grafana-monitoring]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/set-up-grafana-monitoring"
|
|
||||||
[set-up-grafana-monitoring]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/set-up-grafana-monitoring"
|
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -41,6 +41,6 @@ The notification logs and silences are persisted in the database periodically an
|
|||||||
[Configure alerting high availability][configure-high-availability]
|
[Configure alerting high availability][configure-high-availability]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[configure-high-availability]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/configure-high-availability"
|
[configure-high-availability]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-high-availability"
|
||||||
[configure-high-availability]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-high-availability"
|
[configure-high-availability]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-high-availability"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -144,6 +144,6 @@ The waiting time to resend an alert after they have successfully been sent. This
|
|||||||
**Default** 4 hours
|
**Default** 4 hours
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[labels-and-label-matchers]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/annotation-label/labels-and-label-matchers"
|
[labels-and-label-matchers]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label/labels-and-label-matchers"
|
||||||
[labels-and-label-matchers]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label/labels-and-label-matchers"
|
[labels-and-label-matchers]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/annotation-label/labels-and-label-matchers"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -30,18 +30,18 @@ Once you have set up your alert rules, contact points, and notification policies
|
|||||||
[View and filter alert rules][view-alert-rules]
|
[View and filter alert rules][view-alert-rules]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[create-silence]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/create-silence"
|
[create-silence]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/create-silence"
|
||||||
[create-silence]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/create-silence"
|
[create-silence]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/create-silence"
|
||||||
|
|
||||||
[declare-incident-from-firing-alert]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/declare-incident-from-alert"
|
[declare-incident-from-firing-alert]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/declare-incident-from-alert"
|
||||||
[declare-incident-from-firing-alert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/declare-incident-from-alert"
|
[declare-incident-from-firing-alert]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/declare-incident-from-alert"
|
||||||
|
|
||||||
[mute-timings]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/mute-timings"
|
[mute-timings]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/mute-timings"
|
||||||
[mute-timings]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/mute-timings"
|
[mute-timings]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/mute-timings"
|
||||||
|
|
||||||
[view-alert-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/view-alert-rules"
|
[view-alert-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/view-alert-rules"
|
||||||
[view-alert-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/view-alert-rules"
|
[view-alert-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/view-alert-rules"
|
||||||
|
|
||||||
[view-state-health]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/view-state-health"
|
[view-state-health]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/view-state-health"
|
||||||
[view-state-health]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/view-state-health"
|
[view-state-health]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/view-state-health"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -26,7 +26,11 @@ weight: 410
|
|||||||
|
|
||||||
Silences stop notifications from getting created and last for only a specified window of time.
|
Silences stop notifications from getting created and last for only a specified window of time.
|
||||||
|
|
||||||
**Note that inhibition rules are not supported in the Grafana Alertmanager.**
|
{{< admonition type="note" >}}
|
||||||
|
|
||||||
|
- Inhibition rules are not supported in the Grafana Alertmanager.
|
||||||
|
- The preview of silenced alerts only applies to alerts in firing state.
|
||||||
|
{{< /admonition >}}
|
||||||
|
|
||||||
## Add silences
|
## Add silences
|
||||||
|
|
||||||
@@ -38,7 +42,7 @@ To add a silence, complete the following steps.
|
|||||||
1. Click **Create silence** to open the Create silence page.
|
1. Click **Create silence** to open the Create silence page.
|
||||||
1. In **Silence start and end**, select the start and end date to indicate when the silence should go into effect and expire.
|
1. In **Silence start and end**, select the start and end date to indicate when the silence should go into effect and expire.
|
||||||
1. Optionally, in **Duration**, specify how long the silence is enforced. This automatically updates the end time in the **Silence start and end** field.
|
1. Optionally, in **Duration**, specify how long the silence is enforced. This automatically updates the end time in the **Silence start and end** field.
|
||||||
1. In the **Label** and **Value** fields, enter one or more _Matching Labels_. Matchers determine which rules the silence will apply to.
|
1. In the **Label** and **Value** fields, enter one or more _Matching Labels_. Matchers determine which rules the silence will apply to. Any matching alerts (in firing state) will show in the **Affected alert instances** field
|
||||||
1. In **Comment**, add details about the silence.
|
1. In **Comment**, add details about the silence.
|
||||||
1. Click **Submit**.
|
1. Click **Submit**.
|
||||||
|
|
||||||
@@ -71,4 +75,4 @@ To remove a silence, complete the following steps.
|
|||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
[Aggregation operators](/docs/prometheus/latest/querying/operators/#aggregation-operators)
|
[Aggregation operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)
|
||||||
|
|||||||
@@ -69,9 +69,7 @@ If screenshots should be uploaded to cloud storage then `upload_external_image_s
|
|||||||
# will be persisted to disk for up to temp_data_lifetime.
|
# will be persisted to disk for up to temp_data_lifetime.
|
||||||
upload_external_image_storage = false
|
upload_external_image_storage = false
|
||||||
|
|
||||||
Please see [`[external_image_storage]`]({{< relref "../../setup-grafana/configure-grafana#external_image_storage" >}}) for instructions on how to configure cloud storage. Grafana will not start if `upload_external_image_storage` is `true` and `[external_image_storage]` contains missing or invalid configuration.
|
For more information on image rendering, refer to [image rendering][image-rendering].
|
||||||
|
|
||||||
If Grafana is acting as its own cloud storage then `[upload_external_image_storage]` should be set to `true` and the `local` provider should be set in [`[external_image_storage]`]({{< relref "../../setup-grafana/configure-grafana#external_image_storage" >}}).
|
|
||||||
|
|
||||||
Restart Grafana for the changes to take effect.
|
Restart Grafana for the changes to take effect.
|
||||||
|
|
||||||
@@ -141,9 +139,9 @@ For example, if a screenshot could not be taken within the expected time (10 sec
|
|||||||
- `grafana_screenshot_upload_successes_total`
|
- `grafana_screenshot_upload_successes_total`
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[image-rendering]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/image-rendering"
|
[image-rendering]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/image-rendering"
|
||||||
[image-rendering]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/image-rendering"
|
[image-rendering]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/image-rendering"
|
||||||
|
|
||||||
[paths]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/configure-grafana#paths"
|
[paths]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana#paths"
|
||||||
[paths]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/setup-grafana/configure-grafana#paths"
|
[paths]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana#paths"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -57,18 +57,19 @@ The following table highlights the key differences between mute timings and sile
|
|||||||
|
|
||||||
## Time intervals
|
## Time intervals
|
||||||
|
|
||||||
A time interval is a definition for a moment in time. If an alert fires during this interval it will be suppressed. All fields are lists, and at least one list element must be satisfied to match the field. Fields also support ranges using `:` (ex: `monday:thursday`). The fields available for a time interval are: mute timing can contain multiple time intervals. A time interval is a specific duration when alerts are suppressed from firing. The duration typically consists of a specific time range along with days of a week, month, or year.
|
A time interval is a specific duration during which alerts are suppressed. The duration typically consists of a specific time range and the days of the week, month, or year.
|
||||||
|
|
||||||
All properties for the time interval are lists, and at least one list element must be satisfied to match the field. The fields support ranges using `:` (ex: `monday:thursday`). If you leave a field blank, it will match with any moment of time.
|
|
||||||
|
|
||||||
Supported time interval options are:
|
Supported time interval options are:
|
||||||
|
|
||||||
- Time range: The time inclusive of the starting time and exclusive of the end time in UTC.
|
- Time range: The time inclusive of the start and exclusive of the end time (in UTC if no location has been selected, otherwise local time).
|
||||||
|
- Location: Depending on the location you select, the time range is displayed in local time.
|
||||||
- Days of the week: The day or range of days of the week. Example: `monday:thursday`.
|
- Days of the week: The day or range of days of the week. Example: `monday:thursday`.
|
||||||
- Days of the month: The date 1-31 of a month. Negative values can also be used to represent days that begin at the end of the month. For example: `-1` for the last day of the month.
|
- Days of the month: The date 1-31 of a month. Negative values can also be used to represent days that begin at the end of the month. For example: `-1` for the last day of the month.
|
||||||
- Months: The months of the year in either numerical or the full calendar month. For example: `1, may:august`.
|
- Months: The months of the year in either numerical or the full calendar month. For example: `1, may:august`.
|
||||||
- Years: The year or years for the interval. For example: `2021:2024`.
|
- Years: The year or years for the interval. For example: `2021:2024`.
|
||||||
|
|
||||||
|
All fields are lists; to match the field, at least one list element must be satisfied. Fields also support ranges using `:` (e.g., `monday:thursday`).
|
||||||
|
|
||||||
If a field is left blank, any moment of time will match the field. For an instant of time to match a complete time interval, all fields must match. A mute timing can contain multiple time intervals.
|
If a field is left blank, any moment of time will match the field. For an instant of time to match a complete time interval, all fields must match. A mute timing can contain multiple time intervals.
|
||||||
|
|
||||||
If you want to specify an exact duration, specify all the options. For example, if you wanted to create a time interval for the first Monday of the month, for March, June, September, and December, between the hours of 12:00 and 24:00 UTC your time interval specification would be:
|
If you want to specify an exact duration, specify all the options. For example, if you wanted to create a time interval for the first Monday of the month, for March, June, September, and December, between the hours of 12:00 and 24:00 UTC your time interval specification would be:
|
||||||
@@ -81,9 +82,9 @@ If you want to specify an exact duration, specify all the options. For example,
|
|||||||
- Days of the month: `1:7`
|
- Days of the month: `1:7`
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[datasources/alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/alertmanager"
|
[datasources/alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/alertmanager"
|
||||||
[datasources/alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/alertmanager"
|
[datasources/alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/alertmanager"
|
||||||
|
|
||||||
[fundamentals/alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/alertmanager"
|
[fundamentals/alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alertmanager"
|
||||||
[fundamentals/alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alertmanager"
|
[fundamentals/alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alertmanager"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -25,15 +25,17 @@ Notification templates are not tied to specific contact point integrations, such
|
|||||||
|
|
||||||
You can use notification templates to:
|
You can use notification templates to:
|
||||||
|
|
||||||
- Add, remove, or re-order information in the notification including the summary, description, labels and annotations, values, and links
|
- Customize the subject of an email or the title of a message.
|
||||||
- Format text in bold and italic, and add or remove line breaks
|
- Add, change or remove text in notifications. For example, to select or omit certain labels, annotations and links.
|
||||||
|
- Format text in bold and italic, and add or remove line breaks.
|
||||||
|
|
||||||
You cannot use notification templates to:
|
You cannot use notification templates to:
|
||||||
|
|
||||||
- Change how images are included in notifications, such as the number of images in each notification or where in the notification inline images are shown
|
- Add HTML and CSS to email notifications to change their visual appearance.
|
||||||
- Change the design of notifications in instant messaging services such as Slack and Microsoft Teams
|
- Change the design of notifications in instant messaging services such as Slack and Microsoft Teams. For example, to add or remove custom blocks with Slack Block Kit or adaptive cards with Microsoft Teams.
|
||||||
- Change the data in webhook notifications, including the structure of the JSON request or sending data in other formats such as XML
|
- Choose the number and size of images, or where in the notification images are shown.
|
||||||
- Add or remove HTTP headers in webhook notifications other than those in the contact point configuration
|
- Customize the data in webhooks, including the fields or structure of the JSON data or send the data in other formats such as XML.
|
||||||
|
- Add or remove HTTP headers in webhooks other than those in the contact point configuration.
|
||||||
|
|
||||||
[Using Go's templating language][using-go-templating-language]
|
[Using Go's templating language][using-go-templating-language]
|
||||||
|
|
||||||
@@ -41,7 +43,7 @@ Learn how to write the content of your notification templates in Go’s templati
|
|||||||
|
|
||||||
Create reusable notification templates for your contact points.
|
Create reusable notification templates for your contact points.
|
||||||
|
|
||||||
[Use notification templates][use-notication-templates]
|
[Use notification templates][use-notification-templates]
|
||||||
|
|
||||||
Use notification templates to send notifications to your contact points.
|
Use notification templates to send notifications to your contact points.
|
||||||
|
|
||||||
@@ -50,12 +52,12 @@ Use notification templates to send notifications to your contact points.
|
|||||||
Data that is available when writing templates.
|
Data that is available when writing templates.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[reference]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/reference"
|
[reference]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/reference"
|
||||||
[reference]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/reference"
|
[reference]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/reference"
|
||||||
|
|
||||||
[use-notification-templates]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/use-notification-templates"
|
[use-notification-templates]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/use-notification-templates"
|
||||||
[use-notification-templates]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/use-notification-templates"
|
[use-notification-templates]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/use-notification-templates"
|
||||||
|
|
||||||
[using-go-templating-language]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
[using-go-templating-language]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
||||||
[using-go-templating-language]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
[using-go-templating-language]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ weight: 400
|
|||||||
| GeneratorURL | `string` | A link to Grafana, or the Alertmanager if using an external Alertmanager | `{{ .GeneratorURL }}` |
|
| GeneratorURL | `string` | A link to Grafana, or the Alertmanager if using an external Alertmanager | `{{ .GeneratorURL }}` |
|
||||||
| SilenceURL | `string` | A link to silence the alert | `{{ .SilenceURL }}` |
|
| SilenceURL | `string` | A link to silence the alert | `{{ .SilenceURL }}` |
|
||||||
| DashboardURL | `string` | A link to the Grafana Dashboard if the alert has a Dashboard UID annotation | `{{ .DashboardURL }}` |
|
| DashboardURL | `string` | A link to the Grafana Dashboard if the alert has a Dashboard UID annotation | `{{ .DashboardURL }}` |
|
||||||
| PanelURL | `string` | A link to the panel if the alert has a Panel ID annotation | `{{ .PanelID }}` |
|
| PanelURL | `string` | A link to the panel if the alert has a Panel ID annotation | `{{ .PanelURL }}` |
|
||||||
| Fingerprint | `string` | A unique string that identifies the alert | `{{ .Fingerprint }}` |
|
| Fingerprint | `string` | A unique string that identifies the alert | `{{ .Fingerprint }}` |
|
||||||
| ValueString | `string` | A string that contains the labels and value of each reduced expression in the alert. | `{{ .ValueString }}` |
|
| ValueString | `string` | A string that contains the labels and value of each reduced expression in the alert. | `{{ .ValueString }}` |
|
||||||
|
|
||||||
|
|||||||
@@ -26,18 +26,18 @@ In the Contact points tab, you can see a list of your contact points.
|
|||||||
|
|
||||||
**Note:** You can edit an existing contact by clicking the Edit icon.
|
**Note:** You can edit an existing contact by clicking the Edit icon.
|
||||||
|
|
||||||
2. Execute a template from one or more fields such as Message and Subject:
|
1. Execute a template from one or more fields such as Message and Subject:
|
||||||
|
|
||||||
{{< figure max-width="940px" src="/static/img/docs/alerting/unified/use-notification-template-9-4.png" caption="Use notification template" >}}
|
{{< figure max-width="940px" src="/static/img/docs/alerting/unified/use-notification-template-9-4.png" caption="Use notification template" >}}
|
||||||
|
|
||||||
For more information on how to write and execute templates, refer to [Using Go's templating language][using-go-templating-language] and [Create notification templates][create-notification-templates].
|
For more information on how to write and execute templates, refer to [Using Go's templating language][using-go-templating-language] and [Create notification templates][create-notification-templates].
|
||||||
|
|
||||||
3. Click Save template.
|
1. Click **Save contact point**.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[create-notification-templates]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/create-notification-templates"
|
[create-notification-templates]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/create-notification-templates"
|
||||||
[create-notification-templates]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/create-notification-templates"
|
[create-notification-templates]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/create-notification-templates"
|
||||||
|
|
||||||
[using-go-templating-language]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
[using-go-templating-language]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
||||||
[using-go-templating-language]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
[using-go-templating-language]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/using-go-templating-language"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -280,12 +280,12 @@ grafana_folder = "Test alerts"
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[create-notification-templates]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/create-notification-templates"
|
[create-notification-templates]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/create-notification-templates"
|
||||||
[create-notification-templates]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/create-notification-templates"
|
[create-notification-templates]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/create-notification-templates"
|
||||||
|
|
||||||
[extendeddata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/reference#extendeddata"
|
[extendeddata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/reference#extendeddata"
|
||||||
[extendeddata]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/reference#extendeddata"
|
[extendeddata]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/reference#extendeddata"
|
||||||
|
|
||||||
[reference]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/manage-notifications/template-notifications/reference"
|
[reference]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/reference"
|
||||||
[reference]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/reference"
|
[reference]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/template-notifications/reference"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -83,9 +83,9 @@ You can handle these alerts the same way as regular alerts by adding a silence,
|
|||||||
|
|
||||||
Use the State history view to get insight into how your alert instances behave over time. View information on when a state change occurred, what the previous state was, the current state, any other alert instances that changed their state at the same time as well as what the query value was that triggered the change.
|
Use the State history view to get insight into how your alert instances behave over time. View information on when a state change occurred, what the previous state was, the current state, any other alert instances that changed their state at the same time as well as what the query value was that triggered the change.
|
||||||
|
|
||||||
### Configure the state history view
|
{{% admonition type="note" %}}
|
||||||
|
Open source users must configure alert state history in order to be able to access the view.
|
||||||
To enable the state history view, see [Configuring alert state history]({{< relref "../set-up/configure-alert-state-history/index.md" >}}).
|
{{% /admonition %}}
|
||||||
|
|
||||||
### View state history
|
### View state history
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ Set up or upgrade your implementation of Grafana Alerting.
|
|||||||
|
|
||||||
These are set-up instructions for Grafana Alerting Open Source.
|
These are set-up instructions for Grafana Alerting Open Source.
|
||||||
|
|
||||||
To set up Grafana Alerting for Cloud, see [Set up Alerting for Cloud][set-up-cloud].
|
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
- Configure your [data sources][data-source-management]
|
- Configure your [data sources][data-source-management]
|
||||||
@@ -62,24 +60,21 @@ The following topics provide you with advanced configuration options for Grafana
|
|||||||
- [Configure high availability][configure-high-availability]
|
- [Configure high availability][configure-high-availability]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[configure-alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/configure-alertmanager"
|
[configure-alertmanager]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-alertmanager"
|
||||||
[configure-alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-alertmanager"
|
[configure-alertmanager]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-alertmanager"
|
||||||
|
|
||||||
[configure-high-availability]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/configure-high-availability"
|
[configure-high-availability]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-high-availability"
|
||||||
[configure-high-availability]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-high-availability"
|
[configure-high-availability]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-high-availability"
|
||||||
|
|
||||||
[data-source-alerting]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/fundamentals/data-source-alerting"
|
[data-source-alerting]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/data-source-alerting"
|
||||||
[data-source-alerting]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/data-source-alerting"
|
[data-source-alerting]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/data-source-alerting"
|
||||||
|
|
||||||
[data-source-management]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/administration/data-source-management"
|
[data-source-management]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/administration/data-source-management"
|
||||||
[data-source-management]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/administration/data-source-management"
|
[data-source-management]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/administration/data-source-management"
|
||||||
|
|
||||||
[file-provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/provision-alerting-resources/file-provisioning"
|
[file-provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/provision-alerting-resources/file-provisioning"
|
||||||
[file-provisioning]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/provision-alerting-resources/file-provisioning"
|
[file-provisioning]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/provision-alerting-resources/file-provisioning"
|
||||||
|
|
||||||
[set-up-cloud]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/set-up-cloud"
|
[terraform-provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/provision-alerting-resources/terraform-provisioning"
|
||||||
[set-up-cloud]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/set-up-cloud"
|
|
||||||
|
|
||||||
[terraform-provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/provision-alerting-resources/terraform-provisioning"
|
|
||||||
[terraform-provisioning]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/provision-alerting-resources/terraform-provisioning"
|
[terraform-provisioning]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/provision-alerting-resources/terraform-provisioning"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -9,17 +9,13 @@ keywords:
|
|||||||
- alert state history
|
- alert state history
|
||||||
labels:
|
labels:
|
||||||
products:
|
products:
|
||||||
- cloud
|
- oss
|
||||||
title: Configure Alert State History
|
title: Configure Alert State History
|
||||||
weight: 600
|
weight: 600
|
||||||
---
|
---
|
||||||
|
|
||||||
# Configure Alert State History
|
# Configure Alert State History
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
|
||||||
This applies to Open Source only. There is no configuration required if you are using Grafana Cloud.
|
|
||||||
{{% /admonition %}}
|
|
||||||
|
|
||||||
Starting with Grafana 10, Alerting can record all alert rule state changes for your Grafana managed alert rules in a Loki instance.
|
Starting with Grafana 10, Alerting can record all alert rule state changes for your Grafana managed alert rules in a Loki instance.
|
||||||
|
|
||||||
This allows you to explore the behavior of your alert rules in the Grafana explore view and levels up the existing state history modal with a powerful new visualisation.
|
This allows you to explore the behavior of your alert rules in the Grafana explore view and levels up the existing state history modal with a powerful new visualisation.
|
||||||
|
|||||||
@@ -33,9 +33,10 @@ Since gossiping of notifications and silences uses both TCP and UDP port `9094`,
|
|||||||
|
|
||||||
1. In your custom configuration file ($WORKING_DIR/conf/custom.ini), go to the `[unified_alerting]` section.
|
1. In your custom configuration file ($WORKING_DIR/conf/custom.ini), go to the `[unified_alerting]` section.
|
||||||
2. Set `[ha_peers]` to the number of hosts for each Grafana instance in the cluster (using a format of host:port), for example, `ha_peers=10.0.0.5:9094,10.0.0.6:9094,10.0.0.7:9094`.
|
2. Set `[ha_peers]` to the number of hosts for each Grafana instance in the cluster (using a format of host:port), for example, `ha_peers=10.0.0.5:9094,10.0.0.6:9094,10.0.0.7:9094`.
|
||||||
You must have at least one (1) Grafana instance added to the [`[ha_peer]` section.
|
You must have at least one (1) Grafana instance added to the `ha_peers` section.
|
||||||
3. Set `[ha_listen_address]` to the instance IP address using a format of `host:port` (or the [Pod's](https://kubernetes.io/docs/concepts/workloads/pods/) IP in the case of using Kubernetes).
|
3. Set `[ha_listen_address]` to the instance IP address using a format of `host:port` (or the [Pod's](https://kubernetes.io/docs/concepts/workloads/pods/) IP in the case of using Kubernetes).
|
||||||
By default, it is set to listen to all interfaces (`0.0.0.0`).
|
By default, it is set to listen to all interfaces (`0.0.0.0`).
|
||||||
|
4. Set `[ha_peer_timeout]` in the `[unified_alerting]` section of the custom.ini to specify the time to wait for an instance to send a notification via the Alertmanager. The default value is 15s, but it may increase if Grafana servers are located in different geographic regions or if the network latency between them is high
|
||||||
|
|
||||||
## Enable alerting high availability using Kubernetes
|
## Enable alerting high availability using Kubernetes
|
||||||
|
|
||||||
@@ -101,4 +102,5 @@ enabled = true
|
|||||||
ha_listen_address = "${POD_IP}:9094"
|
ha_listen_address = "${POD_IP}:9094"
|
||||||
ha_peers = "grafana-alerting.grafana:9094"
|
ha_peers = "grafana-alerting.grafana:9094"
|
||||||
ha_advertise_address = "${POD_IP}:9094"
|
ha_advertise_address = "${POD_IP}:9094"
|
||||||
|
ha_peer_timeout = 15s
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- difference-old-new/
|
- ../migrating-alerts/ # /docs/grafana/<GRAFANA_VERSION>/alerting/migrating-alerts/
|
||||||
- unified-alerting/
|
|
||||||
- unified-alerting/difference-old-new/
|
|
||||||
- alerting/migrating-alerts/
|
|
||||||
canonical: https://grafana.com/docs/grafana/latest/alerting/set-up/migrating-alerts/
|
canonical: https://grafana.com/docs/grafana/latest/alerting/set-up/migrating-alerts/
|
||||||
description: Upgrade Grafana alerts
|
description: Upgrade Grafana alerts
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ Refer to our [upgrade instructions][migrating-alerts].
|
|||||||
- [Angular support deprecation][angular_deprecation]
|
- [Angular support deprecation][angular_deprecation]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[angular_deprecation]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/developers/angular_deprecation"
|
[angular_deprecation]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/developers/angular_deprecation"
|
||||||
[angular_deprecation]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/developers/angular_deprecation"
|
[angular_deprecation]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/developers/angular_deprecation"
|
||||||
|
|
||||||
[migrating-alerts]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/migrating-alerts"
|
[migrating-alerts]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/migrating-alerts"
|
||||||
[migrating-alerts]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/migrating-alerts"
|
[migrating-alerts]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/migrating-alerts"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -4,17 +4,17 @@ aliases:
|
|||||||
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/alertmanager/
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/alertmanager/
|
||||||
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/alertmanager/
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/alertmanager/
|
||||||
canonical: https://grafana.com/docs/grafana/latest/alerting/set-up/migrating-alerts/legacy-alerting/grafana-cloud-alerting/alertmanager/
|
canonical: https://grafana.com/docs/grafana/latest/alerting/set-up/migrating-alerts/legacy-alerting/grafana-cloud-alerting/alertmanager/
|
||||||
description: Alertmanager
|
description: Alertmanager (legacy)
|
||||||
labels:
|
labels:
|
||||||
products:
|
products:
|
||||||
- cloud
|
- cloud
|
||||||
- enterprise
|
- enterprise
|
||||||
- oss
|
- oss
|
||||||
title: Alertmanager
|
title: Alertmanager (legacy)
|
||||||
weight: 500
|
weight: 500
|
||||||
---
|
---
|
||||||
|
|
||||||
# Alertmanager
|
# Alertmanager (legacy)
|
||||||
|
|
||||||
Grafana Cloud Alerting allows you to edit and view configuration for your Alertmanager directly inside of Grafana. See the official [Alertmanager documentation](https://prometheus.io/docs/alerting/latest/configuration/) to learn how to configure.
|
Grafana Cloud Alerting allows you to edit and view configuration for your Alertmanager directly inside of Grafana. See the official [Alertmanager documentation](https://prometheus.io/docs/alerting/latest/configuration/) to learn how to configure.
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,6 @@ Click **View in Explore** or click the `expr` link to open the `expr` in [Explor
|
|||||||
> **Note:** Only users with Admin or Editor roles in an organization can use the Explore feature unless the viewers can edit.
|
> **Note:** Only users with Admin or Editor roles in an organization can use the Explore feature unless the viewers can edit.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[explore]: "/docs/grafana -> /docs/grafana/<GRAFANA VERSION>/explore"
|
[explore]: "/docs/grafana -> /docs/grafana/<GRAFANA_VERSION>/explore"
|
||||||
[explore]: "/docs/grafana-cloud/-> /docs/grafana/<GRAFANA VERSION>/explore"
|
[explore]: "/docs/grafana-cloud/-> /docs/grafana/<GRAFANA_VERSION>/explore"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -28,9 +28,11 @@ There are three options to choose from:
|
|||||||
|
|
||||||
1. Provision your alerting resources using the Alerting Provisioning HTTP API.
|
1. Provision your alerting resources using the Alerting Provisioning HTTP API.
|
||||||
|
|
||||||
For more information on the Alerting Provisioning HTTP API, refer to [Alerting provisioning API]({{< relref "../../../developers/http_api/alerting_provisioning" >}}).
|
For more information on the Alerting Provisioning HTTP API, refer to [Alerting provisioning HTTP API][alerting_provisioning].
|
||||||
|
|
||||||
1. Provision your alerting resources using [Terraform](https://www.terraform.io/).
|
1. {{% admonition type="note" %}}
|
||||||
|
If you are using Open Source, you can provision your alerting resources using [Terraform](https://www.terraform.io/).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
|
|
||||||
@@ -40,14 +42,12 @@ Currently, provisioning for Grafana Alerting supports alert rules, contact point
|
|||||||
|
|
||||||
[Grafana provisioning][provisioning]
|
[Grafana provisioning][provisioning]
|
||||||
|
|
||||||
[Terraform provisioning](/docs/grafana-cloud/infrastructure-as-code/terraform/)
|
|
||||||
|
|
||||||
[Grafana Alerting provisioning API][alerting_provisioning]
|
[Grafana Alerting provisioning API][alerting_provisioning]
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alerting_provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/developers/http_api/alerting_provisioning"
|
[alerting_provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/developers/http_api/alerting_provisioning"
|
||||||
[alerting_provisioning]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/developers/http_api/alerting_provisioning"
|
[alerting_provisioning]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/developers/http_api/alerting_provisioning"
|
||||||
|
|
||||||
[provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/administration/provisioning"
|
[provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/administration/provisioning"
|
||||||
[provisioning]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/administration/provisioning"
|
[provisioning]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/administration/provisioning"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ deleteRules:
|
|||||||
Create or delete contact points in your Grafana instance(s).
|
Create or delete contact points in your Grafana instance(s).
|
||||||
|
|
||||||
1. Create a contact point in Grafana.
|
1. Create a contact point in Grafana.
|
||||||
1. Use the [Alerting provisioning API]({{< relref "../../../../developers/http_api/alerting_provisioning" >}}) export endpoints to download a provisioning file for your contact point.
|
1. Use the [Alerting provisioning API][alerting_provisioning] export endpoints to download a provisioning file for your contact point.
|
||||||
1. Copy the contents into a YAML or JSON configuration file in the default provisioning directory or in your configured directory.
|
1. Copy the contents into a YAML or JSON configuration file in the default provisioning directory or in your configured directory.
|
||||||
|
|
||||||
Example configuration files can be found below.
|
Example configuration files can be found below.
|
||||||
@@ -497,12 +497,12 @@ settings:
|
|||||||
Create or reset the notification policy tree in your Grafana instance(s).
|
Create or reset the notification policy tree in your Grafana instance(s).
|
||||||
|
|
||||||
1. Create a notification policy in Grafana.
|
1. Create a notification policy in Grafana.
|
||||||
2. Use the [Alerting provisioning API]({{< relref "../../../../developers/http_api/alerting_provisioning" >}}) export endpoints to download a provisioning file for your notification policy.
|
1. Use the [Alerting provisioning API][alerting_provisioning] export endpoints to download a provisioning file for your notification policy.
|
||||||
3. Copy the contents into a YAML or JSON configuration file in the default provisioning directory or in your configured directory.
|
1. Copy the contents into a YAML or JSON configuration file in the default provisioning directory or in your configured directory.
|
||||||
|
|
||||||
Example configuration files can be found below.
|
Example configuration files can be found below.
|
||||||
|
|
||||||
4. Ensure that your files are in the right directory on the node running the Grafana server, so that they deploy alongside your Grafana instance(s).
|
1. Ensure that your files are in the right directory on the node running the Grafana server, so that they deploy alongside your Grafana instance(s).
|
||||||
|
|
||||||
Here is an example of a configuration file for creating notification policies.
|
Here is an example of a configuration file for creating notification policies.
|
||||||
|
|
||||||
@@ -603,10 +603,10 @@ apiVersion: 1
|
|||||||
# List of templates to import or update
|
# List of templates to import or update
|
||||||
templates:
|
templates:
|
||||||
# <int> organization ID, default = 1
|
# <int> organization ID, default = 1
|
||||||
- orgID: 1
|
- orgId: 1
|
||||||
# <string, required> name of the template, must be unique
|
# <string, required> name of the template, must be unique
|
||||||
name: my_first_template
|
name: my_first_template
|
||||||
# <string, required> content of the the template
|
# <string, required> content of the template
|
||||||
template: Alerting with a custom text template
|
template: Alerting with a custom text template
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -652,7 +652,7 @@ muteTimes:
|
|||||||
- times:
|
- times:
|
||||||
- start_time: '06:00'
|
- start_time: '06:00'
|
||||||
end_time: '23:59'
|
end_time: '23:59'
|
||||||
location: 'UTC'
|
location: 'UTC'
|
||||||
weekdays: ['monday:wednesday', 'saturday', 'sunday']
|
weekdays: ['monday:wednesday', 'saturday', 'sunday']
|
||||||
months: ['1:3', 'may:august', 'december']
|
months: ['1:3', 'may:august', 'december']
|
||||||
years: ['2020:2022', '2030']
|
years: ['2020:2022', '2030']
|
||||||
@@ -729,9 +729,9 @@ spec:
|
|||||||
This eliminates the need for a persistent database to use Grafana Alerting in Kubernetes; all your provisioned resources appear after each restart or re-deployment. Grafana still requires a database for normal operation, you do not need to persist the contents of the database between restarts if all objects are provisioned using files.
|
This eliminates the need for a persistent database to use Grafana Alerting in Kubernetes; all your provisioned resources appear after each restart or re-deployment. Grafana still requires a database for normal operation, you do not need to persist the contents of the database between restarts if all objects are provisioned using files.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alerting_provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/developers/http_api/alerting_provisioning"
|
[alerting_provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/developers/http_api/alerting_provisioning"
|
||||||
[alerting_provisioning]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/developers/http_api/alerting_provisioning"
|
[alerting_provisioning]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/developers/http_api/alerting_provisioning"
|
||||||
|
|
||||||
[reload-provisioning-configurations]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/developers/http_api/admin#reload-provisioning-configurations"
|
[reload-provisioning-configurations]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/developers/http_api/admin#reload-provisioning-configurations"
|
||||||
[reload-provisioning-configurations]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/developers/http_api/admin#reload-provisioning-configurations"
|
[reload-provisioning-configurations]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/developers/http_api/admin#reload-provisioning-configurations"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ By default, you cannot edit resources provisioned via Terraform from the UI. Thi
|
|||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
|
|
||||||
You can re-use the same templates across many contact points. In the example above, a shared template ie embedded using the statement `{{ template “Alert Instance Template” . }}`
|
You can reuse the same templates across many contact points. In the example above, a shared template ie embedded using the statement `{{ template “Alert Instance Template” . }}`
|
||||||
|
|
||||||
This fragment can then be managed separately in Terraform:
|
This fragment can then be managed separately in Terraform:
|
||||||
|
|
||||||
@@ -353,15 +353,15 @@ When the alert fires, Grafana routes a notification through the policy you defin
|
|||||||
For example, if you chose Slack as a contact point, Grafana’s embedded [Alertmanager](https://github.com/prometheus/alertmanager) automatically posts a message to Slack.
|
For example, if you chose Slack as a contact point, Grafana’s embedded [Alertmanager](https://github.com/prometheus/alertmanager) automatically posts a message to Slack.
|
||||||
|
|
||||||
{{% docs/reference %}}
|
{{% docs/reference %}}
|
||||||
[alerting-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/alerting-rules"
|
[alerting-rules]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules"
|
||||||
[alerting-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules"
|
[alerting-rules]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules"
|
||||||
|
|
||||||
[api-keys]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/administration/api-keys"
|
[api-keys]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/administration/api-keys"
|
||||||
[api-keys]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/administration/api-keys"
|
[api-keys]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/administration/api-keys"
|
||||||
|
|
||||||
[service-accounts]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/administration/service-accounts"
|
[service-accounts]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/administration/service-accounts"
|
||||||
[service-accounts]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/administration/service-accounts"
|
[service-accounts]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/administration/service-accounts"
|
||||||
|
|
||||||
[testdata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/datasources/testdata"
|
[testdata]: "/docs/grafana/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/testdata"
|
||||||
[testdata]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA VERSION>/datasources/testdata"
|
[testdata]: "/docs/grafana-cloud/ -> /docs/grafana/<GRAFANA_VERSION>/datasources/testdata"
|
||||||
{{% /docs/reference %}}
|
{{% /docs/reference %}}
|
||||||
|
|||||||
@@ -1,260 +0,0 @@
|
|||||||
---
|
|
||||||
aliases:
|
|
||||||
- /docs/grafana-cloud/alerts/alerts-rules/
|
|
||||||
- /docs/grafana-cloud/how-do-i/alerts/alerts-rules/
|
|
||||||
- /docs/grafana-cloud/legacy-alerting/alerts-rules/
|
|
||||||
- /docs/grafana-cloud/metrics/prometheus/alerts_rules/
|
|
||||||
- /docs/hosted-metrics/prometheus/alerts_rules/
|
|
||||||
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/
|
|
||||||
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/
|
|
||||||
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/
|
|
||||||
canonical: https://grafana.com/docs/grafana/latest/alerting/set-up/set-up-cloud/
|
|
||||||
description: How to configure Alerting for Cloud
|
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- cloud
|
|
||||||
title: Set up Alerting for Cloud
|
|
||||||
weight: 100
|
|
||||||
---
|
|
||||||
|
|
||||||
# Set up Alerting for Cloud
|
|
||||||
|
|
||||||
Set up your implementation of Grafana Alerting for Cloud.
|
|
||||||
|
|
||||||
Grafana Cloud alerts are directly tied to metrics and log data.
|
|
||||||
|
|
||||||
They can be configured either using the UI or by uploading files containing Prometheus and Loki alert rules with mimirtool.
|
|
||||||
|
|
||||||
Grafana Cloud Alerting's Prometheus-style alerts are built by querying directly from the data source itself.
|
|
||||||
|
|
||||||
**Note:**
|
|
||||||
|
|
||||||
These are set up instructions for Grafana Alerting Cloud.
|
|
||||||
|
|
||||||
To set up Grafana Alerting for Open Source, see [Set up][set-up].
|
|
||||||
|
|
||||||
To set up Alerting, you need to:
|
|
||||||
|
|
||||||
1. Configure alert rules
|
|
||||||
|
|
||||||
- Create Mimir/Loki-managed alert rules and recording rules
|
|
||||||
|
|
||||||
2. Configure contact points
|
|
||||||
- Check the default contact point and update the email address
|
|
||||||
- [Optional] Add new contact points and integrations
|
|
||||||
3. Configure notification policies
|
|
||||||
|
|
||||||
- Check the default notification policy
|
|
||||||
- [Optional] Add additional nested policies
|
|
||||||
- [Optional] Add labels and label matchers to control alert routing
|
|
||||||
|
|
||||||
4. [Optional] Integrate with [Grafana OnCall](/docs/oncall/latest/integrations/grafana-alerting) and [Grafana Incident](/docs/grafana-cloud/incident/set-up)
|
|
||||||
|
|
||||||
## Advanced set up options
|
|
||||||
|
|
||||||
Grafana Alerting supports many additional configuration options, from configuring external Alertmanagers to routing Grafana-managed alerts outside of Grafana, to defining your alerting setup as code.
|
|
||||||
|
|
||||||
The following topics provide you with advanced configuration options for Grafana Alerting for Cloud.
|
|
||||||
|
|
||||||
### Provision alert rules using mimirtool
|
|
||||||
|
|
||||||
Use `mimirtool` to create and upload alert and recording rules to your Grafana Cloud instance.
|
|
||||||
|
|
||||||
Once created, you can view these alert and recordiing rules from within the Grafana Cloud Alerting page in the UI.
|
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
|
||||||
`mimirtool` does _not_ support Loki.
|
|
||||||
{{% /admonition %}}
|
|
||||||
|
|
||||||
Prometheus-style alerting is driven by your Grafana Cloud Metrics, Grafana Cloud Logs, and Grafana Cloud Alerts instances. The Metrics and Logs instance holds the rules definition, while the Alerts instance is in charge of routing and managing the alerts that fire from the Metrics and Logs instance. These are separate systems that must be individually configured in order for alerting to work correctly.
|
|
||||||
|
|
||||||
The following sections cover all of these concepts:
|
|
||||||
|
|
||||||
- How to upload alerting and recording rules definition to your Grafana Cloud Metrics instance
|
|
||||||
- How to upload alerting rules definition to your Grafana Cloud Logs instance
|
|
||||||
- How to configure an Alertmanager for your Grafana Cloud Alerts instance, giving you access to the Alertmanager UI.
|
|
||||||
|
|
||||||
**Note:** You need an API key with proper permissions. You can use the same API key for your Metric, Log, and Alerting instances.
|
|
||||||
|
|
||||||
#### Download and install mimirtool
|
|
||||||
|
|
||||||
`mimirtool` is a powerful command-line tool for interacting with Grafana Mimir, which powers Grafana Cloud Metrics and Alerts. Use `mimirtool` to upload your metric and log rules definition and the Alertmanager configuration using YAML files.
|
|
||||||
|
|
||||||
For more information, including installation instructions, see [Grafana Mimirtool](/docs/mimir/latest/operators-guide/tools/mimirtool).
|
|
||||||
|
|
||||||
{{% admonition type="note" %}}
|
|
||||||
For `mimirtool` to interact with Grafana Cloud, you must set the correct configuration variables. Set them using either environment variables or a command line flags.
|
|
||||||
{{% /admonition %}}
|
|
||||||
|
|
||||||
#### Upload rules definition to your Grafana Cloud Metrics and Logs instance
|
|
||||||
|
|
||||||
First, you'll need to upload your alerting and recording rules to your Metrics and Logs instance. You'll need the instance ID and the URL. These should be part of /orgs/`<yourOrgName>`/.
|
|
||||||
|
|
||||||
**Metrics instance**
|
|
||||||
|
|
||||||
Your Metrics instance is likely to be in the `us-central1` region. Its address would be in the form of [https://prometheus-us-central1.grafana.net](https://prometheus-us-central1.grafana.net).
|
|
||||||
|
|
||||||
**Logs instance**
|
|
||||||
|
|
||||||
Your Logs instance is likely to be in the `us-central1` region. Its address would be in the form of [https://logs-prod-us-central1.grafana.net](https://logs-prod-us-central1.grafana.net).
|
|
||||||
|
|
||||||
#### Use mimirtool
|
|
||||||
|
|
||||||
With your instance ID, URL, and API key you're now ready to upload your rules to your metrics instance. Use the following commands and files as a reference.
|
|
||||||
|
|
||||||
Below is an example alert and rule definition YAML file. Take note of the namespace key which replaces the concept of "files" in this context given each instance only supports 1 configuration file.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# first_rules.yml
|
|
||||||
namespace: 'first_rules'
|
|
||||||
groups:
|
|
||||||
- name: 'shopping_service_rules_and_alerts'
|
|
||||||
rules:
|
|
||||||
- alert: 'PromScrapeFailed'
|
|
||||||
annotations:
|
|
||||||
message: 'Prometheus failed to scrape a target {{ $labels.job }} / {{ $labels.instance }}'
|
|
||||||
expr: 'up != 1'
|
|
||||||
for: '1m'
|
|
||||||
labels:
|
|
||||||
'severity': 'critical'
|
|
||||||
- record: 'job:up:sum'
|
|
||||||
expr: 'sum by(job) (up)'
|
|
||||||
```
|
|
||||||
|
|
||||||
Although both recording and alerting rules are defined under the key `rules` the difference between a rule and and alert is _generally_ (as there are others) whenever the key `record` or `alert` is defined.
|
|
||||||
|
|
||||||
With this file, you can run the following commands to upload your rules file in your Metrics or Logs instance. Keep in mind that these are example commands for your Metrics instance, and they use placeholders and command line flags. Follow a similar pattern for your Logs instances by switching the address to the correct one. The examples also assume that files are located in the same directory.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mimirtool rules load first_rules.yml \
|
|
||||||
--address=https://prometheus-us-central1.grafana.net \
|
|
||||||
--id=<yourID> \
|
|
||||||
--key=<yourKey>
|
|
||||||
```
|
|
||||||
|
|
||||||
Next, confirm that the rules were uploaded correctly by running:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mimirtool rules list \
|
|
||||||
--address=https://prometheus-us-central1.grafana.net \
|
|
||||||
--id=<yourID> \
|
|
||||||
--key=<yourKey>
|
|
||||||
```
|
|
||||||
|
|
||||||
Output is a list that shows you all the namespaces and rule groups for your instance ID:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
Namespace | Rule Group
|
|
||||||
first_rules | shopping_service_rules_and_alerts
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also print the rules:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mimirtool rules print \
|
|
||||||
--address=https://prometheus-us-central1.grafana.net \
|
|
||||||
--id=<yourID> \
|
|
||||||
--key=<yourKey>
|
|
||||||
```
|
|
||||||
|
|
||||||
Output from the print command should look like this:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
first_rules:
|
|
||||||
- name: shopping_service_rules_and_alerts
|
|
||||||
interval: 0s
|
|
||||||
rules:
|
|
||||||
- alert: PromScrapeFailed
|
|
||||||
expr: up != 1
|
|
||||||
for: 1m
|
|
||||||
labels:
|
|
||||||
severity: critical
|
|
||||||
annotations:
|
|
||||||
message: Prometheus failed to scrape a target {{ $labels.job }} / {{ $labels.instance }}
|
|
||||||
- record: job:up:sum
|
|
||||||
expr: sum by(job) (up)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Add an external Alertmanager using mimirtool
|
|
||||||
|
|
||||||
To receive alerts you need to upload your Alertmanager configuration to your Grafana Cloud Alerts instance. Similar to the previous step, you need the corresponding instance ID, URL and API key. These should be part of /orgs/`<yourOrgName>`/.
|
|
||||||
|
|
||||||
Your Alerts instance is likely to be in the `us-central1` region. Its address would be in the form of [https://alertmanager-us-central1.grafana.net](https://alertmanager-us-central1.grafana.net).
|
|
||||||
|
|
||||||
#### Use mimirtool
|
|
||||||
|
|
||||||
With your instance ID, URL, and API key you're now ready to upload your Alertmanager configuration to your Alerts instance. Use the following commands and files as a reference.
|
|
||||||
|
|
||||||
Ultimately, you'll need to [write your own](https://prometheus.io/docs/alerting/latest/configuration/) or adapt an [example config file](https://github.com/prometheus/alertmanager/blob/master/doc/examples/simple.yml) for alerts to be delivered.
|
|
||||||
|
|
||||||
Below is an example Alertmanager configuration. Please take that this not a working configuration, your alerts won't be delivered with the following configuration but your Alertmanager UI will be accessible.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# alertmanager.yml
|
|
||||||
global:
|
|
||||||
smtp_smarthost: 'localhost:25'
|
|
||||||
smtp_from: 'youraddress@example.org'
|
|
||||||
route:
|
|
||||||
receiver: example-email
|
|
||||||
receivers:
|
|
||||||
- name: example-email
|
|
||||||
email_configs:
|
|
||||||
- to: 'youraddress@example.org'
|
|
||||||
```
|
|
||||||
|
|
||||||
With this file, you can run the following commands to upload your Alertmanager configuration in your Alerts instance.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mimirtool alertmanager load alertmanager.yml \
|
|
||||||
--address=https://alertmanager-us-central1.grafana.net \
|
|
||||||
--id=<yourID> \
|
|
||||||
--key=<yourKey>
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, confirm that the rules were uploaded correctly by running:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mimirtool alertmanager get \
|
|
||||||
--address=https://alertmanager-us-central1.grafana.net \
|
|
||||||
--id=<yourID> \
|
|
||||||
--key=<yourKey>
|
|
||||||
```
|
|
||||||
|
|
||||||
You should see output similar to the following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
global:
|
|
||||||
smtp_smarthost: 'localhost:25'
|
|
||||||
smtp_from: 'youraddress@example.org'
|
|
||||||
route:
|
|
||||||
receiver: example-email
|
|
||||||
receivers:
|
|
||||||
- name: example-email
|
|
||||||
email_configs:
|
|
||||||
- to: 'youraddress@example.org'
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, you can delete the configuration with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mimirtool alertmanager delete \
|
|
||||||
--address=https://alertmanager-us-central1.grafana.net \
|
|
||||||
--id=<yourID> \
|
|
||||||
--key=<yourKey>
|
|
||||||
```
|
|
||||||
|
|
||||||
#### UI access
|
|
||||||
|
|
||||||
After you upload a working Alertmanager configuration file, you can access the Alertmanager UI at: https://alertmanager-us-central1.grafana.net/alertmanager.
|
|
||||||
|
|
||||||
### Provision alert rules using Terraform
|
|
||||||
|
|
||||||
For information on how to provision alert rule using Terraform, see [Provision alert rules using Terraform][terraform-provisioning].
|
|
||||||
|
|
||||||
{{% docs/reference %}}
|
|
||||||
[set-up]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up"
|
|
||||||
[set-up]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up"
|
|
||||||
|
|
||||||
[terraform-provisioning]: "/docs/grafana/ -> /docs/grafana/<GRAFANA VERSION>/alerting/set-up/provision-alerting-resources/terraform-provisioning"
|
|
||||||
[terraform-provisioning]: "/docs/grafana-cloud/ -> /docs/grafana-cloud/alerting-and-irm/alerting/set-up/provision-alerting-resources/terraform-provisioning"
|
|
||||||
{{% /docs/reference %}}
|
|
||||||
@@ -343,7 +343,7 @@ Here are some of the benefits of create-plugin:
|
|||||||
|
|
||||||
- **Improved testing capabilities:** Testing plugins with @grafana/create-plugin is much easier with GitHub workflows that automate unit and e2e test runs whenever changes are pushed to GitHub.
|
- **Improved testing capabilities:** Testing plugins with @grafana/create-plugin is much easier with GitHub workflows that automate unit and e2e test runs whenever changes are pushed to GitHub.
|
||||||
|
|
||||||
- **Better documentation:** The [documentation](https://grafana.github.io/plugin-tools/docs/creating-a-plugin) for @grafana/create-plugin is more comprehensive and easier to discover than that of @grafana/toolkit.
|
- **Better documentation:** The [documentation](https://grafana.github.io/plugin-tools/docs/get-started/) for @grafana/create-plugin is more comprehensive and easier to discover than that of @grafana/toolkit.
|
||||||
|
|
||||||
#### Migration path
|
#### Migration path
|
||||||
|
|
||||||
@@ -361,7 +361,7 @@ npx @grafana/create-plugin@latest migrate
|
|||||||
|
|
||||||
#### Learn more
|
#### Learn more
|
||||||
|
|
||||||
- [Migration guide](https://grafana.github.io/plugin-tools/docs/migrating-from-toolkit/)
|
- [Migration guide](https://grafana.github.io/plugin-tools/docs/get-started/migrate-from-toolkit)
|
||||||
|
|
||||||
## Deprecations
|
## Deprecations
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user