Compare commits
399 Commits
sriram/SQL
...
v10.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a30620b85 | ||
|
|
26b48dbf19 | ||
|
|
9a4d391fc4 | ||
|
|
d9b189e5b6 | ||
|
|
6c846786ae | ||
|
|
092b7506e1 | ||
|
|
77b024bbc3 | ||
|
|
080c56b128 | ||
|
|
cba55752b9 | ||
|
|
7d013dc236 | ||
|
|
baf8e6389d | ||
|
|
0759ac1a52 | ||
|
|
264fdb9e8b | ||
|
|
af98396285 | ||
|
|
edd4faf064 | ||
|
|
f145c251d1 | ||
|
|
3a977f9ea9 | ||
|
|
15ae80757b | ||
|
|
2209deb0bf | ||
|
|
91ef2045bc | ||
|
|
a47fa6f30d | ||
|
|
30363dbc34 | ||
|
|
225f6f8298 | ||
|
|
18303f09b3 | ||
|
|
e9a8bc8b2e | ||
|
|
734e8c4f9c | ||
|
|
01b07571b2 | ||
|
|
9e6811995d | ||
|
|
4f90970027 | ||
|
|
0a3c39b8d4 | ||
|
|
115766e717 | ||
|
|
411a7a9cf7 | ||
|
|
a319efb964 | ||
|
|
c7315074b2 | ||
|
|
f60097b5e8 | ||
|
|
39cd2f19e5 | ||
|
|
20916f597c | ||
|
|
3322d7f06e | ||
|
|
2de7d96b46 | ||
|
|
0a369df512 | ||
|
|
0a68a30724 | ||
|
|
514db9a9e4 | ||
|
|
100e7f1c80 | ||
|
|
4f552bba85 | ||
|
|
9c8d884dc0 | ||
|
|
2569ab8d71 | ||
|
|
c5bfe516df | ||
|
|
d55bee35df | ||
|
|
717859a1f4 | ||
|
|
26c7cabef5 | ||
|
|
5d556b697b | ||
|
|
1b2e96e385 | ||
|
|
da1061a0c0 | ||
|
|
fb5b3377ba | ||
|
|
ba6fe9d9a9 | ||
|
|
8a10a07a5b | ||
|
|
9abb6187a4 | ||
|
|
53ecafb399 | ||
|
|
661245223d | ||
|
|
a136d275af | ||
|
|
287a3e545e | ||
|
|
bae2511c2e | ||
|
|
4cbdabdbdf | ||
|
|
98dd7b9d98 | ||
|
|
cb5d3c8ffd | ||
|
|
6f023b3d3c | ||
|
|
8111a4268b | ||
|
|
7297540729 | ||
|
|
32be98b061 | ||
|
|
f06f812509 | ||
|
|
f3c0bc0749 | ||
|
|
9288017ffe | ||
|
|
f7766f73b8 | ||
|
|
4184cd09f4 | ||
|
|
bbe52eea97 | ||
|
|
2c7f295cf4 | ||
|
|
f3fab4078d | ||
|
|
62c7aec839 | ||
|
|
e05505b09a | ||
|
|
c90c8d88dc | ||
|
|
5dacbb97e0 | ||
|
|
d9995996e7 | ||
|
|
7d9015cfb8 | ||
|
|
d9cc7ba3b8 | ||
|
|
0cdb85af0b | ||
|
|
665430bafb | ||
|
|
bd6526c278 | ||
|
|
589a2b6e68 | ||
|
|
0dfcf4346a | ||
|
|
a1576b83d2 | ||
|
|
20a24dff7c | ||
|
|
838f52ec44 | ||
|
|
85f514d6cc | ||
|
|
4591d305ed | ||
|
|
e1466bf47e | ||
|
|
45694ea55b | ||
|
|
dac19cba9c | ||
|
|
9ec1100289 | ||
|
|
7d33beacf3 | ||
|
|
f0fd0f50bb | ||
|
|
781a531137 | ||
|
|
71eda16c12 | ||
|
|
02411bc29f | ||
|
|
2b8a416c51 | ||
|
|
242f4e04c0 | ||
|
|
302aa2f838 | ||
|
|
04330a0a4d | ||
|
|
1d5f90b720 | ||
|
|
903856aa6c | ||
|
|
4f4f3a99c1 | ||
|
|
6148dfc3d9 | ||
|
|
9b05220e4e | ||
|
|
7cf2733e12 | ||
|
|
6aee75291a | ||
|
|
778d9690d2 | ||
|
|
6210def1bc | ||
|
|
c41eb07a63 | ||
|
|
600ff36f62 | ||
|
|
4fc9648845 | ||
|
|
9f9e4453bc | ||
|
|
4665a01827 | ||
|
|
0a6e80c6cf | ||
|
|
f6a00efeee | ||
|
|
50f321b939 | ||
|
|
631e55c5b7 | ||
|
|
eb4d486525 | ||
|
|
de7805dbed | ||
|
|
04e461b560 | ||
|
|
c8912b1b9e | ||
|
|
cdfff3e10a | ||
|
|
5ca02fa184 | ||
|
|
58886bb850 | ||
|
|
d335b326e8 | ||
|
|
77a6dc7de9 | ||
|
|
6d9ed6ee71 | ||
|
|
46955e6ada | ||
|
|
2c7c61a08e | ||
|
|
c0627d8a16 | ||
|
|
e5f99bf7e5 | ||
|
|
70f9bcd177 | ||
|
|
5b95726203 | ||
|
|
2b653f3ae5 | ||
|
|
ae50b74046 | ||
|
|
2b95f85f29 | ||
|
|
23f2f9b816 | ||
|
|
6f11409f79 | ||
|
|
e436872496 | ||
|
|
2a321a5c0d | ||
|
|
a81452b437 | ||
|
|
9df2e093b1 | ||
|
|
41ec10f49f | ||
|
|
9710e15316 | ||
|
|
2b9e4b0c15 | ||
|
|
a94a5bcf10 | ||
|
|
54dcc66a25 | ||
|
|
b3b6188074 | ||
|
|
ed0089bcb8 | ||
|
|
f2f9b7f47c | ||
|
|
082b7c9d44 | ||
|
|
7d7a799574 | ||
|
|
e97a2f0482 | ||
|
|
0b846e7f1f | ||
|
|
21f45c85d9 | ||
|
|
e5a71e81aa | ||
|
|
e1f00558cd | ||
|
|
c511c37756 | ||
|
|
0e37044bc3 | ||
|
|
f1d9b6b636 | ||
|
|
d841e2c09b | ||
|
|
2b7b737390 | ||
|
|
0b9cb47dd7 | ||
|
|
085adb57ce | ||
|
|
e5153d7bf3 | ||
|
|
95726f1530 | ||
|
|
dc6fb6d7a4 | ||
|
|
8c8ecef1ca | ||
|
|
1320d12aa7 | ||
|
|
c774f055d5 | ||
|
|
f5220c12ba | ||
|
|
9757c337fb | ||
|
|
dfa3b0912c | ||
|
|
261ba03efe | ||
|
|
a25b103c2f | ||
|
|
094223d854 | ||
|
|
981dfd9dba | ||
|
|
54010b47f7 | ||
|
|
2f866cda62 | ||
|
|
0946897262 | ||
|
|
d73bf1838e | ||
|
|
d1f6d46edd | ||
|
|
74af6f9343 | ||
|
|
b160f1a92a | ||
|
|
ec1989b850 | ||
|
|
36d8798355 | ||
|
|
1e8c28eff4 | ||
|
|
defce65315 | ||
|
|
615641f095 | ||
|
|
dba7dcb99d | ||
|
|
6683193aa9 | ||
|
|
d6e07d7715 | ||
|
|
fd0878cf30 | ||
|
|
05e0745d6b | ||
|
|
05e896c8f7 | ||
|
|
8ff5718782 | ||
|
|
dd4419568d | ||
|
|
5a6e6624e0 | ||
|
|
e21236b55e | ||
|
|
4b66d1286e | ||
|
|
d62f2989a8 | ||
|
|
c6714730b8 | ||
|
|
1a736942ae | ||
|
|
d5e62fa348 | ||
|
|
d0b45d87fe | ||
|
|
89ade6043d | ||
|
|
7d4da5cf5e | ||
|
|
fc013825d8 | ||
|
|
9fb6dcdeb8 | ||
|
|
996b4c30c2 | ||
|
|
a8acaa3681 | ||
|
|
5ef56b2843 | ||
|
|
e4d5fb99ca | ||
|
|
69d19f6aea | ||
|
|
162b6c7db0 | ||
|
|
1bc31120dd | ||
|
|
1740dba8f3 | ||
|
|
1e9f73df62 | ||
|
|
4cb0fb9c92 | ||
|
|
eb658a26a1 | ||
|
|
330e64867f | ||
|
|
fb679a0f85 | ||
|
|
6f803efb63 | ||
|
|
21e2ac6d8a | ||
|
|
3c1b5dda40 | ||
|
|
e7131470cd | ||
|
|
e2fbb6ef97 | ||
|
|
feb94ac72f | ||
|
|
b57f0aaf78 | ||
|
|
1c4645c1de | ||
|
|
cd1fffe054 | ||
|
|
bd533a2246 | ||
|
|
bc5674cdee | ||
|
|
303bb6c5a8 | ||
|
|
714f9b5e7a | ||
|
|
4dc76672d3 | ||
|
|
feae460c48 | ||
|
|
fde1e6f028 | ||
|
|
09c68763ff | ||
|
|
18ef15e2b8 | ||
|
|
5940138ddc | ||
|
|
d0cf3d1b48 | ||
|
|
2641637106 | ||
|
|
c3c68d2aa2 | ||
|
|
2712008ca1 | ||
|
|
61c237a25e | ||
|
|
dd27c4e854 | ||
|
|
9d162ef3f6 | ||
|
|
4d1a71f589 | ||
|
|
797298555c | ||
|
|
c4ec980527 | ||
|
|
d2f74c4942 | ||
|
|
67ad2032df | ||
|
|
27059d710b | ||
|
|
050b7e5e7b | ||
|
|
ff574e707d | ||
|
|
7e253d37c3 | ||
|
|
531b6f29fd | ||
|
|
189f2879c0 | ||
|
|
9172ff35ed | ||
|
|
f7047afa5c | ||
|
|
9c76665998 | ||
|
|
d63c7caad5 | ||
|
|
f2593ec7af | ||
|
|
0a4f4c1951 | ||
|
|
5f0f4ab417 | ||
|
|
86195d1937 | ||
|
|
1654b7abed | ||
|
|
2cf876d8f8 | ||
|
|
d5fd652f83 | ||
|
|
c126ea976f | ||
|
|
42ad031585 | ||
|
|
fe15f75256 | ||
|
|
573491e685 | ||
|
|
032b615de2 | ||
|
|
c1e8c3b2c4 | ||
|
|
7e0d4ae355 | ||
|
|
691248d8e4 | ||
|
|
2fb5bc3a15 | ||
|
|
77f7e8b84e | ||
|
|
c0473f492c | ||
|
|
b811e9c517 | ||
|
|
c88819b0d7 | ||
|
|
783d667968 | ||
|
|
ea62d2d8e2 | ||
|
|
54b65f8a74 | ||
|
|
d116f634a1 | ||
|
|
b02a4bf178 | ||
|
|
6138f96396 | ||
|
|
2ee5a009cd | ||
|
|
14be55f682 | ||
|
|
fdbe99b48a | ||
|
|
869a693bcf | ||
|
|
298542e353 | ||
|
|
f62ebe5971 | ||
|
|
1f0a68f5ed | ||
|
|
ecc1cd64ad | ||
|
|
d9718fb3f0 | ||
|
|
cefc1bf224 | ||
|
|
af2276d31f | ||
|
|
0c44250bcb | ||
|
|
1a066c7859 | ||
|
|
cc2e352c03 | ||
|
|
e77a9c1269 | ||
|
|
65aad4912b | ||
|
|
92454e65c3 | ||
|
|
45bbc22900 | ||
|
|
5c052684fb | ||
|
|
9cb18aefd9 | ||
|
|
de142614c7 | ||
|
|
fffb133003 | ||
|
|
d5844c35f8 | ||
|
|
758dfbdbfd | ||
|
|
85096b0404 | ||
|
|
6b356a52b9 | ||
|
|
36d6a9bd1f | ||
|
|
40ac2a6c4f | ||
|
|
e49234613d | ||
|
|
8242dec55f | ||
|
|
8139833afd | ||
|
|
58efebbf14 | ||
|
|
fe9b529c25 | ||
|
|
a39c486f31 | ||
|
|
3bb9f46330 | ||
|
|
9ea772d5a2 | ||
|
|
f710ed05b6 | ||
|
|
530c575606 | ||
|
|
49c2ac52d1 | ||
|
|
a39299e1ee | ||
|
|
35d99993bd | ||
|
|
99555dd11d | ||
|
|
583d3aa6dc | ||
|
|
81c5fbba05 | ||
|
|
4a0fb87eaf | ||
|
|
340d5a5080 | ||
|
|
1ee2c97951 | ||
|
|
8f26909611 | ||
|
|
c53daad41e | ||
|
|
98fa7aee3f | ||
|
|
8c2a74147b | ||
|
|
11d9f040be | ||
|
|
3c7d096e26 | ||
|
|
855d537230 | ||
|
|
30b42a427a | ||
|
|
d53599bdce | ||
|
|
5b2175f958 | ||
|
|
1a1dc023b6 | ||
|
|
21e082447c | ||
|
|
25a9d90d9e | ||
|
|
8a8d796c1f | ||
|
|
9a1e114009 | ||
|
|
53b31fa719 | ||
|
|
1958a1649c | ||
|
|
9153c38519 | ||
|
|
be5df6f59a | ||
|
|
907c378cdf | ||
|
|
2ae5c3dd78 | ||
|
|
4a62fee1b5 | ||
|
|
096344a2f1 | ||
|
|
9e83b6081d | ||
|
|
c67e84358c | ||
|
|
6f4f540e10 | ||
|
|
9a665a216b | ||
|
|
1f78546ba1 | ||
|
|
d05ba80080 | ||
|
|
a219338afd | ||
|
|
1f6436529e | ||
|
|
7f1cf3fa74 | ||
|
|
4fde55d85d | ||
|
|
52037fb145 | ||
|
|
2e8a32ab6e | ||
|
|
98952d72c9 | ||
|
|
c206cf8320 | ||
|
|
0ae459bd8f | ||
|
|
95a4047d9f | ||
|
|
8905356e8a | ||
|
|
1894440368 | ||
|
|
d63a746b05 | ||
|
|
b5e8e391a4 | ||
|
|
fea39881f5 | ||
|
|
e45b2953de | ||
|
|
319eed9d5e | ||
|
|
8e35a156be | ||
|
|
b0f5b6c5f0 | ||
|
|
2cf4691d1a | ||
|
|
3bb2e8a248 | ||
|
|
41d456840f | ||
|
|
bd7cbc5ba0 | ||
|
|
d174427f41 | ||
|
|
f729979da4 | ||
|
|
d151276b0c |
@@ -775,8 +775,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
],
|
],
|
||||||
"packages/grafana-runtime/src/components/DataSourcePicker.tsx:5381": [
|
"packages/grafana-runtime/src/components/DataSourcePicker.tsx:5381": [
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"],
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "1"]
|
|
||||||
],
|
],
|
||||||
"packages/grafana-runtime/src/components/PanelRenderer.tsx:5381": [
|
"packages/grafana-runtime/src/components/PanelRenderer.tsx:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
@@ -863,7 +862,7 @@ exports[`better eslint`] = {
|
|||||||
"packages/grafana-schema/src/veneer/dashboard.types.ts:5381": [
|
"packages/grafana-schema/src/veneer/dashboard.types.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Do not use any type assertions.", "2"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "3"],
|
[0, 0, 0, "Do not use any type assertions.", "3"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "4"],
|
[0, 0, 0, "Do not use any type assertions.", "4"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "5"],
|
[0, 0, 0, "Do not use any type assertions.", "5"],
|
||||||
@@ -941,9 +940,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"]
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"]
|
||||||
],
|
],
|
||||||
"packages/grafana-ui/src/components/Drawer/Drawer.tsx:5381": [
|
"packages/grafana-ui/src/components/Drawer/Drawer.tsx:5381": [
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"],
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "1"],
|
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"]
|
|
||||||
],
|
],
|
||||||
"packages/grafana-ui/src/components/Dropdown/ButtonSelect.tsx:5381": [
|
"packages/grafana-ui/src/components/Dropdown/ButtonSelect.tsx:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"]
|
[0, 0, 0, "Do not use any type assertions.", "0"]
|
||||||
@@ -1464,6 +1461,9 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "6"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "6"]
|
||||||
],
|
],
|
||||||
|
"public/app/core/components/AppChrome/News/NewsContainer.tsx:5381": [
|
||||||
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
||||||
|
],
|
||||||
"public/app/core/components/AppChrome/SectionNav/SectionNavItem.tsx:5381": [
|
"public/app/core/components/AppChrome/SectionNav/SectionNavItem.tsx:5381": [
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
||||||
],
|
],
|
||||||
@@ -2233,10 +2233,6 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"],
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "3"]
|
[0, 0, 0, "Do not use any type assertions.", "3"]
|
||||||
],
|
],
|
||||||
"public/app/features/dashboard/components/PanelEditor/VisualizationButton.tsx:5381": [
|
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"],
|
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "1"]
|
|
||||||
],
|
|
||||||
"public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx:5381": [
|
"public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx:5381": [
|
||||||
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
|
||||||
],
|
],
|
||||||
@@ -2373,8 +2369,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "4"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "5"]
|
|
||||||
],
|
],
|
||||||
"public/app/features/dashboard/state/DashboardMigrator.test.ts:5381": [
|
"public/app/features/dashboard/state/DashboardMigrator.test.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
@@ -2653,8 +2648,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
|
||||||
],
|
],
|
||||||
"public/app/features/dimensions/types.ts:5381": [
|
"public/app/features/dimensions/types.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
|
|
||||||
],
|
],
|
||||||
"public/app/features/dimensions/utils.ts:5381": [
|
"public/app/features/dimensions/utils.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
@@ -3639,11 +3633,13 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Do not use any type assertions.", "6"],
|
[0, 0, 0, "Do not use any type assertions.", "6"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "7"],
|
[0, 0, 0, "Do not use any type assertions.", "7"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "8"],
|
[0, 0, 0, "Do not use any type assertions.", "8"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
|
[0, 0, 0, "Do not use any type assertions.", "9"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "10"],
|
[0, 0, 0, "Do not use any type assertions.", "10"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "11"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "12"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "12"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "13"]
|
[0, 0, 0, "Do not use any type assertions.", "13"],
|
||||||
|
[0, 0, 0, "Unexpected any. Specify a different type.", "14"],
|
||||||
|
[0, 0, 0, "Unexpected any. Specify a different type.", "15"]
|
||||||
],
|
],
|
||||||
"public/app/features/variables/state/keyedVariablesReducer.ts:5381": [
|
"public/app/features/variables/state/keyedVariablesReducer.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
||||||
@@ -4894,9 +4890,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "12"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "12"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "13"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "13"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "14"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "14"]
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "15"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "16"]
|
|
||||||
],
|
],
|
||||||
"public/app/plugins/datasource/tempo/datasource.ts:5381": [
|
"public/app/plugins/datasource/tempo/datasource.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
@@ -5580,8 +5574,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "2"],
|
[0, 0, 0, "Do not use any type assertions.", "2"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "3"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "4"]
|
|
||||||
],
|
],
|
||||||
"public/app/plugins/panel/heatmap/palettes.ts:5381": [
|
"public/app/plugins/panel/heatmap/palettes.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
@@ -5946,11 +5939,7 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Do not use any type assertions.", "8"],
|
[0, 0, 0, "Do not use any type assertions.", "8"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "10"],
|
[0, 0, 0, "Do not use any type assertions.", "10"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
|
[0, 0, 0, "Do not use any type assertions.", "11"]
|
||||||
[0, 0, 0, "Do not use any type assertions.", "12"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "13"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "14"],
|
|
||||||
[0, 0, 0, "Do not use any type assertions.", "15"]
|
|
||||||
],
|
],
|
||||||
"public/app/polyfills/old-mediaquerylist.ts:5381": [
|
"public/app/polyfills/old-mediaquerylist.ts:5381": [
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
|
||||||
|
|||||||
19
.drone.star
19
.drone.star
@@ -19,14 +19,23 @@ load(
|
|||||||
"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/pipelines/publish_images.star",
|
"scripts/drone/pipelines/publish_images.star",
|
||||||
"publish_image_pipelines_public",
|
"publish_image_pipelines_public",
|
||||||
"publish_image_pipelines_security",
|
"publish_image_pipelines_security",
|
||||||
)
|
)
|
||||||
|
load(
|
||||||
|
"scripts/drone/pipelines/ci_images.star",
|
||||||
|
"publish_ci_windows_test_image_pipeline",
|
||||||
|
)
|
||||||
load("scripts/drone/pipelines/github.star", "publish_github_pipeline")
|
load("scripts/drone/pipelines/github.star", "publish_github_pipeline")
|
||||||
load("scripts/drone/pipelines/aws_marketplace.star", "publish_aws_marketplace_pipeline")
|
load("scripts/drone/pipelines/aws_marketplace.star", "publish_aws_marketplace_pipeline")
|
||||||
|
load(
|
||||||
|
"scripts/drone/pipelines/windows.star",
|
||||||
|
"windows_test_backend",
|
||||||
|
)
|
||||||
load("scripts/drone/version.star", "version_branch_pipelines")
|
load("scripts/drone/version.star", "version_branch_pipelines")
|
||||||
load("scripts/drone/events/cron.star", "cronjobs")
|
load("scripts/drone/events/cron.star", "cronjobs")
|
||||||
load("scripts/drone/vault.star", "secrets")
|
load("scripts/drone/vault.star", "secrets")
|
||||||
@@ -38,10 +47,6 @@ def main(_ctx):
|
|||||||
oss_pipelines() +
|
oss_pipelines() +
|
||||||
enterprise_pipelines() +
|
enterprise_pipelines() +
|
||||||
enterprise2_pipelines() +
|
enterprise2_pipelines() +
|
||||||
enterprise2_pipelines(
|
|
||||||
prefix = "custom-",
|
|
||||||
trigger = {"event": ["custom"]},
|
|
||||||
) +
|
|
||||||
publish_image_pipelines_public() +
|
publish_image_pipelines_public() +
|
||||||
publish_image_pipelines_security() +
|
publish_image_pipelines_security() +
|
||||||
publish_github_pipeline("public") +
|
publish_github_pipeline("public") +
|
||||||
@@ -51,9 +56,15 @@ def main(_ctx):
|
|||||||
publish_artifacts_pipelines("public") +
|
publish_artifacts_pipelines("public") +
|
||||||
publish_npm_pipelines() +
|
publish_npm_pipelines() +
|
||||||
publish_packages_pipeline() +
|
publish_packages_pipeline() +
|
||||||
|
[verify_release_pipeline()] +
|
||||||
|
[windows_test_backend({
|
||||||
|
"event": ["promote"],
|
||||||
|
"target": ["test-windows"],
|
||||||
|
}, "oss", "testing")] +
|
||||||
artifacts_page_pipeline() +
|
artifacts_page_pipeline() +
|
||||||
version_branch_pipelines() +
|
version_branch_pipelines() +
|
||||||
integration_test_pipelines() +
|
integration_test_pipelines() +
|
||||||
|
publish_ci_windows_test_image_pipeline() +
|
||||||
cronjobs() +
|
cronjobs() +
|
||||||
secrets()
|
secrets()
|
||||||
)
|
)
|
||||||
|
|||||||
1291
.drone.yml
1291
.drone.yml
File diff suppressed because it is too large
Load Diff
4
.github/CODEOWNERS
vendored
4
.github/CODEOWNERS
vendored
@@ -229,6 +229,7 @@
|
|||||||
/Dockerfile @grafana/grafana-delivery
|
/Dockerfile @grafana/grafana-delivery
|
||||||
/Makefile @grafana/grafana-delivery
|
/Makefile @grafana/grafana-delivery
|
||||||
/scripts/build/ @grafana/grafana-delivery
|
/scripts/build/ @grafana/grafana-delivery
|
||||||
|
/scripts/list-release-artifacts.sh @grafana/grafana-delivery
|
||||||
|
|
||||||
# OSS Plugin Partnerships backend code
|
# OSS Plugin Partnerships backend code
|
||||||
/pkg/tsdb/cloudwatch/ @grafana/aws-datasources
|
/pkg/tsdb/cloudwatch/ @grafana/aws-datasources
|
||||||
@@ -433,10 +434,10 @@ lerna.json @grafana/frontend-ops
|
|||||||
/public/app/types/ @grafana/grafana-frontend-platform
|
/public/app/types/ @grafana/grafana-frontend-platform
|
||||||
/public/dashboards/ @grafana/dashboards-squad
|
/public/dashboards/ @grafana/dashboards-squad
|
||||||
/public/fonts/ @grafana/alerting-squad-frontend
|
/public/fonts/ @grafana/alerting-squad-frontend
|
||||||
/public/emails/ @grafana/grafana-frontend-platform
|
|
||||||
/public/gazetteer/ @ryantxu
|
/public/gazetteer/ @ryantxu
|
||||||
/public/img/ @grafana/grafana-frontend-platform
|
/public/img/ @grafana/grafana-frontend-platform
|
||||||
/public/lib/ @grafana/grafana-frontend-platform
|
/public/lib/ @grafana/grafana-frontend-platform
|
||||||
|
/public/lib/monaco-languages/kusto.ts @grafana/partner-datasources
|
||||||
/public/maps/ @ryantxu
|
/public/maps/ @ryantxu
|
||||||
/public/robots.txt @grafana/frontend-ops
|
/public/robots.txt @grafana/frontend-ops
|
||||||
/public/sass/ @grafana/grafana-frontend-platform
|
/public/sass/ @grafana/grafana-frontend-platform
|
||||||
@@ -618,6 +619,7 @@ embed.go @grafana/grafana-as-code
|
|||||||
/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @grafanabot
|
/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @grafanabot
|
||||||
/pkg/services/featuremgmt/toggles_gen.csv @grafanabot
|
/pkg/services/featuremgmt/toggles_gen.csv @grafanabot
|
||||||
/pkg/services/featuremgmt/toggles_gen.go @grafanabot
|
/pkg/services/featuremgmt/toggles_gen.go @grafanabot
|
||||||
|
/public/emails/ @grafanabot
|
||||||
|
|
||||||
# Conf
|
# Conf
|
||||||
/conf/defaults.ini @torkelo
|
/conf/defaults.ini @torkelo
|
||||||
|
|||||||
19
.github/workflows/doc-validator.yml
vendored
19
.github/workflows/doc-validator.yml
vendored
@@ -7,10 +7,23 @@ jobs:
|
|||||||
doc-validator:
|
doc-validator:
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
container:
|
container:
|
||||||
image: "grafana/doc-validator:v1.10.0"
|
image: "grafana/doc-validator:v3.0.0"
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: "actions/checkout@v3"
|
uses: "actions/checkout@v3"
|
||||||
- name: "Run doc-validator tool"
|
- name: "Run doc-validator tool"
|
||||||
# Ensure that the CI always passes until all errors are resolved.
|
# Only run doc-validator on specific directories.
|
||||||
run: "doc-validator --skip-image-validation ./docs/sources /docs/grafana/latest || true"
|
run: >
|
||||||
|
doc-validator
|
||||||
|
'--include=^docs/sources/(?:alerting|fundamentals|getting-started|introduction|setup-grafana|upgrade-guide|whatsnew/whats-new-in-v(?:9|10))/.+\.md$'
|
||||||
|
'--skip-checks=^(?:image.+|canonical-does-not-match-pretty-URL)$'
|
||||||
|
./docs/sources
|
||||||
|
/docs/grafana/latest
|
||||||
|
| reviewdog
|
||||||
|
-f=rdjsonl
|
||||||
|
--fail-on-error
|
||||||
|
--filter-mode=nofilter
|
||||||
|
--name=doc-validator
|
||||||
|
--reporter=github-pr-review
|
||||||
|
env:
|
||||||
|
REVIEWDOG_GITHUB_API_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|||||||
@@ -28,23 +28,13 @@ jobs:
|
|||||||
- name: "Install Actions from library"
|
- name: "Install Actions from library"
|
||||||
run: "npm install --production --prefix ./actions"
|
run: "npm install --production --prefix ./actions"
|
||||||
|
|
||||||
- name: "Determine if there is a matching release tag"
|
|
||||||
id: "has-matching-release-tag"
|
|
||||||
uses: "./actions/has-matching-release-tag"
|
|
||||||
with:
|
|
||||||
ref_name: "${{ github.ref_name }}"
|
|
||||||
release_tag_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
|
||||||
release_branch_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.x$"
|
|
||||||
|
|
||||||
- name: "Determine technical documentation version"
|
- name: "Determine technical documentation version"
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
|
||||||
uses: "./actions/docs-target"
|
uses: "./actions/docs-target"
|
||||||
id: "target"
|
id: "target"
|
||||||
with:
|
with:
|
||||||
ref_name: "${{ github.ref_name }}"
|
ref_name: "${{ github.ref_name }}"
|
||||||
|
|
||||||
- name: "Clone website-sync Action"
|
- name: "Clone website-sync Action"
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
|
||||||
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
||||||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
||||||
# GitHub administrator to update the organization secret.
|
# GitHub administrator to update the organization secret.
|
||||||
@@ -52,7 +42,6 @@ jobs:
|
|||||||
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
||||||
|
|
||||||
- name: "Publish to website repository (release)"
|
- name: "Publish to website repository (release)"
|
||||||
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
|
|
||||||
uses: "./.github/actions/website-sync"
|
uses: "./.github/actions/website-sync"
|
||||||
id: "publish-release"
|
id: "publish-release"
|
||||||
with:
|
with:
|
||||||
|
|||||||
347
CHANGELOG.md
347
CHANGELOG.md
@@ -1,3 +1,350 @@
|
|||||||
|
<!-- 10.0.0 START -->
|
||||||
|
|
||||||
|
# 10.0.0 (2023-06-12)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Themes:** Unify secondary button and ToolbarButton. [#69049](https://github.com/grafana/grafana/issues/69049), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **PublicDashboards:** Email sharing users with active sessions added in Users list . (Enterprise)
|
||||||
|
- **Caching:** Ensure context-canceled are not reported as errors . (Enterprise)
|
||||||
|
- **SAML:** Configuration UI. (Enterprise)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Query Editor:** Ensure dropdown menus position correctly. [#69131](https://github.com/grafana/grafana/issues/69131), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Drawer:** Fixes closeOnMaskClick false issue. [#69103](https://github.com/grafana/grafana/issues/69103), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **SAML:** Fix IdP metadata caching so that invalid metadata doesn't get cached. (Enterprise)
|
||||||
|
|
||||||
|
<!-- 10.0.0 END -->
|
||||||
|
<!-- 10.0.0-preview START -->
|
||||||
|
|
||||||
|
# 10.0.0-preview (2023-05-31)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Alerting:** Migrate unknown NoData\Error settings to the default. [#69010](https://github.com/grafana/grafana/issues/69010), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Drawer:** Position under nav & minor redesign . [#68396](https://github.com/grafana/grafana/issues/68396), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Navigation:** Add keyboard shortcut to navigate directly to Dashboards. [#68374](https://github.com/grafana/grafana/issues/68374), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Explore:** Promote exploreMixedDatasource to Stable & enable by default. [#68353](https://github.com/grafana/grafana/issues/68353), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Tempo:** Escape regex-sensitive characters in span name before building promql query. [#68313](https://github.com/grafana/grafana/issues/68313), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Drawer:** Introduce a size property that set's width percentage and minWidth . [#68128](https://github.com/grafana/grafana/issues/68128), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **AngularDeprecation:** Show warnings in panel edit for angular panels. [#68083](https://github.com/grafana/grafana/issues/68083), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Dashboard:** Change add panel button to fill to remove outline border. [#68017](https://github.com/grafana/grafana/issues/68017), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Query History:** Remove migration. [#67470](https://github.com/grafana/grafana/issues/67470), [@Elfo404](https://github.com/Elfo404)
|
||||||
|
- **Alerting:** Implement template testing endpoint. [#67450](https://github.com/grafana/grafana/issues/67450), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Trace View:** Export trace button . [#67368](https://github.com/grafana/grafana/issues/67368), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Alerting:** Update grafana/alerting to 4f09f51. [#67329](https://github.com/grafana/grafana/issues/67329), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **Cloudwatch:** Add FraudDetector namespace with metrics and dimensions. [#67318](https://github.com/grafana/grafana/issues/67318), [@ffje](https://github.com/ffje)
|
||||||
|
- **Timeseries:** Migrate legend hideFrom. [#67305](https://github.com/grafana/grafana/issues/67305), [@adela-almasan](https://github.com/adela-almasan)
|
||||||
|
- **CloudWatch:** Deprecate dynamic labels feature toggle, remove support for Alias in frontend. [#67222](https://github.com/grafana/grafana/issues/67222), [@fridgepoet](https://github.com/fridgepoet)
|
||||||
|
- **Docs:** Create documentation for enterprise caching HTTP API. [#67169](https://github.com/grafana/grafana/issues/67169), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Cloudwatch Logs:** Update Cheatsheet. [#67161](https://github.com/grafana/grafana/issues/67161), [@sarahzinger](https://github.com/sarahzinger)
|
||||||
|
- **Alerting:** Add alert instance picker. [#67138](https://github.com/grafana/grafana/issues/67138), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Loki:** Enable dataplane-compliant metric data by default. [#67137](https://github.com/grafana/grafana/issues/67137), [@gabor](https://github.com/gabor)
|
||||||
|
- **Loki:** Enable new log context query editor. [#67131](https://github.com/grafana/grafana/issues/67131), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Elasticsearch:** Deprecate index setting for annotation queries. [#67046](https://github.com/grafana/grafana/issues/67046), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Search:** Preserves search filters when navigating to another page. [#67021](https://github.com/grafana/grafana/issues/67021), [@khushijain21](https://github.com/khushijain21)
|
||||||
|
- **PanelContext:** Add functionality to update data from panel. [#66993](https://github.com/grafana/grafana/issues/66993), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Phlare:** Support both Phlare and Pyroscope backends and rename to Grafana Pyroscope. [#66989](https://github.com/grafana/grafana/issues/66989), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Packaging:** Added deprecation warnings when running `grafana-cli` or `grafana-server`; the `grafana` command should be used instead. [#66976](https://github.com/grafana/grafana/issues/66976), [@kminehart](https://github.com/kminehart)
|
||||||
|
- **Elasticsearch:** Update required database version to 7.16. [#66928](https://github.com/grafana/grafana/issues/66928), [@gabor](https://github.com/gabor)
|
||||||
|
- **Alert:** Redesign with tinted background . [#66918](https://github.com/grafana/grafana/issues/66918), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Auth:** Make GitHub auth's allowed_organizations be case insensitive. [#66879](https://github.com/grafana/grafana/issues/66879), [@consideRatio](https://github.com/consideRatio)
|
||||||
|
- **Elasticsearch:** Deprecate the usage of the database field in provisioning. [#66828](https://github.com/grafana/grafana/issues/66828), [@gwdawson](https://github.com/gwdawson)
|
||||||
|
- **CSRF middleware:** Add flag to skip login cookie check. [#66806](https://github.com/grafana/grafana/issues/66806), [@PoorlyDefinedBehaviour](https://github.com/PoorlyDefinedBehaviour)
|
||||||
|
- **Alerting:** Use URLs in image annotations. [#66804](https://github.com/grafana/grafana/issues/66804), [@santihernandezc](https://github.com/santihernandezc)
|
||||||
|
- **AppRootPage:** Reduce flickering while loading plugin. [#66799](https://github.com/grafana/grafana/issues/66799), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **Alerting:** Make Loki & Prometheus instant vector by default. [#66797](https://github.com/grafana/grafana/issues/66797), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Log Context:** Add button to open the context query in a split view. [#66777](https://github.com/grafana/grafana/issues/66777), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **APIkeys:** Add metrics for apikey endpoints. [#66732](https://github.com/grafana/grafana/issues/66732), [@eleijonmarck](https://github.com/eleijonmarck)
|
||||||
|
- **ServeFromSubPath:** Redirect to URL with subpath when subpath missing. [#66724](https://github.com/grafana/grafana/issues/66724), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **RBAC:** Remove the option to disable RBAC and add automated permission migrations for instances that had RBAC disabled. [#66652](https://github.com/grafana/grafana/issues/66652), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Plugins:** Remove secure socks proxy feature toggle. [#66611](https://github.com/grafana/grafana/issues/66611), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
|
||||||
|
- **Alerting:** Loki-based alert state history modal. [#66595](https://github.com/grafana/grafana/issues/66595), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Explore:** Promote exploreMixedDatasource feature toggle to beta. [#66552](https://github.com/grafana/grafana/issues/66552), [@ifrost](https://github.com/ifrost)
|
||||||
|
- **Chore:** Clean up NavModel interface. [#66548](https://github.com/grafana/grafana/issues/66548), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Alerting:** Scheduler use rule fingerprint instead of version. [#66531](https://github.com/grafana/grafana/issues/66531), [@yuri-tceretian](https://github.com/yuri-tceretian)
|
||||||
|
- **CloudWatch:** Deprecate dynamic labels feature toggle, remove support for Alias in backend. [#66494](https://github.com/grafana/grafana/issues/66494), [@fridgepoet](https://github.com/fridgepoet)
|
||||||
|
- **RBAC:** Make access control metadata for folders work with nested folders. [#66464](https://github.com/grafana/grafana/issues/66464), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Tracing:** Add links to documentation in config pages. [#66442](https://github.com/grafana/grafana/issues/66442), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Loki:** Always display log context toggle. [#66379](https://github.com/grafana/grafana/issues/66379), [@matyax](https://github.com/matyax)
|
||||||
|
- **Datagrid Panel:** Edit data within your dashboards. [#66353](https://github.com/grafana/grafana/issues/66353), [@mdvictor](https://github.com/mdvictor)
|
||||||
|
- **Annotations:** Support filtering the target panels. [#66325](https://github.com/grafana/grafana/issues/66325), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Alerting:** Use default page size of 5000 when querying Loki for state history. [#66315](https://github.com/grafana/grafana/issues/66315), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **GrafanaData:** Remove obsolete logs exports. [#66271](https://github.com/grafana/grafana/issues/66271), [@gabor](https://github.com/gabor)
|
||||||
|
- **Alerting:** Update legacy alerting warning. [#66269](https://github.com/grafana/grafana/issues/66269), [@armandgrillet](https://github.com/armandgrillet)
|
||||||
|
- **GrafanaUI:** Remove obsolete logs exports. [#66268](https://github.com/grafana/grafana/issues/66268), [@gabor](https://github.com/gabor)
|
||||||
|
- **Explore:** Remove deprecated DataSourceWithLogsVolumeSupport. [#66266](https://github.com/grafana/grafana/issues/66266), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Chore:** Upgrade Go to 1.20.3. [#66264](https://github.com/grafana/grafana/issues/66264), [@sakjur](https://github.com/sakjur)
|
||||||
|
- **Design System:** Set TextArea to display: block in order to remove spacing below. [#66262](https://github.com/grafana/grafana/issues/66262), [@L-M-K-B](https://github.com/L-M-K-B)
|
||||||
|
- **Elasticsearch:** Add feature toggle to disable running queries trough backend. [#66260](https://github.com/grafana/grafana/issues/66260), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Correlations:** Add transformation editor. [#66217](https://github.com/grafana/grafana/issues/66217), [@gelicia](https://github.com/gelicia)
|
||||||
|
- **Logs Navigation:** Scroll to first log when using pagination. [#66214](https://github.com/grafana/grafana/issues/66214), [@matyax](https://github.com/matyax)
|
||||||
|
- **Search:** Add clear search button to the input bar. [#66204](https://github.com/grafana/grafana/issues/66204), [@khushijain21](https://github.com/khushijain21)
|
||||||
|
- **Visualizations:** Choose color based on series name. [#66197](https://github.com/grafana/grafana/issues/66197), [@lukepalmer](https://github.com/lukepalmer)
|
||||||
|
- **FieldValues:** Use plain arrays instead of Vector (part 1 of 2). [#66187](https://github.com/grafana/grafana/issues/66187), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Users:** Enable case insensitive login by default. [#66134](https://github.com/grafana/grafana/issues/66134), [@Jguer](https://github.com/Jguer)
|
||||||
|
- **Loki Query Editor:** Increase autocomplete suggestions window with to 50%. [#66041](https://github.com/grafana/grafana/issues/66041), [@matyax](https://github.com/matyax)
|
||||||
|
- **Instrumentation:** Add support for instrumenting database queries. [#66022](https://github.com/grafana/grafana/issues/66022), [@bergquist](https://github.com/bergquist)
|
||||||
|
- **Loki:** Add feature flag to enable dataplane-compliant metric frames. [#66017](https://github.com/grafana/grafana/issues/66017), [@gabor](https://github.com/gabor)
|
||||||
|
- **Tempo:** Encode IDs as hexadecimal when downloading traces. [#66001](https://github.com/grafana/grafana/issues/66001), [@kousikmitra](https://github.com/kousikmitra)
|
||||||
|
- **Cloudwatch:** Add missing AWS/IVS namespace metrics. [#65985](https://github.com/grafana/grafana/issues/65985), [@idastambuk](https://github.com/idastambuk)
|
||||||
|
- **Alerting:** Remove and revert flag alertingBigTransactions. [#65976](https://github.com/grafana/grafana/issues/65976), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Alerting:** Attach hash of instance labels to state history log lines. [#65968](https://github.com/grafana/grafana/issues/65968), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **API keys:** Add deprecation to api keys. [#65948](https://github.com/grafana/grafana/issues/65948), [@eleijonmarck](https://github.com/eleijonmarck)
|
||||||
|
- **Logs:** Redesign and improve LogContext. [#65939](https://github.com/grafana/grafana/issues/65939), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Loki:** Remove alpha feature toggle lokiDataframeApi. [#65918](https://github.com/grafana/grafana/issues/65918), [@gabor](https://github.com/gabor)
|
||||||
|
- **Packaging:** Remove chkconfig dependency. [#65887](https://github.com/grafana/grafana/issues/65887), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **Explore:** Run test datasource default selection when mounted. [#65864](https://github.com/grafana/grafana/issues/65864), [@gelicia](https://github.com/gelicia)
|
||||||
|
- **Service Accounts:** Allow unsetting token expiry date. [#65862](https://github.com/grafana/grafana/issues/65862), [@kousikmitra](https://github.com/kousikmitra)
|
||||||
|
- **SQL Datasources:** Update Max Connection and Max Idle Connection Defaults to 100 and add auto mode. [#65834](https://github.com/grafana/grafana/issues/65834), [@codeincarnate](https://github.com/codeincarnate)
|
||||||
|
- **DashlistPanel:** Add options to include time range and variable values. [#65757](https://github.com/grafana/grafana/issues/65757), [@VictorColomb](https://github.com/VictorColomb)
|
||||||
|
- **Alerting:** Add endpoint to revert to a previous alertmanager configuration. [#65751](https://github.com/grafana/grafana/issues/65751), [@JacobsonMT](https://github.com/JacobsonMT)
|
||||||
|
- **Alerting:** Document state history config options in default and sample configuration files. [#65748](https://github.com/grafana/grafana/issues/65748), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Alerting:** Choose a previous valid AM configuration in case of error. [#65746](https://github.com/grafana/grafana/issues/65746), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **Traces:** Span filtering. [#65725](https://github.com/grafana/grafana/issues/65725), [@joey-grafana](https://github.com/joey-grafana)
|
||||||
|
- **Caching:** Refactor enterprise query caching middleware to a wire service. [#65616](https://github.com/grafana/grafana/issues/65616), [@mmandrus](https://github.com/mmandrus)
|
||||||
|
- **Alerting:** Implement template preview for Grafana AlertManager. [#65530](https://github.com/grafana/grafana/issues/65530), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
|
||||||
|
- **Dropdown:** Stop Dropdown accepting a function as children. [#65467](https://github.com/grafana/grafana/issues/65467), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **GrafanaDS:** Add support for annotation time regions. [#65462](https://github.com/grafana/grafana/issues/65462), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Alerting:** Add support for running HA using Redis. [#65267](https://github.com/grafana/grafana/issues/65267), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
|
||||||
|
- **Tempo:** Add kind to TraceQL intrinsics. [#65111](https://github.com/grafana/grafana/issues/65111), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Feature:** Trusted Types support. [#64975](https://github.com/grafana/grafana/issues/64975), [@KristianGrafana](https://github.com/KristianGrafana)
|
||||||
|
- **AzureMonitor:** Application Insights Traces. [#64859](https://github.com/grafana/grafana/issues/64859), [@aangelisc](https://github.com/aangelisc)
|
||||||
|
- **Chore:** Remove deprecated dashboardId from panel query runner. [#64786](https://github.com/grafana/grafana/issues/64786), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **DataFrame:** Handle nanosecond-precision timestamp fields. [#64529](https://github.com/grafana/grafana/issues/64529), [@gabor](https://github.com/gabor)
|
||||||
|
- **EditDataSources:** Add EditDataSourceActions to EditDataSourcePages. [#64487](https://github.com/grafana/grafana/issues/64487), [@mikkancso](https://github.com/mikkancso)
|
||||||
|
- **Chore:** Upgrade to react 18. [#64428](https://github.com/grafana/grafana/issues/64428), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Canvas:** Connection properties based on data. [#64360](https://github.com/grafana/grafana/issues/64360), [@adela-almasan](https://github.com/adela-almasan)
|
||||||
|
- **Explore:** Align multiple log volumes. [#64356](https://github.com/grafana/grafana/issues/64356), [@ifrost](https://github.com/ifrost)
|
||||||
|
- **Explore:** Clear live logs. [#64237](https://github.com/grafana/grafana/issues/64237), [@abdulhdr1](https://github.com/abdulhdr1)
|
||||||
|
- **TimeSeries:** Explicitly add transformer when timeseries-long exists. [#64092](https://github.com/grafana/grafana/issues/64092), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **SAML:** Configuration UI. [#64054](https://github.com/grafana/grafana/issues/64054), [@alexanderzobnin](https://github.com/alexanderzobnin)
|
||||||
|
- **Alerting:** Use configured headers for external alertmanager. [#63819](https://github.com/grafana/grafana/issues/63819), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
|
||||||
|
- **Prometheus:** Incremental querying option for `to: now` dashboards. [#62932](https://github.com/grafana/grafana/issues/62932), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Dashboard:** Add series color shades. [#61300](https://github.com/grafana/grafana/issues/61300), [@jkraml-staffbase](https://github.com/jkraml-staffbase)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **ResourcePicker:** Fix missing border bug on cancel button. [#69113](https://github.com/grafana/grafana/issues/69113), [@nmarrs](https://github.com/nmarrs)
|
||||||
|
- **TimeSeries:** Fix centeredZero y axis ranging when all values are 0. [#69112](https://github.com/grafana/grafana/issues/69112), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **StatusHistory:** Fix rendering of value-mapped null. [#69108](https://github.com/grafana/grafana/issues/69108), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Alerting:** Fix provenance guard checks for Alertmanager configuration to not cause panic when compared nested objects. [#69094](https://github.com/grafana/grafana/issues/69094), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Alerting:** Add support for Alert State History Loki primary. [#69077](https://github.com/grafana/grafana/issues/69077), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Dashboards:** Fix undefined aria labels in Annotation Checkboxes for Programmatic Access. [#68873](https://github.com/grafana/grafana/issues/68873), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Alerting:** Fix stale query preview error. [#68836](https://github.com/grafana/grafana/issues/68836), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **AnonymousAuth:** Fix concurrent read-write crash. [#68803](https://github.com/grafana/grafana/issues/68803), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **AzureMonitor:** Ensure legacy properties containing template variables are correctly migrated. [#68792](https://github.com/grafana/grafana/issues/68792), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Alerting:** Add additional contact points for external AM. [#68778](https://github.com/grafana/grafana/issues/68778), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **RBAC:** Remove legacy AC editor and admin role on new dashboard route. [#68777](https://github.com/grafana/grafana/issues/68777), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Azure Monitor:** Fix bug with top value so more than 10 resources can be shown . [#68725](https://github.com/grafana/grafana/issues/68725), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **NodeGraph:** Fix overlaps preventing opening an edge context menu when nodes were too close. [#68628](https://github.com/grafana/grafana/issues/68628), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Plugins:** Correct the usage of mutex for gRPC plugin implementation. [#68609](https://github.com/grafana/grafana/issues/68609), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Azure Monitor:** Fix bug that did not show alert rule preview. [#68581](https://github.com/grafana/grafana/issues/68581), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **FlameGraph:** Fix table sort being reset when search changes. [#68454](https://github.com/grafana/grafana/issues/68454), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Command Palette:** Prevent stale search results from overwriting newer results. [#68392](https://github.com/grafana/grafana/issues/68392), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Search:** Fix Search returning results out of order. [#68387](https://github.com/grafana/grafana/issues/68387), [@joshhunt](https://github.com/joshhunt)
|
||||||
|
- **Explore:** Remove data source onboarding page. [#68381](https://github.com/grafana/grafana/issues/68381), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Flamegraph:** Fix tooltip positioning. [#68312](https://github.com/grafana/grafana/issues/68312), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Pyroscope:** Add authentication when calling backendType resource API. [#68311](https://github.com/grafana/grafana/issues/68311), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Histogram:** Respect min/max panel settings for x-axis. [#68245](https://github.com/grafana/grafana/issues/68245), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **QueryRow:** Make toggle actions screen-readers accessible. [#68210](https://github.com/grafana/grafana/issues/68210), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Heatmap:** Fix color rendering for value ranges < 1. [#68164](https://github.com/grafana/grafana/issues/68164), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Heatmap:** Handle unsorted timestamps in calculate mode. [#68151](https://github.com/grafana/grafana/issues/68151), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Alerting:** Fixes Alert list panel "ungrouped" regression. [#68090](https://github.com/grafana/grafana/issues/68090), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Alerting:** Show export button for org admins. [#67995](https://github.com/grafana/grafana/issues/67995), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Navigation:** Fix 'Page not found' when sending or going back from 'Invitate user' page. [#67972](https://github.com/grafana/grafana/issues/67972), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **InspectDrawer:** Fixes issue with double scrollbars. [#67888](https://github.com/grafana/grafana/issues/67888), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Connections:** Show core datasource plugins as well. [#67886](https://github.com/grafana/grafana/issues/67886), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **Gauge:** Set min and max for percent unit. [#67719](https://github.com/grafana/grafana/issues/67719), [@grafanabot](https://github.com/grafanabot)
|
||||||
|
- **TimeSeries:** Fix leading null-fill for missing intervals. [#67570](https://github.com/grafana/grafana/issues/67570), [@leeoniya](https://github.com/leeoniya)
|
||||||
|
- **Pyroscope:** Fix autodetection in case of using Phlare backend. [#67536](https://github.com/grafana/grafana/issues/67536), [@aocenas](https://github.com/aocenas)
|
||||||
|
- **Dashboard:** Revert fixed header shown on mobile devices in the new panel header. [#67510](https://github.com/grafana/grafana/issues/67510), [@axelavargas](https://github.com/axelavargas)
|
||||||
|
- **PostgreSQL:** Fix tls certificate issue by downgrading lib/pq. [#67372](https://github.com/grafana/grafana/issues/67372), [@zoltanbedi](https://github.com/zoltanbedi)
|
||||||
|
- **Alerting:** Fix misleading status code in provisioning API. [#67331](https://github.com/grafana/grafana/issues/67331), [@usommerl](https://github.com/usommerl)
|
||||||
|
- **Explore:** Update table min height . [#67321](https://github.com/grafana/grafana/issues/67321), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Provisioning:** Fix provisioning issues with legacy alerting and data source permissions. [#67308](https://github.com/grafana/grafana/issues/67308), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
|
||||||
|
- **Proxy:** Improve header handling for reverse proxy. [#67279](https://github.com/grafana/grafana/issues/67279), [@sakjur](https://github.com/sakjur)
|
||||||
|
- **Loki:** Fix log samples using `instant` queries. [#67271](https://github.com/grafana/grafana/issues/67271), [@svennergr](https://github.com/svennergr)
|
||||||
|
- **Alerting:** Fix panic when reparenting receivers to groups following an attempted rename via Provisioning. [#67167](https://github.com/grafana/grafana/issues/67167), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Loki:** Fix incorrect evaluation of real and extracted labels in context. [#67112](https://github.com/grafana/grafana/issues/67112), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Cloudwatch Logs:** Clarify Cloudwatch Logs Limits. [#67072](https://github.com/grafana/grafana/issues/67072), [@sarahzinger](https://github.com/sarahzinger)
|
||||||
|
- **Rendering:** Fix panel rendered count on error. [#67027](https://github.com/grafana/grafana/issues/67027), [@AgnesToulet](https://github.com/AgnesToulet)
|
||||||
|
- **Elasticsearch:** Fix processing of duplicated metric types and field. [#66973](https://github.com/grafana/grafana/issues/66973), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Plugins:** Fix width for README pages with tables. [#66872](https://github.com/grafana/grafana/issues/66872), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **Tempo:** TraceQL query builder QoL improvements. [#66865](https://github.com/grafana/grafana/issues/66865), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **Expressions/threshold:** Fix incorrect thresholds args length. [#66859](https://github.com/grafana/grafana/issues/66859), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Panel Header Fix:** Implement new Panel Header on Angular Panels . [#66826](https://github.com/grafana/grafana/issues/66826), [@axelavargas](https://github.com/axelavargas)
|
||||||
|
- **Elasticsearch:** Handle multiple annotation structures. [#66762](https://github.com/grafana/grafana/issues/66762), [@gabor](https://github.com/gabor)
|
||||||
|
- **Alerting:** Fix share URL for Prometheus rules on subpath. [#66752](https://github.com/grafana/grafana/issues/66752), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Fix DatasourceUID and RefID missing for DatasourceNoData alerts. [#66733](https://github.com/grafana/grafana/issues/66733), [@grobinson-grafana](https://github.com/grobinson-grafana)
|
||||||
|
- **Plugins:** Fix plugin catalog filtering. [#66663](https://github.com/grafana/grafana/issues/66663), [@leventebalogh](https://github.com/leventebalogh)
|
||||||
|
- **Navigation:** Redirect to root page when switching organization. [#66655](https://github.com/grafana/grafana/issues/66655), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Trace View:** Update the queryType to traceql for checking if same trace when clicking span link. [#66645](https://github.com/grafana/grafana/issues/66645), [@ericmustin](https://github.com/ericmustin)
|
||||||
|
- **Explore:** Fix using data source line limit when opening logs sample in split view. [#66601](https://github.com/grafana/grafana/issues/66601), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Loki:** Fix ad hoc filters when used with number and > and < operators. [#66579](https://github.com/grafana/grafana/issues/66579), [@ivanahuckova](https://github.com/ivanahuckova)
|
||||||
|
- **Dashboards:** Fix broken internal data links. [#66567](https://github.com/grafana/grafana/issues/66567), [@ifrost](https://github.com/ifrost)
|
||||||
|
- **Google Cloud Monitoring:** Fix project variable. [#66524](https://github.com/grafana/grafana/issues/66524), [@asimpson](https://github.com/asimpson)
|
||||||
|
- **Azure Monitor:** Fix bug that was not showing resources for certain locations. [#66502](https://github.com/grafana/grafana/issues/66502), [@alyssabull](https://github.com/alyssabull)
|
||||||
|
- **Plugins:** Fs: Add option to access unallowed files in dev mode. [#66492](https://github.com/grafana/grafana/issues/66492), [@xnyo](https://github.com/xnyo)
|
||||||
|
- **Dashboard:** New panel in a dashboard is not deleted after "Discard"-ing changes in Panel Edit. [#66476](https://github.com/grafana/grafana/issues/66476), [@polibb](https://github.com/polibb)
|
||||||
|
- **InfluxDB:** Fix querying with hardcoded retention policy. [#66466](https://github.com/grafana/grafana/issues/66466), [@itsmylife](https://github.com/itsmylife)
|
||||||
|
- **Alerting:** Hide mute timing actions when dealing with vanilla prometheus. [#66457](https://github.com/grafana/grafana/issues/66457), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Alerting:** Fix creating a recording rule when having multiple datasources. [#66415](https://github.com/grafana/grafana/issues/66415), [@VikaCep](https://github.com/VikaCep)
|
||||||
|
- **AccessControl:** Allow editors to access GET /api/datasources. [#66343](https://github.com/grafana/grafana/issues/66343), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Table Panel:** Fix panel migration for options cell type. [#66305](https://github.com/grafana/grafana/issues/66305), [@ryantxu](https://github.com/ryantxu)
|
||||||
|
- **Navigation:** Scrolled hamburger menu links now navigate correctly in Safari. [#66261](https://github.com/grafana/grafana/issues/66261), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Cloudwatch:** Fix ui bug in template variable editor. [#66207](https://github.com/grafana/grafana/issues/66207), [@iSatVeerSingh](https://github.com/iSatVeerSingh)
|
||||||
|
- **Annotations:** Improve get tags query performance. [#66182](https://github.com/grafana/grafana/issues/66182), [@papagian](https://github.com/papagian)
|
||||||
|
- **Query Splitting:** Fix for handling queries with no requestId. [#66161](https://github.com/grafana/grafana/issues/66161), [@domasx2](https://github.com/domasx2)
|
||||||
|
- **Cloudwatch:** Pass refId from query for expression queries. [#66147](https://github.com/grafana/grafana/issues/66147), [@idastambuk](https://github.com/idastambuk)
|
||||||
|
- **Alerting:** Fix explore link in alert detail view. [#66106](https://github.com/grafana/grafana/issues/66106), [@gillesdemey](https://github.com/gillesdemey)
|
||||||
|
- **Plugins:** Skip instrumenting plugin build info for core and bundled plugins. [#66105](https://github.com/grafana/grafana/issues/66105), [@wbrowne](https://github.com/wbrowne)
|
||||||
|
- **Alerting:** Fix silences preview. [#66000](https://github.com/grafana/grafana/issues/66000), [@konrad147](https://github.com/konrad147)
|
||||||
|
- **Fix:** DataLinks from data sources override user defined data link. [#65996](https://github.com/grafana/grafana/issues/65996), [@axelavargas](https://github.com/axelavargas)
|
||||||
|
- **Auth:** Remove the session cookie only if it's invalid or revoked. [#65984](https://github.com/grafana/grafana/issues/65984), [@mgyongyosi](https://github.com/mgyongyosi)
|
||||||
|
- **Transformations:** Improve UX and fix refId issues. [#65982](https://github.com/grafana/grafana/issues/65982), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **SQL Datasources:** Fix variable throwing error if query returns no data. [#65937](https://github.com/grafana/grafana/issues/65937), [@mdvictor](https://github.com/mdvictor)
|
||||||
|
- **Annotations:** Ignore unique constraint violations for tags. [#65935](https://github.com/grafana/grafana/issues/65935), [@sakjur](https://github.com/sakjur)
|
||||||
|
- **PluginExtensions:** Fixed issue with incorrect type being exposed when configuring an extension. [#65910](https://github.com/grafana/grafana/issues/65910), [@mckn](https://github.com/mckn)
|
||||||
|
- **Annotation List:** Fix panel not updating when variable is changed. [#65899](https://github.com/grafana/grafana/issues/65899), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
|
||||||
|
- **Table:** Fix migrations from old angular table for cell color modes . [#65760](https://github.com/grafana/grafana/issues/65760), [@torkelo](https://github.com/torkelo)
|
||||||
|
- **PieChart:** Show long labels properly. [#65699](https://github.com/grafana/grafana/issues/65699), [@mdvictor](https://github.com/mdvictor)
|
||||||
|
- **Library panels:** Ensure pagination controls are always correctly displayed. [#65283](https://github.com/grafana/grafana/issues/65283), [@ashharrison90](https://github.com/ashharrison90)
|
||||||
|
- **Catalog:** Show install error with incompatible version. [#65059](https://github.com/grafana/grafana/issues/65059), [@andresmgot](https://github.com/andresmgot)
|
||||||
|
- **XYChart:** Add all dataset columns in tooltip. [#65027](https://github.com/grafana/grafana/issues/65027), [@mdvictor](https://github.com/mdvictor)
|
||||||
|
- **Alerting:** Use a completely isolated context for state history writes. [#64989](https://github.com/grafana/grafana/issues/64989), [@alexweav](https://github.com/alexweav)
|
||||||
|
- **Utils:** Reimplement util.GetRandomString to avoid modulo bias. [#64481](https://github.com/grafana/grafana/issues/64481), [@DanCech](https://github.com/DanCech)
|
||||||
|
- **Reports:** Add empty UID to not found dashboard. (Enterprise)
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
The deprecated `plugin:build` command in the Grafana Toolkit have been removed in this release. The replacement [`create-plugin`](https://github.com/grafana/plugin-tools/tree/main/packages/create-plugin/) tool is recommended for plugin development. Issue [#67485](https://github.com/grafana/grafana/issues/67485)
|
||||||
|
|
||||||
|
The deprecated `package:build`, `node-version-check` and `toolkit:build` commands in the Grafana Toolkit have been removed in this release. Issue [#67475](https://github.com/grafana/grafana/issues/67475)
|
||||||
|
|
||||||
|
The deprecated `plugin:github-publish` command in the Grafana Toolkit have been removed in this release. Issue [#67471](https://github.com/grafana/grafana/issues/67471)
|
||||||
|
|
||||||
|
The `/query-history/migrate` endpoint has been removed and query history entries will not be automatically migrated when switching from local storage to remote storage. Issue [#67470](https://github.com/grafana/grafana/issues/67470)
|
||||||
|
|
||||||
|
The deprecated `plugin:ci-build`, `plugin:ci-package`, `plugin:ci-report`, `plugin:update-circleci` and `plugin:bundle-managed` commands in the Grafana Toolkit have been removed in this release. Issue [#67212](https://github.com/grafana/grafana/issues/67212)
|
||||||
|
|
||||||
|
The data-format used by the Loki data source for metric (graph producing) queries was changed to be compliant with the recommended Grafana format. The change is very small, we do not expect it to cause problems: for instant-queries the dataframe-type changed from `timeseries-multi` to `numeric-multi`, the dataframe-name attribute is not used anymore. If you are affected by this, you can revert back to the old format by setting the feature flag `lokiMetricDataplane` to `false`. We recommend migrating to the new format, because the feature-flag will be removed at some point in the future. Issue [#67137](https://github.com/grafana/grafana/issues/67137)
|
||||||
|
|
||||||
|
The deprecated `plugin:sign` command in the Grafana Toolkit have been removed in this release. The replacement `sign-plugin` tool is recommended for [plugin signing](https://github.com/grafana/plugin-tools/tree/main/packages/sign-plugin). Issue [#67130](https://github.com/grafana/grafana/issues/67130)
|
||||||
|
|
||||||
|
The deprecated `plugin:test` and `plugin:dev` commands in the Grafana Toolkit have been removed in this release. Issue [#67125](https://github.com/grafana/grafana/issues/67125)
|
||||||
|
|
||||||
|
The type signature of the `testDatasource()` method on the `DataSourceWithBackend` class [has changed](https://github.com/grafana/grafana/pull/67014/files/a5608dc4f27ab4459e725b22ff60b8fc05390c08#diff-c58fc1a09e9b9b17e5f45efbfb646273e69145f7687facb134440da4edafc745R263), the returned Promise is now typed stricter, which is probably going to cause type-errors while building plugins against the latest Grafana versions.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
abstract testDatasource(): Promise<any>;
|
||||||
|
|
||||||
|
// After
|
||||||
|
abstract testDatasource(): Promise<TestDataSourceResponse>;
|
||||||
|
```
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
We've removed some now unused properties from the `NavModel` interface. Issue [#66548](https://github.com/grafana/grafana/issues/66548)
|
||||||
|
|
||||||
|
`default` named retention policies won't be used to query. Users who have a `default` named retention policy in their `influxdb` database, have to rename it to something else. Having `default` named retention policy is not breaking anything. We will make sure to use the actual default retention policy under the hood. To change the hardcoded retention policy in the `dashboard.json`, users must they select the right retention policy from dropdown and save the panel/dashboard. Issue [#66466](https://github.com/grafana/grafana/issues/66466)
|
||||||
|
|
||||||
|
We removed previously deprecated components from `@grafana/data` : `getLogLevel`, `getLogLevelFromKey`, `addLogLevelToSeries`, `LogsParser`, `LogsParsers`, `calculateFieldStats`, `calculateLogsLabelStats`, `calculateStats`, `getParser`, `sortInAscendingOrder`, `sortInDescendingOrder`, `sortLogsResult`, `sortLogRows`, `checkLogsError`, `escapeUnescapedString`. Issue [#66271](https://github.com/grafana/grafana/issues/66271)
|
||||||
|
|
||||||
|
We removed previously deprecated components from `@grafana/ui` : `LogLabels`, `LogMessageAnsi`, `LogRows`, `getLogRowStyles`. Issue [#66268](https://github.com/grafana/grafana/issues/66268)
|
||||||
|
|
||||||
|
We removed previously deprecated `DataSourceWithLogsVolumeSupport` that was replaced with `DataSourceWithSupplementaryQueriesSupport`. Both APIs are for internal use only. Issue [#66266](https://github.com/grafana/grafana/issues/66266)
|
||||||
|
|
||||||
|
Additional functions (map/filter/forEach/iterator) have been added to the root Vector interface. Any code using vectors will continue to work unchanged, but in the rare case that you have implemented Vector directly, it be missing these functions. The easiest fix is to extend [FunctionalVector](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/vector/FunctionalVector.ts).
|
||||||
|
|
||||||
|
The `ArrayVector` class now extends the native JavaScript `Array` and gains all of its prototype/instance methods as a result. Issue [#66187](https://github.com/grafana/grafana/issues/66187)
|
||||||
|
|
||||||
|
We've removed the ability for functions to be passed as children to the `Dropdown` component. Previously, this was used to access the `isOpen` state of the dropdown. This can be now be achieved with the `onVisibleChange` prop.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```
|
||||||
|
return (
|
||||||
|
<Dropdown overlay={MenuActions} placement="bottom-end">
|
||||||
|
{(isOpen) =>
|
||||||
|
<ToolbarButton iconOnly icon="plus" isOpen={isOpen} aria-label="New" />
|
||||||
|
}
|
||||||
|
</Dropdown>
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
```
|
||||||
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Dropdown overlay={MenuActions} placement="bottom-end" onVisibleChange={setIsOpen}>
|
||||||
|
<ToolbarButton iconOnly icon="plus" isOpen={isOpen} aria-label="New" />
|
||||||
|
</Dropdown>
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Issue [#65467](https://github.com/grafana/grafana/issues/65467)
|
||||||
|
|
||||||
|
(relevant for plugin developers) The deprecated internal `dashboardId` is now removed from the request context. For usage tracking use the `dashboardUid` Issue [#64786](https://github.com/grafana/grafana/issues/64786)
|
||||||
|
|
||||||
|
Grafana has been upgraded to React 18 and now leverages the new React client rendering API. Plugin authors in particular should be aware, as there could be unintended side effects due to the changes around automatic batching of state updates and consistent `useEffect` timings. Be sure to test your plugins and reference the React 18 upgrade docs here: https://react.dev/blog/2022/03/08/react-18-upgrade-guide Issue [#64428](https://github.com/grafana/grafana/issues/64428)
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
|
||||||
|
For Elasticsearch annotation queries we are deprecating index field. Possibility to customise index for newly created annotations has already been removed in version 2.6.0 and since then we supported updating of index only for queries that customised index before 2.6.0. For users who would like to specify index for annotation queries we recommend to create a new Elasticsearch data source with specified index, and use that data source for annotations. Issue [#67046](https://github.com/grafana/grafana/issues/67046)
|
||||||
|
|
||||||
|
Scripts, systemd unit files and etc should stop using the `grafana-cli` and `grafana-server` programs, and instead use the `grafana` program. Uses of `grafana-server` should become `grafana server`, and uses of `grafana-cli` should become `grafana cli`. Issue [#66976](https://github.com/grafana/grafana/issues/66976)
|
||||||
|
|
||||||
|
The `database` field has been deprecated in the Elasticsearch datasource provisioning files, please use the `index` field in `jsonData` instead. Issue [#66828](https://github.com/grafana/grafana/issues/66828)
|
||||||
|
|
||||||
|
### Plugin development fixes & changes
|
||||||
|
|
||||||
|
- **Toolkit:** Remove deprecated `plugin:build`. [#67485](https://github.com/grafana/grafana/issues/67485), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove deprecated `package:build`, `node-version-check` and `toolkit:build` commands. [#67475](https://github.com/grafana/grafana/issues/67475), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove deprecated `plugin:github-publish` command. [#67471](https://github.com/grafana/grafana/issues/67471), [@academo](https://github.com/academo)
|
||||||
|
- **GrafanaUI:** Add indeterminate state to Checkbox. [#67312](https://github.com/grafana/grafana/issues/67312), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
|
||||||
|
- **Toolkit:** Remove `plugin:ci-build` `plugin:ci-package` `plugin:ci-report` and related files. [#67212](https://github.com/grafana/grafana/issues/67212), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove deprecated `plugin:sign` command. [#67130](https://github.com/grafana/grafana/issues/67130), [@academo](https://github.com/academo)
|
||||||
|
- **Toolkit:** Remove `plugin:dev` and `plugin:test`. [#67125](https://github.com/grafana/grafana/issues/67125), [@academo](https://github.com/academo)
|
||||||
|
- **Datasource:** Overhaul plugin error handling and action buttons. [#67014](https://github.com/grafana/grafana/issues/67014), [@sasklacz](https://github.com/sasklacz)
|
||||||
|
- **Toolkit:** Remove plugin:create and component:create commands. [#66729](https://github.com/grafana/grafana/issues/66729), [@academo](https://github.com/academo)
|
||||||
|
- **InteractiveTable:** Updated design and minor tweak to Correlactions page. [#66443](https://github.com/grafana/grafana/issues/66443), [@torkelo](https://github.com/torkelo)
|
||||||
|
|
||||||
|
<!-- 10.0.0-preview END -->
|
||||||
|
<!-- 9.5.3 START -->
|
||||||
|
|
||||||
|
# 9.5.3 (2023-06-06)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Query:** Prevent crash while executing concurrent mixed queries
|
||||||
|
- **Alerting:** Require alert.notifications:write permissions to test receivers and templates
|
||||||
|
|
||||||
|
<!-- 9.5.3 END -->
|
||||||
|
<!-- 9.5.2 START -->
|
||||||
|
|
||||||
|
# 9.5.2 (2023-05-03)
|
||||||
|
|
||||||
|
### Features and enhancements
|
||||||
|
|
||||||
|
- **Chore:** Upgrade Go to 1.20.4. [#67757](https://github.com/grafana/grafana/issues/67757), [@papagian](https://github.com/papagian)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **Explore:** Update table min height (#67321). [#67332](https://github.com/grafana/grafana/issues/67332), [@adrapereira](https://github.com/adrapereira)
|
||||||
|
- **DataLinks:** Encoded URL fixed. [#67291](https://github.com/grafana/grafana/issues/67291), [@juanicabanas](https://github.com/juanicabanas)
|
||||||
|
|
||||||
|
<!-- 9.5.2 END -->
|
||||||
<!-- 9.5.1 START -->
|
<!-- 9.5.1 START -->
|
||||||
|
|
||||||
# 9.5.1 (2023-04-26)
|
# 9.5.1 (2023-04-26)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
ARG BASE_IMAGE=alpine:3.17
|
ARG BASE_IMAGE=alpine:3.17
|
||||||
ARG JS_IMAGE=node:18-alpine3.17
|
ARG JS_IMAGE=node:18-alpine3.17
|
||||||
ARG JS_PLATFORM=linux/amd64
|
ARG JS_PLATFORM=linux/amd64
|
||||||
ARG GO_IMAGE=golang:1.20.3-alpine3.17
|
ARG GO_IMAGE=golang:1.20.4-alpine3.17
|
||||||
|
|
||||||
ARG GO_SRC=go-builder
|
ARG GO_SRC=go-builder
|
||||||
ARG JS_SRC=js-builder
|
ARG JS_SRC=js-builder
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -207,7 +207,7 @@ build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
|||||||
--build-arg COMMIT_SHA=$$(git rev-parse --short HEAD) \
|
--build-arg COMMIT_SHA=$$(git rev-parse --short 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:20.04 \
|
||||||
--build-arg GO_IMAGE=golang:1.20.3 \
|
--build-arg GO_IMAGE=golang:1.20.4 \
|
||||||
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
||||||
$(DOCKER_BUILD_ARGS)
|
$(DOCKER_BUILD_ARGS)
|
||||||
|
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ datasource_limit = 5000
|
|||||||
|
|
||||||
################################### SQL Data Sources #####################
|
################################### SQL Data Sources #####################
|
||||||
[sql_datasources]
|
[sql_datasources]
|
||||||
# Default maximum number of open connections maintained in the connection pool
|
# Default maximum number of open connections maintained in the connection pool
|
||||||
# when connecting to SQL based data sources
|
# when connecting to SQL based data sources
|
||||||
max_open_conns_default = 100
|
max_open_conns_default = 100
|
||||||
|
|
||||||
@@ -431,7 +431,7 @@ max_open_conns_default = 100
|
|||||||
max_idle_conns_default = 100
|
max_idle_conns_default = 100
|
||||||
|
|
||||||
# Default maximum connection lifetime used when connecting
|
# Default maximum connection lifetime used when connecting
|
||||||
# to SQL based data sources.
|
# to SQL based data sources.
|
||||||
max_conn_lifetime_default = 14400
|
max_conn_lifetime_default = 14400
|
||||||
|
|
||||||
#################################### Users ###############################
|
#################################### Users ###############################
|
||||||
@@ -484,6 +484,22 @@ user_invite_max_lifetime_duration = 24h
|
|||||||
# Enter a comma-separated list of usernames to hide them in the Grafana UI. These users are shown to Grafana admins and to themselves.
|
# Enter a comma-separated list of usernames to hide them in the Grafana UI. These users are shown to Grafana admins and to themselves.
|
||||||
hidden_users =
|
hidden_users =
|
||||||
|
|
||||||
|
[secretscan]
|
||||||
|
# Enable secretscan feature
|
||||||
|
enabled = false
|
||||||
|
|
||||||
|
# Interval to check for token leaks
|
||||||
|
interval = 5m
|
||||||
|
|
||||||
|
# base URL of the grafana token leak check service
|
||||||
|
base_url = https://secret-scanning.grafana.net
|
||||||
|
|
||||||
|
# URL to send outgoing webhooks to in case of detection
|
||||||
|
oncall_url =
|
||||||
|
|
||||||
|
# Whether to revoke the token if a leak is detected or just send a notification
|
||||||
|
revoke = true
|
||||||
|
|
||||||
[service_accounts]
|
[service_accounts]
|
||||||
# When set, Grafana will not allow the creation of tokens with expiry greater than this setting.
|
# When set, Grafana will not allow the creation of tokens with expiry greater than this setting.
|
||||||
token_expiration_day_limit =
|
token_expiration_day_limit =
|
||||||
@@ -537,6 +553,9 @@ sigv4_verbose_logging = false
|
|||||||
# Set to true to enable Azure authentication option for HTTP-based datasources
|
# Set to true to enable Azure authentication option for HTTP-based datasources
|
||||||
azure_auth_enabled = false
|
azure_auth_enabled = false
|
||||||
|
|
||||||
|
# Use email lookup in addition to the unique ID provided by the IdP
|
||||||
|
oauth_allow_insecure_email_lookup = false
|
||||||
|
|
||||||
#################################### Anonymous Auth ######################
|
#################################### Anonymous Auth ######################
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
# enable anonymous access
|
# enable anonymous access
|
||||||
@@ -647,6 +666,7 @@ auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
|
|||||||
token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
|
token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
|
||||||
allowed_domains =
|
allowed_domains =
|
||||||
allowed_groups =
|
allowed_groups =
|
||||||
|
allowed_organizations =
|
||||||
role_attribute_strict = false
|
role_attribute_strict = false
|
||||||
allow_assign_grafana_admin = false
|
allow_assign_grafana_admin = false
|
||||||
force_use_graph_api = false
|
force_use_graph_api = false
|
||||||
|
|||||||
@@ -469,6 +469,22 @@
|
|||||||
# Enter a comma-separated list of users login to hide them in the Grafana UI. These users are shown to Grafana admins and themselves.
|
# Enter a comma-separated list of users login to hide them in the Grafana UI. These users are shown to Grafana admins and themselves.
|
||||||
; hidden_users =
|
; hidden_users =
|
||||||
|
|
||||||
|
[secretscan]
|
||||||
|
# Enable secretscan feature
|
||||||
|
;enabled = false
|
||||||
|
|
||||||
|
# Interval to check for token leaks
|
||||||
|
;interval = 5m
|
||||||
|
|
||||||
|
# base URL of the grafana token leak check service
|
||||||
|
;base_url = https://secret-scanning.grafana.net
|
||||||
|
|
||||||
|
# URL to send outgoing webhooks to in case of detection
|
||||||
|
;oncall_url =
|
||||||
|
|
||||||
|
# Whether to revoke the token if a leak is detected or just send a notification
|
||||||
|
;revoke = true
|
||||||
|
|
||||||
[service_accounts]
|
[service_accounts]
|
||||||
# Service account maximum expiration date in days.
|
# Service account maximum expiration date in days.
|
||||||
# When set, Grafana will not allow the creation of tokens with expiry greater than this setting.
|
# When set, Grafana will not allow the creation of tokens with expiry greater than this setting.
|
||||||
@@ -526,6 +542,9 @@
|
|||||||
# Set to skip the organization role from JWT login and use system's role assignment instead.
|
# Set to skip the organization role from JWT login and use system's role assignment instead.
|
||||||
; skip_org_role_sync = false
|
; skip_org_role_sync = false
|
||||||
|
|
||||||
|
# Use email lookup in addition to the unique ID provided by the IdP
|
||||||
|
;oauth_allow_insecure_email_lookup = false
|
||||||
|
|
||||||
#################################### Anonymous Auth ######################
|
#################################### Anonymous Auth ######################
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
# enable anonymous access
|
# enable anonymous access
|
||||||
@@ -624,6 +643,7 @@
|
|||||||
;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
|
;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
|
||||||
;allowed_domains =
|
;allowed_domains =
|
||||||
;allowed_groups =
|
;allowed_groups =
|
||||||
|
;allowed_organizations =
|
||||||
;role_attribute_strict = false
|
;role_attribute_strict = false
|
||||||
;allow_assign_grafana_admin = false
|
;allow_assign_grafana_admin = false
|
||||||
# prevent synchronizing users organization roles
|
# prevent synchronizing users organization roles
|
||||||
|
|||||||
594
devenv/dev-dashboards/panel-barchart/barchart-tooltips.json
Normal file
594
devenv/dev-dashboards/panel-barchart/barchart-tooltips.json
Normal file
@@ -0,0 +1,594 @@
|
|||||||
|
{
|
||||||
|
"annotations": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"builtIn": 1,
|
||||||
|
"datasource": {
|
||||||
|
"type": "grafana",
|
||||||
|
"uid": "-- Grafana --"
|
||||||
|
},
|
||||||
|
"enable": true,
|
||||||
|
"hide": true,
|
||||||
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||||||
|
"name": "Annotations & Alerts",
|
||||||
|
"type": "dashboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"editable": true,
|
||||||
|
"fiscalYearStartMonth": 0,
|
||||||
|
"graphTooltip": 0,
|
||||||
|
"id": 301,
|
||||||
|
"links": [],
|
||||||
|
"liveNow": false,
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"collapsed": false,
|
||||||
|
"gridPos": {
|
||||||
|
"h": 1,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 4,
|
||||||
|
"panels": [],
|
||||||
|
"title": "Field Override - Data Links",
|
||||||
|
"type": "row"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"fillOpacity": 80,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineWidth": 1,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "column1"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "links",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"title": "google",
|
||||||
|
"url": "google.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"targetBlank": true,
|
||||||
|
"title": "youtube",
|
||||||
|
"url": "youtube.com"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.fillOpacity",
|
||||||
|
"value": 14
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "column2"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "links",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"title": "datalink column 2",
|
||||||
|
"url": "grafana.com"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"fixedColor": "purple",
|
||||||
|
"mode": "shades"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 6,
|
||||||
|
"w": 9,
|
||||||
|
"x": 0,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"id": 1,
|
||||||
|
"options": {
|
||||||
|
"barRadius": 0,
|
||||||
|
"barWidth": 0.97,
|
||||||
|
"fullHighlight": false,
|
||||||
|
"groupWidth": 0.7,
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"orientation": "auto",
|
||||||
|
"showValue": "auto",
|
||||||
|
"stacking": "none",
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
},
|
||||||
|
"xTickLabelRotation": 0,
|
||||||
|
"xTickLabelSpacing": 0
|
||||||
|
},
|
||||||
|
"pluginVersion": "9.5.0-cloud.4.a016665c",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"csvContent": "id,column1,column2\r\nA,1,2",
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "o63ntNT4z"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_content"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"csvContent": "id,column1,column2\r\nB,2,1",
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "o63ntNT4z"
|
||||||
|
},
|
||||||
|
"hide": false,
|
||||||
|
"refId": "B",
|
||||||
|
"scenarioId": "csv_content"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Tooltip mode: Single",
|
||||||
|
"transformations": [
|
||||||
|
{
|
||||||
|
"id": "merge",
|
||||||
|
"options": {}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "barchart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"fillOpacity": 80,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineWidth": 1,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "column1"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "links",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"title": "google",
|
||||||
|
"url": "google.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"targetBlank": true,
|
||||||
|
"title": "youtube",
|
||||||
|
"url": "youtube.com"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.fillOpacity",
|
||||||
|
"value": 14
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "column2"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "links",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"title": "datalink column 2",
|
||||||
|
"url": "grafana.com"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"fixedColor": "purple",
|
||||||
|
"mode": "shades"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 6,
|
||||||
|
"w": 9,
|
||||||
|
"x": 9,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"id": 6,
|
||||||
|
"options": {
|
||||||
|
"barRadius": 0,
|
||||||
|
"barWidth": 0.97,
|
||||||
|
"fullHighlight": false,
|
||||||
|
"groupWidth": 0.7,
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"orientation": "auto",
|
||||||
|
"showValue": "auto",
|
||||||
|
"stacking": "none",
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "multi",
|
||||||
|
"sort": "none"
|
||||||
|
},
|
||||||
|
"xTickLabelRotation": 0,
|
||||||
|
"xTickLabelSpacing": 0
|
||||||
|
},
|
||||||
|
"pluginVersion": "9.5.0-cloud.4.a016665c",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"csvContent": "id,column1,column2\r\nA,1,2",
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "o63ntNT4z"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_content"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"csvContent": "id,column1,column2\r\nB,2,1",
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "o63ntNT4z"
|
||||||
|
},
|
||||||
|
"hide": false,
|
||||||
|
"refId": "B",
|
||||||
|
"scenarioId": "csv_content"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Tooltip mode: All",
|
||||||
|
"transformations": [
|
||||||
|
{
|
||||||
|
"id": "merge",
|
||||||
|
"options": {}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "barchart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"collapsed": false,
|
||||||
|
"gridPos": {
|
||||||
|
"h": 1,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 7
|
||||||
|
},
|
||||||
|
"id": 3,
|
||||||
|
"panels": [],
|
||||||
|
"title": "Field Override - Hide Tooltip",
|
||||||
|
"type": "row"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"fillOpacity": 80,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineWidth": 1,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "field 3"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "custom.hideFrom",
|
||||||
|
"value": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": true,
|
||||||
|
"viz": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 6,
|
||||||
|
"w": 9,
|
||||||
|
"x": 0,
|
||||||
|
"y": 8
|
||||||
|
},
|
||||||
|
"id": 5,
|
||||||
|
"options": {
|
||||||
|
"barRadius": 0,
|
||||||
|
"barWidth": 0.97,
|
||||||
|
"fullHighlight": false,
|
||||||
|
"groupWidth": 0.7,
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"orientation": "auto",
|
||||||
|
"showValue": "auto",
|
||||||
|
"stacking": "none",
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "multi",
|
||||||
|
"sort": "none"
|
||||||
|
},
|
||||||
|
"xTickLabelRotation": 0,
|
||||||
|
"xTickLabelSpacing": 0
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"csvContent": "id, field 1, field 2, field 3\na, 20, 30, 40\nb, 40, 50, 60",
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_content"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Hide 'field 3'",
|
||||||
|
"type": "barchart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"fillOpacity": 80,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"lineWidth": 1,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "id"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "custom.hideFrom",
|
||||||
|
"value": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": true,
|
||||||
|
"viz": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 6,
|
||||||
|
"w": 9,
|
||||||
|
"x": 9,
|
||||||
|
"y": 8
|
||||||
|
},
|
||||||
|
"id": 7,
|
||||||
|
"options": {
|
||||||
|
"barRadius": 0,
|
||||||
|
"barWidth": 0.97,
|
||||||
|
"fullHighlight": false,
|
||||||
|
"groupWidth": 0.7,
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"orientation": "auto",
|
||||||
|
"showValue": "auto",
|
||||||
|
"stacking": "none",
|
||||||
|
"tooltip": {
|
||||||
|
"mode": "multi",
|
||||||
|
"sort": "none"
|
||||||
|
},
|
||||||
|
"xTickLabelRotation": 0,
|
||||||
|
"xTickLabelSpacing": 0
|
||||||
|
},
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"csvContent": "id, field 1, field 2, field 3\na, 20, 30, 40\nb, 40, 50, 60",
|
||||||
|
"datasource": {
|
||||||
|
"type": "testdata",
|
||||||
|
"uid": "PD8C576611E62080A"
|
||||||
|
},
|
||||||
|
"refId": "A",
|
||||||
|
"scenarioId": "csv_content"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Hide 'id'",
|
||||||
|
"type": "barchart"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"refresh": "",
|
||||||
|
"schemaVersion": 38,
|
||||||
|
"style": "dark",
|
||||||
|
"tags": [
|
||||||
|
"gdev",
|
||||||
|
"panel-tests",
|
||||||
|
"barchart",
|
||||||
|
"graph-ng"
|
||||||
|
],
|
||||||
|
"templating": {
|
||||||
|
"list": []
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"from": "now-6h",
|
||||||
|
"to": "now"
|
||||||
|
},
|
||||||
|
"timepicker": {},
|
||||||
|
"timezone": "",
|
||||||
|
"title": "Panel Tests - Bar Chart Tooltip",
|
||||||
|
"uid": "ea33320b-bd97-4fe1-a27c-24bc61a48b41",
|
||||||
|
"version": 12,
|
||||||
|
"weekStart": ""
|
||||||
|
}
|
||||||
@@ -64,6 +64,18 @@ async function elasticSetupIndexTemplate() {
|
|||||||
'@timestamp': {
|
'@timestamp': {
|
||||||
type: 'date',
|
type: 'date',
|
||||||
},
|
},
|
||||||
|
'@timestamp_custom': {
|
||||||
|
type: 'date',
|
||||||
|
format: 'yyyy_MM_dd_HH_mm_ss'
|
||||||
|
},
|
||||||
|
'@timestamp_unix': {
|
||||||
|
type: 'date',
|
||||||
|
format: 'epoch_millis'
|
||||||
|
},
|
||||||
|
'@timestamp_nanos': {
|
||||||
|
type: 'date_nanos',
|
||||||
|
format: 'strict_date_optional_time_nanos'
|
||||||
|
},
|
||||||
counter: {
|
counter: {
|
||||||
type: 'integer',
|
type: 'integer',
|
||||||
},
|
},
|
||||||
@@ -115,6 +127,9 @@ function getRandomLogItem(counter, timestamp) {
|
|||||||
const maybeAnsiText = Math.random() < 0.5 ? 'with ANSI \u001b[31mpart of the text\u001b[0m' : '';
|
const maybeAnsiText = Math.random() < 0.5 ? 'with ANSI \u001b[31mpart of the text\u001b[0m' : '';
|
||||||
return {
|
return {
|
||||||
'@timestamp': timestamp.toISOString(),
|
'@timestamp': timestamp.toISOString(),
|
||||||
|
'@timestamp_custom': timestamp.toISOString().split('.')[0].replace(/[T:-]/g,'_'),
|
||||||
|
'@timestamp_unix': timestamp.getTime(),
|
||||||
|
'@timestamp_nanos': timestamp.toISOString().slice(0,-1) + '123Z',
|
||||||
line: `log text ${maybeAnsiText} [${randomText}]`,
|
line: `log text ${maybeAnsiText} [${randomText}]`,
|
||||||
counter: counter.toString(),
|
counter: counter.toString(),
|
||||||
float: 100 * Math.random().toString(),
|
float: 100 * Math.random().toString(),
|
||||||
|
|||||||
@@ -128,6 +128,13 @@ local dashboard = grafana.dashboard;
|
|||||||
id: 0,
|
id: 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
dashboard.new('barchart-tooltips', import '../dev-dashboards/panel-barchart/barchart-tooltips.json') +
|
||||||
|
resource.addMetadata('folder', 'dev-dashboards') +
|
||||||
|
{
|
||||||
|
spec+: {
|
||||||
|
id: 0,
|
||||||
|
}
|
||||||
|
},
|
||||||
dashboard.new('candlestick', import '../dev-dashboards/panel-candlestick/candlestick.json') +
|
dashboard.new('candlestick', import '../dev-dashboards/panel-candlestick/candlestick.json') +
|
||||||
resource.addMetadata('folder', 'dev-dashboards') +
|
resource.addMetadata('folder', 'dev-dashboards') +
|
||||||
{
|
{
|
||||||
|
|||||||
19
docs/docs.mk
19
docs/docs.mk
@@ -1,3 +1,5 @@
|
|||||||
|
# The source of this file is https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/docs.mk.
|
||||||
|
# 4.0.0 (2023-06-06)
|
||||||
include variables.mk
|
include variables.mk
|
||||||
-include variables.mk.local
|
-include variables.mk.local
|
||||||
|
|
||||||
@@ -52,6 +54,11 @@ ifeq ($(origin DOC_VALIDATOR_IMAGE), undefined)
|
|||||||
export DOC_VALIDATOR_IMAGE := grafana/doc-validator:latest
|
export DOC_VALIDATOR_IMAGE := grafana/doc-validator:latest
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Container image used for vale linting.
|
||||||
|
ifeq ($(origin VALE_IMAGE), undefined)
|
||||||
|
export VALE_IMAGE := grafana/vale:latest
|
||||||
|
endif
|
||||||
|
|
||||||
# PATH-like list of directories within which to find projects.
|
# PATH-like list of directories within which to find projects.
|
||||||
# If all projects are checked out into the same directory, ~/repos/ for example, then the default should work.
|
# If all projects are checked out into the same directory, ~/repos/ for example, then the default should work.
|
||||||
ifeq ($(origin REPOS_PATH), undefined)
|
ifeq ($(origin REPOS_PATH), undefined)
|
||||||
@@ -91,17 +98,17 @@ docs-no-pull: make-docs
|
|||||||
.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 --debug' $(PWD)/make-docs $(PROJECTS)
|
WEBSITE_EXEC='hugo server --bind 0.0.0.0 --port 3002 --debug' $(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: doc-validator
|
.PHONY: doc-validator
|
||||||
doc-validator: ## Run docs-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) $(PWD)/make-docs $(PROJECTS)
|
||||||
|
|
||||||
.PHONY: doc-validator/%
|
.PHONY: vale
|
||||||
doc-validator/%: ## Run doc-validator on a specific path. To lint the path /docs/sources/administration, run 'make doc-validator/administration'.
|
vale: ## Run vale on the entire docs folder.
|
||||||
doc-validator/%: make-docs
|
vale: make-docs
|
||||||
DOCS_IMAGE=$(DOC_VALIDATOR_IMAGE) DOC_VALIDATOR_INCLUDE=$(subst doc-validator/,,$@) $(PWD)/make-docs $(PROJECTS)
|
DOCS_IMAGE=$(VALE_IMAGE) $(PWD)/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.
|
||||||
|
|||||||
218
docs/make-docs
218
docs/make-docs
@@ -1,5 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# The source of this file is https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/make-docs.
|
# The source of this file is https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/make-docs.
|
||||||
|
# 4.1.0 (2023-06-16)
|
||||||
|
|
||||||
set -ef
|
set -ef
|
||||||
|
|
||||||
@@ -8,9 +9,11 @@ readonly DOCS_HOST_PORT="${DOCS_HOST_PORT:-3002}"
|
|||||||
readonly DOCS_IMAGE="${DOCS_IMAGE:-grafana/docs-base:latest}"
|
readonly DOCS_IMAGE="${DOCS_IMAGE:-grafana/docs-base:latest}"
|
||||||
|
|
||||||
readonly DOC_VALIDATOR_INCLUDE="${DOC_VALIDATOR_INCLUDE:-.+\.md$}"
|
readonly DOC_VALIDATOR_INCLUDE="${DOC_VALIDATOR_INCLUDE:-.+\.md$}"
|
||||||
|
readonly DOC_VALIDATOR_SKIP_CHECKS="${DOC_VALIDATOR_SKIP_CHECKS:-^image-}"
|
||||||
|
|
||||||
readonly HUGO_REFLINKSERRORLEVEL="${HUGO_REFLINKSERRORLEVEL:-WARNING}"
|
readonly HUGO_REFLINKSERRORLEVEL="${HUGO_REFLINKSERRORLEVEL:-WARNING}"
|
||||||
readonly WEBSITE_EXEC="${WEBSITE_EXEC:-make server}"
|
readonly VALE_MINALERTLEVEL="${VALE_MINALERTLEVEL:-error}"
|
||||||
|
readonly WEBSITE_EXEC="${WEBSITE_EXEC:-make server-docs}"
|
||||||
# If set, the docs-base image will run a prebuild script that sets up Hugo mounts.
|
# If set, the docs-base image will run a prebuild script that sets up Hugo mounts.
|
||||||
readonly WEBSITE_MOUNTS="${WEBSITE_MOUNTS:-}"
|
readonly WEBSITE_MOUNTS="${WEBSITE_MOUNTS:-}"
|
||||||
|
|
||||||
@@ -59,8 +62,11 @@ fi
|
|||||||
SOURCES_as_code='as-code-docs'
|
SOURCES_as_code='as-code-docs'
|
||||||
SOURCES_enterprise_metrics='backend-enterprise'
|
SOURCES_enterprise_metrics='backend-enterprise'
|
||||||
SOURCES_enterprise_metrics_='backend-enterprise'
|
SOURCES_enterprise_metrics_='backend-enterprise'
|
||||||
SOURCES_grafana_cloud='cloud-docs'
|
SOURCES_grafana_cloud='website'
|
||||||
SOURCES_grafana_cloud_k6='k6-docs'
|
SOURCES_grafana_cloud_k6='k6-docs'
|
||||||
|
SOURCES_grafana_cloud_data_configuration_integrations='cloud-onboarding'
|
||||||
|
SOURCES_grafana_cloud_frontend_observability_faro_web_sdk='faro-web-sdk'
|
||||||
|
SOURCES_grafana_cloud_machine_learning='machine-learning'
|
||||||
SOURCES_helm_charts_mimir_distributed='mimir'
|
SOURCES_helm_charts_mimir_distributed='mimir'
|
||||||
SOURCES_helm_charts_tempo_distributed='tempo'
|
SOURCES_helm_charts_tempo_distributed='tempo'
|
||||||
SOURCES_opentelemetry='opentelemetry-docs'
|
SOURCES_opentelemetry='opentelemetry-docs'
|
||||||
@@ -68,14 +74,20 @@ SOURCES_opentelemetry='opentelemetry-docs'
|
|||||||
VERSIONS_as_code='UNVERSIONED'
|
VERSIONS_as_code='UNVERSIONED'
|
||||||
VERSIONS_grafana_cloud='UNVERSIONED'
|
VERSIONS_grafana_cloud='UNVERSIONED'
|
||||||
VERSIONS_grafana_cloud_k6='UNVERSIONED'
|
VERSIONS_grafana_cloud_k6='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_data_configuration_integrations='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_frontend_observability_faro_web_sdk='UNVERSIONED'
|
||||||
|
VERSIONS_grafana_cloud_machine_learning='UNVERSIONED'
|
||||||
VERSIONS_opentelemetry='UNVERSIONED'
|
VERSIONS_opentelemetry='UNVERSIONED'
|
||||||
VERSIONS_technical_documentation='UNVERSIONED'
|
VERSIONS_technical_documentation='UNVERSIONED'
|
||||||
|
VERSIONS_website='UNVERSIONED'
|
||||||
VERSIONS_writers_toolkit='UNVERSIONED'
|
VERSIONS_writers_toolkit='UNVERSIONED'
|
||||||
|
|
||||||
|
PATHS_grafana_cloud='content/docs/grafana-cloud'
|
||||||
PATHS_helm_charts_mimir_distributed='docs/sources/helm-charts/mimir-distributed'
|
PATHS_helm_charts_mimir_distributed='docs/sources/helm-charts/mimir-distributed'
|
||||||
PATHS_helm_charts_tempo_distributed='docs/sources/helm-charts/tempo-distributed'
|
PATHS_helm_charts_tempo_distributed='docs/sources/helm-charts/tempo-distributed'
|
||||||
PATHS_mimir='docs/sources/mimir'
|
PATHS_mimir='docs/sources/mimir'
|
||||||
PATHS_tempo='docs/sources/tempo'
|
PATHS_tempo='docs/sources/tempo'
|
||||||
|
PATHS_website='content/docs'
|
||||||
|
|
||||||
# identifier STR
|
# identifier STR
|
||||||
# Replace characters that are not valid in an identifier with underscores.
|
# Replace characters that are not valid in an identifier with underscores.
|
||||||
@@ -138,6 +150,13 @@ proj_url() {
|
|||||||
$1
|
$1
|
||||||
POSIX_HERESTRING
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_project}" = 'website' ]; then
|
||||||
|
echo "http://localhost:${DOCS_HOST_PORT}/docs/"
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
||||||
echo "http://localhost:${DOCS_HOST_PORT}/docs/${_project}/"
|
echo "http://localhost:${DOCS_HOST_PORT}/docs/${_project}/"
|
||||||
else
|
else
|
||||||
@@ -165,14 +184,43 @@ proj_dst() {
|
|||||||
$1
|
$1
|
||||||
POSIX_HERESTRING
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_project}" = 'website' ]; then
|
||||||
|
echo '/hugo/content/docs'
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
||||||
echo "/hugo/content/docs/${_project}"
|
echo "/hugo/content/docs/${_project}"
|
||||||
else
|
else
|
||||||
echo "/hugo/content/docs/${_project}/${_version}"
|
echo "/hugo/content/docs/${_project}/${_version}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset _project _version
|
unset _project _version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# repo_path returns the host path to the project repository.
|
||||||
|
# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
|
||||||
|
repo_path() {
|
||||||
|
_repo="$1"
|
||||||
|
IFS=:
|
||||||
|
for lookup in ${REPOS_PATH}; do
|
||||||
|
if [ -d "${lookup}/${_repo}" ]; then
|
||||||
|
echo "${lookup}/${_repo}"
|
||||||
|
unset _path _repo
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset IFS
|
||||||
|
|
||||||
|
echo "ERRR: could not find project '${_repo}' in any of the paths in REPOS_PATH '${REPOS_PATH}'." >&2
|
||||||
|
echo "NOTE: you must have a checkout of the project '${_repo}' at '${REPOS_PATH##:*}/${_repo}'." >&2
|
||||||
|
echo "NOTE: if you have cloned the repository into a directory with a different name, consider changing it to ${_repo}." >&2
|
||||||
|
unset _repo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# proj_src returns the host path to content source for a project.
|
# proj_src returns the host path to content source for a project.
|
||||||
# It expects a complete project structure as input.
|
# It expects a complete project structure as input.
|
||||||
# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
|
# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
|
||||||
@@ -181,21 +229,10 @@ proj_src() {
|
|||||||
$1
|
$1
|
||||||
POSIX_HERESTRING
|
POSIX_HERESTRING
|
||||||
|
|
||||||
IFS=:
|
_repo="$(repo_path "${_repo}")"
|
||||||
for lookup in ${REPOS_PATH}; do
|
echo "${_repo}/${_path}"
|
||||||
if [ -d "${lookup}/${_repo}" ]; then
|
|
||||||
echo "${lookup}/${_repo}/${_path}"
|
|
||||||
unset _path _repo
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
unset IFS
|
|
||||||
|
|
||||||
echo "ERRR: could not find project '${_repo}' in any of the paths in REPOS_PATH '${REPOS_PATH}'." >&2
|
|
||||||
echo "NOTE: you must have a checkout of the project '${_repo}' at '${REPOS_PATH##:*}/${_repo}'." >&2
|
|
||||||
echo "NOTE: if you have cloned the repository into a directory with a different name, consider changing it to ${_repo}." >&2
|
|
||||||
unset _path _repo
|
unset _path _repo
|
||||||
exit 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# proj_canonical returns the canonical absolute path partial URI for a project.
|
# proj_canonical returns the canonical absolute path partial URI for a project.
|
||||||
@@ -205,11 +242,19 @@ proj_canonical() {
|
|||||||
$1
|
$1
|
||||||
POSIX_HERESTRING
|
POSIX_HERESTRING
|
||||||
|
|
||||||
|
if [ "${_project}" = 'website' ]; then
|
||||||
|
echo '/docs'
|
||||||
|
|
||||||
|
unset _project _version
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
|
||||||
echo "/docs/${_project}"
|
echo "/docs/${_project}"
|
||||||
else
|
else
|
||||||
echo "/docs/${_project}/${_version}"
|
echo "/docs/${_project}/${_version}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset _project _version
|
unset _project _version
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,6 +307,19 @@ url_src_dst_vers="$(url_src_dst_vers "$@")"
|
|||||||
volumes=""
|
volumes=""
|
||||||
redirects=""
|
redirects=""
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
IFS=: read -r _project _ _repo _ <<POSIX_HERESTRING
|
||||||
|
${arg}
|
||||||
|
POSIX_HERESTRING
|
||||||
|
if [ "${_project}" = website ]; then
|
||||||
|
_repo="$(repo_path website)"
|
||||||
|
volumes="--volume=${_repo}/config:/hugo/config"
|
||||||
|
volumes="${volumes} --volume=${_repo}/layouts/partials:/hugo/layouts/partials"
|
||||||
|
volumes="${volumes} --volume=${_repo}/layouts/shortcodes:/hugo/layouts/shortcodes"
|
||||||
|
fi
|
||||||
|
unset _project _repo
|
||||||
|
done
|
||||||
|
|
||||||
for x in ${url_src_dst_vers}; do
|
for x in ${url_src_dst_vers}; do
|
||||||
IFS='^' read -r _url _src _dst _ver <<POSIX_HERESTRING
|
IFS='^' read -r _url _src _dst _ver <<POSIX_HERESTRING
|
||||||
$x
|
$x
|
||||||
@@ -296,64 +354,96 @@ IFS=':' read -r image _ <<POSIX_HERESTRING
|
|||||||
${DOCS_IMAGE}
|
${DOCS_IMAGE}
|
||||||
POSIX_HERESTRING
|
POSIX_HERESTRING
|
||||||
|
|
||||||
if [ "${image}" = "grafana/doc-validator" ]; then
|
case "${image}" in
|
||||||
echo
|
'grafana/doc-validator')
|
||||||
"${PODMAN}" run \
|
proj="$(new_proj "$1")"
|
||||||
--init \
|
echo
|
||||||
--interactive \
|
"${PODMAN}" run \
|
||||||
--name "${DOCS_CONTAINER}" \
|
--init \
|
||||||
--platform linux/amd64 \
|
--interactive \
|
||||||
--rm \
|
--name "${DOCS_CONTAINER}" \
|
||||||
--tty \
|
--platform linux/amd64 \
|
||||||
${volumes} \
|
--rm \
|
||||||
"${DOCS_IMAGE}" \
|
--tty \
|
||||||
--skip-image-validation \
|
${volumes} \
|
||||||
--include="${DOC_VALIDATOR_INCLUDE}" \
|
"${DOCS_IMAGE}" \
|
||||||
/hugo/content/docs \
|
"--include=${DOC_VALIDATOR_INCLUDE}" \
|
||||||
"$(proj_canonical "$(new_proj "$1")")"
|
"--skip-checks=${DOC_VALIDATOR_SKIP_CHECKS}" \
|
||||||
else
|
/hugo/content/docs \
|
||||||
|
"$(proj_canonical "${proj}")" | sed "s#$(proj_dst "${proj}")#sources#"
|
||||||
cat <<EOF >/tmp/make-docs-entrypoint
|
;;
|
||||||
|
'grafana/vale')
|
||||||
|
proj="$(new_proj "$1")"
|
||||||
|
echo
|
||||||
|
"${PODMAN}" run \
|
||||||
|
--init \
|
||||||
|
--interactive \
|
||||||
|
--name "${DOCS_CONTAINER}" \
|
||||||
|
--platform linux/amd64 \
|
||||||
|
--rm \
|
||||||
|
--tty \
|
||||||
|
${volumes} \
|
||||||
|
"${DOCS_IMAGE}" \
|
||||||
|
"--minAlertLevel=${VALE_MINALERTLEVEL}" \
|
||||||
|
--config=/etc/vale/.vale.ini \
|
||||||
|
--output=line \
|
||||||
|
/hugo/content/docs | sed "s#$(proj_dst "${proj}")#sources#"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tempfile="$(mktemp -t make-docs.XXX)"
|
||||||
|
cat <<EOF >"${tempfile}"
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
for redirect in ${redirects}; do
|
for redirect in ${redirects}; do
|
||||||
IFS='^' read -r path ver <<<"\${redirect}"
|
IFS='^' read -r path ver <<<"\${redirect}"
|
||||||
echo -e "---\\nredirectURL: \"\${path/\/hugo\/content/}\"\\ntype: redirect\\n---\\n" > "\${path/\${ver}/_index.md}"
|
echo -e "---\\nredirectURL: \"\${path/\/hugo\/content/}\"\\ntype: redirect\\nversioned: true\\n---\\n" > "\${path/\${ver}/_index.md}"
|
||||||
|
|
||||||
if [[ -n "${WEBSITE_MOUNTS}" ]]; then
|
|
||||||
unset WEBSITE_SKIP_MOUNTS
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
for x in "${url_src_dst_vers}"; do
|
||||||
|
IFS='^' read -r _ _ dst _ <<<"\${x}"
|
||||||
|
|
||||||
|
while [[ -n "\${dst}" ]]; do
|
||||||
|
touch "\${dst}/_index.md"
|
||||||
|
dst="\${dst%/*}"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -n "${WEBSITE_MOUNTS}" ]]; then
|
||||||
|
unset WEBSITE_SKIP_MOUNTS
|
||||||
|
fi
|
||||||
|
|
||||||
${WEBSITE_EXEC}
|
${WEBSITE_EXEC}
|
||||||
EOF
|
EOF
|
||||||
chmod +x /tmp/make-docs-entrypoint
|
chmod +x "${tempfile}"
|
||||||
volumes="${volumes} --volume=/tmp/make-docs-entrypoint:/entrypoint"
|
volumes="${volumes} --volume=$(realpath "${tempfile}"):/entrypoint"
|
||||||
readonly volumes
|
readonly volumes
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Documentation will be served at the following URLs:"
|
echo "Documentation will be served at the following URLs:"
|
||||||
for x in ${url_src_dst_vers}; do
|
for x in ${url_src_dst_vers}; do
|
||||||
IFS='^' read -r url _ _ <<POSIX_HERESTRING
|
IFS='^' read -r url _ _ <<POSIX_HERESTRING
|
||||||
$x
|
$x
|
||||||
POSIX_HERESTRING
|
POSIX_HERESTRING
|
||||||
|
|
||||||
if [ -n "${url}" ]; then
|
if [ -n "${url}" ]; then
|
||||||
echo " ${url}"
|
if [ "${_url}" != "arbitrary" ]; then
|
||||||
fi
|
echo " ${url}"
|
||||||
done
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo
|
echo
|
||||||
"${PODMAN}" run \
|
"${PODMAN}" run \
|
||||||
--env "HUGO_REFLINKSERRORLEVEL=${HUGO_REFLINKSERRORLEVEL}" \
|
--env "HUGO_REFLINKSERRORLEVEL=${HUGO_REFLINKSERRORLEVEL}" \
|
||||||
--init \
|
--init \
|
||||||
--interactive \
|
--interactive \
|
||||||
--name "${DOCS_CONTAINER}" \
|
--name "${DOCS_CONTAINER}" \
|
||||||
--platform linux/amd64 \
|
--platform linux/amd64 \
|
||||||
--publish "${DOCS_HOST_PORT}:3002" \
|
--publish "${DOCS_HOST_PORT}:3002" \
|
||||||
--publish "3003:3003" \
|
--publish "3003:3003" \
|
||||||
--rm \
|
--rm \
|
||||||
--tty \
|
--tty \
|
||||||
${volumes} \
|
${volumes} \
|
||||||
"${DOCS_IMAGE}" \
|
"${DOCS_IMAGE}" \
|
||||||
/entrypoint
|
/entrypoint
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
|
|||||||
@@ -3,6 +3,199 @@ aliases:
|
|||||||
- /docs/grafana/v1.1/
|
- /docs/grafana/v1.1/
|
||||||
- /docs/grafana/v3.1/
|
- /docs/grafana/v3.1/
|
||||||
- guides/reference/admin/
|
- guides/reference/admin/
|
||||||
|
cascade:
|
||||||
|
# Until a better mechanism for arrangement is thought of, the following sequence should be ordered alphabetically by the `_target.path` value.
|
||||||
|
- _target: { path: /docs/grafana/** } # Default to every page having "Enterprise" and "Open source" labels.
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/enterprise-licensing/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/organization-management/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/provisioning/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/recorded-queries/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/roles-and-permissions/access-control/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/administration/stats-and-license/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/alerting/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/breaking-changes/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/dashboards/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/datasources/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/explore/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/fundamentals/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/introduction/grafana-cloud/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/introduction/grafana-enterprise/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/panels-visualizations/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/release-notes/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/search/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/audit-grafana/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/configure-authentication/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/configure-authentication/enhanced-ldap/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/configure-authentication/saml/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target:
|
||||||
|
path: /docs/grafana/*/setup-grafana/configure-security/configure-database-encryption/encrypt-secrets-using-hashicorp-key-vault/**
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/configure-request-security/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/configure-team-sync/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/setup-grafana/configure-security/export-logs/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/troubleshooting/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
|
|
||||||
|
- _target: { path: /docs/grafana/*/whatsnew/** }
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- cloud
|
||||||
|
- enterprise
|
||||||
|
- oss
|
||||||
description: Guides, installation, and feature documentation
|
description: Guides, installation, and feature documentation
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
@@ -70,8 +263,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-v9-5/" >}}" class="nav-cards__item nav-cards__item--guide">
|
<a href="{{< relref "whatsnew/whats-new-in-v10-0/" >}}" class="nav-cards__item nav-cards__item--guide">
|
||||||
<h4>What's new in v9.5</h4>
|
<h4>What's new in v10</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>
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
---
|
---
|
||||||
cascade:
|
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- cloud
|
|
||||||
- enterprise
|
|
||||||
- oss
|
|
||||||
description: Administration
|
description: Administration
|
||||||
title: Administration
|
title: Administration
|
||||||
weight: 40
|
weight: 40
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ An API key is a randomly generated string that external systems use to interact
|
|||||||
|
|
||||||
When you create an API key, you specify a **Role** that determines the permissions associated with the API key. Role permissions control that actions the API key can perform on Grafana resources.
|
When you create an API key, you specify a **Role** that determines the permissions associated with the API key. Role permissions control that actions the API key can perform on Grafana resources.
|
||||||
|
|
||||||
> **Note:** If you use Grafana v9.1 or newer, use service accounts instead of API keys. For more information, refer to [Grafana service accounts]({{< relref "../service-accounts/" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
If you use Grafana v9.1 or newer, use service accounts instead of API keys. For more information, refer to [Grafana service accounts]({{< relref "../service-accounts/" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
{{< section >}}
|
{{< section >}}
|
||||||
|
|
||||||
@@ -61,7 +63,9 @@ For more information about the benefits of service accounts, refer to [Grafana s
|
|||||||
|
|
||||||
The service account endpoints generate a machine user for authentication instead of using API keys. When you migrate an API key to a service account, a service account will be created with a service account token.
|
The service account endpoints generate a machine user for authentication instead of using API keys. When you migrate an API key to a service account, a service account will be created with a service account token.
|
||||||
|
|
||||||
> **Note:** If you are using API keys for authentication, we recommend that you migrate your integration to the service account authentication method. The API key will continue to work. You can locate the API key in the [Grafana service account tokens]({{< relref "../service-accounts/#service-account-tokens" >}}) details.
|
{{% admonition type="note" %}}
|
||||||
|
If you're currently using API keys for authentication, we strongly recommend to use Grafana Service Accounts instead. Rest assured, when migrating to Service Accounts, your existing API keys will continue working as before. To find the migrated API keys, navigate to the Service Accounts section and select the Service Account Tokens tab. For more information, please refer to the [Grafana service account tokens]({{< relref "../service-accounts/#service-account-tokens" >}}) details.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Ways of migrating API keys to service accounts
|
## Ways of migrating API keys to service accounts
|
||||||
|
|
||||||
@@ -256,7 +260,9 @@ resource "grafana_service_account_token" "sat-foo" {
|
|||||||
|
|
||||||
This section shows you how to migrate your Terraform configuration for Grafana cloud stack API keys to Grafana cloud stack service accounts. For migration your cloud stack api keys, use the `grafana_cloud_stack_service_account` and `gafana_cloud_stack_service_account_token` resources see [Grafana Cloud Stack Service Accounts in Terraform](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/cloud_stack_service_account).
|
This section shows you how to migrate your Terraform configuration for Grafana cloud stack API keys to Grafana cloud stack service accounts. For migration your cloud stack api keys, use the `grafana_cloud_stack_service_account` and `gafana_cloud_stack_service_account_token` resources see [Grafana Cloud Stack Service Accounts in Terraform](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/cloud_stack_service_account).
|
||||||
|
|
||||||
> **Note:** This is only relevant for Grafana Cloud **Stack** API keys `grafana_cloud_stack_api_key`. Grafana Cloud API keys resource `grafana_cloud_api_key` are not deprecated and should be used for authentication for managing your Grafana cloud.
|
{{% admonition type="note" %}}
|
||||||
|
This is only relevant for Grafana Cloud **Stack** API keys `grafana_cloud_stack_api_key`. Grafana Cloud API keys resource `grafana_cloud_api_key` are not deprecated and should be used for authentication for managing your Grafana cloud.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
#### Steps
|
#### Steps
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ Only users with the organization admin role can add data sources.
|
|||||||
|
|
||||||
Before you can create your first dashboard, you need to add your data source.
|
Before you can create your first dashboard, you need to add your data source.
|
||||||
|
|
||||||
> **Note:** Only users with the organization admin role can add data sources.
|
{{% admonition type="note" %}}
|
||||||
|
Only users with the organization admin role can add data sources.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
**To add a data source:**
|
**To add a data source:**
|
||||||
|
|
||||||
@@ -36,7 +38,9 @@ Before you can create your first dashboard, you need to add your data source.
|
|||||||
|
|
||||||
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.
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Pro and Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Pro and Advanced](/docs/grafana-cloud).
|
||||||
|
{{% /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.
|
||||||
|
|
||||||
@@ -83,11 +87,15 @@ When query caching is enabled, Grafana temporarily stores the results of data so
|
|||||||
|
|
||||||
Query caching works for all backend data sources. You can enable the cache globally and configure the cache duration (also called Time to Live, or TTL).
|
Query caching works for all backend data sources. You can enable the cache globally and configure the cache duration (also called Time to Live, or TTL).
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Pro and Advanced](/docs/grafana-cloud/).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Pro and Advanced](/docs/grafana-cloud/).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
The following cache backends are available: in-memory, Redis, and Memcached.
|
The following cache backends are available: in-memory, Redis, and Memcached.
|
||||||
|
|
||||||
> **Note:** Storing cached queries in-memory can increase Grafana's memory footprint. In production environments, a Redis or Memcached backend is highly recommended.
|
{{% admonition type="note" %}}
|
||||||
|
Storing cached queries in-memory can increase Grafana's memory footprint. In production environments, a Redis or Memcached backend is highly recommended.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
When a panel queries a cached data source, the time until this query fetches fresh data is determined by the panel's **interval.** This means that wider panels and dashboards with shorter time ranges fetch new data more frequently than narrower panels and dashboards with longer time ranges.
|
When a panel queries a cached data source, the time until this query fetches fresh data is determined by the panel's **interval.** This means that wider panels and dashboards with shorter time ranges fetch new data more frequently than narrower panels and dashboards with longer time ranges.
|
||||||
|
|
||||||
@@ -136,7 +144,9 @@ You can optionally override a data source's configured TTL for individual dashbo
|
|||||||
|
|
||||||
{{< figure max-width="500px" src="/media/docs/grafana/per-panel-cache-ttl-9-4.png" caption="Set Cache TTL for a single panel" >}}
|
{{< figure max-width="500px" src="/media/docs/grafana/per-panel-cache-ttl-9-4.png" caption="Set Cache TTL for a single panel" >}}
|
||||||
|
|
||||||
> **Note:** If query caching is enabled and the Cache tab is not visible in a data source's settings, then query caching is not available for that data source.
|
{{% admonition type="note" %}}
|
||||||
|
If query caching is enabled and the Cache tab is not visible in a data source's settings, then query caching is not available for that data source.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
To configure global settings for query caching, refer to the [Query caching section of Enterprise Configuration]({{< relref "../../setup-grafana/configure-grafana/enterprise-configuration/#caching" >}}).
|
To configure global settings for query caching, refer to the [Query caching section of Enterprise Configuration]({{< relref "../../setup-grafana/configure-grafana/enterprise-configuration/#caching" >}}).
|
||||||
|
|
||||||
@@ -155,7 +165,9 @@ To disable query caching for an entire Grafana instance, set the `enabled` flag
|
|||||||
|
|
||||||
If you experience performance issues or repeated queries become slower to execute, consider clearing your cache.
|
If you experience performance issues or repeated queries become slower to execute, consider clearing your cache.
|
||||||
|
|
||||||
> **Note:** This action impacts all cache-enabled data sources. If you are using Memcached, the system clears all data from the Memcached instance.
|
{{% admonition type="note" %}}
|
||||||
|
This action impacts all cache-enabled data sources. If you are using Memcached, the system clears all data from the Memcached instance.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
1. Click **Connections** in the left-side menu.
|
1. Click **Connections** in the left-side menu.
|
||||||
1. Under Your Connections, click **Data sources**.
|
1. Under Your Connections, click **Data sources**.
|
||||||
|
|||||||
@@ -8,10 +8,6 @@ aliases:
|
|||||||
- ../enterprise/license/license-expiration/
|
- ../enterprise/license/license-expiration/
|
||||||
- ../enterprise/license/license-restrictions/
|
- ../enterprise/license/license-restrictions/
|
||||||
- license-restrictions/
|
- license-restrictions/
|
||||||
cascade:
|
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- enterprise
|
|
||||||
description: Activate and manage a Grafana Enterprise license
|
description: Activate and manage a Grafana Enterprise license
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
|
|||||||
@@ -8,10 +8,6 @@ description: Describes how to use organizations to isolate dashboard to users an
|
|||||||
keywords:
|
keywords:
|
||||||
- organizations
|
- organizations
|
||||||
- dashboards
|
- dashboards
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- enterprise
|
|
||||||
- oss
|
|
||||||
menuTitle: Manage organizations
|
menuTitle: Manage organizations
|
||||||
title: Manage organizations
|
title: Manage organizations
|
||||||
weight: 200
|
weight: 200
|
||||||
@@ -88,7 +84,9 @@ For more information about adding users to an organization, refer to [Add a user
|
|||||||
|
|
||||||
This action permanently removes an organization from your Grafana server.
|
This action permanently removes an organization from your Grafana server.
|
||||||
|
|
||||||
> **Warning:** Deleting the organization also deletes all teams and dashboards associated the organization.
|
{{% admonition type="warning" %}}
|
||||||
|
Deleting the organization also deletes all teams and dashboards associated the organization.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Before you begin
|
### Before you begin
|
||||||
|
|
||||||
|
|||||||
@@ -194,7 +194,9 @@ Users with the Grafana Server Admin flag on their account or access to the confi
|
|||||||
default_home_dashboard_path = data/main-dashboard.json
|
default_home_dashboard_path = data/main-dashboard.json
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Note:** On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the default home dashboard location.
|
{{% admonition type="note" %}}
|
||||||
|
On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the default home dashboard location.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Set the home dashboard for your organization
|
### Set the home dashboard for your organization
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,9 @@ With [RBAC]({{< relref "../roles-and-permissions/access-control/#about-rbac" >}}
|
|||||||
|
|
||||||
By default, Viewers, Editors and Admins have access to all App Plugins that their organization role allows them to access, thanks to the `fixed:plugins.app:reader` role.
|
By default, Viewers, Editors and Admins have access to all App Plugins that their organization role allows them to access, thanks to the `fixed:plugins.app:reader` role.
|
||||||
|
|
||||||
> **Note:** Revoking this RBAC role from some users, will prevent them from accessing app plugins. But granting this RBAC role to users will only allow them to see app plugins their organization role allows them to see.
|
{{% admonition type="note" %}}
|
||||||
|
Revoking this RBAC role from some users, will prevent them from accessing app plugins. But granting this RBAC role to users will only allow them to see app plugins their organization role allows them to see.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
To prevent users from seeing an app plugin, refer to [this permissions scenarios]({{< relref "../roles-and-permissions/access-control/plan-rbac-rollout-strategy#prevent-viewers-from-accessing-an-app-plugin" >}}).
|
To prevent users from seeing an app plugin, refer to [this permissions scenarios]({{< relref "../roles-and-permissions/access-control/plan-rbac-rollout-strategy#prevent-viewers-from-accessing-an-app-plugin" >}}).
|
||||||
|
|
||||||
@@ -197,7 +199,9 @@ If you've allowed loading of an unsigned plugin, then Grafana writes a warning m
|
|||||||
WARN[06-01|16:45:59] Running an unsigned plugin pluginID=<plugin id>
|
WARN[06-01|16:45:59] Running an unsigned plugin pluginID=<plugin id>
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Note:** If you're developing a plugin, then you can enable development mode to allow all unsigned plugins.
|
{{% admonition type="note" %}}
|
||||||
|
If you're developing a plugin, then you can enable development mode to allow all unsigned plugins.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Learn more
|
## Learn more
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ description: Describes provisioning settings for Grafana using configuration fil
|
|||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- provisioning
|
- provisioning
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- enterprise
|
|
||||||
- oss
|
|
||||||
title: Provision Grafana
|
title: Provision Grafana
|
||||||
weight: 600
|
weight: 600
|
||||||
---
|
---
|
||||||
@@ -27,10 +23,12 @@ See [Configuration]({{< relref "../../setup-grafana/configure-grafana/" >}}) for
|
|||||||
- Custom configuration from `$WORKING_DIR/conf/custom.ini`
|
- Custom configuration from `$WORKING_DIR/conf/custom.ini`
|
||||||
- The custom configuration file path can be overridden using the `--config` parameter
|
- The custom configuration file path can be overridden using the `--config` parameter
|
||||||
|
|
||||||
> **Note:** If you have installed Grafana using the `deb` or `rpm`
|
{{% admonition type="note" %}}
|
||||||
> packages, then your configuration file is located at
|
If you have installed Grafana using the `deb` or `rpm`
|
||||||
> `/etc/grafana/grafana.ini`. This path is specified in the Grafana
|
packages, then your configuration file is located at
|
||||||
> init.d script using `--config` file parameter.
|
`/etc/grafana/grafana.ini`. This path is specified in the Grafana
|
||||||
|
init.d script using `--config` file parameter.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Using Environment Variables
|
### Using Environment Variables
|
||||||
|
|
||||||
@@ -61,13 +59,15 @@ Currently we do not provide any scripts/manifests for configuring Grafana. Rathe
|
|||||||
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
| --------- | -------------------------------------------------------------------------------------------------------------- |
|
||||||
| 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/cloudalchemy/ansible-grafana](https://github.com/cloudalchemy/ansible-grafana) |
|
||||||
| Chef | [https://github.com/JonathanTron/chef-grafana](https://github.com/JonathanTron/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/) |
|
||||||
|
|
||||||
## Data sources
|
## Data sources
|
||||||
|
|
||||||
> **Note:** Available in Grafana v5.0 and higher.
|
{{% admonition type="note" %}}
|
||||||
|
Available in Grafana v5.0 and higher.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can manage data sources in Grafana by adding YAML configuration files in the [`provisioning/datasources`]({{< relref "../../setup-grafana/configure-grafana#provisioning" >}}) directory.
|
You can manage data sources in Grafana by adding YAML configuration files in the [`provisioning/datasources`]({{< relref "../../setup-grafana/configure-grafana#provisioning" >}}) directory.
|
||||||
Each config file can contain a list of `datasources` to add or update during startup.
|
Each config file can contain a list of `datasources` to add or update during startup.
|
||||||
@@ -167,7 +167,9 @@ To provision the rest of a data source's settings, include them as a JSON blob i
|
|||||||
|
|
||||||
Common settings in the [built-in core data sources]({{< relref "../../datasources#built-in-core-data-sources" >}}) include:
|
Common settings in the [built-in core data sources]({{< relref "../../datasources#built-in-core-data-sources" >}}) include:
|
||||||
|
|
||||||
> **Note:** Data sources tagged with _HTTP\*_ communicate using the HTTP protocol, which includes all core data source plugins except MySQL, PostgreSQL, and MSSQL.
|
{{% admonition type="note" %}}
|
||||||
|
Data sources tagged with _HTTP\*_ communicate using the HTTP protocol, which includes all core data source plugins except MySQL, PostgreSQL, and MSSQL.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
| Name | Type | Data source | Description |
|
| Name | Type | Data source | Description |
|
||||||
| ----------------------------- | ------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------------------- | ------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
@@ -229,7 +231,9 @@ For examples of specific data sources' JSON data, refer to that [data source's d
|
|||||||
|
|
||||||
Secure JSON data is a map of settings that will be encrypted with [secret key]({{< relref "../../setup-grafana/configure-grafana#secret_key" >}}) from the Grafana config. The purpose of this is only to hide content from the users of the application. This should be used for storing TLS Cert and password that Grafana will append to the request on the server side. All of these settings are optional.
|
Secure JSON data is a map of settings that will be encrypted with [secret key]({{< relref "../../setup-grafana/configure-grafana#secret_key" >}}) from the Grafana config. The purpose of this is only to hide content from the users of the application. This should be used for storing TLS Cert and password that Grafana will append to the request on the server side. All of these settings are optional.
|
||||||
|
|
||||||
> **Note:** The _HTTP\*_ tag denotes data sources that communicate using the HTTP protocol, including all core data source plugins except MySQL, PostgreSQL, and MSSQL.
|
{{% admonition type="note" %}}
|
||||||
|
The _HTTP\*_ tag denotes data sources that communicate using the HTTP protocol, including all core data source plugins except MySQL, PostgreSQL, and MSSQL.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
| Name | Type | Data source | Description |
|
| Name | Type | Data source | Description |
|
||||||
| ----------------- | ------ | ---------------------------------- | -------------------------------------------------------- |
|
| ----------------- | ------ | ---------------------------------- | -------------------------------------------------------- |
|
||||||
@@ -264,12 +268,16 @@ datasources:
|
|||||||
|
|
||||||
## Plugins
|
## Plugins
|
||||||
|
|
||||||
> **Note:** Available in Grafana v7.1 and higher.
|
{{% admonition type="note" %}}
|
||||||
|
Available in Grafana v7.1 and higher.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can manage plugin applications in Grafana by adding one or more YAML config files in the [`provisioning/plugins`]({{< relref "../../setup-grafana/configure-grafana#provisioning" >}}) directory. Each config file can contain a list of `apps` that will be updated during start up. Grafana updates each app to match the configuration file.
|
You can manage plugin applications in Grafana by adding one or more YAML config files in the [`provisioning/plugins`]({{< relref "../../setup-grafana/configure-grafana#provisioning" >}}) directory. Each config file can contain a list of `apps` that will be updated during start up. Grafana updates each app to match the configuration file.
|
||||||
|
|
||||||
> **Note:** This feature enables you to provision plugin configurations, not the plugins themselves.
|
{{% admonition type="note" %}}
|
||||||
> The plugins must already be installed on the Grafana instance.
|
This feature enables you to provision plugin configurations, not the plugins themselves.
|
||||||
|
The plugins must already be installed on the Grafana instance.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Example plugin configuration file
|
### Example plugin configuration file
|
||||||
|
|
||||||
@@ -356,10 +364,12 @@ If the dashboard in the JSON file contains an [UID]({{< relref "../../dashboards
|
|||||||
When Grafana starts, it updates/inserts all dashboards available in the configured folders. If you modify the file, then the dashboard is also updated.
|
When Grafana starts, it updates/inserts all dashboards available in the configured folders. If you modify the file, then the dashboard is also updated.
|
||||||
By default, Grafana deletes dashboards in the database if the file is removed. You can disable this behavior using the `disableDeletion` setting.
|
By default, Grafana deletes dashboards in the database if the file is removed. You can disable this behavior using the `disableDeletion` setting.
|
||||||
|
|
||||||
> **Note:** Provisioning allows you to overwrite existing dashboards
|
{{% admonition type="note" %}}
|
||||||
> which leads to problems if you re-use settings that are supposed to be unique.
|
Provisioning allows you to overwrite existing dashboards
|
||||||
> Be careful not to re-use the same `title` multiple times within a folder
|
which leads to problems if you re-use settings that are supposed to be unique.
|
||||||
> or `uid` within the same installation as this will cause weird behaviors.
|
Be careful not to re-use the same `title` multiple times within a folder
|
||||||
|
or `uid` within the same installation as this will cause weird behaviors.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Provision folders structure from filesystem to Grafana
|
### Provision folders structure from filesystem to Grafana
|
||||||
|
|
||||||
@@ -393,9 +403,13 @@ providers:
|
|||||||
|
|
||||||
`server` and `application` will become new folders in Grafana menu.
|
`server` and `application` will become new folders in Grafana menu.
|
||||||
|
|
||||||
> **Note:** `folder` and `folderUid` options should be empty or missing to make `foldersFromFilesStructure` work.
|
{{% admonition type="note" %}}
|
||||||
|
`folder` and `folderUid` options should be empty or missing to make `foldersFromFilesStructure` work.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
> **Note:** To provision dashboards to the General folder, store them in the root of your `path`.
|
{{% admonition type="note" %}}
|
||||||
|
To provision dashboards to the General folder, store them in the root of your `path`.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Alerting
|
## Alerting
|
||||||
|
|
||||||
@@ -403,7 +417,9 @@ For information on provisioning Grafana Alerting, refer to [Provision Grafana Al
|
|||||||
|
|
||||||
## Alert Notification Channels
|
## Alert Notification Channels
|
||||||
|
|
||||||
> **Note:** Alert Notification Channels are part of legacy alerting, which is deprecated and will be removed in Grafana 10. Use the Provision contact points section in [Create and manage alerting resources using file provisioning]({{< relref "../../alerting/set-up/provision-alerting-resources/file-provisioning" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
Alert Notification Channels are part of legacy alerting, which is deprecated and will be removed in Grafana 10. Use the Provision contact points section in [Create and manage alerting resources using file provisioning]({{< relref "../../alerting/set-up/provision-alerting-resources/file-provisioning" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
Alert Notification Channels can be provisioned by adding one or more YAML config files in the [`provisioning/notifiers`](/administration/configuration/#provisioning) directory.
|
Alert Notification Channels can be provisioned by adding one or more YAML config files in the [`provisioning/notifiers`](/administration/configuration/#provisioning) directory.
|
||||||
|
|
||||||
@@ -475,7 +491,9 @@ delete_notifiers:
|
|||||||
|
|
||||||
The following sections detail the supported settings and secure settings for each alert notification type. Secure settings are stored encrypted in the database and you add them to `secure_settings` in the YAML file instead of `settings`.
|
The following sections detail the supported settings and secure settings for each alert notification type. Secure settings are stored encrypted in the database and you add them to `secure_settings` in the YAML file instead of `settings`.
|
||||||
|
|
||||||
> **Note:** Secure settings is supported since Grafana v7.2.
|
{{% admonition type="note" %}}
|
||||||
|
Secure settings is supported since Grafana v7.2.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
#### Alert notification `pushover`
|
#### Alert notification `pushover`
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,6 @@ keywords:
|
|||||||
- query
|
- query
|
||||||
- queries
|
- queries
|
||||||
- recorded
|
- recorded
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- cloud
|
|
||||||
- enterprise
|
|
||||||
title: Recorded queries
|
title: Recorded queries
|
||||||
weight: 300
|
weight: 300
|
||||||
---
|
---
|
||||||
@@ -21,11 +17,15 @@ Recorded queries allow you to see trends over time by taking a snapshot of a dat
|
|||||||
|
|
||||||
For our plugins that do not return time series, it might be useful to plot historical data. For example, you might want to query ServiceNow to see a history of request response times but it can only return current point-in-time metrics.
|
For our plugins that do not return time series, it might be useful to plot historical data. For example, you might want to query ServiceNow to see a history of request response times but it can only return current point-in-time metrics.
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## How recorded queries work
|
## How recorded queries work
|
||||||
|
|
||||||
> **Note:** An administrator must configure a Prometheus data source and associate it with a [Remote write target](#remote-write-target) before recorded queries can be used.
|
{{% admonition type="note" %}}
|
||||||
|
An administrator must configure a Prometheus data source and associate it with a [Remote write target](#remote-write-target) before recorded queries can be used.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
Recorded queries only work with backend data source plugins. Refer to [Backend data source plugin](/tutorials/build-a-data-source-backend-plugin/) for more information about backend data source plugins. You can recorded three types of queries:
|
Recorded queries only work with backend data source plugins. Refer to [Backend data source plugin](/tutorials/build-a-data-source-backend-plugin/) for more information about backend data source plugins. You can recorded three types of queries:
|
||||||
|
|
||||||
|
|||||||
@@ -20,13 +20,17 @@ You can assign a user one of three types of permissions:
|
|||||||
- Organization permissions: Manage access to dashboards, alerts, plugins, teams, playlists, and other resources for an entire organization. The available roles are Viewer, Editor, and Admin.
|
- Organization permissions: Manage access to dashboards, alerts, plugins, teams, playlists, and other resources for an entire organization. The available roles are Viewer, Editor, and Admin.
|
||||||
- Dashboard and folder permission: Manage access to dashboards and folders
|
- Dashboard and folder permission: Manage access to dashboards and folders
|
||||||
|
|
||||||
> **Note**: If you are running Grafana Enterprise, you can also control access to data sources and use role-based access control to grant user access to read and write permissions to specific Grafana resources. For more information about access control options available with Grafana Enterprise, refer to [Grafana Enterprise user permissions features](#grafana-enterprise-user-permissions-features).
|
{{% admonition type="note" %}}
|
||||||
|
If you are running Grafana Enterprise, you can also control access to data sources and use role-based access control to grant user access to read and write permissions to specific Grafana resources. For more information about access control options available with Grafana Enterprise, refer to [Grafana Enterprise user permissions features](#grafana-enterprise-user-permissions-features).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Grafana server administrators
|
## Grafana server administrators
|
||||||
|
|
||||||
A Grafana server administrator manages server-wide settings and access to resources such as organizations, users, and licenses. Grafana includes a default server administrator that you can use to manage all of Grafana, or you can divide that responsibility among other server administrators that you create.
|
A Grafana server administrator manages server-wide settings and access to resources such as organizations, users, and licenses. Grafana includes a default server administrator that you can use to manage all of Grafana, or you can divide that responsibility among other server administrators that you create.
|
||||||
|
|
||||||
> **Note:** The server administrator role does not mean that the user is also a Grafana [organization administrator]({{< relref "#organization-roles" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
The server administrator role does not mean that the user is also a Grafana [organization administrator]({{< relref "#organization-roles" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
A server administrator can perform the following tasks:
|
A server administrator can perform the following tasks:
|
||||||
|
|
||||||
@@ -36,7 +40,9 @@ A server administrator can perform the following tasks:
|
|||||||
- View Grafana server statistics, including total users and active sessions
|
- View Grafana server statistics, including total users and active sessions
|
||||||
- Upgrade the server to Grafana Enterprise.
|
- Upgrade the server to Grafana Enterprise.
|
||||||
|
|
||||||
> **Note:** The server administrator role does not exist in Grafana Cloud.
|
{{% admonition type="note" %}}
|
||||||
|
The server administrator role does not exist in Grafana Cloud.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
To assign or remove server administrator privileges, see [Server user management]({{< relref "../user-management/server-user-management/assign-remove-server-admin-privileges/" >}}).
|
To assign or remove server administrator privileges, see [Server user management]({{< relref "../user-management/server-user-management/assign-remove-server-admin-privileges/" >}}).
|
||||||
|
|
||||||
@@ -112,7 +118,9 @@ For more information about assigning dashboard permissions, refer to [Grant dash
|
|||||||
|
|
||||||
If you have access to the Grafana server, you can modify the default editor role so that editors can use administrator permissions to manage dashboard folders, dashboards, and teams that they create.
|
If you have access to the Grafana server, you can modify the default editor role so that editors can use administrator permissions to manage dashboard folders, dashboards, and teams that they create.
|
||||||
|
|
||||||
> **Note**: This permission does not allow editors to manage folders, dashboards, and teams that they do not create.
|
{{% admonition type="note" %}}
|
||||||
|
This permission does not allow editors to manage folders, dashboards, and teams that they do not create.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
This setting can be used to enable self-organizing teams to administer their own dashboards.
|
This setting can be used to enable self-organizing teams to administer their own dashboards.
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,6 @@ aliases:
|
|||||||
- ../../enterprise/access-control/
|
- ../../enterprise/access-control/
|
||||||
- ../../enterprise/access-control/about-rbac/
|
- ../../enterprise/access-control/about-rbac/
|
||||||
- ../../enterprise/access-control/roles/
|
- ../../enterprise/access-control/roles/
|
||||||
cascade:
|
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- cloud
|
|
||||||
- enterprise
|
|
||||||
description: Role-based access control (RBAC) provides a standardized way of granting,
|
description: Role-based access control (RBAC) provides a standardized way of granting,
|
||||||
changing, and revoking access so that users can view and modify Grafana resources,
|
changing, and revoking access so that users can view and modify Grafana resources,
|
||||||
such as users and reports.
|
such as users and reports.
|
||||||
@@ -18,7 +13,9 @@ weight: 120
|
|||||||
|
|
||||||
# Role-based access control (RBAC)
|
# Role-based access control (RBAC)
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
RBAC provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as dashboards, reports, and administrative settings.
|
RBAC provides a standardized way of granting, changing, and revoking access when it comes to viewing and modifying Grafana resources, such as dashboards, reports, and administrative settings.
|
||||||
|
|
||||||
@@ -62,7 +59,9 @@ Each basic role is comprised of a number of _permissions_. For example, the view
|
|||||||
- `Action: annotations:write, Scope: annotations:type:dashboard`: Enables the viewer to modify annotations of a dashboard.
|
- `Action: annotations:write, Scope: annotations:type:dashboard`: Enables the viewer to modify annotations of a dashboard.
|
||||||
- `Action: annotations:delete, Scope: annotations:type:dashboard`: Enables the viewer to remove annotations from a dashboard.
|
- `Action: annotations:delete, Scope: annotations:type:dashboard`: Enables the viewer to remove annotations from a dashboard.
|
||||||
|
|
||||||
> **Note:** You can't have a Grafana user without a basic role assigned.
|
{{% admonition type="note" %}}
|
||||||
|
You can't have a Grafana user without a basic role assigned.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
#### Basic role modification
|
#### Basic role modification
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ weight: 40
|
|||||||
|
|
||||||
# Assign RBAC roles
|
# Assign RBAC roles
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
In this topic you'll learn how to use the role picker, provisioning, and the HTTP API to assign fixed and custom roles to users and teams.
|
In this topic you'll learn how to use the role picker, provisioning, and the HTTP API to assign fixed and custom roles to users and teams.
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,9 @@ weight: 30
|
|||||||
|
|
||||||
# Configure RBAC in Grafana
|
# Configure RBAC in Grafana
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
The table below describes all RBAC configuration options. Like any other Grafana configuration, you can apply these options as [environment variables]({{< relref "../../../../setup-grafana/configure-grafana/#configure-with-environment-variables" >}}).
|
The table below describes all RBAC configuration options. Like any other Grafana configuration, you can apply these options as [environment variables]({{< relref "../../../../setup-grafana/configure-grafana/#configure-with-environment-variables" >}}).
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ weight: 80
|
|||||||
|
|
||||||
# RBAC permissions, actions, and scopes
|
# RBAC permissions, actions, and scopes
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
A permission is comprised of an action and a scope. When creating a custom role, consider the actions the user can perform and the resource(s) on which they can perform those actions.
|
A permission is comprised of an action and a scope. When creating a custom role, consider the actions the user can perform and the resource(s) on which they can perform those actions.
|
||||||
|
|
||||||
@@ -120,8 +122,8 @@ The following list contains role-based access control actions.
|
|||||||
| `settings:read` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Read the [Grafana configuration settings]({{< relref "../../../../setup-grafana/configure-grafana/" >}}) |
|
| `settings:read` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Read the [Grafana configuration settings]({{< relref "../../../../setup-grafana/configure-grafana/" >}}) |
|
||||||
| `settings:write` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Update any Grafana configuration settings that can be [updated at runtime]({{< relref "../../../../setup-grafana/configure-grafana/settings-updates-at-runtime" >}}). |
|
| `settings:write` | `settings:*`<br>`settings:auth.saml:*`<br>`settings:auth.saml:enabled` (property level) | Update any Grafana configuration settings that can be [updated at runtime]({{< relref "../../../../setup-grafana/configure-grafana/settings-updates-at-runtime" >}}). |
|
||||||
| `status:accesscontrol` | `services:accesscontrol` | Get access-control enabled status. |
|
| `status:accesscontrol` | `services:accesscontrol` | Get access-control enabled status. |
|
||||||
| `teams.permissions:read` | `teams:*`<br>`teams:id:*` | Read members and External Group Synchronization setup for teams. |
|
| `teams.permissions:read` | `teams:*`<br>`teams:id:*` | Read members and Team Sync setup for teams. |
|
||||||
| `teams.permissions:write` | `teams:*`<br>`teams:id:*` | Add, remove and update members and manage External Group Synchronization setup for teams. |
|
| `teams.permissions:write` | `teams:*`<br>`teams:id:*` | Add, remove and update members and manage Team Sync setup for teams. |
|
||||||
| `teams.roles:add` | `permissions:type:delegate` | Assign a role to a team. |
|
| `teams.roles:add` | `permissions:type:delegate` | Assign a role to a team. |
|
||||||
| `teams.roles:read` | `teams:*` | List roles assigned directly to a team. |
|
| `teams.roles:read` | `teams:*` | List roles assigned directly to a team. |
|
||||||
| `teams.roles:remove` | `permissions:type:delegate` | Unassign a role from a team. |
|
| `teams.roles:remove` | `permissions:type:delegate` | Unassign a role from a team. |
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ weight: 50
|
|||||||
|
|
||||||
# Manage RBAC roles
|
# Manage RBAC roles
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
This section includes instructions for how to view permissions associated with roles, create custom roles, and update and delete roles.
|
This section includes instructions for how to view permissions associated with roles, create custom roles, and update and delete roles.
|
||||||
|
|
||||||
@@ -192,7 +194,9 @@ roles:
|
|||||||
|
|
||||||
The following examples show you how to create a custom role using the Grafana HTTP API. For more information about the HTTP API, refer to [Create a new custom role]({{< relref "../../../../developers/http_api/access_control/#create-a-new-custom-role" >}}).
|
The following examples show you how to create a custom role using the Grafana HTTP API. For more information about the HTTP API, refer to [Create a new custom role]({{< relref "../../../../developers/http_api/access_control/#create-a-new-custom-role" >}}).
|
||||||
|
|
||||||
> **Note:** You cannot create a custom role with permissions that you do not have. For example, if you only have `users:create` permissions, then you cannot create a role that includes other permissions.
|
{{% admonition type="note" %}}
|
||||||
|
You cannot create a custom role with permissions that you do not have. For example, if you only have `users:create` permissions, then you cannot create a role that includes other permissions.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
The following example creates a `custom:users:admin` role and assigns the `users:create` action to it.
|
The following example creates a `custom:users:admin` role and assigns the `users:create` action to it.
|
||||||
|
|
||||||
@@ -301,8 +305,10 @@ roles:
|
|||||||
scope: 'folder:*'
|
scope: 'folder:*'
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Note**: You can add multiple `fixed`, `basic` or `custom` roles to the `from` section. Their permissions will be copied and added to the basic role.
|
{{% admonition type="note" %}}
|
||||||
> <br/> **Note**: Make sure to **increment** the role version for the changes to be accounted for.
|
You can add multiple `fixed`, `basic` or `custom` roles to the `from` section. Their permissions will be copied and added to the basic role.
|
||||||
|
Make sure to **increment** the role version for the changes to be accounted for.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can also change basic roles' permissions using the API. Refer to the [RBAC HTTP API]({{< relref "../../../../developers/http_api/access_control/#update-a-role" >}}) for more details.
|
You can also change basic roles' permissions using the API. Refer to the [RBAC HTTP API]({{< relref "../../../../developers/http_api/access_control/#update-a-role" >}}) for more details.
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ weight: 20
|
|||||||
|
|
||||||
# Plan your RBAC rollout strategy
|
# Plan your RBAC rollout strategy
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
An RBAC rollout strategy helps you determine _how_ you want to implement RBAC prior to assigning RBAC roles to users and teams.
|
An RBAC rollout strategy helps you determine _how_ you want to implement RBAC prior to assigning RBAC roles to users and teams.
|
||||||
|
|
||||||
@@ -60,7 +62,9 @@ Consider the following guidelines when you determine if you should modify basic
|
|||||||
|
|
||||||
- **Modify basic roles** when Grafana's definitions of what viewers, editors, and admins can do does not match your definition of these roles. You can add or remove permissions from any basic role.
|
- **Modify basic roles** when Grafana's definitions of what viewers, editors, and admins can do does not match your definition of these roles. You can add or remove permissions from any basic role.
|
||||||
|
|
||||||
> **Note:** Changes that you make to basic roles impact the role definition for all [organizations]({{< relref "../../../organization-management/" >}}) in the Grafana instance. For example, when you add the `fixed:users:writer` role's permissions to the viewer basic role, all viewers in any org in the Grafana instance can create users within that org.
|
{{% admonition type="note" %}}
|
||||||
|
Changes that you make to basic roles impact the role definition for all [organizations]({{< relref "../../../organization-management/" >}}) in the Grafana instance. For example, when you add the `fixed:users:writer` role's permissions to the viewer basic role, all viewers in any org in the Grafana instance can create users within that org.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
- **Create custom roles** when fixed role definitions don't meet you permissions requirements. For example, the `fixed:dashboards:writer` role allows users to delete dashboards. If you want some users or teams to be able to create and update but not delete dashboards, you can create a custom role with a name like `custom:dashboards:creator` that lacks the `dashboards:delete` permission.
|
- **Create custom roles** when fixed role definitions don't meet you permissions requirements. For example, the `fixed:dashboards:writer` role allows users to delete dashboards. If you want some users or teams to be able to create and update but not delete dashboards, you can create a custom role with a name like `custom:dashboards:creator` that lacks the `dashboards:delete` permission.
|
||||||
|
|
||||||
@@ -77,7 +81,9 @@ Use any of the following methods to assign RBAC roles to users and teams.
|
|||||||
|
|
||||||
We've compiled the following permissions rollout scenarios based on current Grafana implementations.
|
We've compiled the following permissions rollout scenarios based on current Grafana implementations.
|
||||||
|
|
||||||
> **Note:** If you have a use case that you'd like to share, feel free to contribute to this docs page. We'd love to hear from you!
|
{{% admonition type="note" %}}
|
||||||
|
If you have a use case that you'd like to share, feel free to contribute to this docs page. We'd love to hear from you!
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Provide internal viewer employees with the ability to use Explore, but prevent external viewer contractors from using Explore
|
### Provide internal viewer employees with the ability to use Explore, but prevent external viewer contractors from using Explore
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ weight: 70
|
|||||||
|
|
||||||
# RBAC role definitions
|
# RBAC role definitions
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
The following tables list permissions associated with basic and fixed roles.
|
The following tables list permissions associated with basic and fixed roles.
|
||||||
|
|
||||||
@@ -108,10 +110,14 @@ For more information about the permissions required to access alert rules, refer
|
|||||||
|
|
||||||
### Grafana OnCall roles (beta)
|
### Grafana OnCall roles (beta)
|
||||||
|
|
||||||
> **Note:** Available from Grafana 9.4 in early access.
|
{{% admonition type="note" %}}
|
||||||
|
Available from Grafana 9.4 in early access.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
> **Note:** This feature is behind the `accessControlOnCall` feature toggle.
|
{{% admonition type="note" %}}
|
||||||
> You can enable feature toggles through configuration file or environment variables. See configuration [docs]({{< relref "../../../../setup-grafana/configure-grafana/#feature_toggles" >}}) for details.
|
This feature is behind the `accessControlOnCall` feature toggle.
|
||||||
|
You can enable feature toggles through configuration file or environment variables. See configuration [docs]({{< relref "../../../../setup-grafana/configure-grafana/#feature_toggles" >}}) for details.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
If you are using [Grafana OnCall](https://grafana.com/docs/oncall/latest/get-started/), you can try out the integration between Grafana OnCall and RBAC.
|
If you are using [Grafana OnCall](https://grafana.com/docs/oncall/latest/get-started/), you can try out the integration between Grafana OnCall and RBAC.
|
||||||
This will allow you to control access to different OnCall features using the following RBAC roles:
|
This will allow you to control access to different OnCall features using the following RBAC roles:
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ weight: 60
|
|||||||
|
|
||||||
# Provisioning RBAC with Grafana
|
# Provisioning RBAC with Grafana
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can create, change or remove [Custom roles]({{< relref "./manage-rbac-roles/#create-custom-roles-using-provisioning" >}}) and create or remove [basic role assignments]({{< relref "./assign-rbac-roles/#assign-a-fixed-role-to-a-basic-role-using-provisioning" >}}), by adding one or more YAML configuration files in the `provisioning/access-control/` directory.
|
You can create, change or remove [Custom roles]({{< relref "./manage-rbac-roles/#create-custom-roles-using-provisioning" >}}) and create or remove [basic role assignments]({{< relref "./assign-rbac-roles/#assign-a-fixed-role-to-a-basic-role-using-provisioning" >}}), by adding one or more YAML configuration files in the `provisioning/access-control/` directory.
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ weight: 60
|
|||||||
|
|
||||||
# Provisioning RBAC with Terraform
|
# Provisioning RBAC with Terraform
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../../../introduction/grafana-enterprise/" >}}) and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can create, change or remove [Custom roles](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role) and create or remove [basic and custom role assignments](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role_assignment), by using [Terraform's Grafana provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
|
You can create, change or remove [Custom roles](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role) and create or remove [basic and custom role assignments](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/role_assignment), by using [Terraform's Grafana provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,9 @@ filters = accesscontrol:debug accesscontrol.evaluator:debug dashboard.permission
|
|||||||
|
|
||||||
## Enable audit logging
|
## Enable audit logging
|
||||||
|
|
||||||
> **Note:** Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) version 7.3 and later, and [Grafana Cloud Advanced](/docs/grafana-cloud).
|
{{% admonition type="note" %}}
|
||||||
|
Available in [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}) version 7.3 and later, and [Grafana Cloud](/docs/grafana-cloud).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
You can enable auditing in the Grafana configuration file.
|
You can enable auditing in the Grafana configuration file.
|
||||||
|
|
||||||
@@ -45,8 +47,10 @@ Learn more about [access control audit logs]({{< relref "../../../../setup-grafa
|
|||||||
This happens when an instance is downgraded from a version that uses RBAC to a version that uses the legacy access control, and dashboard, folder or data source permissions are updated.
|
This happens when an instance is downgraded from a version that uses RBAC to a version that uses the legacy access control, and dashboard, folder or data source permissions are updated.
|
||||||
These permission updates will not be applied to RBAC, so permissions will be out of sync when the instance is next upgraded to a version with RBAC.
|
These permission updates will not be applied to RBAC, so permissions will be out of sync when the instance is next upgraded to a version with RBAC.
|
||||||
|
|
||||||
> **Note:** the steps provided below will set all dashboard, folder and data source permissions to what they are set to with the legacy access control.
|
{{% admonition type="note" %}}
|
||||||
> If you have made dashboard, folder or data source permission updates with RBAC enabled, these updates will be wiped.
|
the steps provided below will set all dashboard, folder and data source permissions to what they are set to with the legacy access control.
|
||||||
|
If you have made dashboard, folder or data source permission updates with RBAC enabled, these updates will be wiped.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
To resynchronize the permissions:
|
To resynchronize the permissions:
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ weight: 800
|
|||||||
|
|
||||||
You can use a service account to run automated workloads in Grafana, such as dashboard provisioning, configuration, or report generation. Create service accounts and tokens to authenticate applications, such as Terraform, with the Grafana API.
|
You can use a service account to run automated workloads in Grafana, such as dashboard provisioning, configuration, or report generation. Create service accounts and tokens to authenticate applications, such as Terraform, with the Grafana API.
|
||||||
|
|
||||||
> **Note:** Service accounts will eventually replace [API keys]({{< relref "../api-keys/" >}}) as the primary way to authenticate applications that interact with Grafana.
|
{{% admonition type="note" %}}
|
||||||
|
Service accounts will eventually replace [API keys]({{< relref "../api-keys/" >}}) as the primary way to authenticate applications that interact with Grafana.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
A common use case for creating a service account is to perform operations on automated or triggered tasks. You can use service accounts to:
|
A common use case for creating a service account is to perform operations on automated or triggered tasks. You can use service accounts to:
|
||||||
|
|
||||||
@@ -28,7 +30,9 @@ A common use case for creating a service account is to perform operations on aut
|
|||||||
|
|
||||||
In [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}), you can also use service accounts in combination with [role-based access control]({{< relref "../roles-and-permissions/access-control/" >}}) to grant very specific permissions to applications that interact with Grafana.
|
In [Grafana Enterprise]({{< relref "../../introduction/grafana-enterprise/" >}}), you can also use service accounts in combination with [role-based access control]({{< relref "../roles-and-permissions/access-control/" >}}) to grant very specific permissions to applications that interact with Grafana.
|
||||||
|
|
||||||
> **Note:** Service accounts can only act in the organization they are created for. If you have the same task that is needed for multiple organizations, we recommend creating service accounts in each organization.
|
{{% admonition type="note" %}}
|
||||||
|
Service accounts can only act in the organization they are created for. If you have the same task that is needed for multiple organizations, we recommend creating service accounts in each organization.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
{{< vimeo 742056367 >}}
|
{{< vimeo 742056367 >}}
|
||||||
|
|
||||||
@@ -174,8 +178,10 @@ To list your token's permissions, use the `/api/access-control/user/permissions`
|
|||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
|
||||||
> **Note:** The following command output is shortened to show only the relevant content.
|
{{% admonition type="note" %}}
|
||||||
> Authorize your request with the token whose permissions you want to check.
|
The following command output is shortened to show only the relevant content.
|
||||||
|
Authorize your request with the token whose permissions you want to check.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -H "Authorization: Bearer glsa_HOruNAb7SOiCdshU9algkrq7FDsNSLAa_54e2f8be" -X GET '<grafana_url>/api/access-control/user/permissions' | jq
|
curl -H "Authorization: Bearer glsa_HOruNAb7SOiCdshU9algkrq7FDsNSLAa_54e2f8be" -X GET '<grafana_url>/api/access-control/user/permissions' | jq
|
||||||
|
|||||||
@@ -11,11 +11,7 @@ keywords:
|
|||||||
- configuration
|
- configuration
|
||||||
- server
|
- server
|
||||||
- settings
|
- settings
|
||||||
labels:
|
title: View server statistics and license
|
||||||
products:
|
|
||||||
- enterprise
|
|
||||||
- oss
|
|
||||||
title: Stats and license
|
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -25,11 +21,11 @@ This setting contains information about tools that Grafana Server Admins can use
|
|||||||
|
|
||||||
## View Grafana server settings
|
## View Grafana server settings
|
||||||
|
|
||||||
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control/" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
||||||
|
|
||||||
If you are a Grafana server administrator, use the Settings tab to view the settings that are applied to your Grafana server via the [Configuration]({{< relref "../../setup-grafana/configure-grafana/#config-file-locations" >}}) file and any environmental variables.
|
If you are a Grafana server administrator, use the Settings tab to view the settings that are applied to your Grafana server via the [Configuration]({{< relref "../../setup-grafana/configure-grafana#configuration-file-location" >}}) file and any environmental variables.
|
||||||
|
|
||||||
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#grafana-server-administrators" >}}).
|
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions#grafana-server-administrators" >}}).
|
||||||
|
|
||||||
### View server settings
|
### View server settings
|
||||||
|
|
||||||
@@ -38,15 +34,15 @@ If you are a Grafana server administrator, use the Settings tab to view the sett
|
|||||||
|
|
||||||
### Available settings
|
### Available settings
|
||||||
|
|
||||||
For a full list of server settings, refer to [Configuration]({{< relref "../../setup-grafana/configure-grafana/" >}}).
|
For a full list of server settings, refer to [Configuration]({{< relref "../../setup-grafana/configure-grafana#server" >}}).
|
||||||
|
|
||||||
## View Grafana server stats
|
## View Grafana server stats
|
||||||
|
|
||||||
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control/" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
> Refer to [Role-based access control]({{< relref "../roles-and-permissions/access-control" >}}) in Grafana Enterprise to understand how you can control access with RBAC permissions.
|
||||||
|
|
||||||
If you are a Grafana server admin, then you can view useful statistics about your Grafana server in the Stats & Licensing tab.
|
If you are a Grafana server admin, then you can view useful statistics about your Grafana server in the Stats & Licensing tab.
|
||||||
|
|
||||||
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions/#grafana-server-administrators" >}}).
|
> **Note:** Only Grafana server administrators can access the **Server Admin** menu. For more information about about administrative permissions, refer to [Roles and permissions]({{< relref "../roles-and-permissions#grafana-server-administrators" >}}).
|
||||||
|
|
||||||
### View server stats
|
### View server stats
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,9 @@ When you grant folder permissions, that setting applies to all dashboards and su
|
|||||||
|
|
||||||
For example, if a user with the viewer organization role requires editor (or admin) access to a dashboard, you can assign those elevated permissions on an individual basis.
|
For example, if a user with the viewer organization role requires editor (or admin) access to a dashboard, you can assign those elevated permissions on an individual basis.
|
||||||
|
|
||||||
> **Note**: If you have assigned a user dashboard folder permissions, you cannot also assign the user permission to dashboards contained in the folder.
|
{{% admonition type="note" %}}
|
||||||
|
If you have assigned a user dashboard folder permissions, you cannot also assign the user permission to dashboards contained in the folder.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
Grant dashboard permissions when you want to restrict or enhance dashboard access for users who do not have permissions defined in the associated folder.
|
Grant dashboard permissions when you want to restrict or enhance dashboard access for users who do not have permissions defined in the associated folder.
|
||||||
|
|
||||||
@@ -63,7 +65,9 @@ By default, the viewer organization role does not allow viewers to create dashbo
|
|||||||
|
|
||||||
This modification is useful for public Grafana installations where you want anonymous users to be able to edit panels and queries but not save or create new dashboards.
|
This modification is useful for public Grafana installations where you want anonymous users to be able to edit panels and queries but not save or create new dashboards.
|
||||||
|
|
||||||
> **Note**: If you use Grafana Enterprise and customize users' permissions using RBAC, the RBAC permissions override the functionality enabled by the `viewers_can_edit` flag.
|
{{% admonition type="note" %}}
|
||||||
|
If you use Grafana Enterprise and customize users' permissions using RBAC, the RBAC permissions override the functionality enabled by the `viewers_can_edit` flag.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Before you begin
|
### Before you begin
|
||||||
|
|
||||||
|
|||||||
@@ -32,13 +32,17 @@ You can see a list of users with accounts in your Grafana organization. If neces
|
|||||||
1. Sign in to Grafana as an organization administrator.
|
1. Sign in to Grafana as an organization administrator.
|
||||||
1. Navigate to **Administration > Users**.
|
1. Navigate to **Administration > Users**.
|
||||||
|
|
||||||
> **Note:** If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [view a global list of users]({{< relref "../server-user-management#view-a-list-of-users" >}}) in the Server Admin section of Grafana.
|
{{% admonition type="note" %}}
|
||||||
|
If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [view a global list of users]({{< relref "../server-user-management#view-a-list-of-users" >}}) in the Server Admin section of Grafana.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Change a user's organization permissions
|
## Change a user's organization permissions
|
||||||
|
|
||||||
Update user permissions when you want to enhance or restrict a user's access to organization resources. For more information about organization permissions, refer to [Organization roles]({{< relref "../../roles-and-permissions/#organization-roles" >}}).
|
Update user permissions when you want to enhance or restrict a user's access to organization resources. For more information about organization permissions, refer to [Organization roles]({{< relref "../../roles-and-permissions/#organization-roles" >}}).
|
||||||
|
|
||||||
> **Note:** Organization roles sync from the authentication provider on user sign-in. To prevent synchronization of organization roles from the authentication provider regardless of their role in the authentication provider, then refer to the `skip_org_role_sync` setting in your Grafana configuration. Refer to [skip org role sync]({{< relref "../../../setup-grafana/configure-grafana/#authgrafana_com-skip_org_role_sync" >}}) for more information.
|
{{% admonition type="note" %}}
|
||||||
|
Organization roles sync from the authentication provider on user sign-in. To prevent synchronization of organization roles from the authentication provider regardless of their role in the authentication provider, then refer to the `skip_org_role_sync` setting in your Grafana configuration. Refer to [skip org role sync]({{< relref "../../../setup-grafana/configure-grafana/#authgrafana_com-skip_org_role_sync" >}}) for more information.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Before you begin
|
### Before you begin
|
||||||
|
|
||||||
@@ -56,7 +60,9 @@ Update user permissions when you want to enhance or restrict a user's access to
|
|||||||
1. Select the role that you want to assign.
|
1. Select the role that you want to assign.
|
||||||
1. Click **Update**.
|
1. Click **Update**.
|
||||||
|
|
||||||
> **Note:** If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [change a user's organization permissions]({{< relref "../server-user-management/change-user-org-permissions/" >}}) in the Server Admin section.
|
{{% admonition type="note" %}}
|
||||||
|
If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [change a user's organization permissions]({{< relref "../server-user-management/change-user-org-permissions/" >}}) in the Server Admin section.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Invite a user to join an organization
|
## Invite a user to join an organization
|
||||||
|
|
||||||
@@ -65,7 +71,9 @@ When you invite users to join an organization, you assign the **Admin**, **Edito
|
|||||||
- If you know that the user already has access Grafana and you know their user name, then you issue an invitation by entering their user name.
|
- If you know that the user already has access Grafana and you know their user name, then you issue an invitation by entering their user name.
|
||||||
- If the user is new to Grafana, then use their email address to issue an invitation. The system automatically creates the user account on first sign in.
|
- If the user is new to Grafana, then use their email address to issue an invitation. The system automatically creates the user account on first sign in.
|
||||||
|
|
||||||
> **Note:** If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also manually [add a user to an organization]({{< relref "../server-user-management/add-remove-user-to-org/" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
If you have [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can also manually [add a user to an organization]({{< relref "../server-user-management/add-remove-user-to-org/" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Before you begin
|
### Before you begin
|
||||||
|
|
||||||
@@ -81,6 +89,7 @@ When you invite users to join an organization, you assign the **Admin**, **Edito
|
|||||||
> **Note**: It might be that you are currently in the proper organization and don't need to switch organizations.
|
> **Note**: It might be that you are currently in the proper organization and don't need to switch organizations.
|
||||||
|
|
||||||
1. Navigate to **Administration > Users**.
|
1. Navigate to **Administration > Users**.
|
||||||
|
1. Click **Organization users**.
|
||||||
1. Click **Invite**.
|
1. Click **Invite**.
|
||||||
1. Enter the following information:
|
1. Enter the following information:
|
||||||
|
|
||||||
@@ -99,7 +108,9 @@ If the invitee is not already a user, the system adds them.
|
|||||||
|
|
||||||
Periodically review invitations you have sent so that you can see a list of users that have not yet accepted the invitation or cancel a pending invitation.
|
Periodically review invitations you have sent so that you can see a list of users that have not yet accepted the invitation or cancel a pending invitation.
|
||||||
|
|
||||||
> **Note:** The **Pending Invites** button is only visible if there are unanswered invitations.
|
{{% admonition type="note" %}}
|
||||||
|
The **Pending Invites** button is only visible if there are unanswered invitations.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
### Before you begin
|
### Before you begin
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,9 @@ You can see a list of users with accounts on your Grafana server. This action mi
|
|||||||
1. Sign in to Grafana as a server administrator.
|
1. Sign in to Grafana as a server administrator.
|
||||||
1. Click **Administration** in the left-side menu, and then **Users**.
|
1. Click **Administration** in the left-side menu, and then **Users**.
|
||||||
|
|
||||||
> **Note:** If you have [organization administrator]({{< relref "../../roles-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can still [view of list of users in a given organization]({{< relref "../manage-org-users/#view-a-list-of-organization-users" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
If you have [organization administrator]({{< relref "../../roles-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can still [view of list of users in a given organization]({{< relref "../manage-org-users/#view-a-list-of-organization-users" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## View user details
|
## View user details
|
||||||
|
|
||||||
@@ -115,7 +117,9 @@ When you configure advanced authentication using Oauth, SAML, LDAP, or the Auth
|
|||||||
|
|
||||||
When you create a user, the system assigns the user viewer permissions in a default organization, which you can change. You can now [add a user to a second organization]({{< relref "add-remove-user-to-org/" >}}).
|
When you create a user, the system assigns the user viewer permissions in a default organization, which you can change. You can now [add a user to a second organization]({{< relref "add-remove-user-to-org/" >}}).
|
||||||
|
|
||||||
> **Note:** If you have [organization administrator]({{< relref "../../roles-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can still add users by [inviting a user to join an organization]({{< relref "../manage-org-users#invite-a-user-to-join-an-organization" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
If you have [organization administrator]({{< relref "../../roles-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../roles-and-permissions/#grafana-server-administrators" >}}) permissions, you can still add users by [inviting a user to join an organization]({{< relref "../manage-org-users#invite-a-user-to-join-an-organization" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Force a user to log out of Grafana
|
## Force a user to log out of Grafana
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,9 @@ You are required to specify an Admin role for each organization. The first user
|
|||||||
|
|
||||||
The next time the user signs in, they will be able to navigate to their new organization using the Switch Organizations option in the user profile menu.
|
The next time the user signs in, they will be able to navigate to their new organization using the Switch Organizations option in the user profile menu.
|
||||||
|
|
||||||
> **Note:** If you have [organization administrator]({{< relref "../../../roles-and-permissions#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../../roles-and-permissions#grafana-server-administrators" >}}) permissions, you can still [invite a user to join an organization]({{< relref "../../manage-org-users#invite-a-user-to-join-an-organization" >}}).
|
{{% admonition type="note" %}}
|
||||||
|
If you have [organization administrator]({{< relref "../../../roles-and-permissions#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../../../roles-and-permissions#grafana-server-administrators" >}}) permissions, you can still [invite a user to join an organization]({{< relref "../../manage-org-users#invite-a-user-to-join-an-organization" >}}).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Remove a user from an organization
|
## Remove a user from an organization
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ weight: 20
|
|||||||
|
|
||||||
Grafana server administrators are responsible for creating users, organizations, and managing permissions. For more information about the server administration role, refer to [Grafana server administrators]({{< relref "../../../roles-and-permissions#grafana-server-administrators" >}}).
|
Grafana server administrators are responsible for creating users, organizations, and managing permissions. For more information about the server administration role, refer to [Grafana server administrators]({{< relref "../../../roles-and-permissions#grafana-server-administrators" >}}).
|
||||||
|
|
||||||
> **Note:** Server administrators are "super-admins" with full permissions to create, read, update, and delete all resources and users in all organizations, as well as update global settings such as licenses. Only grant this permission to trusted users.
|
{{% admonition type="note" %}}
|
||||||
|
Server administrators are "super-admins" with full permissions to create, read, update, and delete all resources and users in all organizations, as well as update global settings such as licenses. Only grant this permission to trusted users.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ When `editors_can_admin` is enabled:
|
|||||||
- Users with the Editor role in an organization are Administrators for new dashboards and folders they create, meaning they can edit dashboard permissions. To learn more about dashboard permissions, refer to [Manage dashboard permissions]({{< relref "../../manage-dashboard-permissions/" >}}).
|
- Users with the Editor role in an organization are Administrators for new dashboards and folders they create, meaning they can edit dashboard permissions. To learn more about dashboard permissions, refer to [Manage dashboard permissions]({{< relref "../../manage-dashboard-permissions/" >}}).
|
||||||
- Users with the Editor role in an organization can create teams, and they are Administrators of the teams they create. To learn more about team permissions, refer to [Team management]({{< relref "../../../team-management/" >}}).
|
- Users with the Editor role in an organization can create teams, and they are Administrators of the teams they create. To learn more about team permissions, refer to [Team management]({{< relref "../../../team-management/" >}}).
|
||||||
|
|
||||||
> **Note**: If you use Grafana Enterprise and customize users' permissions using RBAC, the RBAC permissions override the functionality enabled by the `editors_can_admin` flag.
|
{{% admonition type="note" %}}
|
||||||
|
If you use Grafana Enterprise and customize users' permissions using RBAC, the RBAC permissions override the functionality enabled by the `editors_can_admin` flag.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ You can also view important information about your account, such as the organiza
|
|||||||
|
|
||||||
You can change your Grafana password at any time.
|
You can change your Grafana password at any time.
|
||||||
|
|
||||||
> **Note**: If your Grafana instance uses an <!--[external authentication provider]({{< relref "../../../setup-grafana/configure-security/configure-authentication/" >}})--> external authentication provider, then you might not be able to change your password in Grafana. Contact your Grafana administrator for more information.
|
{{% admonition type="note" %}}
|
||||||
|
If your Grafana instance uses an external authentication provider, then you might not be able to change your password in Grafana. Contact your Grafana administrator for more information.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
**To change your password**:
|
**To change your password**:
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,7 @@
|
|||||||
aliases:
|
aliases:
|
||||||
- about-alerting/
|
- about-alerting/
|
||||||
- unified-alerting/alerting/
|
- unified-alerting/alerting/
|
||||||
cascade:
|
description: Intro to key benefits and features of Grafana Alerting
|
||||||
labels:
|
|
||||||
products:
|
|
||||||
- cloud
|
|
||||||
- oss
|
|
||||||
title: Alerting
|
title: Alerting
|
||||||
weight: 114
|
weight: 114
|
||||||
---
|
---
|
||||||
@@ -25,7 +21,7 @@ Grafana Alerting is available for Grafana OSS, Grafana Enterprise, or Grafana Cl
|
|||||||
|
|
||||||
Watch this video to learn more about Grafana Alerting: {{< vimeo 720001629 >}}
|
Watch this video to learn more about Grafana Alerting: {{< vimeo 720001629 >}}
|
||||||
|
|
||||||
_Refer to [Manage your alert rules]({{< relref "../alerting/alerting-rules/" >}}) for current instructions._
|
_Refer to [Manage your alert rules]({{< relref "../alerting/alerting-rules" >}}) for current instructions._
|
||||||
|
|
||||||
## Key features and benefits
|
## Key features and benefits
|
||||||
|
|
||||||
@@ -86,4 +82,4 @@ Here are some tips on how to create an effective alert management set up for you
|
|||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
- [Introduction to Alerting]({{< relref "/docs/grafana/latest/alerting/fundamentals" >}})
|
- [Introduction to Alerting]({{< relref "./fundamentals" >}})
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ aliases:
|
|||||||
- old-alerting/create-alerts/
|
- old-alerting/create-alerts/
|
||||||
- rules/
|
- rules/
|
||||||
- unified-alerting/alerting-rules/
|
- unified-alerting/alerting-rules/
|
||||||
|
description: How you can manage your alert rules
|
||||||
title: Manage your alert rules
|
title: Manage your alert rules
|
||||||
weight: 130
|
weight: 130
|
||||||
---
|
---
|
||||||
@@ -15,10 +16,10 @@ While queries and expressions select the data set to evaluate, a condition sets
|
|||||||
|
|
||||||
You can:
|
You can:
|
||||||
|
|
||||||
- [Create Grafana Mimir or Loki managed alert rules]({{< relref "create-mimir-loki-managed-rule/" >}})
|
- [Create Grafana Mimir or Loki managed alert rules]({{< relref "./create-mimir-loki-managed-rule" >}})
|
||||||
- [Create Grafana Mimir or Loki managed recording rules]({{< relref "create-mimir-loki-managed-recording-rule/" >}})
|
- [Create Grafana Mimir or Loki managed recording rules]({{< relref "./create-mimir-loki-managed-recording-rule" >}})
|
||||||
- [Edit Grafana Mimir or Loki rule groups and namespaces]({{< relref "edit-mimir-loki-namespace-group/" >}})
|
- [Edit Grafana Mimir or Loki rule groups and namespaces]({{< relref "./edit-mimir-loki-namespace-group" >}})
|
||||||
- [Create Grafana managed alert rules]({{< relref "create-grafana-managed-rule/" >}})
|
- [Create Grafana managed alert rules]({{< relref "./create-grafana-managed-rule" >}})
|
||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
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.
|
||||||
|
|||||||
@@ -18,12 +18,10 @@ Grafana-managed rules are the most flexible alert rule type. They allow you to c
|
|||||||
|
|
||||||
Multiple alert instances can be created as a result of one alert rule (also known as a multi-dimensional alerting).
|
Multiple alert instances can be created as a result of one alert rule (also known as a multi-dimensional alerting).
|
||||||
|
|
||||||
For information on Grafana Alerting, see [Introduction to Grafana Alerting](/docs/grafana/next/alerting/fundamentals/), which explains the key concepts and features of Grafana Alerting.
|
For information on Grafana Alerting, see [Introduction to Grafana Alerting]({{< relref "../fundamentals" >}}), which explains the key concepts and features of Grafana Alerting.
|
||||||
|
|
||||||
Watch this video to learn more about creating alerts: {{< vimeo 720001934 >}}
|
Watch this video to learn more about creating alerts: {{< vimeo 720001934 >}}
|
||||||
|
|
||||||
_Refer to [Add Grafana managed rule]({{< relref "#add-grafana-managed-rule" >}}) (following) for current instructions._
|
|
||||||
|
|
||||||
To create a Grafana-managed alert rule, complete the following steps.
|
To create a Grafana-managed alert rule, complete the following steps.
|
||||||
|
|
||||||
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
|
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
|
||||||
@@ -34,14 +32,14 @@ To create a Grafana-managed alert rule, complete the following steps.
|
|||||||
5. In Step 2, add queries and expressions to evaluate, and then select the alert condition.
|
5. In Step 2, add queries and expressions to evaluate, and then select the alert condition.
|
||||||
|
|
||||||
- For queries, select a data source from the dropdown.
|
- For queries, select a data source from the dropdown.
|
||||||
- Specify a [time range](/docs/grafana/latest/dashboards/use-dashboards/?pg=blog&plcmt=body-txt#time-units-and-relative-ranges).
|
- Specify a [time range]({{< relref "../../dashboards/use-dashboards#time-units-and-relative-ranges" >}}).
|
||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
Grafana Alerting only supports fixed relative time ranges, for example, `now-24hr: now`.
|
Grafana Alerting only supports fixed relative time ranges, for example, `now-24hr: now`.
|
||||||
|
|
||||||
It does not support absolute time ranges: `2021-12-02 00:00:00 to 2021-12-05 23:59:592` or semi-relative time ranges: `now/d to: now`.
|
It does not support absolute time ranges: `2021-12-02 00:00:00 to 2021-12-05 23:59:592` or semi-relative time ranges: `now/d to: now`.
|
||||||
|
|
||||||
- Add one or more [queries]({{< relref "/docs/grafana/latest/panels-visualizations/query-transform-data#add-a-query" >}}) or [expressions]({{< relref "/docs/grafana/latest/panels-visualizations/query-transform-data/expression-queries" >}}).
|
- Add one or more [queries]({{< relref "../../panels-visualizations/query-transform-data#add-a-query" >}}) or [expressions]({{< relref "../../panels-visualizations/query-transform-data/expression-queries" >}}).
|
||||||
- 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](#single-and-multi-dimensional-rule).
|
- 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](#single-and-multi-dimensional-rule).
|
||||||
- Click **Run queries** to verify that the query is successful.
|
- Click **Run queries** to verify that the query is successful.
|
||||||
- Next, select the query or expression for your alert condition.
|
- Next, select the query or expression for your alert condition.
|
||||||
@@ -52,7 +50,7 @@ To create a Grafana-managed alert rule, complete the following steps.
|
|||||||
- For **Evaluate every**, specify the frequency of evaluation. Must be a multiple of 10 seconds. For examples, `1m`, `30s`.
|
- For **Evaluate every**, specify the frequency of evaluation. Must be a multiple of 10 seconds. For examples, `1m`, `30s`.
|
||||||
- For **Evaluate for**, specify the duration for which the condition must be true before an alert fires.
|
- For **Evaluate for**, specify the duration for which the condition must be true before an alert fires.
|
||||||
> **Note:** Once a condition is breached, the alert goes into the Pending state. If the condition remains breached for the duration specified, the alert transitions to the `Firing` state, otherwise it reverts back to the `Normal` state.
|
> **Note:** Once a condition is breached, the alert goes into the Pending state. If the condition remains breached for the duration specified, the alert transitions to the `Firing` state, otherwise it reverts back to the `Normal` state.
|
||||||
- In **Configure no data and error handling**, configure alerting behavior in the absence of data. Use the guidelines in [No data and error handling](#no-data-and-error-handling).
|
- In **Configure no data and error handling**, configure alerting behavior in the absence of data. Use the guidelines in [No data and error handling](#configure-no-data-and-error-handling).
|
||||||
- Click **Preview** to check the result of running the query at this moment. Preview excludes no data and error handling.
|
- Click **Preview** to check the result of running the query at this moment. Preview excludes no data and error handling.
|
||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
@@ -62,7 +60,7 @@ To create a Grafana-managed alert rule, complete the following steps.
|
|||||||
7. In Step 4, add the storage location, rule group, as well as additional metadata associated with the rule.
|
7. In Step 4, add the storage location, rule group, as well as additional metadata associated with the rule.
|
||||||
- From the **Folder** dropdown, select the folder where you want to store the rule.
|
- From the **Folder** dropdown, select the folder where you want to store the rule.
|
||||||
- For **Group**, specify a pre-defined group. 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.
|
- For **Group**, specify a pre-defined group. 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.
|
||||||
- Add a description and summary to customize alert messages. Use the guidelines in [Annotations and labels for alerting]({{< relref "../fundamentals/annotation-label/" >}}).
|
- Add a description and summary to customize alert messages. Use the guidelines in [Annotations and labels for alerting]({{< relref "../fundamentals/annotation-label" >}}).
|
||||||
- Add Runbook URL, panel, dashboard, and alert IDs.
|
- Add Runbook URL, panel, dashboard, and alert IDs.
|
||||||
8. In Step 5, add custom labels.
|
8. In Step 5, add custom 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 .
|
||||||
@@ -77,13 +75,13 @@ For Grafana managed alerts, you can create a rule with a classic condition or yo
|
|||||||
|
|
||||||
Use the classic condition expression to create a rule that triggers a single alert when its condition is met. For a query that returns multiple series, Grafana does not track the alert state of each series. As a result, Grafana sends only a single alert even when alert conditions are met for multiple series.
|
Use the classic condition expression to create a rule that triggers a single alert when its condition is met. For a query that returns multiple series, Grafana does not track the alert state of each series. As a result, Grafana sends only a single alert even when alert conditions are met for multiple series.
|
||||||
|
|
||||||
For more information, see [expressions documentation]({{< relref "/docs/grafana/latest/panels-visualizations/query-transform-data/expression-queries" >}}).
|
For more information, see [expressions documentation]({{< relref "../../panels-visualizations/query-transform-data/expression-queries" >}}).
|
||||||
|
|
||||||
**Multi-dimensional rule**
|
**Multi-dimensional rule**
|
||||||
|
|
||||||
To generate a separate alert for each series, create a multi-dimensional rule. Use `Math`, `Reduce`, or `Resample` expressions to create a multi-dimensional rule. For example:
|
To generate a separate alert for each series, create a multi-dimensional rule. Use `Math`, `Reduce`, or `Resample` expressions to create a multi-dimensional rule. For example:
|
||||||
|
|
||||||
- Add a `Reduce` expression for each query to aggregate values in the selected time range into a single value. (Not needed for [rules using numeric data]({{< relref "../fundamentals/evaluate-grafana-alerts/#alerting-on-numeric-data-1" >}})).
|
- Add a `Reduce` expression for each query to aggregate values in the selected time range into a single value. (Not needed for [rules using numeric data]({{< relref "../fundamentals/evaluate-grafana-alerts#alerting-on-numeric-data-1" >}})).
|
||||||
- Add a `Math` expression with the condition for the rule. Not needed in case a query or a reduce expression already returns 0 if rule should not fire, or a positive number if it should fire. Some examples: `$B > 70` if it should fire in case value of B query/expression is more than 70. `$B < $C * 100` in case it should fire if value of B is less than value of C multiplied by 100. If queries being compared have multiple series in their results, series from different queries are matched if they have the same labels or one is a subset of the other.
|
- Add a `Math` expression with the condition for the rule. Not needed in case a query or a reduce expression already returns 0 if rule should not fire, or a positive number if it should fire. Some examples: `$B > 70` if it should fire in case value of B query/expression is more than 70. `$B < $C * 100` in case it should fire if value of B is less than value of C multiplied by 100. If queries being compared have multiple series in their results, series from different queries are matched if they have the same labels or one is a subset of the other.
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -18,6 +18,14 @@ weight: 400
|
|||||||
|
|
||||||
You can create and manage recording rules for an external Grafana Mimir or Loki instance. Recording rules calculate frequently needed expressions or computationally expensive expressions in advance and save the result as a new set of time series. Querying this new time series is faster, especially for dashboards since they query the same expression every time the dashboards refresh.
|
You can create and manage recording rules for an external Grafana Mimir or Loki instance. Recording rules calculate frequently needed expressions or computationally expensive expressions in advance and save the result as a new set of time series. Querying this new time series is faster, especially for dashboards since they query the same expression every time the dashboards refresh.
|
||||||
|
|
||||||
|
**Note:**
|
||||||
|
|
||||||
|
Recording rules are run as instant rules, which means that they run every 10s. To overwrite this configuration, update the min_interval in your custom configuration file.
|
||||||
|
|
||||||
|
[min_interval]({{< relref "../../setup-grafana/configure-grafana" >}}) sets the minimum interval to enforce between rule evaluations. The default value is 10s which equals the scheduler interval. 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 fewer evaluations are scheduled over time.
|
||||||
|
|
||||||
|
This setting has precedence over each individual rule frequency. If a rule frequency is lower than this value, then this value is enforced.
|
||||||
|
|
||||||
## 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 alerting 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 alerting rules.
|
||||||
@@ -26,9 +34,11 @@ You can create and manage recording rules for an external Grafana Mimir or Loki
|
|||||||
|
|
||||||
- **Loki** - The `local` rule storage type, default for the Loki data source, supports only viewing of rules. To edit rules, configure one of the other rule storage types.
|
- **Loki** - The `local` rule storage type, default for the Loki data source, supports only viewing of rules. To edit rules, configure one of the other rule storage types.
|
||||||
|
|
||||||
- **Grafana Mimir** - use the `/prometheus` prefix. The Prometheus data source supports both Grafana Mimir and Prometheus, and Grafana expects that both the [Query API](https://grafana.com/docs/mimir/latest/operators-guide/reference-http-api/#querier--query-frontend) and [Ruler API](https://grafana.com/docs/mimir/latest/operators-guide/reference-http-api/#ruler) are under the same URL. You cannot provide a separate URL for the Ruler API.
|
- **Grafana Mimir** - use the `/prometheus` prefix. The Prometheus data source supports both Grafana Mimir and Prometheus, and Grafana expects that both the [Query API](/docs/mimir/latest/operators-guide/reference-http-api/#querier--query-frontend) and [Ruler API](/docs/mimir/latest/operators-guide/reference-http-api/#ruler) are under the same URL. You cannot provide a separate URL for the Ruler API.
|
||||||
|
|
||||||
> **Note:** If you do not want to manage alerting rules for a particular Loki or Prometheus data source, go to its settings and clear the **Manage alerts via Alerting UI** checkbox.
|
{{% admonition type="note" %}}
|
||||||
|
If you do not want to manage alerting rules for a particular Loki or Prometheus data source, go to its settings and clear the **Manage alerts via Alerting UI** checkbox.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Add a Grafana Mimir or Loki managed recording rule
|
## Add a Grafana Mimir or Loki managed recording rule
|
||||||
|
|
||||||
@@ -42,30 +52,12 @@ To create a Grafana Mimir or Loki managed recording rule
|
|||||||
1. In Step 2, select **Mimir or Loki recording rule** option.
|
1. In Step 2, select **Mimir or Loki recording rule** option.
|
||||||
- Select your Loki or Prometheus data source.
|
- Select your Loki or Prometheus data source.
|
||||||
- Enter a PromQL or LogQL query.
|
- Enter a PromQL or LogQL query.
|
||||||
1. In Step 3, add the namespace and the group.
|
1. In Step 3, add alert evaluation behavior.
|
||||||
- From the **Namespace** dropdown, select an existing rule namespace. Otherwise, click Add new and enter a name to create 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]({{< relref "edit-mimir-loki-namespace-group/" >}}).
|
|
||||||
- From the **Group** dropdown, select an existing group within the selected namespace. Otherwise, click **Add new** and enter a name to create a new one.
|
|
||||||
1. In Step 4, add the custom labels.
|
|
||||||
- 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** to save the recording rule or **Save and exit** to save the recording rule and go back to the Alerting page.
|
|
||||||
|
|
||||||
<!-- delete next steps? -->
|
|
||||||
|
|
||||||
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
|
|
||||||
1. Click **Alert rules**.
|
|
||||||
1. Click **+ Create alert rule**.
|
|
||||||
1. In Step 1, add the rule name.
|
|
||||||
- In **Rule name**, add a descriptive name. This name is displayed in the alert rule list. It is also the `alertname` label for every alert instance that is created from this rule.
|
|
||||||
1. In Step 2, add the type, and storage location.
|
|
||||||
- From the **Rule type** dropdown, select **Mimir / Loki managed alert**.
|
|
||||||
- From the **Select data source** dropdown, select an external Prometheus, an external Loki, or a Grafana Cloud data source.
|
|
||||||
- Enter a PromQL or LogQL expression. The rule fires if the evaluation result has at least one series with a value that is greater than 0. An alert is created for each series.
|
|
||||||
1. In Step 3, add evaluation behavior.
|
|
||||||
- Enter a valid **For** duration. The expression has to be true for this long for the alert to be fired.
|
- Enter a valid **For** duration. The expression has to be true for this long for the alert to be fired.
|
||||||
1. In Step 4, add additional metadata associated with the rule.
|
1. In Step 4, add additional metadata associated with the rule.
|
||||||
- From the **Namespace** dropdown, select an existing rule namespace. Otherwise, click Add new and enter a name to create 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]({{< relref "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. For more information, see [Grafana Mimir or Loki rule groups and namespaces]({{< relref "./edit-mimir-loki-namespace-group" >}}).
|
||||||
- From the **Group** dropdown, select an existing group within the selected namespace. Otherwise, click **Add new** and enter a name to create 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.
|
||||||
- Add a description and summary to customize alert messages. Use the guidelines in [Annotations and labels for alerting]({{< relref "../fundamentals/annotation-label/" >}}).
|
- Add a description and summary to customize alert messages. Use the guidelines in [Annotations and labels for alerting]({{< relref "../fundamentals/annotation-label" >}}).
|
||||||
- Add Runbook URL, panel, dashboard, and alert IDs.
|
- Add Runbook URL, panel, dashboard, and alert IDs.
|
||||||
1. In Step 5, add custom labels.
|
1. In Step 5, add custom 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 .
|
||||||
|
|||||||
@@ -10,13 +10,13 @@ keywords:
|
|||||||
- guide
|
- guide
|
||||||
- rules
|
- rules
|
||||||
- create
|
- create
|
||||||
title: Create Grafana Mimir or Loki managed alert rules
|
title: Create a Grafana Mimir or Loki managed alerting rules
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
|
|
||||||
# Create a Grafana Mimir or Loki managed alerting rules
|
# Create a Grafana Mimir or Loki managed alerting rules
|
||||||
|
|
||||||
Grafana allows you to create alerting rules for an external Grafana Mimir or Loki instance that has ruler API enabled. For information on Grafana Alerting, see [About Grafana Alerting]({{< relref "../" >}}) which explains the various components of Grafana Alerting. We also recommend that you familiarize yourself with some of the [fundamental concepts]({{< relref "../fundamentals/" >}}) of Grafana Alerting.
|
Grafana allows you to create alerting rules for an external Grafana Mimir or Loki instance that has ruler API enabled. For information on Grafana Alerting, see [About Grafana Alerting]({{< relref "../../alerting" >}}) which explains the various components of Grafana Alerting. We also recommend that you familiarize yourself with some of the [fundamental concepts]({{< relref "../fundamentals" >}}) of Grafana Alerting.
|
||||||
|
|
||||||
## Before you begin
|
## Before you begin
|
||||||
|
|
||||||
@@ -26,13 +26,15 @@ Grafana allows you to create alerting rules for an external Grafana Mimir or Lok
|
|||||||
|
|
||||||
- **Loki** - The `local` rule storage type, default for the Loki data source, supports only viewing of rules. To edit rules, configure one of the other rule storage types.
|
- **Loki** - The `local` rule storage type, default for the Loki data source, supports only viewing of rules. To edit rules, configure one of the other rule storage types.
|
||||||
|
|
||||||
- **Grafana Mimir** - use the `/prometheus` prefix. The Prometheus data source supports both Grafana Mimir and Prometheus, and Grafana expects that both the [Query API](https://grafana.com/docs/mimir/latest/operators-guide/reference-http-api/#querier--query-frontend) and [Ruler API](https://grafana.com/docs/mimir/latest/operators-guide/reference-http-api/#ruler) are under the same URL. You cannot provide a separate URL for the Ruler API.
|
- **Grafana Mimir** - use the `/prometheus` prefix. The Prometheus data source supports both Grafana Mimir and Prometheus, and Grafana expects that both the [Query API](/docs/mimir/latest/operators-guide/reference-http-api/#querier--query-frontend) and [Ruler API](/docs/mimir/latest/operators-guide/reference-http-api/#ruler) are under the same URL. You cannot provide a separate URL for the Ruler API.
|
||||||
|
|
||||||
Watch this video to learn more about how to create a Mimir managed alert rule: {{< vimeo 720001865 >}}
|
Watch this video to learn more about how to create a Mimir managed alert rule: {{< vimeo 720001865 >}}
|
||||||
|
|
||||||
_Refer to [Add a Grafana Mimir or Loki managed alerting rule]({{< relref "#add-a-grafana-mimir-or-loki-managed-alerting-rule" >}}) (following) for current instructions._
|
_Refer to [Add a Grafana Mimir or Loki managed alerting rule]({{< relref "#add-a-grafana-mimir-or-loki-managed-alerting-rule" >}}) (following) for current instructions._
|
||||||
|
|
||||||
> **Note:** If you do not want to manage alerting rules for a particular Loki or Prometheus data source, go to its settings and clear the **Manage alerts via Alerting UI** checkbox.
|
{{% admonition type="note" %}}
|
||||||
|
If you do not want to manage alerting rules for a particular Loki or Prometheus data source, go to its settings and clear the **Manage alerts via Alerting UI** checkbox.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Add a Grafana Mimir or Loki managed alerting rule
|
## Add a Grafana Mimir or Loki managed alerting rule
|
||||||
|
|
||||||
@@ -48,9 +50,9 @@ _Refer to [Add a Grafana Mimir or Loki managed alerting rule]({{< relref "#add-a
|
|||||||
- In the **For** text box, specify the duration for which the condition must be true before an alert fires. If you specify `5m`, the condition must be true for 5 minutes before the alert fires.
|
- In the **For** text box, specify the duration for which the condition must be true before an alert fires. If you specify `5m`, the condition must be true for 5 minutes before the alert fires.
|
||||||
> **Note:** Once a condition is met, the alert goes into the `Pending` state. If the condition remains active for the duration specified, the alert transitions to the `Firing` state, else it reverts to the `Normal` state.
|
> **Note:** Once a condition is met, the alert goes into the `Pending` state. If the condition remains active for the duration specified, the alert transitions to the `Firing` state, else it reverts to the `Normal` state.
|
||||||
1. In Step 4, add the namespace, rule group, as well as additional metadata associated with the rule.
|
1. In Step 4, add the namespace, rule group, as well as additional metadata associated with the rule.
|
||||||
- From the **Namespace** dropdown, select an existing rule namespace. Otherwise, click **Add new** and enter a name to create 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]({{< relref "edit-mimir-loki-namespace-group/" >}}).
|
- From the **Namespace** dropdown, select an existing rule namespace. Otherwise, click **Add new** and enter a name to create 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]({{< relref "./edit-mimir-loki-namespace-group" >}}).
|
||||||
- From the **Group** dropdown, select an existing group within the selected namespace. Otherwise, click **Add new** and enter a name to create 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. Otherwise, click **Add new** and enter a name to create 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.
|
||||||
- Add a description and summary to customize alert messages. Use the guidelines in [Annotations and labels for alerting]({{< relref "../fundamentals/annotation-label/" >}}).
|
- Add a description and summary to customize alert messages. Use the guidelines in [Annotations and labels for alerting]({{< relref "../fundamentals/annotation-label" >}}).
|
||||||
- Add Runbook URL, panel, dashboard, and alert IDs.
|
- Add Runbook URL, panel, dashboard, and alert IDs.
|
||||||
1. In Step 5, add custom labels.
|
1. In Step 5, add custom 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,11 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
description: Declare an incident from a firing alert
|
description: Declare an incident from a firing alert
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alert rules
|
- alert rules
|
||||||
- incident
|
- incident
|
||||||
title: Declare an incident from a firing alert
|
title: Declare incidents from firing alerts
|
||||||
weight: 430
|
weight: 430
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -46,4 +45,4 @@ To declare an incident from a firing alert, complete the following steps.
|
|||||||
|
|
||||||
View and track the incident in the Grafana Incident application.
|
View and track the incident in the Grafana Incident application.
|
||||||
|
|
||||||
For more information, refer to [Grafana Incident documentation.](https://grafana.com/docs/grafana-cloud/incident/configure-settings/)
|
For more information, refer to [Grafana Incident documentation.](/docs/grafana-cloud/incident/configure-settings/)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ When managing large volumes of alerts, you can use extended alert rule search ca
|
|||||||
To view alerting details:
|
To view alerting details:
|
||||||
|
|
||||||
1. In the Grafana menu, click the **Alerting** (bell) icon to open the Alerting page. By default, the List view displays.
|
1. In the Grafana menu, click the **Alerting** (bell) icon to open the Alerting page. By default, the List view displays.
|
||||||
1. In **View as**, toggle between Grouped or State views by clicking the relevant option. See [Group view](#group-view) and [State view](#state-view) for more information.
|
1. In **View as**, toggle between Grouped or State views by clicking the relevant option. See [Grouped view](#grouped-view) and [State view](#state-view) for more information.
|
||||||
1. Expand the rule row to view the rule labels, annotations, data sources the rule queries, and a list of alert instances resulting from this rule.
|
1. Expand the rule row to view the rule labels, annotations, data sources the rule queries, and a list of alert instances resulting from this rule.
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/alerting/unified/rule-details-8-0.png" max-width="650px" caption="Alerting rule details" >}}
|
{{< figure src="/static/img/docs/alerting/unified/rule-details-8-0.png" max-width="650px" caption="Alerting rule details" >}}
|
||||||
|
|||||||
@@ -36,7 +36,9 @@ An alert rule can be in either of the following states:
|
|||||||
| **Pending** | At least one time series returned by the evaluation engine is `Pending`. |
|
| **Pending** | At least one time series returned by the evaluation engine is `Pending`. |
|
||||||
| **Firing** | At least one time series returned by the evaluation engine is `Firing`. |
|
| **Firing** | At least one time series returned by the evaluation engine is `Firing`. |
|
||||||
|
|
||||||
> **Note:** Alerts will transition first to `pending` and then `firing`, thus it will take at least two evaluation cycles before an alert is fired.
|
{{% admonition type="note" %}}
|
||||||
|
Alerts will transition first to `pending` and then `firing`, thus it will take at least two evaluation cycles before an alert is fired.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Alert instance state
|
## Alert instance state
|
||||||
|
|
||||||
@@ -70,3 +72,56 @@ When evaluation of an alerting rule produces state `NoData` or `Error`, Grafana
|
|||||||
| **datasource_uid** | The UID of the data source that caused the state. |
|
| **datasource_uid** | The UID of the data source that caused the state. |
|
||||||
|
|
||||||
You can handle these alerts the same way as regular alerts by adding a silence, route to a contact point, and so on.
|
You can handle these alerts the same way as regular alerts by adding a silence, route to a contact point, and so on.
|
||||||
|
|
||||||
|
## State history view
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
**Note:** This applies to Open Source only. There is no configuration required if you are using Grafana Cloud.
|
||||||
|
|
||||||
|
To enable the state history view, complete the following steps.
|
||||||
|
|
||||||
|
1. Ensure you have a Loki instance running to save your history to.
|
||||||
|
1. Configure the following settings in your Grafana configuration:
|
||||||
|
|
||||||
|
a. Enable the Loki backend and Loki remote URL.
|
||||||
|
|
||||||
|
b. Enable the three feature toggles for alert state history.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```
|
||||||
|
[unified_alerting.state_history]
|
||||||
|
enabled = true
|
||||||
|
backend = loki
|
||||||
|
loki_remote_url = http://localhost:3100
|
||||||
|
|
||||||
|
[feature_toggles]
|
||||||
|
enable = alertStateHistoryLokiSecondary, alertStateHistoryLokiPrimary, alertStateHistoryLokiOnly
|
||||||
|
```
|
||||||
|
|
||||||
|
### View state history
|
||||||
|
|
||||||
|
To use the State history view, complete the following steps.
|
||||||
|
|
||||||
|
1. Navigate to **Alerts&IRM** -> **Alerting** -> **Alert rules**.
|
||||||
|
1. Click an alert rule.
|
||||||
|
1. Select **Show state history**.
|
||||||
|
|
||||||
|
The State history view opens.
|
||||||
|
|
||||||
|
The timeline view at the top displays a timeline of changes for the past hour, so you can track how your alert instances are behaving over time.
|
||||||
|
|
||||||
|
The bottom part shows the alert instances, their previous and current state, the value of each part of the expression and a unique set of labels.
|
||||||
|
|
||||||
|
Common labels are displayed at the top to make it easier to identify different alert instances.
|
||||||
|
|
||||||
|
1. From the timeline view, hover over a time to get an automatic display of all the changes that happened at that particular moment.
|
||||||
|
|
||||||
|
These changes are displayed in real time in the timestamp view at the bottom of the page. The timestamp view is a list of all the alert instances that changed state at that point in time. The visualization only displays 12 instances by default.
|
||||||
|
|
||||||
|
The value shown for each instance is for each part of the expression that was evaluated.
|
||||||
|
|
||||||
|
1. Click the labels to filter and narrow down the results.
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
aliases:
|
aliases:
|
||||||
- metrics/
|
- metrics/
|
||||||
- unified-alerting/fundamentals/
|
- unified-alerting/fundamentals/
|
||||||
|
description: Intro to the key concepts in Alerting and how it works
|
||||||
title: Introduction to Alerting
|
title: Introduction to Alerting
|
||||||
weight: 105
|
weight: 105
|
||||||
---
|
---
|
||||||
@@ -44,6 +45,14 @@ Set where, when, and how firing alert instances get routed.
|
|||||||
|
|
||||||
Each notification policy contains a set of label matchers to indicate which alerts rules or instances it is responsible for. It also has a contact point assigned to it that consists of one or more contact point types, such as Slack or email. Contact points define how your contacts are notified when an alert instance fires.
|
Each notification policy contains a set of label matchers to indicate which alerts rules or instances it is responsible for. It also has a contact point assigned to it that consists of one or more contact point types, such as Slack or email. Contact points define how your contacts are notified when an alert instance fires.
|
||||||
|
|
||||||
|
For more information on notification policies, see [fundamentals of Notification Policies]({{< relref "../fundamentals/notification-policies/index.md" >}}).
|
||||||
|
|
||||||
|
**Message templates**
|
||||||
|
|
||||||
Use message templates for your notifications to create reusable custom templates and use them in contact points.
|
Use message templates for your notifications to create reusable custom templates and use them in contact points.
|
||||||
|
|
||||||
Add silences to stop notifications from one or more alert instances or use mute timings to specify time intervals when you don’t want new notifications to be generated or sent out. 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.
|
**Silences and mute timings**
|
||||||
|
|
||||||
|
Add silences to stop notifications from one or more alert instances or use mute timings to specify time intervals when you don’t want new notifications to be generated or sent out.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ While queries and expressions select the data set to evaluate, a condition sets
|
|||||||
|
|
||||||
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 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.
|
||||||
|
|
||||||
- [Alert rule types]({{< relref "alert-rule-types/" >}})
|
- [Alert rule types]({{< relref "./alert-rule-types" >}})
|
||||||
- [Alert instances]({{< relref "alert-instances/" >}})
|
- [Alert instances]({{< relref "./alert-instances" >}})
|
||||||
- [Organising alert rules]({{< relref "organising-alerts/" >}})
|
- [Organising alert rules]({{< relref "./organising-alerts" >}})
|
||||||
- [Annotation and labels]({{< relref "../annotation-label/" >}})
|
- [Annotation and labels]({{< relref "../annotation-label" >}})
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ To create Grafana Mimir or Grafana Loki-managed alert rules, you must have a com
|
|||||||
|
|
||||||
You can check if your data source supports rule creation via Grafana by testing the data source and observing if the Ruler API is supported.
|
You can check if your data source supports rule creation via Grafana by testing the data source and observing if the Ruler API is supported.
|
||||||
|
|
||||||
For more information on the Ruler API, refer to [Ruler API](docs/loki/latest/api/#ruler).
|
For more information on the Ruler API, refer to [Ruler API](/docs/loki/latest/api/#ruler).
|
||||||
|
|
||||||
The following diagram shows how Grafana Mimir or Grafana Loki-managed alerting works.
|
The following diagram shows how Grafana Mimir or Grafana Loki-managed alerting works.
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ This topic explains why labels are a fundamental component of alerting.
|
|||||||
- The Alertmanager uses labels to match alerts for silences and alert groups in notification policies.
|
- The Alertmanager uses labels to match alerts for silences and alert groups in notification policies.
|
||||||
- The alerting UI shows labels for every alert instance generated during evaluation of that rule.
|
- The alerting UI shows labels for every alert instance generated during evaluation of that rule.
|
||||||
- Contact points can access labels to dynamically generate notifications that contain information specific to the alert that is resulting in a notification.
|
- Contact points can access labels to dynamically generate notifications that contain information specific to the alert that is resulting in a notification.
|
||||||
- You can add labels to an [alerting rule]({{< relref "/docs/grafana/latest/alerting/alerting-rules" >}}). Labels are manually configurable, use template functions, and can reference other labels. Labels added to an alerting rule take precedence in the event of a collision between labels (except in the case of [Grafana reserved labels](#grafana-reserved-labels)).
|
- You can add labels to an [alerting rule]({{< relref "../../alerting-rules" >}}). Labels are manually configurable, use template functions, and can reference other labels. Labels added to an alerting rule take precedence in the event of a collision between labels (except in the case of [Grafana reserved labels](#grafana-reserved-labels)).
|
||||||
|
|
||||||
{{< figure src="/static/img/docs/alerting/unified/rule-edit-details-8-0.png" max-width="550px" caption="Alert details" >}}
|
{{< figure src="/static/img/docs/alerting/unified/rule-edit-details-8-0.png" max-width="550px" caption="Alert details" >}}
|
||||||
|
|
||||||
# External Alertmanager Compatibility
|
## External Alertmanager Compatibility
|
||||||
|
|
||||||
Grafana's built-in Alertmanager supports both Unicode label keys and values. If you are using an external Prometheus Alertmanager, label keys must be compatible with their [data model](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
|
Grafana's built-in Alertmanager supports both Unicode label keys and values. If you are using an external Prometheus Alertmanager, label keys must be compatible with their [data model](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
|
||||||
This means that label keys must only contain **ASCII letters**, **numbers**, as well as **underscores** and match the regex `[a-zA-Z_][a-zA-Z0-9_]*`.
|
This means that label keys must only contain **ASCII letters**, **numbers**, as well as **underscores** and match the regex `[a-zA-Z_][a-zA-Z0-9_]*`.
|
||||||
@@ -35,10 +35,12 @@ Example: A label key/value pair `Alert! 🔔="🔥"` will become `Alert_0x1f514=
|
|||||||
|
|
||||||
**Note** If multiple label keys are sanitized to the same value, the duplicates will have a short hash of the original label appended as a suffix.
|
**Note** If multiple label keys are sanitized to the same value, the duplicates will have a short hash of the original label appended as a suffix.
|
||||||
|
|
||||||
# Grafana reserved labels
|
## Grafana reserved labels
|
||||||
|
|
||||||
> **Note:** Labels prefixed with `grafana_` are reserved by Grafana for special use. If a manually configured label is added beginning with `grafana_` it may be overwritten in case of collision.
|
{{% admonition type="note" %}}
|
||||||
> To stop the Grafana Alerting engine from adding a reserved label, you can disable it via the `disabled_labels` option in [unified_alerting.reserved_labels]({{< relref "/docs/grafana/latest/setup-grafana/configure-grafana#unified_alertingreserved_labels" >}}) configuration.
|
Labels prefixed with `grafana_` are reserved by Grafana for special use. If a manually configured label is added beginning with `grafana_` it may be overwritten in case of collision.
|
||||||
|
To stop the Grafana Alerting engine from adding a reserved label, you can disable it via the `disabled_labels` option in [unified_alerting.reserved_labels]({{< relref "../../../setup-grafana/configure-grafana#unified_alertingreserved_labels" >}}) configuration.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
Grafana reserved labels can be used in the same way as manually configured labels. The current list of available reserved labels are:
|
Grafana reserved labels can be used in the same way as manually configured labels. The current list of available reserved labels are:
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ keywords:
|
|||||||
- alerting
|
- alerting
|
||||||
- guide
|
- guide
|
||||||
- fundamentals
|
- fundamentals
|
||||||
title: Label matchers
|
title: How label matching works
|
||||||
|
menuTitle: Label matchers
|
||||||
weight: 117
|
weight: 117
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ https://example.com/grafana
|
|||||||
|
|
||||||
### graphLink
|
### graphLink
|
||||||
|
|
||||||
The `graphLink` function returns the path to the graphical view in [Explore](https://grafana.com/docs/grafana/latest/explore/) for the given expression and data source.
|
The `graphLink` function returns the path to the graphical view in [Explore]({{< relref "../../../explore" >}}) for the given expression and data source.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ The `pathPrefix` function returns the path of the Grafana server as configured i
|
|||||||
|
|
||||||
### tableLink
|
### tableLink
|
||||||
|
|
||||||
The `tableLink` function returns the path to the tabular view in [Explore](https://grafana.com/docs/grafana/latest/explore/) for the given expression and data source.
|
The `tableLink` function returns the path to the tabular view in [Explore]({{< relref "../../../explore" >}}) for the given expression and data source.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ The following table lists the contact point integrations supported by Grafana.
|
|||||||
| ------------------------------------------------ | ------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------------------ | ------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||||
| [DingDing](https://www.dingtalk.com/en) | `dingding` | Supported | N/A |
|
| [DingDing](https://www.dingtalk.com/en) | `dingding` | Supported | N/A |
|
||||||
| [Discord](https://discord.com/) | `discord` | Supported | N/A |
|
| [Discord](https://discord.com/) | `discord` | Supported | N/A |
|
||||||
| [Email](#email) | `email` | Supported | Supported |
|
| Email | `email` | Supported | Supported |
|
||||||
| [Google Hangouts](https://hangouts.google.com/) | `googlechat` | Supported | N/A |
|
| [Google Hangouts](https://hangouts.google.com/) | `googlechat` | Supported | N/A |
|
||||||
| [Kafka](https://kafka.apache.org/) | `kafka` | Supported | N/A |
|
| [Kafka](https://kafka.apache.org/) | `kafka` | Supported | N/A |
|
||||||
| [Line](https://line.me/en/) | `line` | Supported | N/A |
|
| [Line](https://line.me/en/) | `line` | Supported | N/A |
|
||||||
@@ -47,13 +47,13 @@ The following table lists the contact point integrations supported by Grafana.
|
|||||||
| [Telegram](https://telegram.org/) | `telegram` | Supported | N/A |
|
| [Telegram](https://telegram.org/) | `telegram` | Supported | N/A |
|
||||||
| [Threema](https://threema.ch/) | `threema` | Supported | N/A |
|
| [Threema](https://threema.ch/) | `threema` | Supported | N/A |
|
||||||
| [VictorOps](https://help.victorops.com/) | `victorops` | Supported | Supported |
|
| [VictorOps](https://help.victorops.com/) | `victorops` | Supported | Supported |
|
||||||
| [Webhook](#webhook) | `webhook` | Supported | Supported ([different format](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config)) |
|
| Webhook | `webhook` | Supported | Supported ([different format](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config)) |
|
||||||
| [Cisco Webex Teams](#webex) | `webex` | Supported | Supported |
|
| Cisco Webex Teams | `webex` | Supported | Supported |
|
||||||
| [WeCom](#wecom) | `wecom` | Supported | N/A |
|
| WeCom | `wecom` | Supported | N/A |
|
||||||
| [Zenduty](https://www.zenduty.com/) | `webhook` | Supported | N/A |
|
| [Zenduty](https://www.zenduty.com/) | `webhook` | Supported | N/A |
|
||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
[Manage contact points](/docs/grafana/latest/alerting/manage-notifications/create-contact-point/)
|
[Manage contact points]({{< relref "../../manage-notifications/manage-contact-points" >}})
|
||||||
|
|
||||||
[Create and edit notification templates](/docs/grafana/latest/alerting/manage-notifications/template-notifications/create-notification-templates/)
|
[Create and edit notification templates]({{< relref "../../manage-notifications/template-notifications/create-notification-templates" >}})
|
||||||
|
|||||||
@@ -6,32 +6,31 @@ weight: 100
|
|||||||
|
|
||||||
# Data sources
|
# Data sources
|
||||||
|
|
||||||
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](https://grafana.com/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.
|
||||||
|
|
||||||
If you are creating your own data source plugin, make sure it is a backend plugin as Grafana Alerting requires this in order to be able to evaluate rules using the data source. Frontend data sources are not supported, because the evaluation engine runs on the backend.
|
If you are creating your own data source plugin, make sure it is a backend plugin as Grafana Alerting requires this in order to be able to evaluate rules using the data source. Frontend data sources are not supported, because the evaluation engine runs on the backend.
|
||||||
|
|
||||||
Specifying { "alerting": true, “backend”: true } in the plugin.json file indicates that the data source plugin is compatible with Grafana Alerting and includes the backend data-fetching code. For more information, refer to [Build a data source backend plugin](https://grafana.com/tutorials/build-a-data-source-backend-plugin/).
|
Specifying `{ "alerting": true, “backend”: true }` in the plugin.json file indicates that the data source plugin is compatible with Grafana Alerting and includes the backend data-fetching code. For more information, refer to [Build a data source backend plugin](/tutorials/build-a-data-source-backend-plugin/).
|
||||||
|
|
||||||
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](https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/)
|
- [AWS CloudWatch]({{< relref "../../datasources/aws-cloudwatch" >}})
|
||||||
- [Azure Monitor](https://grafana.com/docs/grafana/latest/datasources/azuremonitor/)
|
- [Azure Monitor]({{< relref "../../datasources/azure-monitor" >}})
|
||||||
- [Elasticsearch](https://grafana.com/docs/grafana/latest/datasources/elasticsearch/)
|
- [Elasticsearch]({{< relref "../../datasources/elasticsearch" >}})
|
||||||
- [Google Cloud Monitoring](https://grafana.com/docs/grafana/latest/datasources/google-cloud-monitoring/)
|
- [Google Cloud Monitoring]({{< relref "../../datasources/google-cloud-monitoring" >}})
|
||||||
- [Graphite](https://grafana.com/docs/grafana/latest/datasources/graphite/)
|
- [Graphite]({{< relref "../../datasources/graphite" >}})
|
||||||
- [InfluxDB](https://grafana.com/docs/grafana/latest/datasources/influxdb/)
|
- [InfluxDB]({{< relref "../../datasources/influxdb" >}})
|
||||||
- [Loki](https://grafana.com/docs/grafana/latest/datasources/loki/)
|
- [Loki]({{< relref "../../datasources/loki" >}})
|
||||||
- [Microsoft SQL Server MSSQL](https://grafana.com/docs/grafana/latest/datasources/mssql/)
|
- [Microsoft SQL Server MSSQL]({{< relref "../../datasources/mssql" >}})
|
||||||
- [MySQL](https://grafana.com/docs/grafana/latest/datasources/mysql/)
|
- [MySQL]({{< relref "../../datasources/mysql" >}})
|
||||||
- [Open TSDB](https://grafana.com/docs/grafana/latest/datasources/opentsdb/)
|
- [Open TSDB]({{< relref "../../datasources/opentsdb" >}})
|
||||||
- [PostgreSQL](https://grafana.com/docs/grafana/latest/datasources/postgres/)
|
- [PostgreSQL]({{< relref "../../datasources/postgres" >}})
|
||||||
- [Prometheus](https://grafana.com/docs/grafana/latest/datasources/prometheus/)
|
- [Prometheus]({{< relref "../../datasources/prometheus" >}})
|
||||||
- [Jaeger](https://grafana.com/docs/grafana/latest/datasources/jaeger/)
|
- [Jaeger]({{< relref "../../datasources/jaeger" >}})
|
||||||
- [Zipkin](https://grafana.com/docs/grafana/latest/datasources/zipkin/)
|
- [Zipkin]({{< relref "../../datasources/zipkin" >}})
|
||||||
- [Tempo](https://grafana.com/docs/grafana/latest/datasources/tempo/)
|
- [Tempo]({{< relref "../../datasources/tempo" >}})
|
||||||
- [Testdata](https://grafana.com/docs/grafana/latest/datasources/testdata/)
|
- [Testdata]({{< relref "../../datasources/testdata" >}})
|
||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
- [Grafana data sources](https://grafana.com/docs/grafana/latest/datasources/)
|
- [Grafana data sources]({{< relref "../../datasources" >}})
|
||||||
- [Add a data source](https://grafana.com/docs/grafana/latest/datasources/add-a-data-source/)
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
aliases:
|
aliases:
|
||||||
- ../metrics/
|
- ../metrics/
|
||||||
- ../unified-alerting/fundamentals/evaluate-grafana-alerts/
|
- ../unified-alerting/fundamentals/evaluate-grafana-alerts/
|
||||||
|
description: How to alert on numeric data
|
||||||
title: Alerting on numeric data
|
title: Alerting on numeric data
|
||||||
weight: 116
|
weight: 116
|
||||||
---
|
---
|
||||||
@@ -23,11 +24,11 @@ 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]({{< relref "/docs/grafana/latest/developers/plugins/metadata" >}}))
|
- community developed backend data sources with alerting enabled (`backend` and `alerting` properties are set in the [plugin.json]({{< relref "../../developers/plugins/metadata" >}}))
|
||||||
|
|
||||||
### Metrics from the alerting engine
|
### Metrics from the alerting engine
|
||||||
|
|
||||||
The alerting engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics]({{< relref "/docs/grafana/latest/setup-grafana/set-up-grafana-monitoring" >}}).
|
The alerting engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics]({{< relref "../../setup-grafana/set-up-grafana-monitoring" >}}).
|
||||||
|
|
||||||
| Metric Name | Type | Description |
|
| Metric Name | Type | Description |
|
||||||
| ------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------- |
|
| ------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------- |
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ The notification logs and silences are persisted in the database periodically an
|
|||||||
|
|
||||||
## Useful links
|
## Useful links
|
||||||
|
|
||||||
[Configure alerting high availability](https://grafana.com/docs/grafana/next/alerting/set-up/configure-high-availability)
|
[Configure alerting high availability]({{< relref "../../set-up/configure-high-availability" >}})
|
||||||
|
|||||||
@@ -0,0 +1,132 @@
|
|||||||
|
---
|
||||||
|
title: Notification Policies
|
||||||
|
description: Introduction to Notification Policies and how they work
|
||||||
|
weight: 409
|
||||||
|
keywords:
|
||||||
|
- grafana
|
||||||
|
- alerting
|
||||||
|
- notification policies
|
||||||
|
---
|
||||||
|
|
||||||
|
# Notification Policies
|
||||||
|
|
||||||
|
Notification policies provide you with a flexible way of routing alerts to various different receivers. Using label matchers, you can modify alert notification delivery without having to update every individual alert rule.
|
||||||
|
|
||||||
|
Learn more about how notification policies work and are structured, so that you can make the most out of setting up your notification policies.
|
||||||
|
|
||||||
|
## Policy tree
|
||||||
|
|
||||||
|
Notification policies are _not_ a list, but rather are structured according to a [tree structure](https://en.wikipedia.org/wiki/Tree_structure). This means that each policy can have child policies, and so on. The root of the notification policy tree is called the **Default notification policy**.
|
||||||
|
|
||||||
|
Each policy consists of a set of label matchers (0 or more) that specify which labels they are or aren't interested in handling.
|
||||||
|
|
||||||
|
For more information on label matching, see [how label matching works]({{< relref "../annotation-label/labels-and-label-matchers.md" >}}).
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
If you haven't configured any label matchers for your notification policy, your notification policy will match _all_ alert instances. This may prevent child policies from being evaluated unless you have enabled **Continue matching siblings** on the notification policy.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
## Routing
|
||||||
|
|
||||||
|
To determine which notification policy will handle which alert instances, you have to start by looking at the existing set of notification policies, starting with the default notification policy.
|
||||||
|
|
||||||
|
If no policies other than the default policy are configured, the default policy will handle the alert instance.
|
||||||
|
|
||||||
|
If policies other than the default policy are defined, it will inspect those notification policies in descending order.
|
||||||
|
|
||||||
|
If a notification policy has label matchers that match the labels of the alert instance, it will descend in to its child policies and, if there are any, will continue to look for any child policies that might have label matchers that further narrow down the set of labels, and so forth until no more child policies have been found.
|
||||||
|
|
||||||
|
If no child policies are defined in a notification policy or if none of the child policies have any label matchers that match the alert instance's labels, the default notification policy is used.
|
||||||
|
|
||||||
|
As soon as a matching policy is found, the system does not continue to look for other matching policies. If you want to continue to look for other policies that may match, enable **Continue matching siblings** on that particular policy.
|
||||||
|
|
||||||
|
Lastly, if none of the notification policies are selected the default notification policy is used.
|
||||||
|
|
||||||
|
### Routing example
|
||||||
|
|
||||||
|
Here is an example of a relatively simple notification policy tree and some alert instances.
|
||||||
|
|
||||||
|
{{< figure src="/media/docs/alerting/notification-routing.png" max-width="750px" caption="Notification policy routing" >}}
|
||||||
|
|
||||||
|
Here's a breakdown of how these policies are selected:
|
||||||
|
|
||||||
|
**Pod stuck in CrashLoop** does not have a `severity` label, so none of its child policies are matched. It does have a `team=operations` label, so the first policy is matched.
|
||||||
|
|
||||||
|
The `team=security` policy is not evaluated since we already found a match and **Continue matching siblings** was not configured for that policy.
|
||||||
|
|
||||||
|
**Disk Usage – 80%** has both a `team` and `severity` label, and matches a child policy of the operations team.
|
||||||
|
|
||||||
|
**Unauthorized log entry** has a `team` label but does not match the first policy (`team=operations`) since the values are not the same, so it will continue searching and match the `team=security` policy. It does not have any child policies, so the additional `severity=high` label is ignored.
|
||||||
|
|
||||||
|
## Inheritance
|
||||||
|
|
||||||
|
In addition to child policies being a useful concept for routing alert instances, they also inherit properties from their parent policy. This also applies to any policies that are child policies of the default notification policy.
|
||||||
|
|
||||||
|
The following properties are inherited by child policies:
|
||||||
|
|
||||||
|
- Contact point
|
||||||
|
- Grouping options
|
||||||
|
- Timing options
|
||||||
|
- Mute timings
|
||||||
|
|
||||||
|
Each of these properties can be overwritten by an individual policy should you wish to override the inherited properties.
|
||||||
|
|
||||||
|
To inherit a contact point from the parent policy, leave it blank. To override the inherited grouping options, enable **Override grouping**. To override the inherited timing options, enable **Override general timings**.
|
||||||
|
|
||||||
|
### Inheritance example
|
||||||
|
|
||||||
|
The example below shows how the notification policy tree from our previous example allows the child policies of the `team=operations` to inherit its contact point.
|
||||||
|
|
||||||
|
In this way, we can avoid having to specify the same contact point multiple times for each child policy.
|
||||||
|
|
||||||
|
{{< figure src="/media/docs/alerting/notification-inheritance.png" max-width="750px" caption="Notification policy inheritance" >}}
|
||||||
|
|
||||||
|
## Additional configuration options
|
||||||
|
|
||||||
|
### Grouping
|
||||||
|
|
||||||
|
Grouping is a key concept in Grafana Alerting that categorizes alert instances of similar nature into a single funnel. This allows you to properly route alert notifications during larger outages when many parts of a system fail at once causing a high number of alerts to fire simultaneously.
|
||||||
|
|
||||||
|
Grouping options determine _which_ alert instances are bundled together.
|
||||||
|
|
||||||
|
When an alert instance is matched to a specific notification policy, it no longer has any association with its alert rule.
|
||||||
|
|
||||||
|
To group alert instances by the original alert rule, set the grouping using `alertname` and `grafana_folder` (since alert names are not unique across multiple folders).
|
||||||
|
|
||||||
|
This is also the default setting for the built-in Grafana Alertmanager.
|
||||||
|
|
||||||
|
Should you wish to group alert instances by something other than the alert rule, check the grouping to any other combination of label keys.
|
||||||
|
|
||||||
|
#### Turn off grouping
|
||||||
|
|
||||||
|
Should you wish to receive every alert instance as a separate notification, choose to do so by grouping by a special label called `...`.
|
||||||
|
|
||||||
|
#### Everything in a single group
|
||||||
|
|
||||||
|
Should you wish to receive all alert instance in a single notification, create an empty list of labels to group by.
|
||||||
|
|
||||||
|
### Timing options
|
||||||
|
|
||||||
|
Timing options can be updated and affect _when_ a group of notifications are sent to their corresponding contact point.
|
||||||
|
|
||||||
|
#### Group wait
|
||||||
|
|
||||||
|
The waiting time until the initial notification is sent for a **new group** created by an incoming alert.
|
||||||
|
|
||||||
|
**Default** 30 seconds
|
||||||
|
|
||||||
|
#### Group interval
|
||||||
|
|
||||||
|
The waiting time to send a batch of alert instances for **existing groups**.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
This means that notifications will **not** be sent any sooner than 5 minutes (default) since the last batch of updates were delivered, regardless of whether the alert rule interval for those alert instances was lower.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
**Default** 5 minutes
|
||||||
|
|
||||||
|
#### Repeat interval
|
||||||
|
|
||||||
|
The waiting time to resend an alert after they have successfully been sent. This means notifications for **firing** alerts will be re-delivered every 4 hours (default).
|
||||||
|
|
||||||
|
**Default** 4 hours
|
||||||
@@ -45,7 +45,7 @@ The following table contains the integrations supported in Grafana:
|
|||||||
| ------------------------------------------------ | ------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------------------ | ------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||||
| [DingDing](https://www.dingtalk.com/en) | `dingding` | Supported | N/A |
|
| [DingDing](https://www.dingtalk.com/en) | `dingding` | Supported | N/A |
|
||||||
| [Discord](https://discord.com/) | `discord` | Supported | N/A |
|
| [Discord](https://discord.com/) | `discord` | Supported | N/A |
|
||||||
| [Email](#email) | `email` | Supported | Supported |
|
| Email | `email` | Supported | Supported |
|
||||||
| [Google Hangouts](https://hangouts.google.com/) | `googlechat` | Supported | N/A |
|
| [Google Hangouts](https://hangouts.google.com/) | `googlechat` | Supported | N/A |
|
||||||
| [Kafka](https://kafka.apache.org/) | `kafka` | Supported | N/A |
|
| [Kafka](https://kafka.apache.org/) | `kafka` | Supported | N/A |
|
||||||
| [Line](https://line.me/en/) | `line` | Supported | N/A |
|
| [Line](https://line.me/en/) | `line` | Supported | N/A |
|
||||||
@@ -59,9 +59,9 @@ The following table contains the integrations supported in Grafana:
|
|||||||
| [Telegram](https://telegram.org/) | `telegram` | Supported | N/A |
|
| [Telegram](https://telegram.org/) | `telegram` | Supported | N/A |
|
||||||
| [Threema](https://threema.ch/) | `threema` | Supported | N/A |
|
| [Threema](https://threema.ch/) | `threema` | Supported | N/A |
|
||||||
| [VictorOps](https://help.victorops.com/) | `victorops` | Supported | Supported |
|
| [VictorOps](https://help.victorops.com/) | `victorops` | Supported | Supported |
|
||||||
| [Webhook](#webhook) | `webhook` | Supported | Supported ([different format](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config)) |
|
| Webhook | `webhook` | Supported | Supported ([different format](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config)) |
|
||||||
| [Cisco Webex Teams](#webex) | `webex` | Supported | Supported |
|
| Cisco Webex Teams | `webex` | Supported | Supported |
|
||||||
| [WeCom](#wecom) | `wecom` | Supported | N/A |
|
| WeCom | `wecom` | Supported | N/A |
|
||||||
| [Zenduty](https://www.zenduty.com/) | `webhook` | Supported | N/A |
|
| [Zenduty](https://www.zenduty.com/) | `webhook` | Supported | N/A |
|
||||||
|
|
||||||
## Templating notifications
|
## Templating notifications
|
||||||
|
|||||||
@@ -27,7 +27,9 @@ An alert rule can be in either of the following states:
|
|||||||
| **Pending** | At least one time series returned by the evaluation engine is `Pending`. |
|
| **Pending** | At least one time series returned by the evaluation engine is `Pending`. |
|
||||||
| **Firing** | At least one time series returned by the evaluation engine is `Firing`. |
|
| **Firing** | At least one time series returned by the evaluation engine is `Firing`. |
|
||||||
|
|
||||||
> **Note:** Alerts will transition first to `pending` and then `firing`, thus it will take at least two evaluation cycles before an alert is fired.
|
{{% admonition type="note" %}}
|
||||||
|
Alerts will transition first to `pending` and then `firing`, thus it will take at least two evaluation cycles before an alert is fired.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Alert instance state
|
## Alert instance state
|
||||||
|
|
||||||
|
|||||||
46
docs/sources/alerting/legacy-alerting-deprecation.md
Normal file
46
docs/sources/alerting/legacy-alerting-deprecation.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
title: Legacy alerting deprecation
|
||||||
|
description: Legacy alerting deprecation notice
|
||||||
|
weight: 999
|
||||||
|
keywords:
|
||||||
|
- grafana
|
||||||
|
- alerting
|
||||||
|
---
|
||||||
|
|
||||||
|
# Legacy alerting deprecation
|
||||||
|
|
||||||
|
Starting with Grafana v9.0.0, legacy alerting is deprecated, meaning that it is no longer actively maintained or supported by Grafana. As of Grafana v10.0.0, we do not contribute or accept external contributions to the codebase apart from CVE fixes.
|
||||||
|
|
||||||
|
Legacy alerting refers to the old alerting system that was used prior to the introduction of Grafana Alerting; the new alerting system in Grafana.
|
||||||
|
|
||||||
|
The decision to deprecate legacy alerting was made to encourage users to migrate to the new alerting system, which offers a more powerful and flexible alerting experience based on Prometheus Alertmanager.
|
||||||
|
|
||||||
|
Users who are still using legacy alerting are encouraged to migrate their alerts to the new system as soon as possible to ensure that they continue to receive new features, bug fixes, and support.
|
||||||
|
|
||||||
|
However, we will still patch CVEs until legacy alerting is completely removed in Grafana 11; honoring our commitment to building and distributing secure software.
|
||||||
|
|
||||||
|
We have provided [instructions]({{< relref "./migrating-alerts" >}}) on how to migrate to the new alerting system, making the process as easy as possible for users.
|
||||||
|
|
||||||
|
## Why are we deprecating legacy alerting?
|
||||||
|
|
||||||
|
The new Grafana alerting system is more powerful and flexible than the legacy alerting feature.
|
||||||
|
|
||||||
|
The new system is based on Prometheus Alertmanager, which offers a more comprehensive set of features for defining and managing alerts. With the new alerting system, users can create alerts based on complex queries, configure alert notifications via various integrations, and set up sophisticated alerting rules with support for conditional expressions, aggregation, and grouping.
|
||||||
|
|
||||||
|
Overall, the new alerting system in Grafana is a major improvement over the legacy alerting feature, providing users with a more powerful and flexible alerting experience.
|
||||||
|
|
||||||
|
Additionally, legacy alerting still requires Angular to function and we are [planning to remove support for it]({{< relref "../developers/angular_deprecation" >}}) in Grafana 11.
|
||||||
|
|
||||||
|
## When will we remove legacy alerting completely?
|
||||||
|
|
||||||
|
Legacy alerting will be removed from the code-base in Grafana 11, following the same timeline as the [Angular deprecation]({{< relref "../developers/angular_deprecation" >}}).
|
||||||
|
|
||||||
|
## How do I migrate to the new Grafana alerting?
|
||||||
|
|
||||||
|
Refer to our [migration instructions]({{< relref "./migrating-alerts/opt-in" >}}).
|
||||||
|
|
||||||
|
### Links
|
||||||
|
|
||||||
|
- [Upgrade Alerting]({{< relref "./migrating-alerts" >}})
|
||||||
|
- [Legacy alerting differences and limitations]({{< relref "./migrating-alerts/migrating-legacy-alerts" >}})
|
||||||
|
- [Angular support deprecation]({{< relref "../developers/angular_deprecation" >}})
|
||||||
@@ -12,12 +12,12 @@ weight: 160
|
|||||||
|
|
||||||
Choosing how, when, and where to send your alert notifications is an important part of setting up your alerting system. These decisions will have a direct impact on your ability to resolve issues quickly and not miss anything important.
|
Choosing how, when, and where to send your alert notifications is an important part of setting up your alerting system. These decisions will have a direct impact on your ability to resolve issues quickly and not miss anything important.
|
||||||
|
|
||||||
As a first step, define your contact points; where to send your alert notifications to. A contact point can be a set of destinations for matching notifications. Add notification templates to contact points for reuse and consistent messaging in your notifications.
|
As a first step, define your contact points; where to send your alert notifications to. A contact point is a set of one or more [integrations]({{< relref "./manage-contact-points/configure-integrations" >}}) that are used to deliver notifications. Add notification templates to contact points for reuse and consistent messaging in your notifications.
|
||||||
|
|
||||||
Next, create a notification policy which is a set of rules for where, when and how your alerts are routed to contact points. In a notification policy, you define where to send your alert notifications by choosing one of the contact points you created.Add mute timings to your notification policy. A mute timing is a recurring interval of time during which you don’t want any notifications to be sent out.
|
Next, create a notification policy which is a set of rules for where, when and how your alerts are routed to contact points. In a notification policy, you define where to send your alert notifications by choosing one of the contact points you created. Add mute timings to your notification policy. A mute timing is a recurring interval of time during which you don’t want any notifications to be sent out.
|
||||||
|
|
||||||
You can also add silences to stop notifications from one or more alert rules. The difference between a silence and a mute timing is that a silence only lasts for only a specified window of time.
|
You can also add silences to stop notifications from one or more alert rules. The difference between a silence and a mute timing is that a silence only lasts for a specified window of time.
|
||||||
|
|
||||||
When an alert rule fires, the alert ruler sends alert instances to the Alertmanager; one alert rule can trigger multiple individual alert instances.
|
When an alert rule fires, the ruler sends alert instances to the Alertmanager; one alert rule can trigger multiple individual alert instances.
|
||||||
|
|
||||||
The Alertmanager receives these alert instances and then handles silences, groups alerts, and sends notifications to your contact points as defined in the notification policy.
|
The Alertmanager receives these alert instances and then handles silences, groups alerts, and sends notifications to your contact points as defined in the notification policy.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ aliases:
|
|||||||
- ../fundamentals/alertmanager/
|
- ../fundamentals/alertmanager/
|
||||||
- ../metrics/
|
- ../metrics/
|
||||||
- ../unified-alerting/fundamentals/alertmanager/
|
- ../unified-alerting/fundamentals/alertmanager/
|
||||||
|
description: Intro to the different Alertmanagers
|
||||||
title: Alertmanager
|
title: Alertmanager
|
||||||
weight: 100
|
weight: 100
|
||||||
---
|
---
|
||||||
@@ -11,7 +12,7 @@ weight: 100
|
|||||||
|
|
||||||
Alertmanager enables you to quickly and efficiently manage and respond to alerts. It receives alerts, handles silencing, inhibition, grouping, and routing by sending notifications out via your channel of choice, for example, email or Slack.
|
Alertmanager enables you to quickly and efficiently manage and respond to alerts. It receives alerts, handles silencing, inhibition, grouping, and routing by sending notifications out via your channel of choice, for example, email or Slack.
|
||||||
|
|
||||||
In Grafana, you can use the Cloud Alertmanager, Grafana Alertmanager, or an external Alertmanager. You can also run multiple alertmanagers; your decision depends on your set up and where your alerts are being generated.
|
In Grafana, you can use the Cloud Alertmanager, Grafana Alertmanager, or an external Alertmanager. You can also run multiple Alertmanagers; your decision depends on your set up and where your alerts are being generated.
|
||||||
|
|
||||||
**Cloud Alertmanager**
|
**Cloud Alertmanager**
|
||||||
|
|
||||||
@@ -19,7 +20,7 @@ Cloud Alertmanager runs in Grafana Cloud and it can receive alerts from Grafana,
|
|||||||
|
|
||||||
**Grafana Alertmanager**
|
**Grafana Alertmanager**
|
||||||
|
|
||||||
Grafana Alertmanager is an internal Alertmanager that is pre-configured and available for selection by default if you run Grafana on-premise or open-source.
|
Grafana Alertmanager is an internal Alertmanager that is pre-configured and available for selection by default if you run Grafana on-premises or open-source.
|
||||||
|
|
||||||
The Grafana Alertmanager can receive alerts from Grafana, but it cannot receive alerts from outside Grafana, for example, from Mimir or Loki.
|
The Grafana Alertmanager can receive alerts from Grafana, but it cannot receive alerts from outside Grafana, for example, from Mimir or Loki.
|
||||||
|
|
||||||
@@ -27,13 +28,13 @@ The Grafana Alertmanager can receive alerts from Grafana, but it cannot receive
|
|||||||
|
|
||||||
**External Alertmanager**
|
**External Alertmanager**
|
||||||
|
|
||||||
If you want to use a single alertmanager to receive all your Grafana, Loki, Mimir, and Prometheus alerts, you can set up Grafana to use an external Alertmanager. This external Alertmanager can be configured and administered from within Grafana itself.
|
If you want to use a single Alertmanager to receive all your Grafana, Loki, Mimir, and Prometheus alerts, you can set up Grafana to use an external Alertmanager. This external Alertmanager can be configured and administered from within Grafana itself.
|
||||||
|
|
||||||
Here are two examples of when you may want to configure your own external alertmanager and send your alerts there instead of the Grafana Alertmanager:
|
Here are two examples of when you may want to configure your own external alertmanager and send your alerts there instead of the Grafana Alertmanager:
|
||||||
|
|
||||||
1. You may already have alertmanagers on-premise in your own Cloud infrastructure that you have set up and still want to use, because you have other alert generators, such as Prometheus.
|
1. You may already have Alertmanagers on-premises in your own Cloud infrastructure that you have set up and still want to use, because you have other alert generators, such as Prometheus.
|
||||||
|
|
||||||
2. You want to use both Prometheus on-premise and hosted Grafana to send alerts to the same alertmanager that runs in your Cloud infrastructure.
|
2. You want to use both Prometheus on-premises and hosted Grafana to send alerts to the same Alertmanager that runs in your Cloud infrastructure.
|
||||||
|
|
||||||
Alertmanagers are visible from the drop-down menu on the Alerting Contact Points, Notification Policies, and Silences pages.
|
Alertmanagers are visible from the drop-down menu on the Alerting Contact Points, Notification Policies, and Silences pages.
|
||||||
|
|
||||||
@@ -43,4 +44,4 @@ If you are provisioning your data source, set the flag `handleGrafanaManagedAler
|
|||||||
|
|
||||||
[Prometheus Alertmanager documentation](https://prometheus.io/docs/alerting/latest/alertmanager/)
|
[Prometheus Alertmanager documentation](https://prometheus.io/docs/alerting/latest/alertmanager/)
|
||||||
|
|
||||||
[Add an external Alertmanager](https://grafana.com/docs/grafana/latest/alerting/set-up/configure-alertmanager/)
|
[Add an external Alertmanager]({{< relref "../set-up/configure-alertmanager" >}})
|
||||||
|
|||||||
@@ -16,25 +16,23 @@ weight: 300
|
|||||||
|
|
||||||
# Manage notification policies
|
# Manage notification policies
|
||||||
|
|
||||||
Notification policies determine how alerts are routed to contact points. Policies have a tree structure, where each policy can have one or more nested policies. Each policy, except for the default policy, can also match specific alert labels. Each alert is evaluated by the default policy and subsequently by each nested policy. If the **Continue matching subsequent sibling nodes** option is enabled for a nested policy, then evaluation continues even after one or more matches. A parent policy’s configuration settings and contact point information govern the behavior of an alert that does not match any of the nested policies. A default policy governs any alert that does not match a nested policy.
|
Notification policies determine how alerts are routed to contact points.
|
||||||
|
|
||||||
You can configure Grafana managed notification policies as well as notification policies for an external Alertmanager data source.
|
Policies have a tree structure, where each policy can have one or more nested policies. Each policy, except for the default policy, can also match specific alert labels.
|
||||||
|
|
||||||
## Grouping
|
Each alert is evaluated by the default policy and subsequently by each nested policy.
|
||||||
|
|
||||||
Grouping is a new and key concept of Grafana Alerting that categorizes alert notifications of similar nature into a single funnel. This allows you to properly route alert notifications during larger outages when many parts of a system fail at once causing a high number of alerts to fire simultaneously.
|
If the **Continue matching subsequent sibling nodes** option is enabled for a nested policy, then evaluation continues even after one or more matches. A parent policy’s configuration settings and contact point information govern the behavior of an alert that does not match any of the nested policies. A default policy governs any alert that does not match a nested policy.
|
||||||
|
|
||||||
For example, suppose you have 100 services connected to a database in different environments. These services are differentiated by the label `env=environmentname`. An alert rule is in place to monitor whether your services can reach the database named `alertname=DatabaseUnreachable`.
|
You can configure Grafana-managed notification policies as well as notification policies for an external Alertmanager data source.
|
||||||
|
|
||||||
When a network partition occurs, half of your services can no longer reach the database. As a result, 50 different alerts (assuming half of your services) are fired. For this situation, you want to receive a single-page notification (as opposed to 50) with a list of the environments that are affected.
|
For more information on notification policies, see [fundamentals of Notification Policies]({{< relref "../fundamentals/notification-policies/index.md" >}}).
|
||||||
|
|
||||||
You can configure grouping to be `group_by: [alertname]` (take note that the `env` label is omitted). With this configuration in place, Grafana sends a single compact notification that has all the affected environments for this alert rule.
|
|
||||||
|
|
||||||
> **Note:** Grafana also has a special label named `...` that you can use to group all alerts by all labels (effectively disabling grouping), therefore each alert will go into its own group. It is different from the default of `group_by: null` where **all** alerts go into a single group.
|
|
||||||
|
|
||||||
## Edit default notification policy
|
## Edit default notification policy
|
||||||
|
|
||||||
> **Note:** Before Grafana v8.2, the configuration of the embedded Alertmanager was shared across organizations. Users of Grafana 8.0 and 8.1 are advised to use the new Grafana 8 Alerts only if they have one organization. Otherwise, silences for the Grafana managed alerts will be visible by all organizations.
|
{{% admonition type="note" %}}
|
||||||
|
Before Grafana v8.2, the configuration of the embedded Alertmanager was shared across organizations. Users of Grafana 8.0 and 8.1 are advised to use the new Grafana 8 Alerts only if they have one organization. Otherwise, silences for the Grafana managed alerts will be visible by all organizations.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
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**.
|
||||||
@@ -53,7 +51,7 @@ You can configure grouping to be `group_by: [alertname]` (take note that the `en
|
|||||||
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 and click **+New specific 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.
|
||||||
@@ -66,7 +64,7 @@ You can configure grouping to be `group_by: [alertname]` (take note that the `en
|
|||||||
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. Expand the specific policy you want to update.
|
1. Expand the specific policy you want to update.
|
||||||
1. Click **+ Add nested policy**, then add the details using information in [Add new specific policy](#add-new-specific-policy).
|
1. Click **+ Add nested policy**, then add the details using information in [Add new specific policy](#add-new-nested-policy).
|
||||||
1. Click **Save policy** to save your changes.
|
1. Click **Save policy** to save your changes.
|
||||||
|
|
||||||
## Edit specific policy
|
## Edit specific policy
|
||||||
@@ -74,7 +72,7 @@ You can configure grouping to be `group_by: [alertname]` (take note that the `en
|
|||||||
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. Find the policy you want to edit, then click **Edit**.
|
1. Find the policy you want to edit, then click **Edit**.
|
||||||
1. Make any changes using instructions in [Add new specific policy](#add-new-specific-policy).
|
1. Make any changes using instructions in [Add new specific policy](#add-new-nested-policy).
|
||||||
1. Click **Save policy**.
|
1. Click **Save policy**.
|
||||||
|
|
||||||
## Searching for policies
|
## Searching for policies
|
||||||
|
|||||||
@@ -61,3 +61,7 @@ To remove a silence, complete the following steps.
|
|||||||
1. Select the silence you want to end, then click **Unsilence**.
|
1. Select the silence you want to end, then click **Unsilence**.
|
||||||
|
|
||||||
> **Note:** You cannot remove a silence manually. Silences that have ended are retained and listed for five days.
|
> **Note:** You cannot remove a silence manually. Silences that have ended are retained and listed for five days.
|
||||||
|
|
||||||
|
## Useful links
|
||||||
|
|
||||||
|
[Aggregation operators](/docs/prometheus/latest/querying/operators/#aggregation-operators)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
description:
|
description: How to use images in notifications
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
@@ -13,7 +13,9 @@ weight: 500
|
|||||||
|
|
||||||
Images in notifications helps recipients of alert notifications better understand why an alert has fired or resolved by including a screenshot of the panel associated with the alert.
|
Images in notifications helps recipients of alert notifications better understand why an alert has fired or resolved by including a screenshot of the panel associated with the alert.
|
||||||
|
|
||||||
> **Note**: This feature is not supported in Mimir or Loki, or when Grafana is configured to send alerts to other Alertmanagers such as the Prometheus Alertmanager
|
{{% admonition type="note" %}}
|
||||||
|
This feature is not supported in Mimir or Loki, or when Grafana is configured to send alerts to other Alertmanagers such as the Prometheus Alertmanager
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
When an alert is fired or resolved Grafana takes a screenshot of the panel associated with the alert. This is determined via the Dashboard UID and Panel ID annotations of the rule. Grafana cannot take a screenshot for alerts that are not associated with a panel.
|
When an alert is fired or resolved Grafana takes a screenshot of the panel associated with the alert. This is determined via the Dashboard UID and Panel ID annotations of the rule. Grafana cannot take a screenshot for alerts that are not associated with a panel.
|
||||||
|
|
||||||
@@ -25,25 +27,27 @@ Refer to the table at the end of this page for a list of contact points and thei
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
1. To use images in notifications, Grafana must be set up to use [image rendering]({{< relref "/docs/grafana/latest/setup-grafana/image-rendering" >}}). You can either install the image rendering plugin or run it as a remote rendering service.
|
1. To use images in notifications, Grafana must be set up to use [image rendering]({{< relref "../../setup-grafana/image-rendering" >}}). You can either install the image rendering plugin or run it as a remote rendering service.
|
||||||
|
|
||||||
2. When a screenshot is taken it is saved to the [data]({{< relref "/docs/grafana/latest/setup-grafana/configure-grafana#paths" >}}) folder, even if Grafana is configured to upload screenshots to a cloud storage service. Grafana must have write-access to this folder otherwise screenshots cannot be saved to disk and an error will be logged for each failed screenshot attempt.
|
2. When a screenshot is taken it is saved to the [data]({{< relref "../../setup-grafana/configure-grafana#paths" >}}) folder, even if Grafana is configured to upload screenshots to a cloud storage service. Grafana must have write-access to this folder otherwise screenshots cannot be saved to disk and an error will be logged for each failed screenshot attempt.
|
||||||
|
|
||||||
3. You should use a cloud storage service unless sending alerts to Discord, Email, Pushover, Slack or Telegram. These integrations support either embedding screenshots in the email or attaching screenshots to the notification, while other integrations must link screenshots uploaded to a cloud storage bucket. If a cloud storage service has been configured then integrations that support both will link screenshots from the cloud storage bucket instead of embedding or attaching screenshots to the notification.
|
3. You should use a cloud storage service unless sending alerts to Discord, Email, Pushover, Slack or Telegram. These integrations support either embedding screenshots in the email or attaching screenshots to the notification, while other integrations must link screenshots uploaded to a cloud storage bucket. If a cloud storage service has been configured then integrations that support both will link screenshots from the cloud storage bucket instead of embedding or attaching screenshots to the notification.
|
||||||
|
|
||||||
4. If uploading screenshots to a cloud storage service such as Amazon S3, Azure Blob Storage or Google Cloud Storage; and accessing screenshots in the bucket requires authentication, logging into a VPN or corporate network; then image previews might not work in all instant messaging and communication platforms as some services rewrite URLs to use their CDN. If this happens we recommend using [integrations which support uploading images]({{<relref "#supported-contact-points">}}) or [disabling images in notifications]({{<relref "#configuration">}}) altogether.
|
4. If uploading screenshots to a cloud storage service such as Amazon S3, Azure Blob Storage or Google Cloud Storage; and accessing screenshots in the bucket requires authentication, logging into a VPN or corporate network; then image previews might not work in all instant messaging and communication platforms as some services rewrite URLs to use their CDN. If this happens we recommend using [integrations which support uploading images]({{< relref "#supported-contact-points" >}}) or [disabling images in notifications]({{< relref "#configuration" >}}) altogether.
|
||||||
|
|
||||||
5. When uploading screenshots to a cloud storage service Grafana uses a random 20 character (30 characters for Azure Blob Storage) filename for each image. This makes URLs hard to guess but not impossible.
|
5. When uploading screenshots to a cloud storage service Grafana uses a random 20 character (30 characters for Azure Blob Storage) filename for each image. This makes URLs hard to guess but not impossible.
|
||||||
|
|
||||||
6. Grafana does not delete screenshots from cloud storage. We recommend configuring a retention policy with your cloud storage service to delete screenshots older than 1 month.
|
6. Grafana does not delete screenshots from cloud storage. We recommend configuring a retention policy with your cloud storage service to delete screenshots older than 1 month.
|
||||||
|
|
||||||
7. If Grafana is configured to upload screenshots to its internal web server, and accessing Grafana requires logging into a VPN or corporate network; image previews might not work in all instant messaging and communication platforms as some services rewrite URLs to use their CDN. If this happens we recommend using [integrations which support uploading images]({{<relref "#supported-contact-points">}}) or [disabling images in notifications]({{<relref "#configuration">}}) altogether.
|
7. If Grafana is configured to upload screenshots to its internal web server, and accessing Grafana requires logging into a VPN or corporate network; image previews might not work in all instant messaging and communication platforms as some services rewrite URLs to use their CDN. If this happens we recommend using [integrations which support uploading images]({{< relref "#supported-contact-points" >}}) or [disabling images in notifications]({{< relref "#configuration" >}}) altogether.
|
||||||
|
|
||||||
8. Grafana does not delete screenshots uploaded to its internal web server. To delete screenshots from `static_root_path/images/attachments` after a certain amount of time we recommend setting up a CRON job.
|
8. Grafana does not delete screenshots uploaded to its internal web server. To delete screenshots from `static_root_path/images/attachments` after a certain amount of time we recommend setting up a CRON job.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
> **Note:** Grafana Cloud users can request this feature by [opening a support ticket in the Cloud Portal](/profile/org#support).
|
{{% admonition type="note" %}}
|
||||||
|
Grafana Cloud users can request this feature by [opening a support ticket in the Cloud Portal](/profile/org#support).
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
Having installed either the image rendering plugin, or set up Grafana to use a remote rendering service, set `capture` in `[unified_alerting.screenshots]` to `true`:
|
Having installed either the image rendering plugin, or set up Grafana to use a remote rendering service, set `capture` in `[unified_alerting.screenshots]` to `true`:
|
||||||
|
|
||||||
@@ -59,9 +63,9 @@ 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 "/docs/grafana/latest/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.
|
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.
|
||||||
|
|
||||||
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 "/docs/grafana/latest/setup-grafana/configure-grafana#external_image_storage" >}}).
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ aliases:
|
|||||||
- ../../contact-points/edit-contact-point/
|
- ../../contact-points/edit-contact-point/
|
||||||
- ../../contact-points/test-contact-point/
|
- ../../contact-points/test-contact-point/
|
||||||
- ../create-contact-point/
|
- ../create-contact-point/
|
||||||
|
description: How to manage your contact points
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
@@ -52,7 +53,9 @@ Complete the following steps to delete a contact point.
|
|||||||
1. Find the contact point to delete, and then click **Delete** (trash icon).
|
1. Find the contact point to delete, and then click **Delete** (trash icon).
|
||||||
1. In the confirmation dialog, click **Yes, delete**.
|
1. In the confirmation dialog, click **Yes, delete**.
|
||||||
|
|
||||||
> **Note:** You cannot delete contact points that are in use by a notification policy. You will have to either delete the notification policy or update it to use another contact point.
|
{{% admonition type="note" %}}
|
||||||
|
You cannot delete contact points that are in use by a notification policy. You will have to either delete the notification policy or update it to use another contact point.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
## Test a contact point
|
## Test a contact point
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ A mute timing is a recurring interval of time when no new notifications for a po
|
|||||||
|
|
||||||
Similar to silences, mute timings do not prevent alert rules from being evaluated, nor do they stop alert instances from being shown in the user interface. They only prevent notifications from being created.
|
Similar to silences, mute timings do not prevent alert rules from being evaluated, nor do they stop alert instances from being shown in the user interface. They only prevent notifications from being created.
|
||||||
|
|
||||||
You can configure Grafana managed mute timings as well as mute timings for an [external Alertmanager data source]({{< relref "/docs/grafana/latest/datasources/alertmanager" >}}). For more information, refer to [Alertmanager documentation]({{< relref "/docs/grafana/latest/alerting/manage-notifications/alertmanager" >}}).
|
You can configure Grafana managed mute timings as well as mute timings for an [external Alertmanager data source]({{< relref "../../datasources/alertmanager" >}}). For more information, refer to [Alertmanager documentation]({{< relref "./alertmanager" >}}).
|
||||||
|
|
||||||
## Mute timings vs silences
|
## Mute timings vs silences
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
- notifications
|
- notifications
|
||||||
- templates
|
- templates
|
||||||
|
description: How to customize your notifications using templating
|
||||||
title: Customize notifications
|
title: Customize notifications
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
@@ -8,6 +7,7 @@ keywords:
|
|||||||
- create templates
|
- create templates
|
||||||
- edit templates
|
- edit templates
|
||||||
- delete templates
|
- delete templates
|
||||||
|
description: How to create notification templates
|
||||||
title: Create notification templates
|
title: Create notification templates
|
||||||
weight: 200
|
weight: 200
|
||||||
---
|
---
|
||||||
@@ -30,14 +30,10 @@ To create a template, complete the following steps.
|
|||||||
|
|
||||||
3. Write the content of the template in the content field.
|
3. Write the content of the template in the content field.
|
||||||
|
|
||||||
{{< figure max-width="940px" src="/static/img/docs/alerting/unified/new-notification-template-email-subject-9-4.png" caption="New notification template email.subject" >}}
|
4. Click **Save**.
|
||||||
|
|
||||||
4. Click Save.
|
|
||||||
|
|
||||||
`{{ define "email.subject" }}` and `{{ end }}` is automatically added to the start and end of the content:
|
`{{ define "email.subject" }}` and `{{ end }}` is automatically added to the start and end of the content:
|
||||||
|
|
||||||
{{< figure max-width="940px" src="/static/img/docs/alerting/unified/edit-notification-template-email-subject-9-4.png" caption="Edit notification template email.subject" >}}
|
|
||||||
|
|
||||||
To create a notification template that contains more than one template:
|
To create a notification template that contains more than one template:
|
||||||
|
|
||||||
1. Click **Add Template**.
|
1. Click **Add Template**.
|
||||||
@@ -46,9 +42,43 @@ To create a notification template that contains more than one template:
|
|||||||
|
|
||||||
3. Write each template in the Content field, including `{{ define "name-of-template" }}` and `{{ end }}` at the start and end of each template.
|
3. Write each template in the Content field, including `{{ define "name-of-template" }}` and `{{ end }}` at the start and end of each template.
|
||||||
|
|
||||||
{{< figure max-width="940px" src="/static/img/docs/alerting/unified/new-notification-template-email-9-4.png" caption="New notification template" >}}
|
4. Click **Save**.
|
||||||
|
|
||||||
4. Click Save.
|
## Preview notification templates
|
||||||
|
|
||||||
|
Preview how your notification templates will look before using them in your contact points, helping you understand the result of the template you are creating as well as enabling you to fix any errors before saving it.
|
||||||
|
|
||||||
|
**Note:** This feature is only for Grafana Alertmanager.
|
||||||
|
|
||||||
|
To preview your notification templates:
|
||||||
|
|
||||||
|
1. Navigate to **Alerts&IRM** -> **Alerting** -> **Contact points**.
|
||||||
|
1. Click **+Add template** or edit an existing template.
|
||||||
|
1. Add or update your template content.
|
||||||
|
|
||||||
|
Default data is provided and you can add or edit alert data to it as well as alert instances. You can add alert data directly in the Payload data window itself or click **Choose alert instances** or **Add alert data**.
|
||||||
|
|
||||||
|
1. [Optional] To add alert data from existing alert instances:
|
||||||
|
|
||||||
|
a. Click **Choose alert instances**.
|
||||||
|
|
||||||
|
b. Hover over the alert instances to view more information on each alert instance.
|
||||||
|
|
||||||
|
c. Click **Confirm** to add the alert instance(s) to the payload.
|
||||||
|
|
||||||
|
1. [Optional] To add alert data using the Alert data editor, click **Add alert data:**
|
||||||
|
|
||||||
|
a. Add annotations, custom labels and/or set a dashboard or a panel.
|
||||||
|
|
||||||
|
b. Toggle Firing/resolved depending on whether you want to add firing or resolved alerts to your notification.
|
||||||
|
|
||||||
|
c. Click **Add alert data to payload**.
|
||||||
|
|
||||||
|
d. Click **Refresh preview** to see what your template content will look like and the corresponding payload data.
|
||||||
|
|
||||||
|
If there are any errors in your template, they are displayed in the Preview and you can correct them before saving.
|
||||||
|
|
||||||
|
1. Click **Save.**
|
||||||
|
|
||||||
## Template the subject of an email
|
## Template the subject of an email
|
||||||
|
|
||||||
@@ -149,7 +179,13 @@ Template the title of a Slack message to contain the number of firing and resolv
|
|||||||
|
|
||||||
## Template the content of a Slack message
|
## Template the content of a Slack message
|
||||||
|
|
||||||
Template the content of a Slack message to contain a description of all firing and resolved alerts, including their labels, annotations, Silence URL and Dashboard URL:
|
Template the content of a Slack message to contain a description of all firing and resolved alerts, including their labels, annotations, Silence URL and Dashboard URL.
|
||||||
|
|
||||||
|
**Note:**
|
||||||
|
|
||||||
|
This template is for Grafana-managed alerts only.
|
||||||
|
To use the template for Grafana Mimir/Loki-managed alerts, delete the references to DashboardURL and SilenceURL.
|
||||||
|
For more information, see the [Prometheus documentation on notifications](https://prometheus.io/docs/alerting/latest/notifications/).
|
||||||
|
|
||||||
```
|
```
|
||||||
1 firing alert(s):
|
1 firing alert(s):
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
- notifications
|
- notifications
|
||||||
- templates
|
- templates
|
||||||
|
description: Reference for templating notifications
|
||||||
title: Reference
|
title: Reference
|
||||||
weight: 400
|
weight: 400
|
||||||
---
|
---
|
||||||
@@ -41,7 +41,7 @@ weight: 400
|
|||||||
| Resolved alerts | `[]Alert` | List of all resolved alerts in this notification | `There are {{ len .Alerts.Resolved }} resolved alerts` |
|
| Resolved alerts | `[]Alert` | List of all resolved alerts in this notification | `There are {{ len .Alerts.Resolved }} resolved alerts` |
|
||||||
| GroupLabels | `KV` | The labels that group these alerts in this | `{{ .GroupLabels }}` |
|
| GroupLabels | `KV` | The labels that group these alerts in this | `{{ .GroupLabels }}` |
|
||||||
| CommonLabels | `KV` | The labels common to all alerts in this notification | `{{ .CommonLabels }}` |
|
| CommonLabels | `KV` | The labels common to all alerts in this notification | `{{ .CommonLabels }}` |
|
||||||
| CommonAnnotations | `KV` | The annotations common to all alerts i this notification | `{{ .CommonAnnotations }}` |
|
| CommonAnnotations | `KV` | The annotations common to all alerts in this notification | `{{ .CommonAnnotations }}` |
|
||||||
| ExternalURL | `string` | A link to Grafana, or the Alertmanager that sent this notification if using an external Alertmanager | `{{ .ExternalURL }}` |
|
| ExternalURL | `string` | A link to Grafana, or the Alertmanager that sent this notification if using an external Alertmanager | `{{ .ExternalURL }}` |
|
||||||
|
|
||||||
### KV
|
### KV
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
- notifications
|
- notifications
|
||||||
- templates
|
- templates
|
||||||
- use templates
|
- use templates
|
||||||
|
description: Use notification templates in contact points
|
||||||
title: Use notification templates
|
title: Use notification templates
|
||||||
weight: 300
|
weight: 300
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
- notifications
|
- notifications
|
||||||
- templates
|
- templates
|
||||||
- write templates
|
- write templates
|
||||||
|
description: Use Go's templating language in notifications
|
||||||
title: Using Go's templating language
|
title: Using Go's templating language
|
||||||
weight: 100
|
weight: 100
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ keywords:
|
|||||||
- notification
|
- notification
|
||||||
- errors
|
- errors
|
||||||
- contact points
|
- contact points
|
||||||
|
description: View notification errors to find out why they weren't sent or received
|
||||||
title: View notification errors
|
title: View notification errors
|
||||||
weight: 900
|
weight: 900
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
aliases:
|
aliases:
|
||||||
- ../contact-points/notifiers/webhook-notifier/
|
- ../contact-points/notifiers/webhook-notifier/
|
||||||
- ../fundamentals/contact-points/webhook-notifier/
|
- ../fundamentals/contact-points/webhook-notifier/
|
||||||
|
description: Configure the webhook notifier for notifications
|
||||||
keywords:
|
keywords:
|
||||||
- grafana
|
- grafana
|
||||||
- alerting
|
- alerting
|
||||||
|
|||||||
@@ -12,24 +12,28 @@ weight: 110
|
|||||||
|
|
||||||
Grafana Alerting is enabled by default for new installations or existing installations whether or not legacy alerting is configured.
|
Grafana Alerting is enabled by default for new installations or existing installations whether or not legacy alerting is configured.
|
||||||
|
|
||||||
> **Note**: When upgrading, your dashboard alerts are migrated to a new format. This migration can be rolled back easily by [opting out]({{< relref "opt-out/" >}}). If you have any questions regarding this migration, please contact us.
|
{{% admonition type="note" %}}
|
||||||
|
When upgrading, your dashboard alerts are migrated to a new format. This migration can be rolled back easily by [opting out]({{< relref "./opt-out" >}}). If you have any questions regarding this migration, please contact us.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
Existing installations that do not use legacy alerting will have Grafana Alerting enabled by default unless alerting is disabled in the configuration.
|
Existing installations that do not use legacy alerting will have Grafana Alerting enabled by default unless alerting is disabled in the configuration.
|
||||||
|
|
||||||
Likewise, existing installations that use legacy alerting will be automatically upgraded to Grafana Alerting unless you have [opted out]({{< relref "opt-out/" >}}) of Grafana Alerting before migration takes place. During the upgrade, legacy alerts are migrated to the new alerts type and no alerts or alerting data are lost.
|
Likewise, existing installations that use legacy alerting will be automatically upgraded to Grafana Alerting unless you have [opted out]({{< relref "./opt-out" >}}) of Grafana Alerting before migration takes place. During the upgrade, legacy alerts are migrated to the new alerts type and no alerts or alerting data are lost.
|
||||||
|
|
||||||
Once the upgrade has taken place, you still have the option to [roll back]({{< relref "roll-back/" >}}) to legacy alerting. However, we do not recommend choosing this option. If you do choose to roll back, Grafana will restore your alerts to the alerts you had at the point in time when the upgrade took place. All new alerts and changes made exclusively in Grafana Alerting will be deleted.
|
Once the upgrade has taken place, you still have the option to [roll back]({{< relref "./roll-back" >}}) to legacy alerting. However, we do not recommend choosing this option. If you do choose to roll back, Grafana will restore your alerts to the alerts you had at the point in time when the upgrade took place. All new alerts and changes made exclusively in Grafana Alerting will be deleted.
|
||||||
|
|
||||||
> **Note**: Cloud customers, who do not want to upgrade to Grafana Alerting, should contact customer support.
|
{{% admonition type="note" %}}
|
||||||
|
Cloud customers, who do not want to upgrade to Grafana Alerting, should contact customer support.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
If you have opted out or rolled back, you can always choose to [opt in]({{< relref "opt-in/" >}}) to Grafana Alerting at a later point in time.
|
If you have opted out or rolled back, you can always choose to [opt in]({{< relref "./opt-in" >}}) to Grafana Alerting at a later point in time.
|
||||||
|
|
||||||
The following table provides details on the upgrade for Cloud, Enterprise, and OSS installations and the new Grafana Alerting UI.
|
The following table provides details on the upgrade for Cloud, Enterprise, and OSS installations and the new Grafana Alerting UI.
|
||||||
|
|
||||||
| Grafana instance upgraded to 9.0 | |
|
| Grafana instance upgraded to 9.0 | |
|
||||||
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| Cloud | Existing Cloud installations with legacy dashboard alerting will have two alerting icons in the left navigation panel - the old alerting plugin icon and the new Grafana Alerting icon. During upgrade, existing alerts from the Cloud alerting plugin are migrated to Grafana Alerting. Once migration is complete, you can access and manage the older alerts from the new alerting Grafana Alerting icon in the navigation panel. The (older) Cloud alerting plugin is uninstalled from your cloud instance. Contact customer support if you **do not wish** to migrate to Grafana Alerting for your Cloud stack. If you choose to use legacy alerting, use the You will see the new Grafana Alerting icon as well as the old Cloud alerting plugin in the left navigation panel. |
|
| Cloud | Existing Cloud installations with legacy dashboard alerting will have two alerting icons in the left navigation panel - the old alerting plugin icon and the new Grafana Alerting icon. During upgrade, existing alerts from the Cloud alerting plugin are migrated to Grafana Alerting. Once migration is complete, you can access and manage the older alerts from the new alerting Grafana Alerting icon in the navigation panel. The (older) Cloud alerting plugin is uninstalled from your cloud instance. Contact customer support if you **do not wish** to migrate to Grafana Alerting for your Cloud stack. If you choose to use legacy alerting, use the You will see the new Grafana Alerting icon as well as the old Cloud alerting plugin in the left navigation panel. |
|
||||||
| Enterprise | Existing Enterprise instances using legacy alerting will have both the old (marked as legacy) and the new alerting icons in the navigation panel. During upgrade, existing legacy alerts are migrated to Grafana Alerting. If you wish, you can [opt-out]({{< relref "opt-out/" >}}) of Grafana Alerting and roll back to legacy alerting. In that case, you can manage your legacy alerts from the alerting icon marked as legacy. |
|
| Enterprise | Existing Enterprise instances using legacy alerting will have both the old (marked as legacy) and the new alerting icons in the navigation panel. During upgrade, existing legacy alerts are migrated to Grafana Alerting. If you wish, you can [opt-out]({{< relref "./opt-out" >}}) of Grafana Alerting and roll back to legacy alerting. In that case, you can manage your legacy alerts from the alerting icon marked as legacy. |
|
||||||
| OSS | Existing OSS installations with legacy dashboard alerting will have two alerting icons in the left navigation panel - the old alerting icon (marked as legacy) and the new Grafana Alerting icon. During upgrade, existing legacy alerts are migrated to Grafana Alerting. If you wish, you can [opt-out]({{< relref "opt-out/" >}}) of Grafana Alerting and roll back to legacy alerting. In that case, you can manage your legacy alerts from the alerting icon marked as legacy. |
|
| OSS | Existing OSS installations with legacy dashboard alerting will have two alerting icons in the left navigation panel - the old alerting icon (marked as legacy) and the new Grafana Alerting icon. During upgrade, existing legacy alerts are migrated to Grafana Alerting. If you wish, you can [opt-out]({{< relref "./opt-out" >}}) of Grafana Alerting and roll back to legacy alerting. In that case, you can manage your legacy alerts from the alerting icon marked as legacy. |
|
||||||
|
|
||||||
> **Note:** Legacy alerting will be deprecated in a future release (v10).
|
> **Note:** Legacy alerting will be deprecated in a future release (v10).
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/
|
||||||
|
- /docs/grafana-cloud/how-do-i/alerts/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/
|
||||||
|
description: Legacy alerting
|
||||||
|
title: Legacy alerting
|
||||||
|
weight: 110
|
||||||
|
---
|
||||||
|
|
||||||
|
# Legacy alerting
|
||||||
|
|
||||||
|
**Note:**
|
||||||
|
|
||||||
|
Starting with Grafana v9.0.0, legacy alerting is deprecated. It is no longer actively maintained or supported by Grafana and will be removed in Grafana v11.0.0.
|
||||||
|
|
||||||
|
You have two options to configure alerts within the Grafana Cloud GUI and a third option that enables you to set Grafana Cloud Alerts using the command line.
|
||||||
|
|
||||||
|
- **Grafana alerts** are the same as in an on-prem instance of Grafana.
|
||||||
|
These alerts are created from a graph panel within a Grafana dashboard.
|
||||||
|
This is useful when you want to create a simple alert based on one metric from within a panel.
|
||||||
|
It also has a much simpler learning curve when you are getting started.
|
||||||
|
- **Grafana Cloud alerts - GUI** are an implementation of Prometheus-style rules that enable you to query your Grafana Cloud Metrics and then set up Prometheus Alertmanager-style alerts based on those rules.
|
||||||
|
This is useful when you want to create precise, PromQL-based rules or create alerts from across many metrics and logs being collected into your Grafana Cloud Metrics.
|
||||||
|
This form of alerting is much more powerful and configurable, but that comes with some complexity.
|
||||||
|
- **Grafana Cloud alerts - CLI** use mimirtool to create and upload the same types of Prometheus-style recording and alerting rules definitions to your Grafana Cloud Metrics instance.
|
||||||
|
Once created, you will also be able to view these rules from within the Grafana Cloud Alerting page in the GUI.
|
||||||
|
- **Synthetic Monitoring alerts** are built on Prometheus alerts, just like in Grafana Cloud alerting.
|
||||||
|
You can configure synthetic monitoring alerts separately using the UI in synthetic monitoring.
|
||||||
|
Another option to create alerts for synthetic monitoring checks is to simply use Grafana Cloud alerting.
|
||||||
|
|
||||||
|
## Using Grafana alerts in Grafana Cloud
|
||||||
|
|
||||||
|
Grafana alerts are dashboard panel-driven and can only be created using the Graph panel.
|
||||||
|
This style of alerting builds on top of the query defined for the graph visualization, so alerts and notifications are sent based on breaking some threshold in the associated panel.
|
||||||
|
|
||||||
|
This also means that there is a one-to-one relationship between a Grafana alert and a graph panel.
|
||||||
|
So although Grafana alerts can be viewed centrally, they can only be managed directly from the panel that they’re tied to.
|
||||||
|
As a result, Grafana alerting is best suited for smaller setups, where there are only a few individuals or teams responsible for a small set of dashboards and where there are few dependencies between the dashboards.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
Most curated dashboards, such as those provided with an integration or with Synthetic Monitoring do not allow you to alert from panels.
|
||||||
|
This is to preserve the ability to upgrade these dashboards automatically when the integration or Synthetic Monitoring abilities are updated.
|
||||||
|
To create an editable copy that you can edit and alert from, click settings (the gear logo) within any dashboard and then click **Make Editable**.
|
||||||
|
The copy will not be upgraded when/if the curated dashboard receives an update.
|
||||||
|
This is one reason why Grafana Cloud Alerts may be considered a better option.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
### What makes Grafana alerts unique?
|
||||||
|
|
||||||
|
With Grafana alerts, alerts are limited to only graph panels within dashboards.
|
||||||
|
In addition:
|
||||||
|
|
||||||
|
- Alerts can be edited by both Editor and Admin roles
|
||||||
|
- Alerts are visual, with an associated alerting threshold line
|
||||||
|
- Alerts work with many non-Prometheus data sources, including Graphite
|
||||||
|
- Alert notifications can be routed to many external notifier systems, directly from Grafana
|
||||||
|
- Alerts are directly associated with a dashboard
|
||||||
|
- Alerts can be tested
|
||||||
|
|
||||||
|
## Using Grafana Cloud Alerts
|
||||||
|
|
||||||
|
Because the metrics you collect and send to Grafana Cloud are centrally stored in one large time-series database, Grafana Cloud Metrics, you can query across these metrics using [PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/) and build alerts directly around those metrics rather than around a panel.
|
||||||
|
You can also query across any logs you have sent using Loki.
|
||||||
|
|
||||||
|
Grafana Cloud Alerts are directly tied to metrics and log data.
|
||||||
|
They can be configured either through 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.
|
||||||
|
Because these alerts are based on the data, they are not tied to a single panel.
|
||||||
|
This makes it possible to evaluate and centrally manage alerts across several different Prometheus and Loki data source instances.
|
||||||
|
|
||||||
|
### What makes Grafana Cloud Alerts unique?
|
||||||
|
|
||||||
|
With Grafana Cloud Alerts, alerts are not limited to coming from a graph panel.
|
||||||
|
In addition, you can:
|
||||||
|
|
||||||
|
- Prevent alerts from being edited, except by users with accounts that are assigned Admin roles.
|
||||||
|
- Centrally manage and create alerts across many systems, teams, and dashboards.
|
||||||
|
Alerts are not bound to just one system, team, or dashboard.
|
||||||
|
- Create alerts for both metric _and_ log data, based on Prometheus and Loki, respectively.
|
||||||
|
- Silence and mute alerts in bulk, even using a schedule, using the Alertmanager.
|
||||||
|
- Route alert notifications to [many external notifier systems](https://prometheus.io/docs/operating/integrations/#alertmanager-webhook-receiver) using Alertmanager configurations
|
||||||
|
- Dedupe alert notifications automatically.
|
||||||
|
|
||||||
|
### Grafana Cloud Alert configuration methods
|
||||||
|
|
||||||
|
In a traditional on-prem environment, Prometheus-style alert configuration is done through the combination of defining a [Prometheus configuration file](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) and an [Alertmanager configuration file](https://prometheus.io/docs/alerting/latest/configuration/), which live close to the Prometheus server.
|
||||||
|
With Grafana Cloud, you can still use this setup as well as more flexible architectures.
|
||||||
|
|
||||||
|
- You can use `mimirtool` to upload your configuration files to be hosted and evaluated entirely in Grafana Cloud.
|
||||||
|
- You can manage both alerting rules and Alertmanager configurations directly through the UI.
|
||||||
|
Configuration files are unnecessary with this setup.
|
||||||
|
- You can use both methods concurrently to manage the alerts.
|
||||||
|
For example, updates made using the `mimirtool` are automatically updated and visible within the Grafana Cloud Alerting interface in minutes.
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/
|
||||||
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/
|
||||||
|
description: Grafana Cloud Alerting
|
||||||
|
title: Grafana Cloud Alerting
|
||||||
|
weight: 100
|
||||||
|
---
|
||||||
|
|
||||||
|
# Grafana Cloud Alerting
|
||||||
|
|
||||||
|
Grafana Cloud Alerting allows you to create and manage all of your Prometheus-style alerting rules, for both Prometheus metrics and Loki log data. With this feature, you don't need to leave Grafana, upload or edit configuration files, or install additional tools.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Permissions
|
||||||
|
|
||||||
|
All members of an organization that have alerts set up can view alerts in Grafana Cloud Alerting. This includes everyone with a Viewer, Editor, or Admin role.
|
||||||
|
|
||||||
|
Users with the organization Admin role can also create, edit, or delete alerts.
|
||||||
|
|
||||||
|
## Data sources
|
||||||
|
|
||||||
|
Grafana Cloud Alerting supports rule management across multiple data sources, for both metrics and logs, across all of the stacks in your org. If you have more than one Prometheus or Loki data source, there will be a dropdown at the top for you to select the data source to configure rules.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
Pay attention to which data source you select. Cloud alerts are tied to a specific data source. For example, if you have a Loki data source selected you will not be able to create an alert based on a Prometheus data source.
|
||||||
|

|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
## Alerts and recording rules
|
||||||
|
|
||||||
|
Prometheus supports two types of rules:
|
||||||
|
|
||||||
|
- [Recording rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) - Recording rules allow you to execute expressions or queries, by saving them off as a stored rule instead.
|
||||||
|
- [Alerting rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) - Alerting rules allow you to define alert conditions and to route those notifications to an external service. An alert fires if metrics meet criteria defined in the alerting rule.
|
||||||
|
|
||||||
|
Both of these rules are configurable from the Grafana Cloud Alerting interface and configured in the same way.
|
||||||
|
|
||||||
|
## Alert states
|
||||||
|
|
||||||
|
Alert states are identical to the standard format found in Prometheus rule configurations. In Grafana Cloud Alerting, each individual alert is highlighted by its state to more clearly distinguish between alerts.
|
||||||
|
|
||||||
|
- **Firing -** Alerts that have been active for longer than the configured threshold. Alerts are highlighted in red and tagged with a red `firing` label.
|
||||||
|
- **Pending -** Alerts that have been active for less than the configured threshold. Alerts are highlighted in orange.
|
||||||
|
- **Inactive -** Alerts that are neither firing nor pending. Alerts are highlighted in green.
|
||||||
|
|
||||||
|
## Notifications
|
||||||
|
|
||||||
|
The **Notifications** tab is where you can view all current notifications and sort them by various states, receivers, and labels.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Limits
|
||||||
|
|
||||||
|
There is a limit on how many rules can be created in a rule group. There is also a limit on how many rule groups can be created.
|
||||||
|
|
||||||
|
You can create:
|
||||||
|
|
||||||
|
- 20 rules per rule group
|
||||||
|
- 35 rule groups
|
||||||
|
|
||||||
|
> It is possible to increase these limits. Please contact customer support for further information.
|
||||||
|
|
||||||
|
If you exceed the limits, you will encounter an error similar to this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ERROR[0000] requests failed fields.msg="request failed with response body
|
||||||
|
per-user rules per rule group limit (limit: 20 actual: 22) exceeded\n"
|
||||||
|
status="400 Bad Request"
|
||||||
|
ERROR[0000] unable to load rule group error="failed request to the cortex api"
|
||||||
|
group=limit_rules_per_group namespace=test
|
||||||
|
```
|
||||||
|
|
||||||
|
To increase the number of rules or rule groups you can configure, contact support to upgrade your account.
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/alertmanager/
|
||||||
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/alertmanager/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/alertmanager/
|
||||||
|
description: Alertmanager
|
||||||
|
title: Alertmanager
|
||||||
|
weight: 500
|
||||||
|
---
|
||||||
|
|
||||||
|
# Alertmanager
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
Only organization Admins can view or update Alertmanger configurations.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
## Edit a config for Grafana Cloud Alerting
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Alertmanager**.
|
||||||
|
1. If you have more than one Alertmanager source, there will be a dropdown at the top for you to select the data source to edit configurations.
|
||||||
|
1. Currently active configuration for the Alertmanager will be displayed. Click the **Edit** button to enter edit mode and start making changes. Click "Save and finish editing" once done to persist your changes.
|
||||||
|
1. Alternatively, updates to the Alertmanager configurations made using the mimirtool will also sync and appear here.
|
||||||
|
|
||||||
|
## Use the Grafana Labs-supplied SMTP option to configure email notifications
|
||||||
|
|
||||||
|
Grafana Cloud users who do not have an SMTP server available for sending alert emails may use Grafana-Labs supplied SMTP relay (available at `smtprelay:2525`).
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Alertmanager**.
|
||||||
|
1. If you have more than one Alertmanager source, there will be a dropdown at the top for you to select the data source to edit configurations.
|
||||||
|
1. Find info box with heading **Send alert email notifications from Grafana Cloud** at the top
|
||||||
|
1. Enter desired email address into the **email address** field
|
||||||
|
1. Click **Update configuration** button. Alertmanager config will be updated with grafana SMTP relay settings and an "email" receiver that will send to the specified email address.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
Following these steps will overwrite any custom global SMTP settings that you might have. Default route configuration will send all notifications to the "email" receiver. If you have already customized routes, they will not be updated and you will have to configure "email" receiver on the appropriate route.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
Use these settings in your Grafana Cloud Alerting YAML, if you do not find them already set. Most important is the `smtp_require_tls: false` line. If this is not set properly, alert emails will not be received. If you use mimirtool to configure alertmanager, by default this will be set to `true`, which will cause problems.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
global:
|
||||||
|
smtp_from: noreply@grafana.net
|
||||||
|
smtp_smarthost: smtprelay:2525
|
||||||
|
smtp_require_tls: false
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting Alertmanager failures
|
||||||
|
|
||||||
|
Configuration errors can cause Alertmanager notification failures, e.g. a typo in an email address recipient or an expired token for a webhook. Grafana Cloud provisions a Loki datasource `grafanacloud-<stack_slug>-usage-insights` which can be used to display select notification errors with a query similar to the example below. The `instance_type` label of `alerts` is what selects the Grafana Cloud Alertmanager logs.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
{instance_type="alerts"} | logfmt | level="warn"
|
||||||
|
```
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/create-edit-rules/
|
||||||
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/create-edit-rules/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/create-edit-rules/
|
||||||
|
description: Create and edit alert rules
|
||||||
|
title: Create and edit alert rules
|
||||||
|
weight: 200
|
||||||
|
---
|
||||||
|
|
||||||
|
# Create and edit alert rules
|
||||||
|
|
||||||
|
Creating alerts in Grafana Cloud differs from creating alerts directly with Prometheus or Loki. While the rule format is the same, everything is done in the Grafana Cloud Alerting interface, rather than with configuration files.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
Only organization Admins can create or edit alert rules.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
## Create an alert rule
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Alerts and rules**.
|
||||||
|
1. If you have more than one Prometheus or Loki data source, there will be a dropdown at the top for you to select the data source to create or edit rules.
|
||||||
|
1. Click **Edit rules**.
|
||||||
|
1. Click **Add rule**.
|
||||||
|
|
||||||
|
Grafana creates a new rule with placeholders.
|
||||||
|
|
||||||
|
```
|
||||||
|
alert: ""
|
||||||
|
expr: ""
|
||||||
|
```
|
||||||
|
|
||||||
|
Enter text according to regular Prometheus rule configuration guidelines:
|
||||||
|
|
||||||
|
- [Recording rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/)
|
||||||
|
- [Alerting rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
Grafana Cloud Alerting does not support comments.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
When you are finished, click **Save**. You can then repeat the process to create more rules or click **Finish editing** to return to the rules list.
|
||||||
|
|
||||||
|
## Edit an alert rule
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Alerts and rules**.
|
||||||
|
1. If you have more than one Prometheus or Loki data source, there will be a dropdown at the top for you to select the data source to create or edit rules.
|
||||||
|
1. Click **Edit rules**.
|
||||||
|
1. Scroll down to the rule that you want to edit and then click **Edit**.
|
||||||
|
1. Make any necessary changes to the rule text and then click **Save**.
|
||||||
|
1. Click **Finish editing** to return to the rules list.
|
||||||
|
|
||||||
|
## Delete an alert rule
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Alerts and rules**.
|
||||||
|
1. If you have more than one Prometheus or Loki data source, there will be a dropdown at the top for you to select the data source to create or edit rules.
|
||||||
|
1. Click **Edit rules**.
|
||||||
|
1. Scroll down to the rule that you want to edit and then click **Delete**.
|
||||||
|
1. Click **Finish editing** to return to the rules list.
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/namespaces-and-groups/
|
||||||
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/namespaces-and-groups/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/namespaces-and-groups/
|
||||||
|
description: Namespaces and rule groups
|
||||||
|
title: Namespaces and rule groups
|
||||||
|
weight: 400
|
||||||
|
---
|
||||||
|
|
||||||
|
# Namespaces and rule groups
|
||||||
|
|
||||||
|
By default, all alerting and recording rules created in Grafana Cloud Alerting will default to a single namespace and a single rule group.
|
||||||
|
|
||||||
|
## Managing namespaces
|
||||||
|
|
||||||
|
While Grafana Cloud Alerting does support viewing multiple namespaces that have been added through the mimirtool, it is currently not possible to add new namespaces or to rename the existing ones.
|
||||||
|
|
||||||
|
## Managing rule groups
|
||||||
|
|
||||||
|
Rule groups can be managed directly within the Grafana Cloud Alerting interface or through the mimirtool, similar to managing namespaces.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
By default, Grafana Cloud limits the number of rule groups to 20, with a limit of up to 15 rules per group. If you wish to increase the default limits, please [open a support ticket](/profile/org#support) or reach out to your account manager.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
### Create a new rule group:
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Alerts and rules**.
|
||||||
|
2. If you have more than one Prometheus or Loki data source, there will be a dropdown at the top for you to select the data source to create or edit rules.
|
||||||
|
3. Click **Create new rule group**.
|
||||||
|
4. Enter text to name your new rule group.
|
||||||
|
5. Enter text for the new rule in your new rule group, according to regular Prometheus rule configuration guidelines:
|
||||||
|
|
||||||
|
- [Recording rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/)
|
||||||
|
- [Alerting rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)
|
||||||
|
|
||||||
|
6. When you are finished naming your new rule group and adding new rule details, click **Save**.
|
||||||
|
|
||||||
|
{{% admonition type="note" %}}
|
||||||
|
In order to create a new rule group, you must also create a new rule for it.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
|
### Update a rule group
|
||||||
|
|
||||||
|
Existing rule groups can be renamed by selecting the **pencil** icon next to the rule group name.
|
||||||
|
|
||||||
|
### Delete a rule group
|
||||||
|
|
||||||
|
Rule groups will be automatically deleted once the all rules within a group are deleted.
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/silences/
|
||||||
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/silences/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/silences/
|
||||||
|
description: Silences
|
||||||
|
title: Silences
|
||||||
|
weight: 600
|
||||||
|
---
|
||||||
|
|
||||||
|
# Silences
|
||||||
|
|
||||||
|
Grafana Cloud Alerting allows you to manage silences for your alertmanager notifications directly inside of Grafana. This applies to alerting rules created for both Prometheus metrics and Loki logs.
|
||||||
|
|
||||||
|
## Create a silence
|
||||||
|
|
||||||
|
1. In Grafana, hover your cursor over the **Grafana Cloud Alerting** icon and then click **Silences**.
|
||||||
|
2. Click **New silence**.
|
||||||
|
3. Enter a date in **Start of silence** to indicate when the silence should go into effect.
|
||||||
|
4. Enter a date in **End of silence** to indicate when the silence should expire.
|
||||||
|
5. Enter one or more matchers by filling out the **Name** and **Value** fields. Matchers determine which rules the silence will apply to.
|
||||||
|
6. Enter the name of the owner in **Creator**.
|
||||||
|
7. Enter a **Comment**.
|
||||||
|
8. To view which rules will be affected by your silence, click **Preview alerts**.
|
||||||
|
9. Otherwise, when you are finished, click **Create**
|
||||||
|
|
||||||
|
## Update an existing silence
|
||||||
|
|
||||||
|
You can always update an existing silence by clicking the **Edit silence** button under the silence.
|
||||||
|
|
||||||
|
It is also possible to expire a silence, on-demand, by clicking the **Expire silence** button under the silence. This will override the original scheduled expiration date of the silence.
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
- /docs/grafana-cloud/alerts/grafana-cloud-alerting/view-filter-rules/
|
||||||
|
- /docs/grafana-cloud/how-do-i/grafana-cloud-alerting/view-filter-alerts/
|
||||||
|
- /docs/grafana-cloud/legacy-alerting/grafana-cloud-alerting/view-filter-rules/
|
||||||
|
description: View and filter alert rules
|
||||||
|
title: View and filter alert rules
|
||||||
|
weight: 300
|
||||||
|
---
|
||||||
|
|
||||||
|
# View and filter alert rules
|
||||||
|
|
||||||
|
Grafana Cloud Alerting displays a list of all recording and alerting rules assigned to a selected data source in the Alerts and rules tab.
|
||||||
|
|
||||||
|
All members of an organization that have access to a particular data source can view the list of rules and filter or reorder their view.
|
||||||
|
|
||||||
|
## View alert rules
|
||||||
|
|
||||||
|
1. Hover your cursor over the **Grafana Cloud Alerting** icon (alarm bell with Prometheus logo) and then click **Alerts and rules**.
|
||||||
|
1. In the list at the top of the tab, select the data source for which you want to view rules.
|
||||||
|
|
||||||
|
Grafana displays rules according to rule groups. If your instance has added namespaces and alert groups, then they will be ordered alphabetically. Otherwise, you will have one namespace called `default` and an alert group called `rules`.
|
||||||
|
|
||||||
|
If an alert is firing, then click the down carrot arrow to see additional information. The Label and annotations section appears.
|
||||||
|
|
||||||
|
## Filter your alert rule view
|
||||||
|
|
||||||
|
You can control which alerts you see and in what order they appear several ways. Combine different filters to personalize your view so that you can quickly find the information that you need.
|
||||||
|
|
||||||
|
- **Filter by alert state -** Click the toggles to show or hide alerts in different states. Turn off the toggle to hide alerts matching the state.
|
||||||
|
- **Filter by rule type -** Click the toggles to show or hide alerting rules or recording rules.
|
||||||
|
- **View options -** Click the toggle to show or hide the Prometheus annotations shown in the Labels and annotations section.
|
||||||
|
- **Rule sorting -** Click an option to sort alert rules within each rule group.
|
||||||
|
- **None -** No special sort is applied and sorts as if in a file, ordered according to the editing list order.
|
||||||
|
- **A-Z -** Sorts rules alphabetically according to the rule name.
|
||||||
|
- **Alert state -** Sorts rules according to the alert state (Firing, Pending, or Inactive).
|
||||||
|
|
||||||
|
## View alert in Explore
|
||||||
|
|
||||||
|
Click **View in Explore** or click the `expr` link to open the `expr` in [Explore](/docs/grafana/latest/explore/).
|
||||||
|
|
||||||
|
> **Note:** Only users with Admin or Editor roles in an organization can use the Explore feature unless the viewers can edit.
|
||||||
@@ -20,16 +20,21 @@ longer supported. We refer to these as [Differences]({{< relref "#differences" >
|
|||||||
|
|
||||||
2. Read and write access to legacy dashboard alerts and Grafana alerts are governed by the permissions of the folders storing them. During migration, legacy dashboard alert permissions are matched to the new rules permissions as follows:
|
2. Read and write access to legacy dashboard alerts and Grafana alerts are governed by the permissions of the folders storing them. During migration, legacy dashboard alert permissions are matched to the new rules permissions as follows:
|
||||||
|
|
||||||
- If alert's dashboard has permissions, it will create a folder named like `Migrated {"dashboardUid": "UID", "panelId": 1, "alertId": 1}` to match permissions of the dashboard (including the inherited permissions from the folder).
|
- If there are dashboard permissions, a folder named `Migrated {"dashboardUid": "UID", "panelId": 1, "alertId": 1}` is created to match the permissions of the dashboard (including the inherited permissions from the folder).
|
||||||
- If there are no dashboard permissions and the dashboard is under a folder, then the rule is linked to this folder and inherits its permissions.
|
- If there are no dashboard permissions and the dashboard is in a folder, then the rule is linked to this folder and inherits its permissions.
|
||||||
- If there are no dashboard permissions and the dashboard is under the General folder, then the rule is linked to the `General Alerting` folder, and the rule inherits the default permissions.
|
- If there are no dashboard permissions and the dashboard is in the General folder, then the rule is linked to the `General Alerting` folder and the rule inherits the default permissions.
|
||||||
|
|
||||||
3. Since there is no `Keep Last State` option for [`No Data`]({{< relref "../alerting-rules/create-grafana-managed-rule/#no-data--error-handling" >}}) in Grafana Alerting, this option becomes `NoData` during the legacy rules migration. Option "Keep Last State" for [`Error handling`]({{< relref "../alerting-rules/create-grafana-managed-rule/#no-data--error-handling" >}}) is migrated to a new option `Error`. To match the behavior of the `Keep Last State`, in both cases, during the migration Grafana automatically creates a silence for each alert rule with a duration of 1 year.
|
3. `NoData` and `Error` settings are migrated as is to the corresponding settings in Grafana Alerting, except in two situations:
|
||||||
|
|
||||||
|
3.1. As there is no `Keep Last State` option for `No Data` in Grafana Alerting, this option becomes `NoData`. The `Keep Last State` option for `Error` is migrated to a new option `Error`. To match the behavior of the `Keep Last State`, in both cases, during the migration Grafana automatically creates a silence for each alert rule with a duration of 1 year.
|
||||||
|
|
||||||
|
3.2. Due to lack of validation, legacy alert rules imported via JSON or provisioned along with dashboards can contain arbitrary values for `NoData` and [`Error`](/docs/sources/alerting/alerting-rules/create-grafana-managed-rule.md#configure-no-data-and-error-handling). In this situation, Grafana will use the default setting: `NoData` for No data, and `Error` for Error.
|
||||||
|
|
||||||
4. Notification channels are migrated to an Alertmanager configuration with the appropriate routes and receivers. Default notification channels are added as contact points to the default route. Notification channels not associated with any Dashboard alert go to the `autogen-unlinked-channel-recv` route.
|
4. Notification channels are migrated to an Alertmanager configuration with the appropriate routes and receivers. Default notification channels are added as contact points to the default route. Notification channels not associated with any Dashboard alert go to the `autogen-unlinked-channel-recv` route.
|
||||||
|
|
||||||
5. Unlike legacy dashboard alerts where images in notifications are enabled per contact point, images in notifications for Grafana Alerting must be enabled in the Grafana configuration, either in the configuration file or environment variables, and are enabled for either all or no contact points. Refer to [images in notifications](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/images-in-notifications/).
|
5. Unlike legacy dashboard alerts where images in notifications are enabled per contact point, images in notifications for Grafana Alerting must be enabled in the Grafana configuration, either in the configuration file or environment variables, and are enabled for either all or no contact points. Refer to [images in notifications]({{< relref "../manage-notifications/images-in-notifications" >}}).
|
||||||
6. Grafana Alerting does not support pausing the evaluation of alert rules. After migration, all paused alert rules will become active, which may cause unexpected notifications to be sent.
|
|
||||||
|
6. The JSON format for webhook notifications has changed in Grafana Alerting and uses the format from [Prometheus Alertmanager](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config).
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
|
|||||||
@@ -26,9 +26,11 @@ enabled = true
|
|||||||
enabled = false
|
enabled = false
|
||||||
```
|
```
|
||||||
|
|
||||||
Installations that have been migrated to Grafana Alerting can [roll back]({{< relref "roll-back/" >}}) to legacy alerting at any time.
|
Installations that have been migrated to Grafana Alerting can [roll back]({{< relref "./roll-back" >}}) to legacy alerting at any time.
|
||||||
|
|
||||||
> **Note:** This topic is only relevant for OSS and Enterprise customers. Contact customer support to enable or disable Grafana Alerting for your Grafana Cloud stack.
|
{{% admonition type="note" %}}
|
||||||
|
This topic is only relevant for OSS and Enterprise customers. Contact customer support to enable or disable Grafana Alerting for your Grafana Cloud stack.
|
||||||
|
{{% /admonition %}}
|
||||||
|
|
||||||
The `ngalert` toggle previously used to enable or disable Grafana Alerting is no longer available.
|
The `ngalert` toggle previously used to enable or disable Grafana Alerting is no longer available.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
---
|
---
|
||||||
aliases:
|
aliases:
|
||||||
- unified-alerting/set-up/
|
- unified-alerting/set-up/
|
||||||
|
labels:
|
||||||
|
products:
|
||||||
|
- oss
|
||||||
|
description: How to set up alerting features and integrations
|
||||||
title: Set up Alerting
|
title: Set up Alerting
|
||||||
weight: 107
|
weight: 107
|
||||||
---
|
---
|
||||||
@@ -9,6 +13,49 @@ weight: 107
|
|||||||
|
|
||||||
Configure the features and integrations that you need to create and manage your alerts.
|
Configure the features and integrations that you need to create and manage your alerts.
|
||||||
|
|
||||||
- [Configure Alertmanager](https://grafana.com/docs/grafana/latest/alerting/set-up/configure-alertmanager/)
|
**Note:**
|
||||||
- [Provision Grafana Alerting resources](https://grafana.com/docs/grafana/latest/alerting/set-up/provision-alerting-resources/)
|
|
||||||
- [Connect Grafana Alerting to Grafana OnCall](https://grafana.com/docs/oncall/latest/integrations/available-integrations/add-grafana-alerting/)
|
These are set up instructions for Grafana Alerting Open Source.
|
||||||
|
|
||||||
|
To set up Grafana Alerting for Cloud, see ({{< relref "../set-up-cloud" >}})
|
||||||
|
|
||||||
|
## Before you begin
|
||||||
|
|
||||||
|
- Configure your [data sources]({{< relref "../../administration/data-source-management" >}})
|
||||||
|
- Check which data sources are compatible with and supported by [Grafana Alerting]({{< relref "../fundamentals/data-source-alerting" >}})
|
||||||
|
|
||||||
|
## Set up Alerting
|
||||||
|
|
||||||
|
To set up Alerting, you need to:
|
||||||
|
|
||||||
|
1. Configure alert rules
|
||||||
|
|
||||||
|
- Create Grafana-managed or Mimir/Loki-managed alert rules and recording rules
|
||||||
|
|
||||||
|
1. Configure contact points
|
||||||
|
|
||||||
|
- Check the default contact point and update the email address
|
||||||
|
|
||||||
|
- [Optional] Add new contact points and integrations
|
||||||
|
|
||||||
|
1. Configure notification policies
|
||||||
|
|
||||||
|
- Check the default notification policy
|
||||||
|
|
||||||
|
- [Optional] Add additional nested policies
|
||||||
|
|
||||||
|
- [Optional] Add labels and label matchers to control alert routing
|
||||||
|
|
||||||
|
1. [Optional] Integrate with [Grafana OnCall]
|
||||||
|
(/docs/oncall/latest/integrations/grafana-alerting/)
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
- [Provision alert rules using file provisioning]({{< relref "../set-up/provision-alerting-resources/file-provisioning" >}})
|
||||||
|
- [Provision alert rules using Terraform]({{< relref "../set-up/provision-alerting-resources/terraform-provisioning" >}})
|
||||||
|
- [Add an external Alertmanager]({{< relref "../set-up/configure-alertmanager" >}})
|
||||||
|
- [Configure high availability]({{< relref "../set-up/configure-high-availability" >}})
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ keywords:
|
|||||||
- configure
|
- configure
|
||||||
- external Alertmanager
|
- external Alertmanager
|
||||||
title: Add an external Alertmanager
|
title: Add an external Alertmanager
|
||||||
weight: 100
|
weight: 200
|
||||||
---
|
---
|
||||||
|
|
||||||
# Add an external Alertmanager
|
# Add an external Alertmanager
|
||||||
@@ -35,6 +35,6 @@ To add an external Alertmanager, complete the following steps.
|
|||||||
|
|
||||||
If you are provisioning your data source, set the flag `handleGrafanaManagedAlerts` in the `jsonData` field to `true` to send Grafana-managed alerts to this Alertmanager.
|
If you are provisioning your data source, set the flag `handleGrafanaManagedAlerts` in the `jsonData` field to `true` to send Grafana-managed alerts to this Alertmanager.
|
||||||
|
|
||||||
**Note:**: Prometheus, Grafana Mimir, and Cortex implementations of Alertmanager are supported. For Prometheus, contact points and notification policies are read-only in the Grafana Alerting UI.
|
**Note:** Prometheus, Grafana Mimir, and Cortex implementations of Alertmanager are supported. For Prometheus, contact points and notification policies are read-only in the Grafana Alerting UI.
|
||||||
|
|
||||||
1. Click **Save & test**.
|
1. Click **Save & test**.
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ keywords:
|
|||||||
- ha
|
- ha
|
||||||
- high availability
|
- high availability
|
||||||
title: Enable alerting high availability
|
title: Enable alerting high availability
|
||||||
weight: 300
|
weight: 400
|
||||||
---
|
---
|
||||||
|
|
||||||
# Enable alerting high availability
|
# Enable alerting high availability
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ keywords:
|
|||||||
- performance
|
- performance
|
||||||
- limitations
|
- limitations
|
||||||
title: Performance considerations and limitations
|
title: Performance considerations and limitations
|
||||||
weight: 450
|
weight: 600
|
||||||
---
|
---
|
||||||
|
|
||||||
# Performance considerations and limitations
|
# Performance considerations and limitations
|
||||||
@@ -47,4 +47,4 @@ Grafana cannot be used to receive external alerts. You can only send alerts to t
|
|||||||
|
|
||||||
You have the option to send Grafana managed alerts to an external Alertmanager, you can find this option in the admin tab on the Alerting page.
|
You have the option to send Grafana managed alerts to an external Alertmanager, you can find this option in the admin tab on the Alerting page.
|
||||||
|
|
||||||
For more information, refer to [this GitHub discussion](https://github.com/grafana/grafana/discussions/45773). For more information on the different Alertmanagers, refer to [Alertmanager]([{{< relref "../manage-notifications/alertmanager/" >}}](https://grafana.com/docs/grafana/next/alerting/manage-notifications/alertmanager/).
|
For more information, refer to [this GitHub discussion](https://github.com/grafana/grafana/discussions/45773).
|
||||||
@@ -9,7 +9,7 @@ keywords:
|
|||||||
- configure
|
- configure
|
||||||
- provisioning
|
- provisioning
|
||||||
title: Provision Grafana Alerting resources
|
title: Provision Grafana Alerting resources
|
||||||
weight: 200
|
weight: 300
|
||||||
---
|
---
|
||||||
|
|
||||||
# Provision Grafana Alerting resources
|
# Provision Grafana Alerting resources
|
||||||
@@ -22,7 +22,7 @@ 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](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/).
|
For more information on the Alerting Provisioning HTTP API, refer to [Alerting provisioning API]({{< relref "../../../developers/http_api/alerting_provisioning" >}}).
|
||||||
|
|
||||||
1. Provision your alerting resources using Terraform.
|
1. Provision your alerting resources using Terraform.
|
||||||
|
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ Details on how to set up the files and which fields are required for each object
|
|||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
|
|
||||||
Provisioning takes place during the initial set up of your Grafana system, but you can re-run it at any time using the [Grafana Admin API](https://grafana.com/docs/grafana/latest/developers/http_api/admin/#reload-provisioning-configurations).
|
Provisioning takes place during the initial set up of your Grafana system, but you can re-run it at any time using the [Grafana Admin API]({{< relref "../../../../developers/http_api/admin#reload-provisioning-configurations" >}}).
|
||||||
|
|
||||||
### Provision alert rules
|
### Provision alert rules
|
||||||
|
|
||||||
Create or delete alert rules in your Grafana instance(s).
|
Create or delete alert rules in your Grafana instance(s).
|
||||||
|
|
||||||
1. Create alert rules in Grafana.
|
1. Create alert rules in Grafana.
|
||||||
1. Use the [Alerting provisioning API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/#route-get-alert-rule-export) export endpoints to download a provisioning file for your alert rules.
|
1. Use the [Alerting provisioning API]({{< relref "../../../../developers/http_api/alerting_provisioning" >}}) export endpoints to download a provisioning file for your alert rules.
|
||||||
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.
|
||||||
@@ -154,6 +154,8 @@ contactPoints:
|
|||||||
- uid: first_uid
|
- uid: first_uid
|
||||||
# <string, required> type of the receiver
|
# <string, required> type of the receiver
|
||||||
type: prometheus-alertmanager
|
type: prometheus-alertmanager
|
||||||
|
# <bool, optional> Disable the additional [Incident Resolved] follow-up alert, default = false
|
||||||
|
disableResolveMessage: false
|
||||||
# <object, required> settings for the specific receiver type
|
# <object, required> settings for the specific receiver type
|
||||||
settings:
|
settings:
|
||||||
url: http://test:9000
|
url: http://test:9000
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ Complete the following tasks to create and manage your alerting resources using
|
|||||||
|
|
||||||
## Create an API key for provisioning
|
## Create an API key for provisioning
|
||||||
|
|
||||||
You can [create a normal Grafana API key](https://grafana.com/docs/grafana/latest/administration/api-keys/) to authenticate Terraform with Grafana. Most existing tooling using API keys should automatically work with the new Grafana Alerting support.
|
You can [create a normal Grafana API key]({{< relref "../../../../administration/api-keys" >}}) to authenticate Terraform with Grafana. Most existing tooling using API keys should automatically work with the new Grafana Alerting support.
|
||||||
|
|
||||||
There are also dedicated RBAC roles for alerting provisioning. This lets you easily authenticate as a [service account](https://grafana.com/docs/grafana/latest/administration/service-accounts/) with the minimum permissions needed to provision your Alerting infrastructure.
|
There are also dedicated RBAC roles for alerting provisioning. This lets you easily authenticate as a [service account]({{< relref "../../../../administration/service-accounts" >}}) with the minimum permissions needed to provision your Alerting infrastructure.
|
||||||
|
|
||||||
To create an API key for provisioning, complete the following steps.
|
To create an API key for provisioning, complete the following steps.
|
||||||
|
|
||||||
@@ -222,13 +222,13 @@ You cannot edit resources provisioned from Terraform from the UI. This ensures t
|
|||||||
|
|
||||||
## Provision alert rules
|
## Provision alert rules
|
||||||
|
|
||||||
[Alert rules](https://grafana.com/docs/grafana/latest/alerting/alerting-rules/) enable you to alert against any Grafana data source. This can be a data source that you already have configured, or you can [define your data sources in Terraform](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source) alongside your alert rules.
|
[Alert rules]({{< relref "../../../alerting-rules" >}}) enable you to alert against any Grafana data source. This can be a data source that you already have configured, or you can [define your data sources in Terraform](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/data_source) alongside your alert rules.
|
||||||
|
|
||||||
To provision alert rules, complete the following steps.
|
To provision alert rules, complete the following steps.
|
||||||
|
|
||||||
1. Create a data source to query and a folder to store your rules in.
|
1. Create a data source to query and a folder to store your rules in.
|
||||||
|
|
||||||
In this example, the [TestData](https://grafana.com/docs/grafana/latest/datasources/testdata/) data source is used.
|
In this example, the [TestData]({{< relref "../../../../datasources/testdata" >}}) data source is used.
|
||||||
|
|
||||||
Alerts can be defined against any backend datasource in Grafana.
|
Alerts can be defined against any backend datasource in Grafana.
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ resource "grafana_folder" "rule_folder" {
|
|||||||
|
|
||||||
2. Define an alert rule.
|
2. Define an alert rule.
|
||||||
|
|
||||||
For more information on alert rules, refer to [how to create Grafana-managed alerts](https://grafana.com/blog/2022/08/01/grafana-alerting-video-how-to-create-alerts-in-grafana-9/).
|
For more information on alert rules, refer to [how to create Grafana-managed alerts](/blog/2022/08/01/grafana-alerting-video-how-to-create-alerts-in-grafana-9/).
|
||||||
|
|
||||||
3. Create a rule group containing one or more rules.
|
3. Create a rule group containing one or more rules.
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user