Compare commits

...

916 Commits

Author SHA1 Message Date
Leon Sorokin
1b24b24fd2 Heatmap: Handle bounds <= 0 with sparse/native histograms 2024-11-14 13:36:08 -06:00
owensmallwood
9240cf1930 Unified storage Indexer: Add kind to hardcoded resource types (#96149)
* add kind to hardcoded resource types for indexer

* call ListOptions in Watch

* Use GaugeVec instead of CounterVec

* index folders before dashboards
2024-11-14 14:28:52 -05:00
Matthew Jacobson
64c93217ff Alerting: Fix incorrect 500 code on missing alert rule dashboardUID / panelID (#96491) 2024-11-14 21:24:48 +02:00
renovate[bot]
97347a1f94 Update dependency @eslint/compat to v1.2.3 (#96487)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 17:59:56 +00:00
renovate[bot]
4f095bcd65 Update dependency @grafana/faro-web-sdk to v1.12.0 (#96485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 17:02:42 +00:00
Ieva
d5cbb9fdc4 GAS: Document group attribute sync roles and permissions (#96087)
document GAS roles and permissions
2024-11-14 16:37:57 +00:00
Leon Sorokin
39fe0b29ff XYChart: Remove old implementation (#96416) 2024-11-14 10:36:18 -06:00
renovate[bot]
c6f85579db Update dependency @grafana/plugin-e2e to v1.12.1 (#96476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 16:33:48 +00:00
Andrej Ocenas
19844c4ba8 Sidecar: Route handling rework (#96337) 2024-11-14 17:28:12 +01:00
Kevin Minehart
54cc666aa0 Alerting: Add useReturnTo hook to safely handle returnTo parameter (#96474)
Add useReturnTo hook to safely handle returnTo parameter

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2024-11-14 18:08:58 +02:00
renovate[bot]
8375fcd350 Update scenes to v5.25.0 (#96463)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 16:05:18 +00:00
Jacob Valdez
28ad9684e9 Docs/adding information on using variable expansion and env variable for TLS certs when provisioning data sources (#96400)
Docs/adding information on using variable expansion and env variables for TLS certs when provisioning data sources
2024-11-14 17:32:42 +02:00
Isabel Matwawana
af31ae0593 Docs: Add canvas custom images and icon guidance (#91806)
Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2024-11-14 17:25:18 +02:00
dependabot[bot]
0b84d8afe7 Bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1 (#95807)
* Bump github.com/golang-jwt/jwt/v4 from 4.5.0 to 4.5.1

Bumps [github.com/golang-jwt/jwt/v4](https://github.com/golang-jwt/jwt) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/golang-jwt/jwt/releases)
- [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md)
- [Commits](https://github.com/golang-jwt/jwt/compare/v4.5.0...v4.5.1)

---
updated-dependencies:
- dependency-name: github.com/golang-jwt/jwt/v4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix make workspace update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jo <me@jguer.space>
2024-11-14 17:06:12 +02:00
renovate[bot]
a983e8254c Update dependency @grafana/faro-web-sdk to v1.12.0 (#96462)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 16:59:14 +02:00
renovate[bot]
0e4bfefd37 Update dependency @grafana/faro-core to v1.12.0 (#96461)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 16:40:05 +02:00
Joao Silva
b23fdd63a6 New Select: Fix not being able to click around the caret (#96026) 2024-11-14 14:24:26 +00:00
Joao Silva
b820fc0111 Bookmarks: Lazy loading page (#96455) 2024-11-14 14:24:03 +00:00
grafana-pr-automation[bot]
09fa80a7cb I18n: Download translations from Crowdin (#96460)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-14 16:20:18 +02:00
colin-stuart
6abe99efd6 Auth: Passwordless Login Option Using Magic Links (#95436)
* initial passwordless client

* passwordless login page

* Working basic e2e flow

* Add todo comments

* Improve the passwordless login flow

* improved passwordless login, backend for passwordless signup

* add expiration to emails

* update email templates & render username & name fields on signup

* improve email templates

* change login page text while awaiting passwordless code

* fix merge conflicts

* use claims.TypeUser

* add initial passwordless tests

* better error messages

* simplified error name

* remove completed TODOs

* linting & minor test improvements & rename passwordless routes

* more linting fixes

* move code generation to its own func, use locationService to get query params

* fix ampersand in email templates & use passwordless api routes in LoginCtrl

* txt emails more closely match html email copy

* move passwordless auth behind experimental feature toggle

* fix PasswordlessLogin property failing typecheck

* make update-workspace

* user correct placeholder

* Update emails/templates/passwordless_verify_existing_user.txt

Co-authored-by: Dan Cech <dcech@grafana.com>

* Update emails/templates/passwordless_verify_existing_user.mjml

Co-authored-by: Dan Cech <dcech@grafana.com>

* Update emails/templates/passwordless_verify_new_user.txt

Co-authored-by: Dan Cech <dcech@grafana.com>

* Update emails/templates/passwordless_verify_new_user.txt

Co-authored-by: Dan Cech <dcech@grafana.com>

* Update emails/templates/passwordless_verify_new_user.mjml

Co-authored-by: Dan Cech <dcech@grafana.com>

* use &amp; in email templates

* Update emails/templates/passwordless_verify_existing_user.txt

Co-authored-by: Dan Cech <dcech@grafana.com>

* remove IP address validation

* struct for passwordless settings

* revert go.work.sum changes

* mock locationService.getSearch in failing test

---------

Co-authored-by: Mihaly Gyongyosi <mgyongyosi@users.noreply.github.com>
Co-authored-by: Dan Cech <dcech@grafana.com>
2024-11-14 08:50:55 -05:00
renovate[bot]
c865958292 Update dependency sass to v1.80.7 (#96459)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 15:43:26 +02:00
Ezequiel Victorero
dd3bbbe317 Docs: Add allow list email domain configuration (#95882) 2024-11-14 10:32:01 -03:00
grafana-pr-automation[bot]
ba3a0d897b I18n: Download translations from Crowdin (#96440)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-14 13:28:09 +00:00
renovate[bot]
6300591c6b Update dependency rollup to v4.26.0 (#96456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 15:25:22 +02:00
dependabot[bot]
093f99ad75 Chore(deps): Bump http-proxy-middleware from 2.0.4 to 2.0.7 (#95682)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.4 to 2.0.7.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.4...v2.0.7)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-14 14:22:02 +01:00
renovate[bot]
144c1b0c9d Update dependency react-dropzone to v14.3.5 (#96453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 12:44:01 +00:00
Andres Martinez Gotor
e886079d4c Enable preinstallAutoUpdate by default (#96446) 2024-11-14 13:37:21 +01:00
Andres Martinez Gotor
369d0a6aca Preinstall: Allow to extend default list (#96402) 2024-11-14 13:36:57 +01:00
renovate[bot]
4051df1f6c Update dependency react-calendar to v5.1.0 (#96449)
* Update dependency react-calendar to v5.1.0

* use properly exported CalendarType

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-11-14 14:30:52 +02:00
Laura Fernández
6a8755a8af New Select: decrease item height (#95952) 2024-11-14 13:24:02 +01:00
renovate[bot]
c8aaefd54a Update dependency rc-tree to v5.10.1 (#96445)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 12:11:54 +00:00
Ashley Harrison
192423956b GrafanaUI: Mark ScrollContainer as stable and deprecate CustomScrollbar (#96331)
* deprecate CustomScrollbar, promote ScrollContainer

* add documentation start

* use the properly exported ScrollContainer

* Update packages/grafana-ui/src/components/ScrollContainer/ScrollContainer.mdx

Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>

---------

Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
2024-11-14 12:06:21 +00:00
Alexander Akhmetov
324503ee8b Alerting: Add simplified_notifications_section field to the alert rule metadata (#95988) 2024-11-14 12:55:54 +01:00
Sam Jewell
c8a5be0bb3 Set CoreServices as codeowners for SQL Expressions (#96342)
* Set CoreServices as codeowners for SQL Expressions

* Set CoreServices as CodeOwners for ALL SSEs

Don't limit to SQL Expressions alone, but take all of the
Server Side Expressions
2024-11-14 11:54:26 +00:00
renovate[bot]
c023b441f5 Update dependency rc-cascader to v3.30.0 (#96444)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 11:37:29 +00:00
Isabel Matwawana
1d4b336f26 Docs: update docs for singleTopNav (#95663)
* updated kiosk behaviour

* Removed TV mode and updated Normal mode

* Updated kiosk mode and other small edits

* Removed dashboard controls from playlist controls section and reformatted

* Added playlist controls behaviour in kiosk mode

* Updated Use dashboards image and descriptions
2024-11-14 11:28:41 +00:00
renovate[bot]
bd0ee50e7c Update dependency msw to v2.6.4 (#96436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 10:55:17 +00:00
renovate[bot]
64047be78c Update dependency knip to v5.37.0 (#96435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 10:54:34 +00:00
brendamuir
14d868a791 Alerting docs: adds cloud alert rule limits (#96441) 2024-11-14 11:34:46 +01:00
Tobias Skarhed
a8ab82c80f Combobox: Documentation (#96307)
* Initial Combobobox docs

* Add test docs

* Add docs to props

* Add ComboboxOption docs

* Apply suggestions from code review

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>

---------

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-11-14 11:01:43 +01:00
Tom Ratcliffe
7a414a04a0 Alerting: Fix permissions for timeintervals UI and improve display of contact points in notification policies (#96129)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-11-14 09:55:15 +00:00
Misi
9233ad6462 Docs: Update GitLab, GitHub, Okta, Generic OAuth docs (#96386)
* GitHub docs changes

* Bunch of updates

* More updates
2024-11-14 10:47:25 +01:00
renovate[bot]
98caf47b22 Update dependency eslint-plugin-testing-library to v6.4.0 (#96391)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 11:16:43 +02:00
renovate[bot]
1911256fbb Update dependency i18next to v23.16.5 (#96392)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 11:15:15 +02:00
Karl Persson
5115247818 Zanana: Fix list test (#96401)
Fix: List operation are not guaranteed to respond in a certain order
2024-11-14 10:13:59 +01:00
Timur Olzhabayev
c5320e2ae7 Docs: fixing angular migration link (#96431)
fixing docs link
2024-11-14 09:00:04 +00:00
Brendan O'Handley
ad3fc95755 Revert "Prometheus: Check both error and http status for source of error " (#96396) 2024-11-14 04:19:30 +02:00
Leon Sorokin
7038bbe318 Matchers: Require explicit regexp syntax in byRefId matcher (#96358) 2024-11-13 14:57:17 -06:00
Tom Ratcliffe
bfecce320a Alerting: Fix some templates RBAC UI action control/checks (#94898) 2024-11-13 17:14:15 +00:00
Santiago
9e408f842c Alerting: Skip sanitizing labels when sending alerts to the remote Alertmanager (#96251)
* Alerting: Skip sanitizing labels when sending alerts to the remote Alertmanager

* fix drone image name
2024-11-13 11:21:44 -03:00
Isabel Matwawana
30b9f3e22a Docs: Add auth entries to what's new 11.2 (#96353) 2024-11-13 09:14:27 -05:00
Roberto Jiménez Sánchez
7bfaf2a7bf [Cloud Migrations] Fix panic in unit tests (#96389)
* Fix panic in unit test

* Reset mock to new one between tests
2024-11-13 16:06:32 +02:00
Carl Bergquist
16330e4113 Loki: Adds a suggestions resource call that inject scopes for finding label/labelvalues (#96025)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2024-11-13 14:36:12 +01:00
Victor Marin
19c04168c3 Fix dashboards listing table appearing distorted (#96371)
* fix CSS

* approx height calc to account for header div
2024-11-13 15:30:29 +02:00
renovate[bot]
7ecdad5a2d Update dependency eslint-plugin-no-barrel-files to v1.2.0 (#96387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 13:28:18 +00:00
renovate[bot]
20fa35f931 Update dependency eslint-plugin-jsdoc to v50.5.0 (#96385)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 15:26:28 +02:00
Vardan Torosyan
82fdd4f03f Docs: Clean up basic auth, anonymous access and main pages for auth configuration (#96259)
* Docs: Clean up basic auth, anonymous access and main pages for auth configuration

* Fix the typo

* Prettier should fix this

* fix minor typo

* Update docs/sources/setup-grafana/configure-security/configure-authentication/_index.md

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>

---------

Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
2024-11-13 14:25:37 +01:00
renovate[bot]
85caabf8e4 Update dependency eslint-plugin-jest to v28.9.0 (#96383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 13:02:12 +00:00
renovate[bot]
ed707098e1 Update dependency eslint to v9.14.0 (#96382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 13:01:43 +00:00
Leon Sorokin
0459a1eb80 BarChart: Fix decimals=0 config (#96354) 2024-11-13 06:43:16 -06:00
Ryan McKinley
d9b87ef987 Storage: Add authz access client stubs (#95548)
authz stubs

authz stubs

lint fix

Add folder

move check.Name on creat

fix watch
2024-11-13 13:17:15 +01:00
renovate[bot]
1129647039 Update dependency dompurify to v3.2.0 (#96380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 11:56:07 +00:00
renovate[bot]
6db8aa2d40 Update dependency core-js to v3.39.0 (#96379)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 11:55:19 +00:00
Misi
092b2ef5d2 Docs: Improve Google OAuth docs (#96377)
* Add Configuration options to the bottom, align the setup with Cloud docs

* Fixes, format changes

* Update docs/sources/setup-grafana/configure-security/configure-authentication/google/index.md

Co-authored-by: xavi <114113189+volcanonoodle@users.noreply.github.com>

* fix

---------

Co-authored-by: xavi <114113189+volcanonoodle@users.noreply.github.com>
2024-11-13 11:38:43 +00:00
Matheus Macabu
29ee90bc26 CloudMigrations: add parent folder name to alert rule resource (#96366) 2024-11-13 12:20:56 +01:00
Dana Axinte
924b0d0863 CloudMigration: Add user uid to on prem event collection (#94804)
* add useruid to report events

* test
2024-11-13 11:07:00 +00:00
renovate[bot]
3e9033c3bc Update dependency @testing-library/jest-dom to v6.6.3 (#96374)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 11:04:40 +00:00
renovate[bot]
94762d1e10 Update dependency @stylistic/eslint-plugin-ts to v2.10.1 (#96373)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 11:04:15 +00:00
Gilles De Mey
f0c57622f8 Alerting: useProduceNewAlertmanagerConfiguration for notification templates (#95290) 2024-11-13 11:46:10 +01:00
renovate[bot]
33b4c71cb2 Update dependency @reduxjs/toolkit to v2.3.0 (#96370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 10:18:43 +00:00
Misi
f5bd4d078b Docs: Extend SAML docs (improvements, assertion mapping) (#96367)
* Move the configuration options to the bottom and extend it

* Improve assertion mapping docs for Okta

* fix typo

* Update index.md

---------

Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
2024-11-13 11:18:27 +01:00
renovate[bot]
483a6c7fe2 Update dependency @grafana/plugin-e2e to v1.12.0 (#96368)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 10:17:51 +00:00
Tom Ratcliffe
c28c8f920f Alerting: Increase timeout and add retry to flaky EditContactPoint test (#96372) 2024-11-13 12:13:33 +02:00
Andres Martinez Gotor
8eff84661a Plugin history: Hide downgrade or upgrade buttons for preinstalled plugins (#96332) 2024-11-13 12:08:21 +02:00
renovate[bot]
aacce9e5f7 Update dependency @grafana/faro-web-tracing to v1.11.0 (#96341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 09:40:14 +00:00
renovate[bot]
ba836dec63 Update dependency @formatjs/intl-durationformat to ^0.6.0 (#96340)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 09:39:54 +00:00
Misi
275ee55e8f Auth: Extend the SAMLStrategy with entity_id (#96234)
Add the ability to specify EntityID
2024-11-13 10:36:46 +01:00
Esteban Beltran
acf57aa556 Frontend Sandbox: Do not consider internal plugins as elegible (#96325) 2024-11-13 10:28:19 +02:00
Jacob Valdez
f83f7332a1 Docs/removing outdated versioning info in OSS data source docs (#96351)
docs/removing outdated versioning info in oss data source docs
2024-11-12 14:55:05 -06:00
lean.dev
750a0bed71 MigrationAssistant: Restrict dashboards, folders and datasources by the org id of the signed in user (#96339)
apply security patch: main/206-202410241510.patch
2024-11-12 13:03:16 -06:00
Kristina
9f02acd4ca Transformations: Window calculation should use 0 if value in window does not exist (#95625)
* Use 0 for window functions if value does not exist

* Simplify logic, add test

* Fix tests, have first value count as 0 if null as well

* evaluate entire array instead of individual values

* Adjust logic, move prior results back
2024-11-12 12:50:38 -06:00
Matias Chomicki
68db1c6e68 Legacy annotations: add dataplane support (#96226) 2024-11-12 18:44:06 +00:00
Alexander Akhmetov
580d073b96 Alerting: Add context to the logger in state manager Warm (#96228) 2024-11-12 19:41:05 +01:00
Ieva
d4d9d56e9d GAS: Add docs for group attribute sync (#96090)
* add docs describing what GAS is and how it can be configured

* Update configure-group-attribute-sync.md

* Update configure-group-attribute-sync.md

---------

Co-authored-by: Aaron Godin <aaron.godin@grafana.com>
2024-11-12 18:05:46 +00:00
Matias Chomicki
01d2376782 Shard query splitting: stop querying on failure (#96284)
Shard query splitting: stop querying on final errors
2024-11-12 11:46:25 -06:00
Ryan McKinley
e9956f2345 Storage: Always set a UID in the apiserver (#96086) 2024-11-12 18:58:32 +02:00
Roberto Jiménez Sánchez
7f99e943a6 Do not use the span recorder in test (#96324) 2024-11-12 17:55:53 +01:00
Joao Silva
6414bcb6aa Combobox: Increase min height of the menu (#96327) 2024-11-12 16:39:49 +00:00
Alex Khomenko
1fcc0a8454 Alerting: Remove history patches (#95407) 2024-11-12 17:24:51 +01:00
renovate[bot]
29bcf7dbe9 Update babel monorepo to v7.26.0 (#96333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 18:23:05 +02:00
renovate[bot]
e1533ff39b Update dependency @faker-js/faker to v9.2.0 (#96334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 18:21:48 +02:00
Sven Grossmann
1c25d2ac2b Explore Metrics: Hide errors when fetching loki rules (#96328) 2024-11-12 18:17:08 +02:00
ismail simsek
7b3364cbc9 Chore: Rename the sorting option in explore metrics (#96160)
rename the option
2024-11-12 11:15:32 -05:00
grafana-delivery-bot[bot]
eaa6ba81cf Release: update changelog for 11.3.0+security-01 (#96294)
* Update changelog

* add relevant CVE fix to the changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
2024-11-12 16:11:34 +00:00
grafana-delivery-bot[bot]
9e1812dc3e Release: update changelog for 11.2.3+security-01 (#96264)
* Update changelog

* add relevant CVE fix to changelog

* remove irrelevant changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
2024-11-12 16:01:22 +00:00
Ashley Harrison
1e001451bd ScrollContainer: Replace CustomScrollbar usage (#96229)
* replace CustomScrollbar

* use ScrollContainer in RolePickerMenu and PanelDataPane
2024-11-12 15:43:04 +00:00
renovate[bot]
108d611205 Update dependency sass-loader to v16.0.3 (#96322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 15:34:09 +00:00
renovate[bot]
ec32f47db3 Update dependency rudder-sdk-js to v2.48.26 (#96321)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 15:32:26 +00:00
Alyssa (Bull) Joyner
2e687a1090 Azure Monitor: Fix JSON parsing error (#96004) 2024-11-12 08:07:43 -07:00
Piotr Jamróz
3a6858cf26 Frontend o11y: Report browser crashes to Faro (#95772)
* Report browser crashes to Faro

* Fix linting

* Change context log context prefix

* Update types

* Update crash detection library to report stale tabs

* Post merge fixes
2024-11-12 16:07:27 +01:00
Señor Performo - Leandro Melendez
6e7de36a67 docs: Fixed title wording from bar gauge to canvas (#96312) 2024-11-12 09:51:57 -05:00
Karl Persson
ae95a6158f Zanana: Remove opefga from client and implement compile (#96275)
Zanana: Remove opefga from client and implement Compile
2024-11-12 15:30:34 +01:00
renovate[bot]
095be20f8e Update dependency react-select to v5.8.3 (#96302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 14:30:09 +00:00
renovate[bot]
f3a3ce7691 Update dependency react-hook-form to v7.53.2 (#96301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 14:27:15 +00:00
Georges Chaudy
f4e91da6b1 Unistore: fix fodler migration (#96299)
configure default migration for resource folder
2024-11-12 16:06:42 +02:00
Isabella Siu
749f59b3e3 Elasticsearch: Mark elasticsearch errors as downstream (#96152)
Elasticsearch: mark elasticsearch errors as downstream
2024-11-12 08:46:31 -05:00
renovate[bot]
9df0f8a98d Update dependency re-resizable to v6.10.1 (#96293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 13:41:32 +00:00
renovate[bot]
70b7453f78 Update dependency postcss to v8.4.49 (#96292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 13:40:16 +00:00
Kristina
06f2f62223 Annotations: Hide edit/delete if annotations are from loki (#96141)
add in logic to hide edit/delete on annotations from loki
2024-11-12 07:38:33 -06:00
renovate[bot]
ed623f52db Update dependency nanoid to v5.0.8 (#96285)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 13:17:34 +00:00
renovate[bot]
d07977d366 Update dependency browserslist to v4.24.2 (#96276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 13:16:52 +00:00
Ashley Harrison
265342fbae Combobox: only render ScrollContainer when menu is open (#96271)
only render ScrollContainer when menu is open
2024-11-12 13:15:22 +00:00
Ieva
69a38c634c RBAC: Enable action sets by default (#96286)
enable action sets by default
2024-11-12 12:39:51 +00:00
Josh Hunt
b9beb14da0 Revert "Update dependency lerna to v8.1.9" (#96279)
* Revert "Update dependency lerna to v8.1.9 (#96239)"

This reverts commit 3b7c793c37.

* pause updating lerna with renovate
2024-11-12 12:16:35 +00:00
Andres Martinez Gotor
c3494614e3 PoC: Define userstorage API (#95557) 2024-11-12 12:56:41 +01:00
Georges Chaudy
c3571752b6 Unitstore: Fix the Folder migration (#96078)
* UniStore: Add folder to the SQL backend

This reverts commit aaa4f4a23e.

* fix folder migration
2024-11-12 12:52:04 +01:00
renovate[bot]
7f675cd218 Update dependency mini-css-extract-plugin to v2.9.2 (#96280)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 11:48:58 +00:00
renovate[bot]
be7a1d8805 Update dependency marked-mangle to v1.1.10 (#96278)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 11:25:17 +00:00
Eric Leijonmarck
6fa06a1406 Serviceaccounts: FIX nul for field for toString (#96267)
Switch to uid for profilerow
2024-11-12 11:10:37 +00:00
Torkel Ödegaard
8a1bbe7517 PanelEdit: Fixes issue with repeat options (#96260) 2024-11-12 12:01:08 +01:00
renovate[bot]
7090fd5b34 Update dependency @tanstack/react-virtual to v3.10.9 (#96266)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 11:00:55 +00:00
Karl Persson
db6422c8a3 Zanzana: Use correct namespace when evaluating permission (#96258)
Use correct namespace
2024-11-12 11:52:29 +01:00
renovate[bot]
7812cb83e9 Update dependency eslint-plugin-jsdoc to v50.4.3 (#96238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 10:46:13 +00:00
brendamuir
35572c9731 Alerting docs: adds prereqs to configure data source (#96272)
* Alerting docs: adds prereqs to configure data source

* fixes numbering
2024-11-12 11:44:42 +01:00
Younjin Song
44d206c272 Azure: Unify credentials in frontend (#95354)
* init

* fix lint

* fix lint

* lint

* update version

* fix
2024-11-12 10:36:48 +00:00
Sonia Aguilar
2f58311eea Alerting: Fix setting datasource uid, when datasource is string in old version (#96085)
fix setting datasource uid, when datasource is string in old versions rules
2024-11-12 11:35:01 +01:00
Roberto Jiménez Sánchez
fde9ddfc8c [Cloud Migration] Skip flaky cloud migration unit test (#96256)
Skip Flaky Cloud Migration test
2024-11-12 11:08:35 +01:00
Misi
a2c998ba1d Docs: Azure AD/ Entra ID docs improvements (#96225)
* Add Configuration options to Azure/Entra docs

* Update docs/sources/setup-grafana/configure-security/configure-authentication/azuread/index.md

Co-authored-by: Vardan Torosyan <vardants@gmail.com>

* Address feedback

* Address other feedback

* Fix link

---------

Co-authored-by: Vardan Torosyan <vardants@gmail.com>
2024-11-12 11:04:39 +01:00
renovate[bot]
3b7c793c37 Update dependency lerna to v8.1.9 (#96239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 10:02:29 +00:00
Jara Suárez de Puga García
b14d58a890 Update images-in-notifications for Alerting (#95765)
* Update images-in-notifications for Alerting

* Review I

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Clarify it's only on Emails

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
2024-11-12 10:34:36 +01:00
Gabriel MABILLE
cc9cdbe82d Authz: Move extension proto up a layer (#96254)
* Authz: Move extension proto up a layer

* Lint
2024-11-12 10:19:12 +01:00
MAFLO321
ab813cb601 Postgresql: Support tables from non-default schema (#95636)
* Postgresql: Support tables from non-default schema

- Add support for schema-qualified table names.
- Partially resolve an issue where the column type of a table from the
  wrong schema with the same table name was incorrectly used. Now
  limited to tables of schemas within the search_path.

* Support schema in raw query editor

---------

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2024-11-12 09:18:29 +00:00
Karl Persson
8d74296b6c Authn: Always set namespace (#96230)
* Rename from AllowedKubernetesNamespace to Namespace

* Use a sync hook to always set namespace for Identity.

* format

* Don't set uid when authenticating as user
2024-11-12 10:12:47 +01:00
Vardan Torosyan
7eb4b974e0 Docs: Better explanation for enabling lookup and a small fix on okta role mapping (#96232)
* Docs: Better explanation for enabling lookup and a small fix on okta role mapping

* Run prettier
2024-11-12 09:44:49 +01:00
Agnès Toulet
d2aca99d38 Public Dashboard: Support relative time range in panels when time picker is disabled (#96076)
Public Dashboard: Support relative time range in panels
2024-11-12 09:21:13 +01:00
Erik Sundell
4c0dde6f2f Plugin Extensions: Streamline log messages (#95943)
* streamline log messages

* cleanup

* fix tests

* only log errors to the console

* more cleanup again

* cleanup

* Update public/app/features/plugins/extensions/errors.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* pr feedback

* remove white space

* Update public/app/features/plugins/extensions/registry/ExposedComponentsRegistry.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* revert touched file

* revert touched file

* fix tests

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-11-12 08:55:04 +01:00
Roberto Jiménez Sánchez
477326b9c3 [CloudMigrations] Fetch cloud migration status asynchronously (#96084)
* Single go-routine without touching too many lines.
* Fix unit tests
* Use require for Eventually
* Use a 10 second internal to poll for new results.
2024-11-11 19:26:30 +01:00
Adela Almasan
754351273b Actions: Fix interpolation (#96161) 2024-11-11 11:08:15 -06:00
Eric Leijonmarck
4f24a91484 LBAC for datasources: FIX adds missing uid in endpoint url (#96241)
FIX: adds missing uid in endpoint ulrl
2024-11-11 17:06:07 +00:00
Ieva
c8f3173f2c GAS: Set group attribute sync to private preview (#96146)
set GAS to private preview
2024-11-11 16:25:17 +00:00
Ieva
fa498e4836 GAS: Add HTTP API docs for group attribute sync (#96088)
add HTTP API docs for GAS
2024-11-11 16:24:26 +00:00
renovate[bot]
de6a37e1c5 Update dependency comlink to v4.4.2 (#96231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 16:17:03 +00:00
renovate[bot]
2799e5aa75 Update dependency @types/lodash to v4.17.13 (#96159)
* Update dependency @types/lodash to v4.17.13

* fix types

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-11-11 18:16:20 +02:00
Alexander Zobnin
b1fb581ab1 Zanzana: Evaluate access with Check request (server-side) (#96213)
* Zanzana: Evaluate access with Check request (server-side)

* Pass parent folder for checking access

* Review suggestions

* remove fixme comment
2024-11-11 16:39:21 +01:00
renovate[bot]
27a0491f30 Update dependency @swc/helpers to v0.5.15 (#96224)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 15:11:53 +00:00
Will Browne
6bd1865749 Plugins: Fix flaky reverse proxy response tests (#96051)
tidy
2024-11-11 14:35:42 +00:00
Josh Hunt
e8241636b8 Combobox: Improve async UX (#96054)
* Refactor basic usage with stateReducer

This is a combination of 3 commits.
This is the 1st commit message:
more wip

This is the commit message #2:
even more wip

This is the commit message #3:
got basic usage working well with stateReducer

remove unrelated change

todo tests

* fix behaviour for async

* clean up dev stuff

* story

* Fix options being cleared for non-async combobox

* Fill out tests!

* put story back

* clean up metriccombobox test

* show selected value as placeholder while menu is open

* properly fallback placeholder to the prop
2024-11-11 16:35:37 +02:00
renovate[bot]
3a242d8274 Update dependency @grafana/azure-sdk to v0.0.5 (#96220)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 14:19:57 +00:00
Misi
1dcce86cce Docs: Update Okta docs (#96216)
* Update Okta docs

* fix typo

* fix typo

---------

Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
2024-11-11 14:49:18 +01:00
renovate[bot]
b9f8e66806 Update dependency @rollup/plugin-typescript to v12.1.1 (#96210)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 13:45:39 +00:00
Tom Ratcliffe
cbe8b8a290 Alerting: Lint and remove unused object properties (#92996) 2024-11-11 13:02:46 +00:00
brendamuir
ca04cf780b Alerting docs: fixes broken oncall link (#96215) 2024-11-11 14:00:30 +01:00
Karl Persson
9f66843915 Zanzana: use namespace when performing reconciliation (#96205)
* Special handling for zanzana reconciliation if stack id is configured

* remove sync call
2024-11-11 13:48:49 +01:00
brendamuir
19bed65d9b Alerting docs: updates to landing page (#96200)
* Alerting docs: updates to landing page

* Update docs/sources/alerting/_index.md

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>

---------

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-11-11 13:39:02 +01:00
Josh Hunt
436f8db3e3 AutoSizeInput: Fix controlled value being ignored when it's empty string (#96212) 2024-11-11 12:35:30 +00:00
Laura Fernández
a459f648b5 Combobox: Add default border-radius to the menu/dropdown (#96208) 2024-11-11 13:27:54 +01:00
Ivana Huckova
e5519161f2 Zipkin: Run resource calls through backend with feature toggle enabled (#96139)
* Zipkin: Run resource calls througgh backend with feature toggle enabled

* Update

* Don't return early in createZipkinURL and add tests

* Update pkg/tsdb/zipkin/client.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Update pkg/tsdb/zipkin/client.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Update pkg/tsdb/zipkin/client.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Update pkg/tsdb/zipkin/client_test.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Update pkg/tsdb/zipkin/client_test.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Update pkg/tsdb/zipkin/client_test.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Update pkg/tsdb/zipkin/client_test.go

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>

* Fix lint

* Fix tests

---------

Co-authored-by: Sriram <153843+yesoreyeram@users.noreply.github.com>
2024-11-11 13:04:22 +01:00
Carl Bergquist
c7b6822a5e Loki: Apply scopes to expression if feature toggle is enabled. (#95917)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
2024-11-11 12:53:24 +01:00
Erik Sundell
8148f0c3bb Plugin extensions: Make description optional (#95555)
make description optional
2024-11-11 12:22:57 +01:00
grafana-pr-automation[bot]
5bce96e8e7 I18n: Download translations from Crowdin (#96142)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-11 13:19:50 +02:00
jackyin
3012d4c043 Flame Graph: Fix crash when it receives empty data (#95604)
flame graph crash
2024-11-11 11:09:11 +00:00
renovate[bot]
c7aef6a375 Update dependency @grafana/plugin-e2e to v1.11.3 (#96204)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 11:05:45 +00:00
Tobias Skarhed
4f433ada14 Combobox: Fix stories (#96206)
Spread args onto component in stories
2024-11-11 12:02:58 +01:00
Pepe Cano
7112a79b35 Alerting UI: Update help button and descriptions for recording rules (#96047)
* Hide `Instances` field in RuleDetails view for recording rules

* Alerting UI: add `helpLink` to Recording Rules docs

* Make the Metric input placeholder more explicit for recording rules
2024-11-11 11:59:53 +01:00
Pepe Cano
154a2e0d06 Alerting docs: Move Meta monitoring to Additional configuration section (#96150) 2024-11-11 11:08:12 +01:00
Leonor Oliveira
a1de4cc5fc Allow downgrade from any mode to mode 1 or 2. Allow setting all dual writer combinations (#95968)
* Allow downgrade from any mode to mode 1 or 2

* Allow for all combinations of dual writer setting

* Add all cases

* Include mode3
2024-11-11 10:52:36 +01:00
Ashley Harrison
ee7f521c08 ScrollContainer: Use ScrollContainer in some dashboard components (#95668)
* use ScrollContainer in some dashboard components

* remove unnecessary wrapper

* remove unnecessary minHeight
2024-11-11 09:50:35 +00:00
renovate[bot]
c04236b60d Update dependency @floating-ui/react to v0.26.27 (#96158)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-11 09:43:56 +00:00
Jack Westbrook
787f3b8d6c Webpack: Set eslint plugin config to flat to prevent cli errors (#96199)
fix(webpack): set eslint plugin config to flat to prevent cli errors
2024-11-11 10:23:24 +02:00
Elliot Kirk
e22deeac04 Frontend Monitoring: adding ignoreUrls param to EchoSrvTransport (#95801)
* adding ignoreUrls param to EchoSrvTransport

* adding test for ignore urls

* linting

* cleaning up

* adding a new error message to the list of ignored errors
2024-11-11 09:15:24 +01:00
Ryan McKinley
c0de407fee K8s/Dashboards: Delegate large objects to blob store (#94943) 2024-11-09 08:09:46 +03:00
renovate[bot]
b1c5aa0929 Update dependency @prometheus-io/lezer-promql to v0.55.1 (#95272)
* Update dependency @prometheus-io/lezer-promql to v0.55.1

* chore(grafana-prometheus): update type import

* fix duration resolver

* fix unit test

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2024-11-09 01:16:51 +02:00
Ben Sully
b4644580cf chore: bump @bsull/augurs to v0.6.0 (#96119) 2024-11-08 22:35:22 +00:00
renovate[bot]
66f0d97aad Update dependency @eslint/compat to v1.2.2 (#96156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-08 22:32:45 +00:00
renovate[bot]
8d3faabc90 Update dependency @lezer/lr to v1.4.2 (#87522)
* Update dependency @lezer/lr to v1.4.2

* Fix: Update dependency @lezer/lr to v1.4.2 (#94818)

* Update dependency @lezer/lr to v1.4.2

* Tempo: Update error detection shift in error lookup

Since lezer 1.3.8 the position seems to be shifted + 1

* Add back looking for errors behind the cursor

* Post-merge fixes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Fix the resolvers for loki situation

* grammar

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2024-11-08 23:09:52 +01:00
Scott Lepper
f93fd77c9c search: list and filter tags (#96130)
search: list and filter tags on the dashboard list
2024-11-08 16:39:08 -05:00
Brendan O'Handley
3f81f0d145 Prometheus: Check both error and http status for source of error (#96060)
* check error for source and check http status for source

* refactor

* add source to health check status code as well

* remove error where it will be nil
2024-11-08 23:19:14 +02:00
Fayzal Ghantiwala
5a143be653 Alerting: Add pagination to /api/prometheus/grafana/api/v1/rules (#95959)
* Intermediate step before refactoring

* Sort groups to paginate on them

* Formatting and improved test

* Address comments

* Update tests
2024-11-08 16:58:14 +00:00
Ashley Harrison
2458329f4f ScrollContainer: use in Explore pages (#95830)
use ScrollContainer in explore pages
2024-11-08 16:46:07 +00:00
Ashley Harrison
4a362d41a6 Chore: Remove/replace CustomScrollbar in alerting (#96102)
remove/replace CustomScrollbar in alerting code
2024-11-08 16:45:30 +00:00
Kristina
95692b3d68 BarChart: Fix threshold lines rendering for horizontal orientation (#95737)
* Use different threshold x/y coordinates depending on orientation

* invert wording / semantics

---------

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2024-11-08 10:43:23 -06:00
Todd Treece
7bb1b352e1 CI: Use grot for dependabot go workspace commits (#96136) 2024-11-08 18:26:26 +02:00
Sonia Aguilar
d92e17ee55 Alerting: Create reusable components for threshold (#94045)
* Create reusable components for threshold

* update translations

* do not use capital letters for keys in translations
2024-11-08 18:15:29 +02:00
Karl Persson
acf119a12c Zanzana: resource sets on folder grants read on all children (#96127)
* resource sets on folder grants read on all children

* remove comment

* Add type for consistency
2024-11-08 16:53:51 +01:00
ismail simsek
40637a221e Chore: Don't require exemplar query for instant query when "Both" query type is selected (#96122)
Don't require exemplar for instant query
2024-11-08 17:51:14 +02:00
maicon
b5e636b126 UniStore: Legacy List Folders must return all folders (#96062)
* UniStore: Legacy List Folders must return all folders

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

---------

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-11-08 12:38:34 -03:00
Marc M.
9525891455 Pyroscope: Add limit number of series returned by the data source (#95780) 2024-11-08 17:22:29 +02:00
Sonia Aguilar
ea0a6a1f7f Alerting: Force refetch prom rules when refreshing panel (#96120)
Force refetch prom rules when refreshing panel
2024-11-08 17:07:43 +02:00
Pepe Cano
b953190328 Alerting docs: reuse Additional configuration page for Cloud docs (#96101) 2024-11-08 16:03:47 +01:00
Gabriel MABILLE
bd53fa9580 LocalSigner: Remove unused dependency (#96118)
ID Token Signer: Remove unecessary deps
2024-11-08 15:46:16 +01:00
ismail simsek
c972ec9737 Explore Metrics: Persist otel experience toggle state in local storage (#96057)
persist otel experience toggle state in local storage
2024-11-08 15:39:46 +01:00
Victor Marin
d9dfa3ece3 DashboardScenes: Fix queryOptions interval not resetting on empty minInterval (#95659)
* Fix queryOptions interval not resetting on empty minInterval

* fix

* refactor + tests
2024-11-08 16:22:20 +02:00
grafana-delivery-bot[bot]
3dfbae7331 Release: update changelog for 10.4.12 (#96108)
* Update changelog

* Update changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2024-11-08 14:12:35 +00:00
Alexander Zobnin
910ec7e7dc Zanzana: Use separate store for each org (#96015)
* Move server init into server package

* map store name to id

* refactor model loading

* pass namespace into reconcilers and collectors

* refactor

* Extend authz server with Read and Write methods

* use new read/write in reconciler

* implement server side read and write

* Sync permissions for every org

* handle namespace in check and list

* split read and write

* provide conditions

* Fix client implementation

* fix nil conditions

* remove unused client code

* use lock for store access

* move type translators to common package

* fix folder collector

* fix store creation

* remove unused AuthorizationModelId

* fix server tests

* fix linter
2024-11-08 14:54:36 +01:00
brendamuir
86bc087257 Alerting docs: changes advanced to additional (#96083) 2024-11-08 13:29:10 +01:00
Eric Leijonmarck
e86283e8b1 LBAC for datasources: Adds teamUID to lbac rules for terraform resource consumption (#96048)
Add teamUID to lbac rules swagger
2024-11-08 08:53:38 +00:00
Mariell Hoversholm
741aa91e6f docs: clarify incompatibility with unsupported databases (#96073)
* docs: clarify incompatibility with unsupported databases

* fix: missed a quote
2024-11-08 09:47:59 +01:00
Karl Persson
f0a5b444e3 Zanzana: generic resource only (#96019)
* Remove collectors

* Remove zanzana search check, we need to rewrite that part to the new schema

* Only use generic resource schema and cleanup code we don't want to keep / need to re-write
2024-11-08 09:30:41 +01:00
Adam Simpson
9b0644e5c8 chore: move DatasourceUid parsing to ruler instead (#95972)
Reverts #95629

This reverts commit 3adc7c8771.
2024-11-07 21:48:29 -05:00
Todd Treece
0b06dca472 CI: Add Dependabot go workspace action (#96064) 2024-11-07 20:14:04 -05:00
Stephanie Hingtgen
4e318e6285 Revert "Chore: Enable cache on golangci linter" (#96069)
Revert "Chore: Enable cache on golangci linter (#95471)"

This reverts commit d5cde0b60a.
2024-11-08 01:05:14 +02:00
Stephanie Hingtgen
a5bef386ad Revert "Chore: Clean up some excludes and fix makefile" (#96068)
Revert "Chore: Clean up some excludes and fix makefile (#96052)"

This reverts commit f2998037e5.
2024-11-08 00:44:35 +02:00
Eric Leijonmarck
00c3c17035 Flaky tests alerting (#96055) 2024-11-07 21:08:51 +00:00
owensmallwood
d023cb5931 Unified Storage: Adds metric to count indexed docs by kind (#96056)
Adds metric to count indexed docs by kind
2024-11-07 16:12:13 -03:00
Fayzal Ghantiwala
1fdc48faba Alerting: Make context deadline on AlertNG service startup configurable (#96053)
* Make alerting context deadline configurable

* Remove debug logs

* Change default timeout

* Update tests
2024-11-07 18:23:55 +00:00
Serge Zaitsev
f2998037e5 Chore: Clean up some excludes and fix makefile (#96052)
clean up some excludes and fix makefile
2024-11-07 20:05:10 +02:00
Kristina
ac88461fe6 Canvas: Fix references for ResourcePicker (#95580)
* useRef instead of create ref for functional components, pass function to close popper if needed

* Cleanup, hide on save as well

* add comment about when hidePopper is available to content
2024-11-07 11:37:49 -06:00
Serge Zaitsev
d5cde0b60a Chore: Enable cache on golangci linter (#95471)
* try to enable cache on golangci linter

* bump version

* exclude G115

* reduce timeout

* remove deprecated linter

* bump linter version in bingo

* try a different syntax for workspace modules

* try another command

* add apps to linter path

* try disabling cue codegen

* skip some linting in devenv

* exclude dirs and try again

* try workaround for pkg

* try path instead of dir

* make it one line

* replace package prefix

* exclude xorm

* exclude wire

* file-based aproach to nolint in workspaces

* missing quote

* simplify command line

* change ownership
2024-11-07 18:15:52 +01:00
Brendan O'Handley
6638dd9a83 Revert "Prometheus: Add error source to differentiate errors for api server work" (#96043)
Revert "Prometheus: Add error source to differentiate errors for api server w…"

This reverts commit b9b5445090.
2024-11-07 16:52:42 +00:00
Jacob Valdez
4cc204affe Docs: clarify the description of actions_allow_post_url (#95995)
* Docs: clarify the description of actions_allow_post_url

* adding a word to clarify this extends the default behavior and doesn't replace it

* Update docs/sources/setup-grafana/configure-grafana/_index.md

Co-authored-by: Beverly Buchanan <131809838+BeverlyJaneJ@users.noreply.github.com>

* Update docs/sources/setup-grafana/configure-grafana/_index.md

Co-authored-by: Beverly Buchanan <131809838+BeverlyJaneJ@users.noreply.github.com>

---------

Co-authored-by: Beverly Buchanan <131809838+BeverlyJaneJ@users.noreply.github.com>
2024-11-07 09:55:49 -06:00
Ivana Huckova
4d0a7637b2 Zipkin: Run health check through backend (#96031)
* Zipkin: Run health check through backend

* Mark some errors as downstream

* Update pkg/tsdb/zipkin/zipkin.go

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>

* Use errors.New where error formatting is not needed

* Remove executable in plugin.json

* Fix joining the path

* Keep logger as global and then create from context

* Close the res body

---------

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2024-11-07 16:48:00 +01:00
ismail simsek
21ba507bcb Revert "Prometheus: Fix escaping of quotation marks for variables" (#96038)
Revert "Prometheus: Fix escaping of quotation marks for variables (#93415)"

This reverts commit 2bfdee73e3.
2024-11-07 16:38:05 +01:00
Pepe Cano
ff2f612412 Alerting docs: Introduction - brief overview of notification messages. (#95987)
* Intro: simplify `Architecture`. Add a new guideline

* Define `Notification policies` as an advanced option

* Intro: include about "Notification messages"

* Minor copy changes
2024-11-07 16:35:27 +01:00
Jack Westbrook
8c41137bcf Frontend: Update to Eslint 9 (#94823)
* chore(eslint): bump all eslint related packages to latest

* chore(eslint): update linting scripts work with v9

* chore(eslint): introduce flat config

* chore(eslint): delete legacy configs

* feat(grafana-eslint-rules): update rules to use eslint 9 APIs

* chore(eslint): migrate all nested eslintrc files over to root config

* chore(packages): bump eslint dependencies

* feat(betterer): make it work with eslint 9

* style(grafana-data): remove non-existant ban-types rule from disable declarations

* chore(wip): [wip] link eslint-config-grafana

* chore(packages): add @eslint/compat

* chore(eslint): add compat to testing library and fix alerting rules

* chore(eslint): bump grafana eslint-config to v8

* chore(explore): delete legacy eslint config

* chore: clean codeowners file, remove grafana/eslint-config from e2e plugins

* test(eslint-rules): fix no-border-radius-literal and no-aria-label-e2e-selectors rule tests

* Add .js to prettier checks so new eslint.config.js file isn't missed

* chore(eslint): move emotion/syntax-preference to grafana/defaults

* test(eslint): use core-js structured-clone

* revert(services): undo merge backend-format githook changes

* test(eslint-rules): remove structured-clone polyfill from tests

* chore(eslint): add back public/lib/monaco to ignore list, sort alphabetically

* chore(e2e-plugins): remove eslint config 7 from plugins package.json

---------

Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
2024-11-07 16:31:06 +01:00
ismail simsek
8956400498 Explore Metrics: Fix showing related logs scene (#96036)
remove related logs scene from label breakdown
2024-11-07 17:30:01 +02:00
Alex Khomenko
6bfb24c7b0 BrowseDashboards: Append orgId to folder URL (#96029)
* BrowseDashboards: Append orgId to folder URL

* Extract folder URL creation logic
2024-11-07 17:12:45 +02:00
Gábor Farkas
a45deafc96 query: add missing x-rule headers (#95948) 2024-11-07 16:03:54 +01:00
Brendan O'Handley
b9b5445090 Prometheus: Add error source to differentiate errors for api server work (#95999)
add error source to differentiate errors for api server work
2024-11-07 08:59:53 -06:00
brendamuir
b2af163dc5 Alerting docs: adds advanced config section (#96013)
* Alerting docs: adds advanced config section

* corrects ref

* feedback from pepe

* renames detect and respond
2024-11-07 15:59:00 +01:00
Scott Lepper
05dda7f0a1 search: dashboard list link (#95996)
search: dashboard list link
2024-11-07 09:40:05 -05:00
linoman
3d51ca7377 SCIM: Add feature flag (#96021)
* Add feature flag
2024-11-07 15:38:46 +01:00
Arati R.
7fa4a979e3 K8s/Folders: Add write access hook before creating index server (#96030)
Change order of when to add write access hook
2024-11-07 16:20:07 +02:00
jackyin
1e58747a39 trend: choose trend crash (#95451)
* fix bug

* optimise warning return
2024-11-07 07:48:50 -06:00
Andres Martinez Gotor
a415c0b831 Preinstall: Automatic updates if no version is specified (#95970) 2024-11-07 13:14:25 +01:00
Ryan McKinley
6c9afba607 Reporting: update swagger with deprecations (#96008) 2024-11-07 15:08:03 +03:00
Will Browne
b87c76ad21 Plugins: Add metric to track plugin backend target (#95976)
* add metric to track plugin backend target

* tidy

* fix test
2024-11-07 12:01:46 +00:00
Carl Bergquist
5722569676 loki: disable flaky tests for scopes injection (#96018)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
2024-11-07 13:03:42 +02:00
Andrej Ocenas
e55100fa90 Sidecar: isAppOpened returns true only if there are 2 apps rendered (#95978)
* Check if sidecar is used

* Update packages/grafana-runtime/src/services/SidecarService_EXPERIMENTAL.ts

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2024-11-07 11:50:05 +01:00
Andrej Ocenas
bee29c14c6 Sidecar: Make header consistently 100% width so the X button is visible (#95982)
Make a wrapper overflow so that header can stay 100%
2024-11-07 11:33:07 +01:00
Gabriel MABILLE
df8b6e6862 Fix: Close grpc_authenticator fallback trace (#96009)
Fix: Close grpc_authenticator trace
2024-11-07 11:29:25 +01:00
Ivana Huckova
c151021b16 Zipkin: Add feature toggle for backend migration (#95973) 2024-11-07 10:35:53 +01:00
Ryan McKinley
8ffc25784c Chore: Add vscode launcher to attach test process (#95718) 2024-11-07 10:05:55 +01:00
Marcus Andersson
df4a5aeaf1 PluginExtensions: Logs panel takes full height/width (#95825)
Making the log panel taking full space of page.
2024-11-07 09:54:50 +01:00
Señor Performo - Leandro Melendez
cd3a71e7cb docs: Update CanvasDoc adding video link (#95953)
Update CanvasDoc adding video link
2024-11-06 21:53:08 +01:00
Scott Lepper
3dbeacfebc search: dashboard list sorting (#95983)
search: dashboard list sorting
2024-11-06 15:25:44 -05:00
owensmallwood
b6596db75e Unified Storage Indexer: Build tenant indexes concurrently (#95795)
* WIP - build tenant indexes concurrently

* adds local dev seeders and readme for indexer

* update logging and adds locking in getShard()

* update logs

* Adds Namespaces func. Initializes index after ResourceServer is created.

* fixes Count() and updates test lint issues

* Initialize index separately. Don't do it when creating the resource server. Makes testing really awkward.

* fix lint error

* handles error when getting namespaces

* updates test and index helper funcs
2024-11-06 12:58:07 -06:00
Eric Leijonmarck
3877537dc0 Reverse proxy: Skip flaky test for 5xx status codes (#95839)
add 5xx status codes
2024-11-06 17:54:34 +00:00
Alexander Akhmetov
4ce1abc6f9 Alerting: Fix saving advanced mode toggle state in the alert rule editor (#95924) 2024-11-06 18:39:15 +01:00
renovate[bot]
70c21a2e4d Update scenes to v5.23.1 (#95951)
* Update scenes to v5.23.1

* Fix e2e tests

* Fix unit tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Bogdan Matei <bogdan.matei@grafana.com>
2024-11-06 19:20:27 +02:00
Timur Olzhabayev
fbbb4463f8 Adding Marcus to Hall of Fame and updating codeowners (#95957)
* Adding Marcus to Hall of Fame and updating codeowners

* fixing prettier issue
2024-11-06 19:19:59 +02:00
Yuri Tseretyan
af513964c8 Alerting: Migration to remove scope from permission alert.notifications.receivers:create (#95805)
add migration to remove scope from receivers:create permission
2024-11-06 11:31:40 -05:00
Todd Treece
f41f0eac80 Chore: Use fork of github.com/goccy/go-json (#95969) 2024-11-06 11:29:43 -05:00
grafana-pr-automation[bot]
c565e9869e I18n: Download translations from Crowdin (#95975) 2024-11-06 17:23:14 +01:00
Ashley Harrison
b85b18288a Chore: Fix some theme nits (#95887)
fix some theme nits
2024-11-06 16:03:45 +00:00
Tobias Skarhed
0629a34ae4 Combobox: Add no options message and aria live region (#95938)
* Add no options message and aria live region

* Add i18n

* Extract message layout and use Trans component

* Fix unused imports
2024-11-06 17:10:06 +02:00
Leonor Oliveira
aaa4f4a23e Revert "UniStore: Add folder to the SQL backend" (#95966)
Revert "UniStore: Add folder to the SQL backend (#95671)"

This reverts commit f075662696.
2024-11-06 17:04:57 +02:00
kay delaney
26b0e8f105 Dashboard datasource: Return annotations as series when query topic is "annotations" (#95965) 2024-11-06 15:03:06 +00:00
Tobias Skarhed
a279220d74 Combobox: Use ScrollContainer to show scroll indicators (#95962)
Add CustomScrollbar
2024-11-06 15:35:31 +01:00
Syerikjan Kh
06bdfe8e96 ref: remove alias check - moved to gcom (#95955) 2024-11-06 09:30:24 -05:00
Pepe Cano
290612e366 Alerting docs: specify using multiple contact point integrations in the UI and HTTP API (#95890)
* Sort list of contact points on the sidebar

* Update `Configure contact points` to clarify contact point integrations

* Alerting HTTP API: fix `EmbeddedContactPoint` properties table

* HTTP Alerting API: clarify how `ContactPoint.name` groups contact points

* Update docs/sources/alerting/configure-notifications/manage-contact-points/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-11-06 15:28:44 +01:00
Bogdan Matei
52f4bd64e0 Dashboard: Append orgId to URL (#95960) 2024-11-06 16:01:55 +02:00
Josh Hunt
8d765cfba1 Prometheus: enable custom values in MetricCombobox (#95950) 2024-11-06 13:59:55 +00:00
kay delaney
9d4a087d77 Dashboard datasource: Include source panel annotations (#95958) 2024-11-06 15:52:54 +02:00
Sergej-Vlasov
d225e0a95c DiffViewer: update to newer react-diff-viewer-continued for performance improvements (#95729)
update to newer react-diff-viewer-continued for performance improvements
2024-11-06 13:36:12 +00:00
Carl Bergquist
70223b2e3d Loki: Add support for injecting scopes into loki expressions. (#95591)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Kyle Brandt <kyle@grafana.com>
2024-11-06 15:28:42 +02:00
Bogdan Matei
a80517d6fe Scopes: Add scopes to metrics explore (#94802) 2024-11-06 15:11:33 +02:00
Karl Persson
3311df6e3d Docs: Remove org id from create team request docs (#95947)
* Remove org id from create team request docs

* remove reference to orgId
2024-11-06 13:53:48 +01:00
Andrej Ocenas
86ef3c916d TimeRangeProvider: Fix synced status being kept when only one picker is mounted (#95885) 2024-11-06 13:40:17 +01:00
Mariell Hoversholm
f15f6022de fix: pass context into secrets logs (#95944) 2024-11-06 12:52:29 +01:00
Sonia Aguilar
3c1a5ab439 Alerting: Handle regex matchers with flags (#95883)
* handle regex matchers with flags

* add test in alertmanager.test.ts

* refactor to use the same matching functions

* lint

* lint again

* move matchers functions to matchers.ts

---------

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-11-06 13:40:55 +02:00
Ashley Harrison
f8ae71e458 Frontend: Replace deprecated meta tag with correct version (#95939)
replace deprecated meta tag with correct version
2024-11-06 10:34:14 +00:00
grafana-pr-automation[bot]
0007ede9de I18n: Download translations from Crowdin (#95942) 2024-11-06 12:20:22 +02:00
Brad Cowie
2bfdee73e3 Prometheus: Fix escaping of quotation marks for variables (#93415)
* Prometheus: Fix escaping of quotation marks for non-regex variables

* Prometheus: Fix escaping of double quotation marks for regex variables

* Prometheus: Add escaping for adhoc filter label queries
2024-11-06 11:19:09 +01:00
grafana-pr-automation[bot]
228bf711f9 I18n: Download translations from Crowdin (#95891)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-06 10:39:59 +01:00
Hugo Kiyodi Oshiro
058b28aaad Plugins: Add install specific version feature in plugins version tab (#93922) 2024-11-06 10:29:03 +01:00
Tobias Skarhed
70e05c6a3a Combobox: Remove Chance to generate options in story (#95842)
Generate basic options
2024-11-06 09:48:44 +01:00
Misi
ab974ddf14 ServerLock: Fix pg concurrency/locking issue (#95916)
Fix pg unique constraint validation in serverlock
2024-11-06 09:47:32 +01:00
Ryan McKinley
7f560c13e4 Search: Make the existing dashboard parsing code public (#95649) 2024-11-06 07:35:15 +03:00
Todd Treece
ed52515ae3 Playlist: Fix mutation logic (#95925) 2024-11-05 21:00:10 -05:00
Todd Treece
280c27507c Playlist: Add mutation and validation (#95708) 2024-11-05 17:45:09 -05:00
ismail simsek
c125ead121 Explore Metrics: Reverse the sorting of outliers (#95919)
reverse the sorting of outliers
2024-11-06 00:35:14 +02:00
Jacob Valdez
9a1e7de79d Docs: Updating steps for pulling Grafana metrics into Prometheus (#95913)
* Docs: Updating steps for pulling Grafana metrics into Prometheus

* slight update based on review
2024-11-05 22:13:47 +00:00
Scott Lepper
1feaf6df99 search: add OR filter for kinds (#95915)
search: add OR filter for kinds
2024-11-05 17:02:13 -05:00
Todd Treece
cd9fcd08aa K8s: APIGroupBuilder runner admission support (#95705) 2024-11-05 23:57:20 +02:00
Scott Lepper
6d8ee5fde0 search: use US searcher from dashboard list page (#95888)
search: wire up unified storage searcher
2024-11-05 14:30:10 -05:00
Kim Nylander
78c5fe61df [DOC] Add Pyroscope to list of products (#95884)
* Add Pyroscope to list of products

* Update docs/sources/shared/basics/what-is-grafana.md

* Apply suggestions from code review

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Bryan Huhta <32787160+bryanhuhta@users.noreply.github.com>

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Bryan Huhta <32787160+bryanhuhta@users.noreply.github.com>
2024-11-05 14:24:42 -05:00
Juan Cabanas
ef4640abfb ShareButton: Add dropdown tracking (#95905) 2024-11-05 15:32:07 -03:00
Andreas Christou
da1a5426d0 Azure: Handle namespace request rejection (#95574)
Handle rejection and add test
2024-11-05 17:54:47 +00:00
Jacob Valdez
a8578484bb Docs: updating auto_refresh_license information (#95804) 2024-11-05 11:35:09 -06:00
Dave Henderson
04d71068d1 ci: Update Dependabot with a single multi-directory config for gomod (#95881)
Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
2024-11-05 18:24:43 +01:00
Matias Chomicki
a3d3af35da Shard query splitting: improve error handling (#95824)
* Shard query splitting: Improve error handling

* Formatting

* Shard query splitting: do not shard instant queries

* Shard query splitting: stop querying on parse errors
2024-11-05 17:34:22 +01:00
ismail simsek
82ac9e2bb6 Explore Metrics: Explore Logs integration (#94656)
* initial logs integration

* rename back to Integrations

* remove comments

* connect related logs in metrics with logsIntegration service

* rename

* remove comments

* feat: related logs with loki expr

* fix: layout & var updates

* refactor: prefer scene state to context

* fix: limit DS select to relevant loki DSes

* refactor: use existing utils

* refactor: types

* fix: tests and types

* refactor: simplify

* refactor: prefer precise data updates

* refactor: prefer variable for key

* refactor: simplify panel search

* refactor: remove unnecessary short-circuit

* fix: ensure single network request for logs

* fix: add missing limit to fetched log lines

* refactor: add clarity

* refactor: organize imports

* feat: messaging for No Related Logs case

* fix: add missing space

* chore: add `exploreMetricsRelatedLogs` feature toggle

* feat: link to Explore Logs app

* fix: i18n

* fix: use sentence case consistent with design system

* style: avoid competing with metricscene buttons

* fix: capitalization for names

* fix: a11y

* refactor: clean up and document utils

* fix: formatting

* chore: run `make i18n-extract`

* test: improve coverage

* test: fix module resolution side-effects

* extract only the first rule

refactor: organize imports

* remove unnecessary test files

---------

Co-authored-by: Nick Richmond <nick.richmond@grafana.com>
2024-11-05 17:28:43 +01:00
Marcus Andersson
c7a7f7dce5 PluginExtensions: Made it possible to enable extensions admin page in non-development environments (#95820)
* Added feature flag for toggling extensions admin page.

* fixed typo.

* require restart

---------

Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
2024-11-05 16:55:10 +01:00
Torkel Ödegaard
6fd3620d50 Dashboards: Fixes issue with panel header showing even when hide time override was enabled (#95814)
* Dashboards: Fixes issue with panel header showing even when hide time override was enabled

* fixes

* fixed test
2024-11-05 16:40:43 +01:00
Luis Rodrigues
bfa1f03315 Prometheus: Fix query editor crash in response to invalid query (#94421)
* Quick fix for RenderParams Function

* Removing unnecessary optional chaining

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* Removing unittests for RenderParams

---------

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>
2024-11-05 10:29:52 -05:00
Ashley Harrison
c05bfdf71f Theme: Add debug theme behind extraThemes toggle (#95838)
add debug theme
2024-11-05 14:37:09 +00:00
Scott Lepper
ef29ce5b85 [search] - folder tests; search by ids (#95797)
[search] - folder tests; search by ids
2024-11-05 09:34:54 -05:00
Carl Bergquist
af6ddad058 go: run gomod updates daily (#95841)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
2024-11-05 15:27:03 +01:00
Konrad Lalik
3c8d29fa46 Alerting: Fix contact points secure settings migration (#95787)
Add missing migration for secure settings, add types to notifiers mocks
2024-11-05 14:46:17 +01:00
Konrad Lalik
91088d1f56 Alerting: Optimize Prometheus rules query params (#95833)
Load alert instances only when label filter is applied

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-11-05 14:35:53 +01:00
Victor Marin
34991f5b44 Chore: Fix dashboards label adding workflow (#95778)
* change auth for dashboards workflow

* fix

* fix

* final changes/ tested action

* fix
2024-11-05 14:43:47 +02:00
Andres Martinez Gotor
e6353dcd68 Chore: make update-workspace (#95821) 2024-11-05 11:22:23 +01:00
Ashley Harrison
0fae3579e8 Chore: improve some types (#95728)
* fix some typings

* fix some more

* more type fixes

* fix some graphite types

* few influx fixes
2024-11-05 09:57:30 +00:00
Ashley Harrison
34269a03c0 ScrollContainer: Apply to dashboard panels (#95724)
* add ScrollContainer to panels

* remove unnecessary wrapper

* fix text panel
2024-11-05 09:56:57 +00:00
Georges Chaudy
f075662696 UniStore: Add folder to the SQL backend (#95671)
* Add folder to the SQL backend

* remove unused key

* fix tests

* Return folders from watch
2024-11-05 10:37:23 +01:00
Tom Ratcliffe
7e34c015ee Alerting: Load alerting state view based on prom primary feature toggle (#95045) 2024-11-05 09:33:54 +00:00
Pepe Cano
facca37f4d Alerting docs: Update Create alert rules from panels (#95566)
* Alerting docs: Update `Create alert rules from panels`

* Remove screenshots except when the panel displays alert status

* Further changes sync with Brenda

* minor changes

* Relocate admonition

* Specify `dashboardUId` and `panelId` must be set together

* Update docs/sources/alerting/alerting-rules/link-alert-rules-to-dashboards.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* change title

* change URL

* fix spell error

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-11-05 10:00:59 +01:00
grafana-pr-automation[bot]
2b370d6e27 I18n: Download translations from Crowdin (#95781)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-05 09:20:43 +01:00
ismail simsek
bcdcb1f74b Explore Metrics: Introduce augurs sorting options in breakdown view (#91189)
* refactor breakdown scene

* refactor BreakdownScene along with LayoutSwitcher

* rename

* don't pass default layout

* better type handling

* betterer

* add @bsull/augurs

* implement LabelBreakdownScene

* integrate SortByScene in LabelBreakdownScene

* move to new directory

* introduce BreakdownSearchScene

* integrate searchScene

* cleaning

* initialize @bsull/augurs

* add interaction

* use new breakdown scene

* resolve merge conflicts

* ugrade @bsull/augurs

* update import

* update css

* update tooltip text

* refine sorting

* fix unit test

* fix

* implement outlier detector

* support wasm

* jest testing fix

* localization fix

* use unknown instead of any

* update i18n

* update betterer

* fix locales

* update test

* fix tests maybe

* prettier

* chore: update jest config

* chore: create mock for @bsull/augurs (#92156)

chore: create mock for bsull/augurs

@bsull/augurs assumes it will be running as an ESM, not
a CommonJS module, so can't be loaded by Jest (specifically
because it contains a reference to import.meta.url).

This PR provides a mock implementation which gets tests passing
again.

Ideally we'd be able to load the actual @bsull/augurs module
in tests so this is just a stopgap really, until a better
solution appears.

* fix unit tests

* remove unused BreakdownScene.tsx

* set outliers as undefined if an error occurs

* Add labels

* betterer

* reset event implemented

* fix controls positioning

* update augurs

* betterer

* i18n

* conflict fixes

* update texts

---------

Co-authored-by: Matias Chomicki <matyax@gmail.com>
Co-authored-by: Ben Sully <ben.sully@grafana.com>
2024-11-05 08:34:09 +01:00
Vijay Karthik
297ccfc52c Prometheus: Show notice when there is no data (#93936)
Show notice when there is no data
2024-11-05 08:25:28 +01:00
Torkel Ödegaard
2485286c03 DashboardScene: Move DashboardGridItem (#95768)
* DashboardScene: Move DashboardGridItem

* fix lints

* fixes
2024-11-05 08:05:09 +01:00
Patrick Easters
a43ba7bd44 Docs: Fix hyphens in adaptive metrics permissions (#95803) 2024-11-05 06:38:39 +00:00
Todd Treece
517a1bef08 Playlist: Migrate to App SDK (#95691) 2024-11-04 14:18:49 -05:00
Jo
4452d0932a Users: Fix potential panics on UID translation (#95794)
fix potential panics on UID translation
2024-11-04 18:50:26 +01:00
Alexander Akhmetov
305123df91 Alerting: Keep state manager cache during cache warm-up (#95727)
* Alerting: Keep state manager cache during cache warm-up

Instead of overwriting the state manager cache during warm-up,
we update the data in the cache if it is not there yet. If the cache
already contains a state entry with the same key, we do not overwrite it.
2024-11-04 18:26:52 +01:00
Aaron Godin
ede0b7e9ed IAM - Fix panic from accessing nil serviceAccount (#95681)
Fix panic from accessing nil serviceAccount
2024-11-04 11:18:31 -06:00
Kristina
68aefc73b6 Timeseries: Utilize min/max on stacking percentage (#95581)
* Bring in defined min/max into stacking range

* simplify logic

* different approach

---------

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2024-11-04 11:02:09 -06:00
Jo
ddf766567b RemoteCache: Refactor remote cache settings (#95672)
* refactor remote cache settings

* fix cache error getting treating as application error

* fix cache error getting treating as application error
2024-11-04 17:35:31 +01:00
Zoltán Bedi
85c696c4ad SQL: Add macro support in select case (#88514)
* Feat: timeGroup macro handling in VQB

* Add tests

* Add functions to SQL ds

* Fix lint errors

* Add feature toggle

* Add rendering based on object

* Fix lint

* Fix CI failures

* Fix tests

* Address review comments

* Add docs

* Fix JSX runtime warnings

* Remove docs part that mentions suggest more macros

* Update docs/sources/shared/datasources/sql-query-builder-macros.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Add smoke test for this feature

* lint

* Add supported macros to influx

* Add setupTests.ts to include in tsconfig.json

* Import jest-dom instead of setupTests.ts

---------

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-11-04 17:13:35 +01:00
Tom Ratcliffe
aacc83be5c Alerting: Change any alert notifiers that use templates to be text areas (#95080) 2024-11-04 15:59:28 +00:00
renovate[bot]
b4012b6ac8 Update scenes to v5.22.1 (#95655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 15:41:01 +00:00
Zoltán Bedi
bd8da0cf25 JaegerDS: Remove whitespace from traceID in query (#95786) 2024-11-04 15:45:41 +01:00
Tom Ratcliffe
2c57ecc085 Alerting: Only show "misconfigured" warning for templates if AM is not Grafana (#95596) 2024-11-04 14:20:35 +00:00
Konrad Lalik
e43bec2cd8 Alerting: Fix contact points secrets validation (#95651)
Add new condition to the determineRequired function
2024-11-04 13:15:48 +01:00
Laura Fernández
0802ebcd1a SingleTopNav: add property to grafana_mega_menu_open (#95774) 2024-11-04 13:12:59 +01:00
Joao Silva
afcd620d21 Combobox: Handle error if async fails (#95740) 2024-11-04 12:08:51 +00:00
Pepe Cano
9d937725ad Alerting docs: add Time type documentation for notification templates (#95688)
* Improve `tz` and `date` docs

* Add documentation for `Time` type
2024-11-04 12:21:28 +01:00
Alessandro Chitarrini
c490b29d34 Update Discord contact point documentation for use_discord_username type (#95011) 2024-11-04 10:02:19 +00:00
Ashley Harrison
7fd4f220b8 RefreshPicker: Fix styling (#95739)
need to set clear borderRadius explicitly on ButtonSelect
2024-11-04 10:00:12 +00:00
Eric Leijonmarck
fe6ec1258f CLI: Remove manager-users conflict users cli (#95135)
* Remove conflict_user cli

* Delete pkg/build/cmd/exportversion.go
2024-11-04 09:38:08 +00:00
Misi
986c024dd7 Auth: Update SAML lib (#94745)
* Update lib

* Add missing TestIntegration prefix

* Update go.sum, go.work.sum
2024-11-04 09:55:29 +01:00
Karl Persson
3bcbf231ee IDToken: fix namespace format (#95341)
* Bump authlib version

* Remove temporary formatter and start signing tokens with `stacks-` prefix

* update workspace
2024-11-04 09:33:03 +01:00
Pepe Cano
8a0c920106 Alerting docs: fix alertname label name (#95665) 2024-11-04 09:25:06 +01:00
Pepe Cano
d3a3e53354 Alerting docs: Add one notification template example that prints a title or subject (#95680) 2024-11-04 09:24:40 +01:00
Todd Treece
003b2f14db K8s: Add tracing to apiserver startup (#95744)
Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
2024-11-02 00:44:40 +01:00
Todd Treece
c5178807be Semconv: Add service name attribute (#95743) 2024-11-01 23:29:14 +01:00
Isabella Siu
d0ba4f18d3 CloudWatch: Metric Insights builder should wrap keywords in quotes (#95742) 2024-11-01 18:00:54 -04:00
Todd Treece
403b60723d Playlist: Add watch feature toggle (#95730) 2024-11-01 13:47:24 -04:00
Ashley Harrison
620fb87fb8 AppChromeMenu: Fix selector when checking for outside click (#95736)
need quotes...
2024-11-01 17:25:01 +01:00
Erik Sundell
3deffe58f6 Selectors: Remove outdated comment (#95735)
remove comment
2024-11-01 17:08:25 +01:00
Josh Hunt
eb781dd46d Prometheus: Add Metrics Explorer button next to MetricCombobox (#95647) 2024-11-01 15:32:17 +00:00
Isabella Siu
5f4944117c Elasticsearch: Stop escaping backslash in regex adhoc filter (#94577) 2024-11-01 11:06:13 -04:00
owensmallwood
0eb7b755e2 Unified Storage Indexer: Add integration tests (#95687)
* indexer integration tests WIP

* make protobuf

* Adds a few more integration test cases to cover the basics. Use Limit instead of Size param from SearchRequest.

* skip if testing.Short()

* adds test comments
2024-11-01 07:58:10 -06:00
Erik Sundell
c548a2357b Chore: Remove commented out selectors (#95719)
remove commented out selectors
2024-11-01 13:20:58 +00:00
Todd Treece
30b1e3b289 K8s: APIGroupBuilder App SDK Support (#95638) 2024-11-01 08:28:56 -04:00
Dana Axinte
2ba1740698 CloudMigrations: increase size of resource_uid column (#95684)
* len 255

* comment

* Update pkg/services/sqlstore/migrations/cloud_migrations.go

* comment on sqlite

* postgres varchar

---------

Co-authored-by: Michael Mandrus <41969079+mmandrus@users.noreply.github.com>
2024-11-01 09:09:50 +00:00
Erik Sundell
9c16622160 Plugins: Add buildMode to the plugin.json schema (#95660)
* add buildmode

* improve description
2024-11-01 09:29:31 +01:00
Erik Sundell
c29ed503db Test plugins: Add datasource test plugin with field tests (#95472)
* add new test plugin

* add some field validation tests

* update lockfile

* fix bad test file name
2024-11-01 08:25:27 +01:00
Alex Khomenko
f3bdf4455c Routing: Explicitly handle goto redirects (#95559) 2024-11-01 07:52:33 +02:00
Liza Detrick
85ee91aa77 chore: (@grafana/ui) - table documentation explain applyFieldOverrides (#95523)
* chore: (@grafana/ui) - table documentation explain applyFieldOverrides
Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
2024-10-31 11:14:59 -07:00
Adam Simpson
3adc7c8771 ds-querier: parse datasourceUid correctly (#95629)
* ds-querier: parse datasourceUid correctly

Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>

* make test case smaller

---------

Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
2024-10-31 14:07:26 -04:00
Adam Simpson
6f74c19d75 Update CODEOWNERS with core-services (#95202) 2024-10-31 13:52:51 -04:00
Scott Lepper
f8a5813573 [search] grouping - support indexing dashboard tags, filtering by tag, listing tags (#95670)
[search] grouping
2024-10-31 13:09:17 -04:00
Matias Chomicki
f539a70d6d Loki shard splitting: QOL improvements (#95602)
* Scan direction: add experimental badge

* Logs model: keep data when the response contains errors

* SupplementaryResultError: extend behaviors

* LogsVolumePanel: add custom message for partial shard data

* SupplementaryResultError: add size prop

* SupplementaryResultError: remove size prop and adjust sizes

* Infinite scroll: disable when direction is scan

* Fix lint issues

* logsModel: add logs volume test

* chore: unfocus test

* modifyQuery: add function to add drop statement to queries

* Shard query splitting: split metric queries

* Shard query splitting: drop stream shard from metric queries

* Fix tests

* logsModel: skip coverage data when the direction is scan
2024-10-31 16:58:02 +00:00
Sergej-Vlasov
9f5258717e E2E: remove duplicate loki e2e tests (#95644)
* remove duplicate loki e2e tests to avoid flakiness

* unskip test

* adjust panel ids
2024-10-31 15:49:28 +00:00
Ashley Harrison
ada6249280 Chore: use ScrollContainer across frontend platform components (#95601)
* use ScrollContainer in grafana-ui

* remove extraneous labels

* fix unit tests
2024-10-31 15:27:35 +00:00
Jo
9f43724b57 AccessControl: Use UIDs for Resource permissions frontend (#95552)
* frontend can use uids to set resource permissions

* lint

* add uids to folder acl

* Update public/app/core/components/Select/UserPicker.tsx

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>

* simplify conditions

---------

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2024-10-31 16:17:13 +01:00
Georges Chaudy
76b43267c8 Unified Storage: Use ssl_mode instead of sslmode (#95658)
change unistore to use ssl_mode instead of sslmode
2024-10-31 16:10:47 +01:00
Ashley Harrison
b42c34070a SingleTopNav: Fix org switcher in overlayed MegaMenu (#95654)
fix org switcher in singleTopNav
2024-10-31 14:48:01 +00:00
Jo
d77fc50198 Users: Add numerical indentifiers to detail pages (#95620)
* add numerical indentifiers to frontend while they're still valid

* lowercase identifier
2024-10-31 14:05:18 +00:00
Haris Rozajac
6c45f7f556 Dashboard Scene: Add Missing Overrides Tab to Panel Edit (#95276)
Add overrides tab
2024-10-31 07:58:53 -06:00
Ida Štambuk
8f2893edd3 Features: Move cloudwatchMetricInsightsCrossAccount toggle to GA and enabled by deafault (#94985) 2024-10-31 13:58:09 +00:00
Syerikjan Kh
35697381d2 fix: make org_id not nullable and set default value (#95610) 2024-10-31 09:53:33 -04:00
Jacob Valdez
0261e8fe80 Docs: Updating versions in activating AWS marketplace license (#95633) 2024-10-31 08:42:44 -05:00
Karl Persson
dfa8f786d2 Zanzana: fix generic schema (#95648)
* Change schema so that resource checks on a folder walks the tree
2024-10-31 14:34:48 +01:00
Ryan McKinley
4e1f0dadbd UnifiedStorage: Default to running unified-grpc in integration tests (#93492) 2024-10-31 16:29:32 +03:00
Jack Westbrook
a93de5f0d8 CI: Assert NPM package types are bundled correctly (#95533)
* ci(npm-packages): use attw cli to assert package types are built corrctly

* fix(validate-npm-packages): correct path to tarball
2024-10-31 14:29:21 +01:00
Jack Westbrook
2bcc46c338 Frontend: Enable TS IsolatedModules (#95586)
* chore(typescript): enable isolatedModules

* chore(frontend): fix ts errors related to isolated modules
2024-10-31 14:00:32 +01:00
Scott Lepper
7619d9cb11 [search] minimal dashboard indexing (#95631)
[search] minimal dashboard indexing
2024-10-31 07:46:00 -04:00
Leonor Oliveira
b1157dbd7a Validate if we are creating a folder more than 5 levels deep (#95579)
* Add getter to FolderAPIBuilder so that we can access it in admission

* Remove deprecated return

* Fix test

* Update pkg/registry/apis/folders/register_test.go

Co-authored-by: maicon <maiconscosta@gmail.com>

* Fix maxNested folder test

* Remove log

---------

Co-authored-by: maicon <maiconscosta@gmail.com>
2024-10-31 12:19:53 +01:00
Alex Khomenko
841a87c978 PluginDetailsBody: Use proper cases for the styles (#95640) 2024-10-31 13:03:27 +02:00
Alex Khomenko
f7e9aeac6e FormattedValueDisplay: Improve styles check (#95639) 2024-10-31 12:59:46 +02:00
Josh Hunt
bf6056f2fa Prometheus: Use Combobox for metric select (#93262)
* Uses Combobox in Prometheus for the metrics select, behind feature toggle

* switch to new async combobox api

* clean up MetricCombobox, add in dev slowness

* wip

* reset combobox changes to other pr https://github.com/grafana/grafana/pull/95191

* restore placeholder

* wip

* tests :)

* remove history comment

* use main import
2024-10-31 10:36:27 +00:00
Joao Silva
e40b19c7a6 Combobox: Debounce async calls (#95485) 2024-10-31 10:27:14 +00:00
grafana-pr-automation[bot]
69bda0b803 I18n: Download translations from Crowdin (#95627)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-31 08:21:34 +00:00
Brendan O'Handley
d2d7ae2e86 Explore metrics: Add OTel resource attributes in overview and breakdown scenes (#95009)
* add new otel grouping variables

* add call for resource attributes for a metric

* add function to update variables for otel join

* interpolate metric in match param

* update group left when starting trail

* process the group left before setting the metric and showing the metric scene

* add attributes to metric overview list

* change label name to attributes because it contains resource attributes and metric attributes

* add resource attributes to label breakdown select

* add otel resource attribute to filters from label breakdown

* add otel flag for rudderstack event when breakdown label selected

* for translations

* add test for new variable in datatrail spec

* add test for filtering otel resource attributes

* update documentation

* add tests for updating the join query with group left resource attributes

* use Nick and Ismail's suggestions, return early, space and no type needed for timerange

* remove unused import
2024-10-30 19:29:08 +00:00
owensmallwood
2b0a439ad3 Unified Storage Indexer: Dont create temp dir for indexDir (#95626)
* dont create temp dir for indexDir

* uses logger from trace ctx so traceID is on logs
2024-10-30 18:20:42 +00:00
grafana-pr-automation[bot]
3c8bfb539d I18n: Download translations from Crowdin (#95624)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-30 17:41:17 +00:00
Kat Yang
a2755117ac Feat: New homepage design (#93354)
* wip: homepage (new user)

* fix: spacing between button and text; wip refactor: separating bookmarks and recent metrics from home page

* feat: new user homepage; wip: need to clean up code

* fix: change rocket icon to svg

* wip feat: rendering recent metrics

* chore: add comments to understand code, will need to delete / cleanup later / pare down into documentation comments

* wip: new recent metric card design

* wip: display recent metrics cards in rows of 3 (height still incorrect)

* feat: apply conditional styling to remainder recent metrics exploration cards (any cards that are not a complete row of 3)

* fix: render new recent metrics explorations without refresh

* style: render recent metrics explorations in rows of 3 using grid instead of flex; fix: remove remainder card styling

* fix: remove delete button from recent metrics exp cards

* style: make background color for each card take up the entire card/grid space; make height of cards for each row the tallest card

* chore: clean up code

* fix: fix eslint errors

* style: implement recent metrics card header styling

* style: in recent metrics exp cards, format datasource line

* fix: add initial value for _lastModified to fix eslint err

* style: format date correctly; chore: clean up code; wip: get date to render properly on bottom left

* style: make inner card height match outer card height; style: add date footer; style: wrap last metric name; style: wrap labels

* style: adjust font for label name and label value

* style: truncate singular label if value is greater than 35 characters

* style: truncate singular long labels at 44 characters; style: truncate multiple labels at 3 lines; style: correct the border width and radius

* style: make background border radius match the border

* style: correct gap between rows and columns of cards; style: correct padding inside card

* chore: clean up code

* refactor: apply new card UI to DataTrailCard component

* feat: add bookmarks (not formatted correctly), only render section if there are bookmarks, hook up delete functionality

* style: add horizontal line above bookmarks header; style: add bookmarks header

* style: add additional padding above bookmarks divider; chore: delete unused code

* style: add carrot button to bookmarks; style: format heading font style

* refactor: separate bookmarks into functional component; feat: make bookmarks section collapsed by default; feat: allow toggle to expand bookmarks section

* style: position delete button for bookmarks in bottom right of card

* fix: only render recent metrics and bookmarks headings if there are any

* style: add show more button (not functional); style: fix padding around show more button

* chore: delete unused code

* fix: add back gap underneath bookmarks header

* feat: implement show more/less button for recent metrics

* fix: do not show select metric card if user does not actually select a metric

* chore: preliminary code clean up

* chore: delete console.logs, comments

* chore: clean up styling

* Update public/app/features/trails/DataTrailCard.tsx

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* fix: add i18nKey to Trans tags

* fix: attempt to remove go.work.sum changes that are unrelated to my PR

* fix: add Trans tags

* refactor: sepearate recent metrics into functional component; chore: delete unused code; fix: add Trans tags

* chore: generate translation json

* trigger drone

* trigger drone

* fix: add trans tag to date

* chore: abbreviate descriptive key, regenerate json

* Update public/app/features/trails/DataTrailBookmarks.tsx

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

* Update public/app/features/trails/DataTrailsRecentMetrics.tsx

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

* Update public/app/features/trails/DataTrailBookmarks.tsx

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

* fix: revert trans tag on date created to fix formatting

* chore: return null immediately if no recent metrics

* style: add margin between  bookmarks header and carrot toggle button

* style: adjust margin to 8px between bookmarks header and carrot toggle button

* style: make margins multiples of 4

* Update public/app/features/trails/DataTrailBookmarks.tsx

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>

* style: fix light mode styles; style: fix border radius

* fix: save select metric view as recent metric card if labels are applied

* Update public/app/features/trails/DataTrailCard.tsx

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* refactor: move rocket svgs into assets folder

* chore: add back accidentally deleted console log

* Update public/app/features/trails/DataTrail.tsx

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* Update public/app/features/trails/DataTrailBookmarks.tsx

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* chore: revert lastModified related changes since behavior appears to remain the same

* fix: add back lastModified changes because they make the recent metrics show more functionality work

---------

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>
Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2024-10-30 13:03:01 -04:00
Josh Hunt
55bcbcef83 GrafanaUI: Export Combobox from @grafana/ui (#95622) 2024-10-30 16:59:28 +00:00
Jacob Valdez
acebe9bee5 Docs: adding SAML name parameter configuration info (#95575) 2024-10-30 11:38:29 -05:00
kay delaney
db5f893ea6 Chore: Remove code related to viz/widget split feature (#95614) 2024-10-30 16:12:03 +00:00
Andreas Christou
08e880a823 GCM: Fix error checking for GCE project getter (#95613)
Appropriately check error
2024-10-30 15:28:53 +00:00
Josh Hunt
fe4f44723d Combobox: Call loadOptions with current input value when reopening menu (#95573) 2024-10-30 14:27:13 +00:00
Bogdan Matei
048ba14c34 Fix relative time range parsing (#95603) 2024-10-30 15:52:19 +02:00
Galen Kistler
777979965d Loki: pass backendSrv request options (#95608)
* chore: allow passthrough of options, reject promise on error
2024-10-30 13:50:51 +00:00
Jo
90d2f4659e Users: Allow specifying user UIDs in params (#95424)
* add user ID API translation

* add uid to user frontend

* use users' UIDs in admin pages

* fix ldapSync page

* use global user search for user by UID

* remove active org filtering

* remove orgID params
2024-10-30 14:14:42 +01:00
Syerikjan Kh
f0391e31d2 Revert "fix: make org_id not nullable and provide default value" (#95606)
Revert "fix: make org_id not nullable and provide default value (#95556)"

This reverts commit 261b4a5564.
2024-10-30 08:55:02 -04:00
Laura Fernández
0bd0dc374a BrowseDashboardPage: remove error property from tracking event (#95599) 2024-10-30 13:02:28 +01:00
renovate[bot]
3034bcaa72 Update dependency ansicolor to v2 (#95543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-30 12:31:45 +01:00
Shane Kenney
1f70aa8f80 Loki: Adds support for Loki derived fields to open links in a new tab (#92265)
* Open in new tab for loki derived fields

* Refactor styles

* Update documentation

* Initialise as boolean
2024-10-30 07:07:34 -04:00
Ieva
092a1813ef Folders: Don't show error pop-up if the user can't fetch the root folder (#95569)
don't show error pop-up if the user can't read general folder
2024-10-30 10:48:34 +00:00
Ashley Harrison
87c2bc44b2 GrafanaUI: Add new unstable ScrollContainer component (#95547)
add new unstable ScrollContainer component
2024-10-30 10:19:42 +00:00
antonio
9b773b8501 sandboxfy alerting tutorial part 2 (#95260)
* sandboxfy alerting tutorial part 2

* format

* format2

* added frontmatter

* all pretty no pity

* added setup, login

* link

* STEPS

* login link

* update steps

* improve visibility of part 2

* link

* new diagram image

* img

* all pretty, no pity
2024-10-30 09:58:05 +00:00
Jack Baldry
6fcfd132e5 Remove second aliases section (#95587) 2024-10-30 09:56:36 +00:00
Yuri Tseretyan
c5bad9f843 Alerting: Update documentation to include new permissions for routes (#95437)
* update documentation

* Update index.md
2024-10-30 10:09:32 +01:00
Oscar Kilhed
5673fafbfb Chore: Rename activateInActiveParents -> activateSceneObjectAndParentTree (#95534)
* Activate parents of query runner when using dashboard ds

* Set plugin loading util to fix test because activating the ancestors of the query runner needs to be able to load the plugin for the panel

* Rename activateInActiveParents -> activateSceneObjectAndParentTree

* Add back but deprecate activeInActiveParents
2024-10-30 09:55:16 +01:00
grafana-pr-automation[bot]
a20c9db6b7 I18n: Download translations from Crowdin (#95561)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-30 08:53:05 +00:00
owensmallwood
50a6069532 Unified Storage Indexer: Uses in-memory index (#95576)
uses in-memory index
2024-10-29 21:40:25 +00:00
maicon
af1a732821 UniStore: test folders circular reference (#95496)
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-29 21:06:55 +00:00
dependabot[bot]
a115d5db03 Bump aquasecurity/setup-trivy from 0.2.1 to 0.2.2 (#95456)
Bumps [aquasecurity/setup-trivy](https://github.com/aquasecurity/setup-trivy) from 0.2.1 to 0.2.2.
- [Release notes](https://github.com/aquasecurity/setup-trivy/releases)
- [Commits](https://github.com/aquasecurity/setup-trivy/compare/v0.2.1...v0.2.2)

---
updated-dependencies:
- dependency-name: aquasecurity/setup-trivy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 19:20:45 +00:00
Galen Kistler
7fa0ae48c5 Loki: add detected_field/.../values support to language provider (#95204)
* add detected_field values to language provider
2024-10-29 13:54:28 -05:00
owensmallwood
995128d1db Search PoC: Improves initial indexing speed. Makes params configurable. (#95439)
* Improves initial indexing speed. Makes params configurable.

* fix linter errors

* removes kind param

* updates index test

* remove println from test

* removes error check in test

* adds log for high index latency ands updates max goroutine var with workers config var

* fix test timing out - set worker limit

* set the batch size

---------

Co-authored-by: Scott Lepper <scott.lepper@gmail.com>
2024-10-29 12:24:31 -06:00
Josh Hunt
189802d3c3 EchoSrv: Add BrowserConsoleBackend to log analytics events (#95554)
* EchoSrv: Add BrowserConsoleBackend to log analytics events

* rename config name

* warn on non-scalar property values
2024-10-29 18:20:54 +00:00
Jacob Valdez
d480900a9b Docs: Adding memory requirements to image renderer docs (#95571)
Adding memory requirements to image renderer docs
2024-10-29 13:04:29 -05:00
Josh Hunt
952957248f Combobox: Squish the menu height in small viewports (#95568)
* Combobox: Squish the menu height in small viewports

* rename constants
2024-10-29 17:47:31 +00:00
Syerikjan Kh
261b4a5564 fix: make org_id not nullable and provide default value (#95556) 2024-10-29 13:21:48 -04:00
Nick Richmond
6be787dd47 Prometheus: Ensure auth config can be switched away from Azure option (#95003)
fix: sanitize jsondata when azure auth disabled
2024-10-29 12:15:19 -04:00
Tom Ratcliffe
03715f062b Chore: Move structured-clone polyfill to setupTests (#95406)
* Add structured-clone polyfill to setupTests

* Remove manual structured-clone imports
2024-10-29 16:40:05 +01:00
Leonor Oliveira
55afbdc6be [Folder] Add general UID validation (#95549)
* Add general UID validation

* [REVIEW] group all folder validation rules into struct

* Fix test
2024-10-29 16:09:28 +01:00
Yulia Shanyrova
3e1046ee2e Plugins: Show latest commit date at plugin details right panel (#95333)
* get last commit info from backend

* change last commit date type

* fix tests

* add tests to check lastCommitDate
2024-10-29 16:09:02 +01:00
renovate[bot]
61929b785a Migrate renovate config (#95504)
* Migrate config .github/renovate.json5

* readd comments

* remove space

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-10-29 14:24:48 +00:00
antonio
0ef08ca737 docs>alerting:tutorial update (#95402)
* updated steps

* update before you begin

* updated title

* update title 2

* elaborated on 'Sample logs' section

* updates to improve visibility

* updated links

* format

* updated link

* links and steps

* updated call-to-action boxes

* updated box

* title

* format

* steps

* format

* Made docs live in the now

* all pretty, no pity
2024-10-29 12:18:07 +00:00
Stephanie Hingtgen
fe74dfcb77 Logging: Add error logging to syslog (#95525) 2024-10-29 06:57:15 -05:00
David Harris
985b390a46 docs: clarify release stage for frontend sandbox (#95530) 2024-10-29 11:39:01 +01:00
Alexa V
f062c66f89 Dashboard: Add new dashboardSchemaV2 feature toggle (#95536)
Dashboard Scene: Add new dashboardSchemaV2 feature toggle
2024-10-29 11:35:18 +01:00
Erik Sundell
1d8f8178ee E2E Selectors: Force plugin-e2e to use workspace version of e2e-selectors (#95511)
* provoke an error

* resolve local selectors package

* Update package.json

* bump plugin-e2e

* Revert "provoke an error"

This reverts commit a2df215189.

* update readme
2024-10-29 10:54:56 +01:00
Jo
2b867d9850 AccessControl: Resource permission translator (#95423)
* Standardize Resource Translator in options

* Add resource UID translator for resource permissions

* fix comments

* fix comments
2024-10-29 10:21:39 +01:00
Marc M.
fb51a5e21f Tempo: escape span names in TraceQL editor (#95483) 2024-10-29 11:19:17 +02:00
Jack Westbrook
eae83609b8 Grafana UI: Remove re-export of Ansicolor package (#95531)
chore(grafana-ui): remove re-export of ansicolor package
2024-10-29 10:04:33 +01:00
Oscar Kilhed
97027834a1 Dashboard datasource: Activate parents of query runner when using dashboard ds (#95507)
* Activate parents of query runner when using dashboard ds

* Set plugin loading util to fix test because activating the ancestors of the query runner needs to be able to load the plugin for the panel
2024-10-29 09:55:13 +01:00
Pepe Cano
9b91be739d Alerting docs: Update Recording Rules (#95435)
* WIP - Restructure recording rule pages

* Add more `Recording rules` use cases

* Update `Intro > Alert rules`. Minor style changes and updates to the recording rules section

* Minor verb change

* Switch `aliases` and fix broken link

* Bold for clarity

* Complete `Create recording rules in Grafana Alerting`

* Complete data source-managed recording rules

* Final update
2024-10-29 09:41:59 +01:00
Ryan McKinley
2f40fd6741 Dashboards: Remove unique name constraints (#90687) 2024-10-29 08:58:39 +03:00
Todd Treece
c8238c7914 K8s: Add admission mutation support to builder (#95526) 2024-10-29 03:14:07 +02:00
Todd Treece
4508d6c143 Chore: Add additional builder validation tests (#95518) 2024-10-28 20:42:10 -04:00
Russ
9f2da249fd Chore: update Asserts menu icon again (#95522) 2024-10-28 23:55:19 +02:00
Isabel Matwawana
097fa053e4 Docs: Update variables creation tasks (#95078) 2024-10-28 16:04:31 -04:00
Scott Lepper
337f2a0a8b [search] add index; increase page size (#95515)
[search] add index; increase page size
2024-10-28 15:48:49 -04:00
Josh Hunt
c9abe04d46 Prometheus: Add instrumentation for query patterns (#95288)
Prometheus: Add instrumentation for query patterns/kickstart your query
2024-10-28 20:46:08 +02:00
renovate[bot]
5717cb5055 Update dependency rudder-sdk-js to v2.48.23 2024-10-28 18:42:14 +00:00
renovate[bot]
bac7fb6c32 Update dependency rollup to v4.24.2 2024-10-28 17:23:07 +00:00
grafana-pr-automation[bot]
39d0db05f3 I18n: Download translations from Crowdin (#95484) 2024-10-28 19:21:21 +02:00
Eric Leijonmarck
32c43f3f06 Chore: Add to gitignore (#95509)
Add to gitignore
2024-10-28 16:50:24 +00:00
Isabel Matwawana
b2b169c666 Docs: Update ad hoc filters docs (#94828) 2024-10-28 12:42:55 -04:00
Matias Chomicki
d6efd6d606 Logs Panel: Added support to pass custom options to the log rows menu (#95330)
* LogsPanel: add props to prepend or append icons to the log row menu

* LogsPanel: add test and type guard

* LogsPanel: add test

* Fix addonBefore position

* Refactor to be an array of ReactNode

* Remove comment

* chore: add docs

* Linting issues
2024-10-28 17:39:12 +01:00
renovate[bot]
d68b5d222a Update dependency react-select to v5.8.2 2024-10-28 16:38:06 +00:00
Erik Sundell
8f0c8778b4 E2E Selectors: Remove orphan comment (#95505)
remove comments
2024-10-28 18:14:47 +02:00
renovate[bot]
abee323789 Update dependency nanoid to v5.0.8 2024-10-28 15:43:17 +00:00
Todd Treece
5533b30135 K8s: Add validation support to builder (#95502) 2024-10-28 11:40:25 -04:00
Karl Persson
e0163c93c2 Zanzana: reconcile generic schema (#95492)
* Rename to CheckObject

* Implement authz.AccessClient

* Move folder tree to reconciler and use new schema

* Move shared functionality to common package

* Add reconciler for managed permissions and resource translations

* Add support for folder resources
2024-10-28 16:32:16 +01:00
Esteban Beltran
7b5c84f366 Docs: Clarify plugin frontend sandbox (#95501)
Add missing message for sandbox docs
2024-10-28 15:29:57 +00:00
renovate[bot]
865be67dd1 Update dependency eslint-plugin-jsx-a11y to v6.10.2 2024-10-28 15:20:29 +00:00
Alex Khomenko
ba2d004161 Routing: Enforce imports from the compat package (#95499) 2024-10-28 17:18:49 +02:00
jackyin
6f888720de Alert: unexpected error log occur (#95491) 2024-10-28 15:34:07 +01:00
renovate[bot]
209dbcf894 Update dependency @playwright/test to v1.48.2 2024-10-28 14:23:31 +00:00
Esteban Beltran
c7cdaedd6f Docs: Add documentation about the frontend sandbox (#95467)
* Docs: Add documentation about the frontend sandbox

* Clarify

* minor style fix

* fix list style

* Update docs/sources/administration/plugin-management/index.md

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>

* Update docs/sources/administration/plugin-management/index.md

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>

* Add grafana version required for the plugin frontend sandbox

---------

Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2024-10-28 14:20:54 +00:00
Ashley Harrison
55673e2f41 Chore: Add emotion object syntax rule to eslint (#95429)
add object syntax rule to eslint
2024-10-28 13:47:46 +00:00
maicon
f6a5e03bfb UniStore: Add testcase for trimming folder title (#95405)
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-28 10:24:28 -03:00
Jack Baldry
47b8379194 Replace myself with Irene who oversees Grafana documentation (#95477)
Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
2024-10-28 13:15:42 +00:00
Tobias Skarhed
c9984cbb7a Frontend Traces: Ignore Faro tracking of Google Analytics and Rudderstack (#95322)
* Ignore Faro tracking of Google Analytics and Rudderstack

* Fix test

* Fancy it up Tom style
2024-10-28 13:44:52 +01:00
Gabriel MABILLE
5a0ef46280 Add tracing to the gRPC Authentication flow (#94466)
commit ad4df4b3f63bdf3e16423ac8c3fdb1a7fae5582e
Author: gamab <gabriel.mabille@grafana.com>
Date:   Thu Oct 24 10:24:04 2024 +0200

    nit

commit eb8b9cf2f3e27cae258b3ae310f1584da5ba36b5
Author: gamab <gabriel.mabille@grafana.com>
Date:   Thu Oct 24 10:23:25 2024 +0200

    miss

commit aab1aed204a5dedcc6dd187b2f636995bbe2c5c6
Merge: 5aafdec9233 7fe710b141
Author: gamab <gabriel.mabille@grafana.com>
Date:   Thu Oct 24 10:22:05 2024 +0200

    Merge remote-tracking branch 'origin/main' into gamab/resourcestore/tracing

commit 5aafdec9233d6824cba977b069d71eabc3d21a8d
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 16 18:03:56 2024 +0200

    Did not fix the issue

commit 20522a7f64222fad27268ac640d4b4fb9259c748
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 16 17:42:35 2024 +0200

    Test

commit b45199a341b6a57e93927c9eb7de8d7758ed7619
Merge: c0fbbdb95d4 e9e2b11ba2
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 16 17:31:59 2024 +0200

    Merge remote-tracking branch 'origin/drclau/unistor/replace-authenticators-3' into gamab/resourcestore/tracing

commit e9e2b11ba2
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Wed Oct 16 18:28:31 2024 +0300

    PR feedback: simplified fallback implementation

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>

commit b5209dba64
Author: Claudiu Dragalina-Paraipan <drclau@users.noreply.github.com>
Date:   Wed Oct 16 18:03:06 2024 +0300

    Update pkg/services/authn/grpcutils/grpc_authenticator.go

    Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

commit c0fbbdb95d4605f349b902ca8698e7b560433867
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 16 10:32:52 2024 +0200

    Add traces to fallback

commit 75aa8dcbd49288f1dca53cdf6e9a7b41688dff38
Merge: d92fafcaf0d 562d499e85
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 16 10:29:41 2024 +0200

    Merge remote-tracking branch 'origin/drclau/unistor/replace-authenticators-3' into gamab/resourcestore/tracing

commit 562d499e85
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Wed Oct 16 11:05:01 2024 +0300

    switched to features.IsEnabledGlobally()

commit addc6aaca4
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Wed Oct 16 10:21:31 2024 +0300

    imports cleanup

commit 7c6d80f6aa
Merge: 64a5e55d61 9dc2ccdbfd
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Wed Oct 16 10:18:54 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 64a5e55d61
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Oct 15 11:01:54 2024 +0300

    cleanup

commit 4fe2c03457
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Oct 15 10:31:06 2024 +0300

    always enable FlagAppPlatformGrpcClientAuth for k8s int tests

commit c7e36759cd
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Oct 15 10:30:43 2024 +0300

    use sync.Once as it's more idiomatic

commit f5c2c79981
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Oct 14 20:43:48 2024 +0300

    remove client side namespace extractor

commit 742295c89a
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Oct 14 20:04:11 2024 +0300

    avoid double registration of metrics (fallbackCounter)

commit a45998c8d3
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Oct 14 19:03:41 2024 +0300

    use FlagAppPlatformGrpcClientAuth to enable new behavior, instead of legacy

commit ffdc301718
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Oct 14 18:37:22 2024 +0300

    remove the NamespaceAuthorizer

    The NamespaceAuthorizer would fail in legacy mode. It will be added back in the future.

commit 4a03ed7d7d
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Oct 14 15:59:08 2024 +0300

    allow using the legacy resource client via

commit a2c30f5328
Merge: ead390f608 2f3c539d9b
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Oct 14 14:08:32 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit ead390f608
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Fri Oct 11 09:38:49 2024 +0300

    added server side gRPC authn fallback-to-legacy mechanism

    - brought back the old gRPC authenticator
    - added `grpc_server_authentication.legacy_fallback` config option
    - introduced `AuthenticatorWithFallback`
    - added telemetry to track fallbacks

commit d92fafcaf0db9c8d97a5d071759fc21ede7d8848
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 14:58:25 2024 +0200

    Fix test

commit 54f05ff0fecf3d696a0e98621db6991282503917
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 14:42:18 2024 +0200

    Forgot the tracer 😁

commit 3948048880c7a0eb2360a35b0cc9f3686f2edfef
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 14:02:41 2024 +0200

    Add traces to NamespaceAuthorizer

commit cc695bb77c37a097174556303721fbc48b9464a0
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 13:56:48 2024 +0200

    Add traces to authentication flow

commit 8686c46be5
Merge: 08c3d237dc 4a3ce66193
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 13:56:26 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 08c3d237dc
Merge: 33fd104cfd 84d580179d
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 12:41:57 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 33fd104cfd
Merge: 68af25fbc3 38f57d270a
Author: gamab <gabriel.mabille@grafana.com>
Date:   Wed Oct 9 12:13:25 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 68af25fbc3
Author: Gabriel MABILLE <gamab@users.noreply.github.com>
Date:   Mon Oct 7 16:31:09 2024 +0200

    Update pkg/services/authz/config.go

commit 4fba5c9b32
Author: gamab <gabriel.mabille@grafana.com>
Date:   Fri Oct 4 15:17:41 2024 +0200

    PR Feedback

commit 86867a14ca
Author: Gabriel MABILLE <gamab@users.noreply.github.com>
Date:   Fri Oct 4 15:13:06 2024 +0200

    Update pkg/services/authn/grpcutils/config.go

    Co-authored-by: Dan Cech <dcech@grafana.com>

commit c591631135
Merge: c80c46ca6a e37b43117b
Author: gamab <gabriel.mabille@grafana.com>
Date:   Fri Oct 4 13:07:48 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit c80c46ca6a
Merge: 3acada9d47 4224d05934
Author: gamab <gabriel.mabille@grafana.com>
Date:   Thu Oct 3 14:58:51 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 3acada9d47
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Fri Sep 27 17:39:59 2024 +0300

    introducing `mode` config for gRPC auth server & client side

commit 914ca237e2
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Thu Sep 26 20:47:57 2024 +0300

    Fixed integration tests

commit 71c33dcbe3
Merge: 52f248eebb 920d79680d
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Thu Sep 26 19:25:33 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 52f248eebb
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 24 18:44:38 2024 +0300

    updated namespace extractor usage

commit a6c977ba4d
Merge: fb7bbf743b 8da1d78c92
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 24 17:35:03 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit fb7bbf743b
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 24 17:34:36 2024 +0300

    unistor client side updates

commit a28440c40b
Merge: 79d9969aa8 a8b07b0c81
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 24 10:45:09 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 79d9969aa8
Author: gamab <gabriel.mabille@grafana.com>
Date:   Mon Sep 9 16:14:02 2024 +0200

    Rename NewResourceClient funcs

commit 36b3752490
Merge: 8ce354bb06 b89f3f8115
Author: gamab <gabriel.mabille@grafana.com>
Date:   Mon Sep 9 16:00:54 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 8ce354bb06
Author: gamab <gabriel.mabille@grafana.com>
Date:   Mon Sep 9 10:40:06 2024 +0200

    Align

commit bdf79f3b2f
Merge: 8f4df8973d 8eb7e55f8f
Author: gamab <gabriel.mabille@grafana.com>
Date:   Mon Sep 9 10:38:45 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 8f4df8973d
Merge: 2441cd8d53 9338e40dc3
Author: gamab <gabriel.mabille@grafana.com>
Date:   Thu Sep 5 11:26:39 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 2441cd8d53
Merge: 2904074a2f 2bbce8a7f7
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 17:31:36 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 2904074a2f
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 16:35:25 2024 +0300

    refactoring

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>

commit 125cb3c834
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 16:34:18 2024 +0300

    refactoring (aesthetics)

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>

commit 499a31df53
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 15:59:09 2024 +0300

    update usage of ReadGprcServerConfig()

commit f5d383644d
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 15:44:09 2024 +0300

    make update-workspace

commit 755485751e
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:43:22 2024 +0200

    Fix trace

commit d09e14c26a
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 15:42:50 2024 +0300

    removed WithIDTokenExtractorOption, and other PR feedback

commit 21220c2cca
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:36:59 2024 +0200

    Else statement

commit 6cf1efdcc4
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:35:02 2024 +0200

    Mod update

commit 4b73a93883
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:32:20 2024 +0200

    Add Auth func overrides

commit 6032ab3ae1
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:26:18 2024 +0200

    Use NamespaceAuthorizer

commit 601beb5327
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:20:47 2024 +0200

    Update authlib

commit a1b6408127
Merge: 0d70225c1a 1128c417d8
Author: gamab <gabriel.mabille@grafana.com>
Date:   Tue Sep 3 14:18:49 2024 +0200

    Merge remote-tracking branch 'origin/main' into drclau/unistor/replace-authenticators-3

commit 0d70225c1a
Author: Claudiu Dragalina-Paraipan <drclau@users.noreply.github.com>
Date:   Tue Sep 3 15:15:54 2024 +0300

    Update pkg/services/authn/grpcutils/grpc_authenticator.go

    Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

commit 62f165f6f9
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 10:55:45 2024 +0300

    refactoring NamespaceAccessChecker usage and use CloudNamespaceFormatter in Cloud

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>

commit bb5ee88d4f
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 10:39:11 2024 +0300

    added stackIdExtractor for cloud mode

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>

commit 84866a8a51
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Sep 3 10:38:19 2024 +0300

    authz client cfg changes

    - removed ModeCloud, relying on ModeGrpc and stackID instead to discover if we're running in Cloud
    - reusing settings from "grpc_client_authentication", instead of duplicating in "authorization" section

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>

commit 14a1021605
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 21:44:35 2024 +0300

    make update-workspace

commit 84f8c9be94
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 21:36:10 2024 +0300

    cleanup: refactoring leftover

commit 7fe8d62304
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 19:30:51 2024 +0300

    update authlib version (small fix)

commit 7c2353ae25
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 19:17:11 2024 +0300

    cleanup: remove unused `GrpcServerConfig.Mode`

commit 52b7cf8550
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 19:06:59 2024 +0300

    make update-workspace

commit 14ddfbd8fb
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 19:02:40 2024 +0300

    finalize authlib grpc interceptors usage

commit 884c4a8c24
Merge: 0fd1988bed a1190b165b
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Sep 2 19:00:07 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 0fd1988bed
Merge: b766bfb24f e0950a1283
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Fri Aug 30 10:45:51 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit b766bfb24f
Merge: 6993f108a2 68751ed310
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Wed Aug 28 15:46:04 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 6993f108a2
Merge: 5f073b04d0 f1ba609b34
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Tue Aug 27 12:51:07 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 5f073b04d0
Merge: 0620891d45 ac5ebe6e4d
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Aug 19 21:09:44 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 0620891d45
Merge: 6a272e8e2a 15f2b08f00
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Mon Aug 12 14:14:44 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 6a272e8e2a
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Thu Aug 8 18:53:43 2024 +0300

    allow insecure conns in dev mode + refactoring

commit 31c7b030ba
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Thu Aug 8 10:31:13 2024 +0300

    allow insecure connections (for testing purposes); remove audience checks

    audience checks will still need to be done for Access tokens, but not for ID tokens

commit 0fdd2ff802
Merge: 763961210c f384759ad1
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Wed Aug 7 14:42:39 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 763961210c
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Fri Aug 2 18:54:29 2024 +0300

    wip

commit c46b42a595
Merge: 92aba937a9 0145b0fe70
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Fri Aug 2 14:44:06 2024 +0300

    Merge branch 'main' into drclau/unistor/replace-authenticators-3

commit 92aba937a9
Author: Claudiu Dragalina-Paraipan <claudiu.dragalina@grafana.com>
Date:   Thu Aug 1 18:32:19 2024 +0300

    authn: client side updates

    Co-Authored-By: Gabriel MABILLE <gamab@users.noreply.github.com>
2024-10-28 14:35:30 +02:00
Misi
fedcf47702 User: Check SignedInUser OrgID in RevokeInvite (#95476)
Check SignedInUser OrgID in RevokeInvite
2024-10-28 13:20:17 +01:00
Arati R.
4a13580a2f K8s/Folders: Fix folder status error message (#95464)
* Fix folder status error message
* Add test for folder creation response message
* Add TestFoldersCreateAPIEndpointK8S fixes
* Fix message returned when user has no permissions
2024-10-28 12:33:56 +01:00
Matheus Macabu
69f185b459 CloudMigrations: handle provisioned data source error (#95473) 2024-10-28 12:02:46 +01:00
Tobias Skarhed
187111368a Frontend Monitoring: Only write to custom Faro endpoint if origins are the same in iframe (#95381)
* Only enable Faro if origins are the same in iframe

* Handle non-iframe case

* Remove console logs

* Use try catch to identify cross origin iframe

* Only disable transport
2024-10-28 11:48:44 +01:00
grafana-pr-automation[bot]
712974b26c I18n: Download translations from Crowdin (#95427) 2024-10-28 12:21:22 +02:00
Leonor Oliveira
5cf86c981f Test Folder's GetAuthorizer (#95266)
* WIP: setup to test folders GetAuthorizer

* Setup test

* Extract authorizer fn for tests

* Setup internal test fn

* Better define test inputs

* Add FolderAPI builder to the test

* First test passing

* Test getAuthorize for the create method

* Change authorizerFunc's signature

* [REVIEW] code readability

* Name error

* [REVIEW] add one more test case. Lint

* Remove empty line
2024-10-28 12:00:19 +02:00
Jay
4a4ad66210 Update _index.md (#95460)
Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
2024-10-28 09:57:56 +00:00
Jo
ed1ad34f9b ServiceAccounts: Allow use of UIDs for Service Account routes (#95401) 2024-10-28 10:49:48 +01:00
Jay
39d53e65a7 Update _index.md (#95461)
Co-authored-by: Irene Rodríguez <irene.rodriguez@grafana.com>
2024-10-28 09:23:12 +00:00
Alex Khomenko
16b9cf07f4 Dashboards: Fix home dashboard loading (#95376)
Dashboards: Fix home dashboard load
2024-10-28 09:19:59 +02:00
Dave Henderson
0880329796 ci(trivy): Use non-default DB registry to avoid rate limits (#95434)
Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
2024-10-25 22:12:41 +03:00
Dana Axinte
fd99b82f78 Cloud migrations: Add cloud migration to auditing docs (#95148)
* add cloud migration management

* use feature toggle note

* just annotation

* Update docs/sources/setup-grafana/configure-security/audit-grafana.md

* Updates from prettier

---------

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
Co-authored-by: Kim Nylander <kim.nylander@grafana.com>
2024-10-25 16:48:45 +01:00
Tom Ratcliffe
b0e116c5fa Alerting: Fix template editing issues for contact points (#95387) 2024-10-25 16:41:25 +01:00
Matheus Macabu
b2de69d741 CloudMigrations: create snapshot for Alert Rules (#95404)
* CloudMigrations: create snapshot for Alert Rules

* CloudMigrations: display Alert Rules in resource list summary
2024-10-25 17:20:05 +02:00
Kim Nylander
6f4a9eb07b [DOC] Add link to blog post for Explore apps (#95418)
* Add link to blog post for Explore apps

* Updates from prettier
2024-10-25 10:54:57 -04:00
Kevin Minehart
4e6a7121ed CI: Consolidate package and docker steps (#95375)
* Consolidate package and docker steps

* load docker images (if there are any); fix tag-format casing

* I guess e2e tests use pkg/build...

* lint starlark
2024-10-25 09:25:29 -05:00
Eric Leijonmarck
cc1976693b LBAC for datasources: Docs update HTTP API (#95392) 2024-10-25 15:20:36 +01:00
Ashley Harrison
94bbc081c8 Chore: Finish converting emotion styles to object syntax (#95399)
* convert some emotion styles to object syntax

* convert more styles to object syntax

* fix placeholder content
2024-10-25 14:50:28 +01:00
Gabriel MABILLE
2788817107 AuthZ: Implement Check (#95162)
* AuthZ: Implement Check


---------

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2024-10-25 14:57:39 +02:00
Bogdan Matei
97c0ff2ae4 Dashboards: Reload the dashboard based on time range and filters changes (#94190) 2024-10-25 15:56:54 +03:00
Laura Fernández
bdab0bc8c0 SingleTopNav: Add kiosk mode tracking events (#95397) 2024-10-25 14:40:34 +02:00
Andreas Christou
fd4fc106d9 Azure: Improve handling of deprecated query types (#95363)
* Add logic for handling deprecated query types

* Test

* Improve documentation
2024-10-25 13:25:00 +01:00
Karl Persson
bdbe12e980 Zanzana: Implement initial check and list with schema for generic resources (#95056)
* Implement initial check with schema for generic resources

* Implement List and add tests

* Add namespace type and change to folder_resource name

* Handle namespace grants for typed resources

* Run tests as integration tests

* Add support for verb in list requests
2024-10-25 14:19:11 +02:00
Jack Westbrook
e894b19c1a Build: Fix failing CSS asset paths (#95380)
* build(webpack): set publicpath and process urls to resolve assets correctly

* build(webpack): add back --progress to build

* Add local cdn

(cherry picked from commit 7a19523fa476fd5ff2d7669d116f5be462b100f5)

* chore(devenv): fix local_cdn path in ngnix conf

* chore(codeowners): add frontend-ops as owners of local_cdn docker block

---------

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2024-10-25 13:45:44 +02:00
Ashley Harrison
d0e124e2f9 Playlists: don't show TV mode in singleTopNav (#95339)
don't show TV mode in singleTopNav
2024-10-25 11:09:05 +01:00
Ashley Harrison
d1a00540dd SingleTopNav: Ignore searchBarHidden/kiosk=tv flags (#95344)
ignore searchBarHidden/kiosk=tv flags
2024-10-25 10:46:40 +01:00
Bogdan Matei
69f888e296 Scopes: Fix rendering of the scopes list for large chunk of items (#95327)
* Scopes: Fix rendering of the scopes list for large chunk of items

* Fix outline for overflow

* Fix outline for overflow
2024-10-25 12:27:30 +03:00
Eric Leijonmarck
b1e1297bb3 LBAC for datasources: Move validation of rules from datasources to LBAC Rules (#94622)
* FIX: Remove the checks for lbac rules inside of datasources

* Remove json validation for lbac rules

* Preserve lbac rules in updates

* Refactored test to remove the table structure

* refactor: change to allow naming and concise override instead of complex branching

* refactor to make sure we set an empty field for updates

* bugfix

* check for datasources.JsonData

* fix merge

* add datasource to check for field presence only

* add function call for readability
2024-10-25 10:07:53 +01:00
Matias Chomicki
226dcdde0f Query splitting: limit retries (#95364) 2024-10-25 11:53:03 +03:00
Tobias Skarhed
5ee5c7af7b Combobox: Invalidate async calls using counter instead of value (#95049)
* Combobox async: Invalidate using timestamp instead of value

* Simulate keyboard delay in test

* Use a counter instead of timestamps

* Fix feedback

* Expand tests to include case discussed on PR

---------

Co-authored-by: Joao Silva <joao.silva@grafana.com>
2024-10-25 10:10:02 +02:00
Karl Persson
beaac3c885 Zanzana: Remove model and store initiation from client (#95328)
* Remove model and store initiation from client
2024-10-25 09:31:27 +02:00
maicon
f5ed2f52f7 UniStore: expand nested folders testing (#95374)
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-24 19:54:33 -03:00
Kevin Minehart
67b3848fd9 CI: Remove drone steps for building windows because it's done in grafana-… (#95373)
Remove drone steps for building windows because it's done in grafana-build now
2024-10-24 17:04:25 -05:00
owensmallwood
5e3e7cca0e Search PoC: Adds traces to indexer (#95372)
* adds traces to indexer

* fix linting errors
2024-10-25 00:05:33 +03:00
owensmallwood
ecebaf1bdf Unified Storage: Add traces to poller (#95369)
add traces to poller
2024-10-24 22:49:38 +03:00
Yuri Tseretyan
2deced7d40 Alerting: Notifications Routes API (#91550)
* Introduce new models RoutingTree, RouteDefaults and Route and api-server to serve them that is backed by provisioning notification policy service.

* update method UpdatePolicyTree of notification policy service to return route and new version

* declare new actions alert.notifications.routes:read and alert.notifications.routes:write and two corresponding fixed roles.

---------

Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2024-10-24 13:53:03 -04:00
Jev Forsberg
fb0221d561 Chore: Delegate codeowners responsibilities to @grafana/grafana-developer-enablement-squad (#95362)
* baldm0mma/update_codeowners/ update go.mod

* baldm0mma/update_codeowners/ update codeowners

* baldm0mma/update_codeowners/ update go.mod
2024-10-24 19:49:48 +03:00
grafana-pr-automation[bot]
0d272a3b9c I18n: Download translations from Crowdin (#95334)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-24 19:20:32 +03:00
Syerikjan Kh
2f965a07ab Ref: datasource picker rudderstack events (#95074)
* ref: ds picker events added

* ref: track opendropdown only on click

* ref: update/update all payload added to the event

* ref: configure more ds button event path to from path

* ref: result count fix, enable/disable track

* ref: debounce search tracks

* ref: track connections_plugin_card_clicked

* ref: call tracking from the child comp with result count

* ref: change event names, add creator_team and schema version
2024-10-24 12:03:17 -04:00
Sarah Zinger
59f5c1edfb Query Service: Add trace ids to logs in expressions (#95203) 2024-10-24 12:01:14 -04:00
Misi
b8b7c7901c Auth: Increase name_id and session_id length to 1024 in user_external_session (#95352)
Increase name_id and session_id length to 1024
2024-10-24 17:14:38 +02:00
Diego Augusto Molina
257aca5340 Unistore Chore: Fix span name (#94965)
fix span name
2024-10-24 12:12:20 -03:00
maicon
f379329127 UniStore: add FoldersCreate Endpoint test (#95253)
* UniStore: add FoldersCreate Endpoint test

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

---------

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-24 12:04:32 -03:00
Jacob Valdez
0c73403e00 Docs: initial pruning of outdated versioning info (#95212)
* initial pruning of outdated versioning info

* removing erroneous file
2024-10-24 09:42:04 -05:00
Erik Sundell
967b9ed22c E2E: Fix broken selector (#95357)
fix broken selector
2024-10-24 17:36:53 +03:00
Josh Hunt
0b842eb48e Chore: Change filterTable nth-child to nth-of-type (#95331)
Chore: Change filterTable nth-child styles to fix console warning
2024-10-24 17:27:25 +03:00
Sonia Aguilar
f5bd197cdb Alerting: Move logic for simple mode in QueryAndExpressionsStep to a separate hook (#94709)
* Move logic for simple mode in QueryAndExpressionsStep to a separate hook and add tests

* remove unnecessary jest.clearAllMocks
2024-10-24 16:26:46 +02:00
Ashley Harrison
5fb1c7f512 Card: Set an explicit displayName for Card (#95353)
set an explicit displayName for Card
2024-10-24 17:18:05 +03:00
Kazuho Cryer-Shinozuka
06e826d3af Alerting: Fix the unnecessary FolderCreationModal that is displayed twice (#94654) 2024-10-24 16:12:52 +02:00
Levente Balogh
d0d0d86880 Extensions: Add base log labels to console warn and error logs (#95348)
feat: add base labels to console logs
2024-10-24 16:58:54 +03:00
Matheus Macabu
152b83b3fb CloudMigrations: handle more error codes from GMS backend (#95257)
* CloudMigrations: remove unnecessary if feature toggle gating

* CloudMigrations: handle new error codes from backend
2024-10-24 15:55:02 +02:00
Esteban Beltran
77b8b505ad Catalog: Allow extensions to render in the plugin catalog subtitle (#95239)
* Plugins Catalog: Allow plugin subtitle additional extensions to register and render

* Add tests

* Fix prettier issues

* Fix typo

* Empty commit
2024-10-24 15:44:50 +02:00
Andreas Christou
2a65de8aaa Azure Monitor: Limit the log rows to 30000 (#93901)
* Limit the amount of rows to 30000

* Lint

* Remove unneeded goldenframe check

* Add feature toggle

* Update toggles

* Use rowLimit variable
2024-10-24 16:32:09 +03:00
Erik Sundell
ef253c99d8 Plugin extensions: Temp remove isReactComponent check (#95343)
* temp remove is react component check

* remove unused import
2024-10-24 16:21:00 +03:00
Tom Ratcliffe
9ec48075ee Alerting: Fix escaping of silence matchers in utf8 mode (#95067)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-10-24 14:12:09 +01:00
Gilles De Mey
c42f42223a Alerting: New alert state list view (#94068) 2024-10-24 15:37:42 +03:00
Alex Khomenko
f671ad51fe Alerting: Update Alert State History router import (#95218)
Update import
2024-10-24 14:27:54 +02:00
Ashley Harrison
5cb4be8c9b SingleTopNav: Use original kiosk mode icon (#95332)
change kiosk mode icon, put profile icon back in corner
2024-10-24 14:24:28 +03:00
Ihor Yeromin
762c7dc3a5 Transformation: Fix label width (#95159)
fix label width
2024-10-24 13:11:52 +02:00
Will Browne
9ae3d049a3 Plugins: Simplify TestExtractFiles test (#95183)
simplify TestExtractFiles test
2024-10-24 12:01:00 +01:00
Will Browne
a2868fdb14 Plugins: Replace references of plugin SDK backend.Logger with Grafana logger (#95235)
replace references
2024-10-24 12:00:40 +01:00
Yulia Shanyrova
26fab52086 Plugins: Plugin details right panel improvements (#93982)
* Add installed and latest version information

* get latest changelog for changelog tab from gcom

* fix displaying signature type

* fix integration test

* add translations

* remove gcom request at local changelog method
2024-10-24 12:55:29 +02:00
Erik Sundell
37f82dab49 Docs: Improve readme about e2e selectors (#95326)
add one more bulletpoint
2024-10-24 12:30:28 +02:00
Ashley Harrison
4a9ba41f81 Switch: Improve screen reader behaviour (#95178)
* add role="switch" and only set a label if one is passed in

* fix unit tests

* fix more unit tests
2024-10-24 11:26:04 +01:00
Matias Chomicki
142797032b Logs Volume: update timeout message (#95277)
* Logs Volume: update timeout message

* SupplementaryResultError: add list styles

* Address lint issues

* Update public/app/features/explore/Logs/LogsVolumePanelList.tsx

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2024-10-24 13:15:52 +03:00
Marcus Efraimsson
5c9071a6c6 Chore: Update SDK to v0.258.0 (#95325) 2024-10-24 12:14:19 +02:00
Erik Sundell
b0250cf027 Release: Install git in npm release step (#95324)
install git
2024-10-24 13:07:07 +03:00
Torkel Ödegaard
3523289e98 Dashboards: Fixes performance issue expanding a row (#95311)
* DashboardScene: Optimize change detection

* Remove arg

* remove console log
2024-10-24 11:05:13 +02:00
Lucas Reyna Córdoba
5fc07abef1 Docs: Contact page migration - updates contact links (#94012) 2024-10-24 10:43:18 +02:00
Erik Sundell
58f180d58b E2E Selectors: Add minimum Grafana version to selectors (#93468)
* make selectors versioned

* update readme
2024-10-24 10:28:21 +02:00
Joey
5a9de531d2 Tempo: Support new TraceQL scopes (#94858)
* Support new TraceQL scopes

* Update TraceQL lezer version
2024-10-24 09:17:40 +01:00
Alex Khomenko
7fe710b141 Routing: Update AppRootPage (#95052)
* Update router

* Fix rendering case

* Switch useLocation

* Remove redundant await
2024-10-24 10:50:48 +03:00
Hugo Kiyodi Oshiro
2d27703955 Plugins: Disable plugin uninstall while plugin is installing (#95070) 2024-10-24 09:38:38 +02:00
Claudiu Dragalina-Paraipan
830600dab0 AuthN: Optionally use tokens for unified storage client authentication (#91665)
* extracted in-proc mode to #93124

* allow insecure conns in dev mode + refactoring

* removed ModeCloud, relying on ModeGrpc and stackID instead to discover if we're running in Cloud

* remove the NamespaceAuthorizer would fail in legacy mode. It will be added back in the future.

* use FlagAppPlatformGrpcClientAuth to enable new behavior, instead of legacy

* extracted authz package changes in #95120

* extracted server side changes in #95086

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: gamab <gabriel.mabille@grafana.com>
Co-authored-by: Dan Cech <dcech@grafana.com>
2024-10-24 09:12:37 +02:00
Leon Sorokin
f7fcc14f69 Transformations: Add field from calc - avoid frame joining in some cases (#93602)
* Transformations: Add field from calc - avoid frame joining in some cases

* Add test for multiple query, 1 field, replace all

* omit frames that had no binary ops performed on them

---------

Co-authored-by: drew08t <drew08@gmail.com>
2024-10-23 15:14:06 -07:00
owensmallwood
2ffb88b0ee Unified Storage: Add index for poller query (#95293)
add index for poller query
2024-10-23 15:40:56 -06:00
Aaron Godin
d89235aa8c IAM: fix GetSearchPermissionCacheKey uniqueness (#95192)
* fix: Change users permissions search to use a consistent key without collisions

* Move HashString to cacheutils

* Change error handling logic for what to do with a cache key

* Add a test that confirms search cache key consistency
2024-10-23 15:37:30 -05:00
Kevin Minehart
66c728d26b CI: use linux to build msi installers (#95215)
* Build the MSI installers using Linux and wine
2024-10-23 22:26:52 +03:00
Isabel Matwawana
c84b6b783c Docs: Fix shared file references (#95287) 2024-10-23 15:04:24 -04:00
Isabel Matwawana
aa0dc36143 Docs: Table visualization update (#94495)
Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
2024-10-23 14:33:12 -04:00
Isabel Matwawana
a0ae08d774 Docs: Add correlations youtube link to What's new (#95279) 2024-10-23 14:26:32 -04:00
Marcus Efraimsson
8780fc554f Chore: Update SDK to v0.257.0 (#95250) 2024-10-23 17:49:12 +02:00
renovate[bot]
23aca476c9 Update scenes to v5.20.4 2024-10-23 15:27:35 +00:00
renovate[bot]
7359e0bcba Update dependency html-webpack-plugin to v5.6.3 2024-10-23 14:43:01 +00:00
Ashley Harrison
b23b6d228a Chore: Convert styles to use emotion object syntax (#94989)
* convert to use emotion object syntax

* missed one

* review comments

* set back to 0 and disable lint rule
2024-10-23 15:25:28 +01:00
renovate[bot]
3f47621065 Update dependency eslint-plugin-react to v7.37.2 2024-10-23 14:21:14 +00:00
ismail simsek
78a00d09cd Prometheus: Fix passing query timeout to upstream queries (#95104)
* remove queryTimeout from constructor

* use queryTimeout for range and instant queries

* remove comment

* remove default query timeout

* fix linting
2024-10-23 16:16:00 +02:00
Andre Pereira
0872eb2791 Tempo: Return a not found error if the trace is empty from v2 (#95256)
Return a not found error if the trace is empty from v2
2024-10-23 15:14:40 +01:00
Juan Cabanas
15de8a5433 SharedDashboard: Fix refresh when time picker is hidden (#95258) 2024-10-23 11:08:28 -03:00
ismail simsek
77cb47773f Prometheus: Fix field name setting for heatmap-cells type (#95097)
* add unit test

* ignore setting valueField name if the frame type is heatmap-cells

* return early
2024-10-23 16:07:00 +02:00
Adam Simpson
61b9ffd324 ds-querier: return QDR instead of k8s error (#95184)
* ds-querier: return QDR instead of k8s error

After parseQuery we know the request is a valid k8s request but we don't
know if the query is valid, therefore this change returns a QDR that
other systems, e.g. alerting ruler, can de-serialize properly.

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>

* ds-querier: fix tests

Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>

* tweak status

* refactor refID to empty

---------

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
2024-10-23 09:58:22 -04:00
jackyin
008c51b5b1 SignupInvitedPage: Show orgName (#94940)
* no orgname

* format code

* update unit test

* delete contextSrv

* fix unit test

* run prettier

---------

Co-authored-by: Laura Benz <laura.benz@grafana.com>
2024-10-23 16:49:27 +03:00
Erik Sundell
022297f359 E2E Selectors: Add 'modified' dist-tag when release includes actual changes (#93813)
* add modified tag to e2e-selectors package

* add sleep

* pr feedback
2024-10-23 15:47:50 +02:00
renovate[bot]
f6354339ef Update dependency @types/prismjs to v1.26.5 2024-10-23 13:45:32 +00:00
renovate[bot]
3b37e20df6 Update dependency @grafana/azure-sdk to v0.0.4 (#95252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-23 16:22:02 +03:00
Gabriel MABILLE
b68b69c2b4 AuthN: Use tokens for unified storage server authentication (#95086)
* Extract server code

---------

Co-authored-by: Claudiu Dragalina-Paraipan <drclau@users.noreply.github.com>
2024-10-23 15:04:15 +02:00
Eric Leijonmarck
9ab064bfc5 Folders: Add admin permissions upon creation of a folder w. SA (#95072)
* add admin permissions upon creation of a folder w. SA

* Update pkg/services/folder/folderimpl/folder.go

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

* Grant service account permissions for creation of dashboards

* Grant service account admin permissions upon creating a datasource

* fetch user using the userservice with the userid

* Revert "fetch user using the userservice with the userid"

This reverts commit 23cba78752.

* revert back to original datasource creation

---------

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2024-10-23 14:02:22 +01:00
Pepe Cano
b1a1e7ce61 Alerting: Add example dropdown in the Edit notification template view (#94711)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-10-23 15:01:42 +02:00
renovate[bot]
b512e7be0a Update dependency @types/node to v20.16.15 2024-10-23 12:59:48 +00:00
Andreas Christou
8bb7475e4f Azure: Fix duplicated traces in multi-resource trace query (#95156)
Use first resource as base resource for query
2024-10-23 12:30:06 +01:00
Matias Chomicki
2573cbec08 Loki: Added support to split queries by stream shard (#94245)
* Add shard query splitting implementation

* Shard query splitting: reuse function from query splitting

* Shard query splitting: remove max line limit

* Shard query splitting: update test

* Shard query splitting: fix types and non-sharded queries

* Merge responses: fix log merging

* Merge responses: remove legacy code

* Query splitting: add support to retry failed requests

* Query splitting: unit test request retrying

* Query splitting: add unsubscriptions

* Shard query splitting: fix retrying

* Shard query splitting: switch to dynamic grouping

* Shard query splitting: update group size thresholds and fix -1 query

* Shard query splitting: update initial group size + don't retry parse errors

* Shard query splitting: update unit test

* chore: update mock value

* Shard query splitting: add support for multiple targets

* chore: update description

* Shard query splitting: use group targets

* chore: filter hidden queries

* Shard query splitting: issue initial log query without sharding

* Splitting: fix retrying in both methods

* Merge responses: keep execution time

* Shard query splitting: remove no-shard attempt

* Shard query splitting: adjust groups based on rate of change

* chore: clean up experiments

* Shard query splittng: remove log query restrictions

* Shard query splitting: remove fallback to time splitting

* Loki: add new query direction

* Missing generated file

* LokiOptionField: integrate new query direction

* Shard query splitting: delegate non-scan queries to time splitting

* Query splitting: do not retry queries with parse errors

* Loki datasource: add placeholder for feature flag

* Shard query splitting: add function with support criteria

* Shard query splitting: refactor query modification and shard logs volume

* Shard query splitting: update unit tests

* chore: Update scan direction tooltip

* chore: formatting

* LogsVolumePanel: fix missing state in logs volume panel data

* Merge responses: better handle missing nanoseconds

* LokiQueryOptionFields: display query direction for log queries

* loki: process scan direction as backward

* Loki datasource: restrict sharding to Explore

* Retrying: invert criteria and move to response utils

* Formatting

* Use log volume refId constant

* Fix import order

* Create feature flag

* Use feature toggle

* LogsVolumePanel: prevent flashing no data while streaming
2024-10-23 14:21:03 +03:00
grafana-pr-automation[bot]
a5ae8959e3 I18n: Download translations from Crowdin (#95224) 2024-10-23 14:19:04 +03:00
Josh Hunt
2cf6a6388b Combobox: Add prometheusUsesCombobox feature toggle (#95238)
Add prometheusUsesCombobox feature toggle
2024-10-23 12:18:33 +01:00
Pepe Cano
813632dff1 Alerting Docs: Update Alert rule and Notification Templating (#94069)
* Update links to the new location of the Templates intro page

* Set alert rule template structure

* Update the `Template notifications` structure/sidebar

* Move examples to examples pages

* Update menu titles and URL paths

* WIP reference

* added intro to examples.md

* reference page section intros

* examples title

* Template

* Continue Alert Template Reference

* example sections

* Almost finish with Reference page

* weight pages

* WIP - template variables Intro

* Edits Alert rule templates + Differences with notification templates

* examples-draft-2

* how to map annotations to notif templates

* examples v2

* moved example

* Continue Template annotations and labels

* Preview annotation templates

* Complete `Template annotations and labels`

* Update `Differences with notification templates`

* Polish a bit `Differences with notification tempaltes`

* added logic examples to `Examples`

* Finish sharing Template language

* Minor: set `anchor` link

* Minor edit

* Minor edit

* Minor changes

* Template language changes

* Document missing functions for alert rule templates

* 'Examples' v3

* `Examples` v3.1

* `Examples` v3.2

* added context/intro to `Examples`

* added a how to section to `Examples`

* moved legacy info in `Examples`

* added examples, sections in `Examples`

* formatting

* examples v5

* examples v5.1

* Complete update to `Notification template reference`

* Update `$values` description

* moved steps to `index`

* fixed urls

* removed section in `examples`

* added refs

* fixed urls

* refs fix

* blended the use case into the explanation

* Notification template reference: Minor readibility changes

* Edit `$value` in Alert rule template reference

* Edit `Manage notification templates

* links to ref and lang pages

* Minor copy changes

* Edit Template annotation overview + Prepare Template notifications overview

* `Select` vs `Choose`

* Template Overview

* Fix `heading` does not match `title`

* examples v6

* examples v6.1

* Fix spell errors

* Run `prettier --write` to fix md format errors

* examples v7

* examples v7.1

* examples v7.2

* examples v7.4

* examples v7.5

* examples v7.6

* all pretty, no pity

* Update alert rule examples

* Complete `Labels and annotations template examples`

* Minor changes

* Use `.` notation instead of `index` in examples

* rename `extendeddata` to `notificationdata`

* Complete Notification examples

* minor changes

* Set `go` language when displaying template examples

* Revert "minor changes"

This reverts commit f647c55c87.

* Update example and admonition for consistency

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/shared/alerts/template-language.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/shared/alerts/template-language.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/language.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/examples.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/examples.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/examples.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/templates/examples.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/examples.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/template-notifications/manage-notification-templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* use `add` instead of `enrich`

* fix prettier content errors

* minor copy change

* Specify which Alert properties are exclusive to Grafana-managed alerts

* Use `Monitor` instead of `Meta monitoring`

* Be more detailed about notifation template limitations

---------

Co-authored-by: tonypowa <tonypowa@gmail.com>
Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-10-23 12:43:28 +02:00
renovate[bot]
3103776892 Update dependency @types/jquery to v3.5.32 2024-10-23 10:08:04 +00:00
antonio
01b75828ba alerting>tutorials:simple alert creation flow (#95134)
* alerting>tutorials:simple alert creation flow

* change step instruction

* added ref

* added ref2

* refs3

* all pretty no pity

* Update docs/sources/tutorials/alerting-get-started/index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* updated instructions in all the tutorials

* small changes

* link

* link2

* removed will offenders

* minor update

* typo

* removed ref

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-10-23 11:53:40 +02:00
Ashley Harrison
567a3803c5 SingleTopNav: Fix losing focus when moving between menu states (#95069)
* handle button focus between states

* fix focus when closing the overlay menu from the close button

* move into a separate hook

* properly feature toggle the hook

* use constants
2024-10-23 10:52:42 +01:00
renovate[bot]
5f8af8860f Update dependency @types/jest to v29.5.14 2024-10-23 09:40:48 +00:00
Josh Hunt
2a5afd0d1a Combobox: Combine loading and search/caret icons (#95191)
Don't have both loading and search/caret icon at the same time
2024-10-23 10:39:03 +01:00
renovate[bot]
32d224223e Update babel monorepo to v7.25.9 2024-10-23 09:10:18 +00:00
Torkel Ödegaard
b700de8122 Dashboard: New layouts feature toggle and basic skeleton for a responsive grid layout (#94805)
* Wip

* Update

* Fix adding new panels

* reuse fromVizPanels

* Fixes

* Update

* Update

* Update

* Fixes

* Update
2024-10-23 10:55:45 +02:00
Gábor Farkas
1dbbbd9ca7 query: handle the x-rule-uid header (#95223) 2024-10-23 10:49:54 +02:00
Karl Persson
6f7528f896 Migration: Remove table aliasing in delete statement to make it work for mariadb (#95226)
Migration: remove table aliasing in delete statement to make it work in mariadb
2024-10-23 10:49:20 +02:00
renovate[bot]
5e924f3a27 Update dependency @grafana/plugin-e2e to v1.9.0 (#95179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-23 09:44:32 +01:00
Andres Martinez Gotor
e33573d786 Docs: Rewording prune setting when provisioning datasources (#95059)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-10-23 08:31:53 +00:00
Leonor Oliveira
a03652494c Dual Writer simplification (#93852)
* All objects should have an UID

* Now with a different error message

* Simplify create on DW 2: use the same object to write to both storages

* Run only one test

* Add check for status code

* Add name if it's not present in mode2

* Populate UID in legacy

* Remove logs and commented code

* Change dualwriter1

* Remove commented code

* Fix list test

* remove get on update from dualwriter 2

* Get object before updating. Better var renaming

* Finish rebasing

* Comment test

* Uncomment tests

* Update legacy first. Add preconditions

* Remove preconditions

* Fix update test

* copy RV from unified to legacy objects

* revert changes to playlist xorm store

* Improve logging. Add go routines for mode3

* Add tests for async funcs in mode3

* Lint

* Lint

* Lint. Start to fix tests

* Fix watcher tests

* Fix store tests

* Fiinish fixing watcher tests

* Fix server tests

* add name check

* Update pkg/apiserver/rest/dualwriter_mode1.go

Co-authored-by: Bruno Abrantes <bruno.abrantes@grafana.com>

* All objects should have an UID

* Now with a different error message

* Simplify create on DW 2: use the same object to write to both storages

* Run only one test

* Add check for status code

* Add name if it's not present in mode2

* Populate UID in legacy

* Remove logs and commented code

* Change dualwriter1

* Remove commented code

* Fix list test

* remove get on update from dualwriter 2

* Get object before updating. Better var renaming

* Finish rebasing

* Comment test

* Uncomment tests

* Fix update test

* revert changes to playlist xorm store

* Improve logging. Add go routines for mode3

* Lint

* Fix watcher tests

* Fiinish fixing watcher tests

* Add mode 5 with etcd test case. Add early check to fail on populated RV in payload

* we can't set RV to the found object when updating

* Lint

* Don't fail on update playlists

* Name should not be different when updating and it should be not empty on creating

* Fix tests

* Update pkg/apiserver/rest/dualwriter_mode2.go

Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>

* Lint

* Fix mode 5 tests

* Lint

* Add generateName condition on every mode. Fix tests

* Lint

* Add condition on where name or generate name have to be set

* Fix test

* Lint

* Fix folders test

* We dont need to send name for mode1

* Fail if UID is not present

* Remove change from not running test

* Remove unused line

* Lint

* Update pkg/storage/unified/apistore/store.go

Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>

* Improve error message

* Fix broken watcher test

* Fail on name mismatch on update

* Remove log

* Make sure UIDs match on create in both stores

* Lint

* Write first to unified storage

* Remove uid setting

* Remove RV only in mode2

* Fix test. Remove log line

* test

* No need to asser on RV in mode3

* Remove RV check due to race condition

* Update dualwriter.go

Co-authored-by: Georges Chaudy <chaudyg@gmail.com>

* Update pkg/storage/unified/client.go

* remove unused parameter

* log an error for object is missing UID instead of returning an error

* remove obj.SetResourceVersion("")

* log an error for object is missing UID instead of returning an error

* FInalise merge

* Move RV check to where it was

* Remove name check

* Remove server check for backwards compatibility

* Remove unused fn

* Move test checks for another PR

* Dont commit go work sum changes

* Only log error if RV is present for now.

---------

Co-authored-by: Todd Treece <todd.treece@grafana.com>
Co-authored-by: Bruno Abrantes <bruno.abrantes@grafana.com>
Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
Co-authored-by: Georges Chaudy <chaudyg@gmail.com>
2024-10-23 10:29:41 +02:00
Robby Milo
1696ac8ea5 format datasources list with columns (#95048)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-10-23 08:18:22 +00:00
Gábor Farkas
3a719a2cfd api: use alerting headers (#95118)
* api: use alerting headers

* improve code, add integration test

* better comment

* fixed test

* merged tests
2024-10-23 09:39:22 +02:00
owensmallwood
d9bc4f7395 Search poc: Add debug log for metric and update metric buckets (#95217)
* adds debug log for metric

* updates buckets
2024-10-23 09:35:17 +02:00
Ihor Yeromin
b189743ca0 Actions: Improve drag and drop experience (#94263)
* feat(actions): improve dnd ux

---------

Co-authored-by: Kristina Durivage <kristina.durivage@grafana.com>
2024-10-23 09:24:06 +02:00
Pepe Cano
8072286daf Alerting docs: Update Labels and Annotations to detail use cases (#95213)
* Alerting docs: Update `Labels and Annotations` to detail use cases

* Update docs/sources/alerting/fundamentals/alert-rules/annotation-label.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-10-23 08:50:56 +02:00
Matthew Jacobson
26162a53e6 Alerting: Allow config api receiver create/delete with alertingApiServer (#95207)
Previously all receiver modifications were denied with alertingApiServer
enabled. This allows pure creates and deletes through as these specific
cases can be handled simply and without risk of rbac shenanigans.
2024-10-22 16:54:05 -04:00
Isabel Matwawana
4e725f2f74 Docs: Add what's new video (#95173) 2024-10-22 20:31:31 +00:00
Juan Cabanas
60915e7fe6 ShareExternally: Fix refresh when time picker is hidden (#95206)
Fix refresh when time picker is hidden
2024-10-22 23:03:04 +03:00
grafana-delivery-bot[bot]
75a28bc367 Release: update changelog for 11.3.0 (#95197)
* Update changelog

* update changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
2024-10-22 12:39:16 -07:00
owensmallwood
9763199b53 Search Poc: Add metrics (#95111) 2024-10-22 12:25:08 -06:00
Ezequiel Victorero
12cc312920 Chore: Update swagger docs (#94701) 2024-10-22 15:18:14 -03:00
Gabriel MABILLE
7aeb1adff2 Fix: Check JSON data is not nil (#95189)
* Fix: Fix panic when json data are nil

* Use Interface()

* Feedback

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>

* Need to check inside the if statement

---------

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2024-10-22 18:09:44 +01:00
Summer
6e802e6809 Expressions: add core services project on expressions label (#94991)
---------

Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
2024-10-22 13:05:45 -04:00
grafana-delivery-bot[bot]
9a7ec04f90 Release: update changelog for 11.2.3 (#95176)
Update changelog

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-10-22 09:27:34 -07:00
grafana-pr-automation[bot]
d325184287 I18n: Download translations from Crowdin (#95175)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-22 18:54:23 +03:00
renovate[bot]
9fb956f57f Update dependency @grafana/faro-web-tracing to v1.11.0 (#95170)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 16:16:45 +01:00
grafana-delivery-bot[bot]
77bf3f5bab Release: update changelog for 11.1.8 (#95161)
* Update changelog

* Fix changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2024-10-22 16:50:41 +02:00
Will Browne
25abd57029 Plugins: Update to latest go plugin SDK (0.256.0) (#95065)
* update to latest go plugin SDK

* make update-workspace

* update alerting tests
2024-10-22 15:44:53 +01:00
Isabel Matwawana
8f0ccf3362 Docs: Add Correlations entry to what's new (#95169) 2024-10-22 10:42:29 -04:00
Adela Almasan
b2e53997e2 Canvas: Fix data links target (#95113) 2024-10-22 09:36:48 -05:00
renovate[bot]
3ec178ae44 Update dependency @grafana/faro-web-sdk to v1.11.0 (#95167)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 15:32:42 +01:00
linoman
06a0890c2e RolePickerDrawer: Replace RolePicker modal for drawer (#94801)
* Add RolePickerDrawer

* Add RoiePickerBadges

* Add RolePickerSelect

* Replace RolePicker in OrgUsersTable

* Replace RolePicker in ServiceAccountCreatePage

* Add RolePickerDrawer test

* Add tests

* Add i18n texts

* Update RolePickerBadges
2024-10-22 16:21:10 +02:00
renovate[bot]
15340a27ef Update dependency @grafana/faro-web-sdk to v1.11.0 (#95160)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 15:05:12 +01:00
Matthew Jacobson
4aad44e848 Alerting: Fix per-receiver RBAC for receivers with long names (#95084)
* Implement uidToResourceID

* add middleware

* Move uidToResourceID to alerting package

* Only hash uid if it's too long

* Use hashed uid in access control

* Move ReceiverUidToResourceId to ScopeProvider

* resolve uid in middleware only if param exists

* Tests

* Linting

---------

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-10-22 10:04:13 -04:00
Dave Henderson
25e85f8947 ci: Update trivy action to run on action updates (#95096)
Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
2024-10-22 10:00:47 -04:00
renovate[bot]
112763594a Update dependency @grafana/faro-core to v1.11.0 (#95149)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 14:36:58 +01:00
grafana-delivery-bot[bot]
63b5e65eb3 Release: update changelog for 11.0.7 (#95157)
* Update changelog

* Fix changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2024-10-22 15:05:47 +02:00
Alexander Zobnin
e709de603d Chore: Init auth model on server side (#95142)
* Chore: Init auth model on server side

* fix linter
2024-10-22 14:50:52 +02:00
Andreas Christou
986bd2f9f8 Azure Monitor: Support metric namespaces fallback (#94722)
* Update display names

* Update multi-resource types

* Update default metric namespace list

* Initialise namespace list with fallback namespaces

* Add test

* Update test
2024-10-22 13:24:54 +01:00
renovate[bot]
b1d846d7e8 Update scenes to v5.20.3 2024-10-22 12:03:41 +00:00
grafana-delivery-bot[bot]
0e0e11cdd1 Release: update changelog for 10.4.11 (#95141)
* Update changelog

* Fix changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2024-10-22 13:51:15 +02:00
renovate[bot]
3f5483b79f Update dependency rudder-sdk-js to v2.48.22 2024-10-22 11:40:10 +00:00
Gabriel MABILLE
0704ae734f AuthZ: Refactor authentication modes for the Authz package (#95120)
* AuthZ: Fix authentication modes for the Authz package

Co-Authored-By: Claudiu Dragalina-Paraipan <drclau@users.noreply.github.com>
2024-10-22 13:38:59 +02:00
grafana-pr-automation[bot]
229658ad83 I18n: Download translations from Crowdin (#95129)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-22 13:32:38 +02:00
renovate[bot]
4308edb593 Update dependency msw to v2.4.13 2024-10-22 11:19:04 +00:00
Andrej Ocenas
3bf3290340 Grafana/ui: TimeRangePicker with automatic sync across instances (#94074) 2024-10-22 12:52:33 +02:00
renovate[bot]
5a4b051a91 Update dependency browserslist to v4.24.2 2024-10-22 10:47:43 +00:00
Tito Lins
71d04a326b Alerting: Support tls config for webhook receiver (#93513)
Adds the ability to configure tls settings on the webhook receiver (e.g. to skip server certificate validation)
2024-10-22 12:44:32 +02:00
grafana-delivery-bot[bot]
d722a25084 Release: update changelog for 10.3.12 (#95128)
* Update changelog

* Fix changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2024-10-22 12:23:42 +02:00
Andrej Ocenas
5b1d99b8c4 Sidecar: Remove extension helpers and use the sidecar service directly (#94979) 2024-10-22 11:46:29 +02:00
Gilles De Mey
94f5e21493 Alerting: Fix overflow for long receiver names (#95064) 2024-10-22 11:08:56 +02:00
renovate[bot]
059c5a4d02 Update dependency @types/node to v20.16.14 2024-10-22 09:00:43 +00:00
linoman
3270a9c959 Session Refactor: Add auth module label to session's list (#94958)
* Add AuthModule to token API

* Add badge to UserSessions

* Change idp label rendering

* Render IdP label for User Profile page

* Add i18n labels
2024-10-22 10:57:36 +02:00
renovate[bot]
200c613672 Update dependency @formatjs/intl-durationformat to ^0.5.0 (#95093)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-22 09:36:19 +01:00
Jara Suárez de Puga García
dd7ad4c3d6 Docs note on Cross-account observability permissions for CW datasource (#95034) 2024-10-22 09:31:50 +01:00
Sonia Aguilar
bef9ff3b1a Alerting: Remove threshold as default expression for grafana-managed recording rules (#94949)
* remove threshold as default expression for grafana-managed recording rule

* fix

* remove eslint disable line
2024-10-22 10:22:42 +02:00
Mariell Hoversholm
b420fbe940 Fix(devenv): use #!/usr/bin/env for bash scripts (#95117)
This solves problems on Linux distros like NixOS and BSDs like FreeBSD that don't provide `/bin/bash`, while also
maintaining support for all other distros out there (AFAIK? even Alpine with its Busybox has /usr/bin/env).
2024-10-22 10:20:33 +02:00
Alexander Akhmetov
d0481bb568 Alerting: Refactor state manager Warm method to accept instance store as an argument (#95098) 2024-10-22 09:45:50 +02:00
Kristina
cfc40b23d7 Transformations: Autofocus on search when drawer opens (#95001) 2024-10-21 20:17:51 -05:00
owensmallwood
bda27ec8c6 Unified Storage: Add watch latency metric (#93509)
* adds metric for watch latency

* registers storage metrics when creating a new ResourceServer

* defines the latency (in milliseconds) as the diff between now and the RV. Still need to wait until PR for switching RV to millisecond timestamp is rolled out.

* should be micro seconds not milli

* for watch latency, use diff between now and resource version and convert to seconds

* fix typo
2024-10-21 17:15:11 -06:00
Scott Lepper
cab4288b88 [docs] fix provisioning folder name (#95099) 2024-10-21 16:38:23 -04:00
Nathan Marrs
34d1a75ab0 ElasticSearch: Add playwright smoke test (#95092)
add smoke test to elastic search
2024-10-21 13:13:40 -07:00
Nathan Marrs
c94468339c CloudWatch: Add playwright smoke test (#95087)
add smoke test to cloudwatch
2024-10-21 13:13:22 -07:00
Leon Sorokin
594e9b1b73 BarChart: Skip formatting null-valued ticks (#94935)
Co-authored-by: Ihor Yeromin <yeryomin.igor@gmail.com>
2024-10-21 22:29:51 +03:00
renovate[bot]
5c06bbf8cf Update dependency rudder-sdk-js to v2.48.21 2024-10-21 19:22:44 +00:00
Isabel Matwawana
2614607d60 Docs: What’s new & Upgrade guide v11.3 (#93193)
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2024-10-21 14:59:30 -04:00
renovate[bot]
8d598ba5f8 Update dependency redux-mock-store to v1.5.5 2024-10-21 18:51:44 +00:00
renovate[bot]
81a3245190 Update dependency react-hook-form to v7.53.1 2024-10-21 18:29:11 +00:00
Andrej Ocenas
c3c1f6ac27 Sidecar: Move service to runtime (#94860) 2024-10-21 20:26:39 +02:00
renovate[bot]
b7e658c5c3 Update dependency react-dropzone to v14.2.10 2024-10-21 18:07:01 +00:00
renovate[bot]
53a0c3488e Update dependency react-dropzone to v14.2.10 2024-10-21 17:34:30 +00:00
Matias Chomicki
89c215a9ff Loki query editor: update CompletionDataProvider time range when it changes (#94905)
* Loki query editor: update CompletionDataProvider time range when it changes

* CompletionDataProvider: update test and add regression

* Formatting

* Completion Data Provider: clear cache when the time range changes

* Completion Data Provider: specifically test for undefined values vs empty string
2024-10-21 20:14:27 +03:00
Arati R.
f3a93a0303 K8s/Folders: Enhance k8s folder update (#95033)
* Put folder update behind feature toggle
* Set more fields when doing k8s update
* Check update in folder tests
* Uncomment remaining k8s handler methods
2024-10-21 19:08:03 +02:00
renovate[bot]
ce917e97f7 Update dependency ol-ext to v4.0.24 2024-10-21 17:06:41 +00:00
Adela Almasan
07df148400 Chore: Update tests for Heatmap tooltip utils (#94933) 2024-10-21 11:40:40 -05:00
renovate[bot]
53142aed07 Update dependency msw to v2.4.12 2024-10-21 16:25:18 +00:00
Syerikjan Kh
20a33632bf feat: pass orgrole when adding rs event (#94890)
* chore: pass orgRole, orgId for RS event report

* chore: track panel plugin search

* ref: extract interaction const to separate file
2024-10-21 12:22:51 -04:00
Arati R.
8abfcdbb78 Ks8/Folders: Fix status codes returned on create (#95055)
* Fix status codes returned by k8s folder handler
* Add test for status code when creating duplicate folder
2024-10-21 13:07:11 -03:00
renovate[bot]
9d1f8fbdb0 Update dependency html-webpack-plugin to v5.6.2 2024-10-21 16:01:05 +00:00
owensmallwood
fb9cfd0d1b Search PoC: Indexmapping per resource and transform to intermediate IndexedResource (#94906)
* Transforms raw US resource into an intermediate IndexableResource and indexes that. Pulls index mapping code out into different file. For now, we will hardcode which spec fields are indexed, per resource.

* Fixes a few bugs with field casing and timestamps not being formatted right (or not existing).

* adds readme section for using search with US

* extracts to function to transform from search hit to IndexedResource

* get folders when building index
2024-10-21 09:34:41 -06:00
renovate[bot]
40f0a72db0 Update dependency eslint-plugin-jsx-a11y to v6.10.1 2024-10-21 15:27:56 +00:00
Santiago
4f8f82f5f1 Alerting: Fix remote Alertmanager readiness check path (#95063) 2024-10-21 17:24:51 +02:00
renovate[bot]
b475b8f648 Update dependency @types/papaparse to v5.3.15 2024-10-21 14:46:12 +00:00
Yuri Tseretyan
19a1d9d188 Fix: Initialize tracer in file provisioning (#95007)
initialize tracer
2024-10-21 10:03:58 -04:00
renovate[bot]
b43425b527 Update dependency @types/node to v20.16.13 2024-10-21 13:59:11 +00:00
Ashley Harrison
f5078547d2 fix types 2024-10-21 16:15:42 +03:00
renovate[bot]
2974ab634f Update dependency @types/lodash to v4.17.12 2024-10-21 16:15:42 +03:00
Eric Leijonmarck
885eb00fc3 Chore: Update go sum, via make update-workspace (#94980)
update go sum
2024-10-21 14:12:24 +01:00
Karl Persson
b4366ebed2 Zanzana: bootstrap authz server (#95036)
Bootstrap authz extended server
2024-10-21 14:58:57 +02:00
Carl Bergquist
db06a5a5d3 scopes: test case for supporting queries using __name__ (#94954)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
2024-10-21 08:18:40 -04:00
renovate[bot]
f92fe82b24 Update dependency @rollup/plugin-typescript to v12.1.1 2024-10-21 11:40:01 +00:00
renovate[bot]
669669f093 Update dependency @playwright/test to v1.48.1 2024-10-21 11:09:25 +00:00
Ashley Harrison
324063eb3d SingleTopNav: Fix positioning of command palette (#95041)
fix positioning of command palette when singleTopNav is enabled
2024-10-21 14:06:44 +03:00
grafana-pr-automation[bot]
cc99e7b164 I18n: Download translations from Crowdin (#95037)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-21 13:51:47 +03:00
Alex Khomenko
180e82992b Routing: Clean up tests (#95018)
* Update ShareDrawer.test

* Update OptionsPaneOptions.test

* Update GenAIButton.test

* Update RouterDebugger

* Update ScopesDashboardsTreeDashboardItem.tsx

* Update ConfigEditor.tsx

* Update MuteTimings.test

* Update NewReceiverView.test
2024-10-21 13:42:30 +03:00
Ashley Harrison
975e3acc68 add new yarn version 2024-10-21 13:04:13 +03:00
renovate[bot]
2ce5f78cdd Update Yarn to v4.5.1 2024-10-21 13:04:13 +03:00
Josh Hunt
dd7f24dfbd Chore: bump whats new to 11.4 (#94983) 2024-10-21 10:55:47 +01:00
Jack Westbrook
593ab4559d MSSQL: Add playwright smoke test (#94977)
test(mssql-datasource): add smoke test to assert decoupled plugin assets are built and load
2024-10-21 11:36:18 +02:00
renovate[bot]
532cee2ee3 Update dependency @lezer/common to v1.2.3 2024-10-21 09:32:05 +00:00
linoman
640bc0de97 SSO SAML: Remove SettingProvider settings from SSO interactions (#94900)
* Remove SettingProvider settings from SSO interactions

* Mock Settings Provider for SSO Settings test

* Ignore error from SettingsProvider

* Add test for backend
2024-10-21 11:28:55 +02:00
Ashley Harrison
cbce49b163 Internationalisation: Mark up @grafana/ui for translations (#94951)
* ensure grafana-ui is translated

* last couple

* improve name
2024-10-21 10:11:12 +01:00
grafana-pr-automation[bot]
e0446fc557 I18n: Download translations from Crowdin (#94968) 2024-10-21 10:59:11 +02:00
Konrad Lalik
836881b713 Alerting: Fix editing expressions refId (#94941)
Fix refId editing
2024-10-21 10:49:42 +02:00
Dana Axinte
98e5048370 CloudMigration - Display different error messages for create migration errors (#94683)
* start on tokens

* more error messages

* more handling

* rephrased with suggestions from Daniel

* separate gms parse method

* use translation

* refactor initial idea to use error obj

* use error dto result

* handle gms client

* clean logs and comments

* fix tests

* tests for gms

* test and lint

* lint

* one more handling from gms

* typing in fe

* use error interface

* use validation error

* remove unused gms error

* use errorlib and helper function in fe

* regen api

* use same error util

* one more error to handle
2024-10-21 09:45:54 +01:00
Victor Marin
d608668335 DashboardScenes: Fix missing query options in library panels (#94808)
Fix missing query options in library panels
2024-10-21 11:29:23 +03:00
Timur Olzhabayev
388023a172 Chore: Adding datasources provisioning label (#94899)
adding datasources provisioning label
2024-10-21 09:44:34 +02:00
Esteban Beltran
3a7096d0a6 Chore: Increase fork ts webpack memory to 5GB (#94810) 2024-10-21 09:42:35 +02:00
William Wernert
0920e8bcc6 Alerting: Clear ignored fields of recording rules for API response (#95004)
* Clear ignored fields of recording rules for API response

* Move field clearing to compat function

* Run make update-workspace

* Cleanup changes
2024-10-19 01:03:12 +03:00
Scott Lepper
5700b4b13a [search] - restart watch (#94981)
undo go sum change
2024-10-18 15:39:51 -04:00
Yuri Tseretyan
00bb3215cb Alerting: Fix time-interval conversion to return bad request if payload is incorrect (#94995) 2024-10-18 13:16:03 -04:00
Yuri Tseretyan
672d5f92f2 Chore: Fix population of details when converting from errutil errors to K8s error (#94996) 2024-10-18 13:15:13 -04:00
lean.dev
3438196010 Anonymous User: Adds validator service for anonymous users (#94700) 2024-10-18 13:10:41 -03:00
Isabella Siu
fd5f351a6f CloudWatch: Interpolate region in log context query (#94930)
CloudWatch: interpolate region in log context query
2024-10-18 11:31:05 -04:00
William Wernert
053a806ab1 Alerting: Validate namespace when updating rules through the provisioning API (#94643)
* Also validate folder on provisioning update

* Move folder check before auth check

When checking for the existence of a folder we go through the folder
service which requires auth. Doing so prevents an unprivileged user from
accessing information about whether a particular folder exists or not.
2024-10-18 18:21:26 +03:00
Alexander Zobnin
2baf4883cc Zanzana: add action sets to dashboard and folder schema (#94602) 2024-10-18 16:58:30 +02:00
Tobias Skarhed
d4546630df Frontend Monitoring: Set correct default value in Go file (#94976) 2024-10-18 17:52:46 +03:00
Tobias Skarhed
bbc4dc3867 Frontend Monitoring: Add config option to enable all default instrumentations (#94862)
* Add config options to enable all faro instrumentation

* Fix ts error

* Fix type in test

* Add to default config files
2024-10-18 15:35:39 +02:00
Laura Fernández
a44f718c09 SingleTopNav: align Command Palette to the input (#94614) 2024-10-18 15:27:04 +02:00
Ashley Harrison
65ce173d3f SingleTopNav: Handle explore action placement (#94812)
* move query library + share buttons to toolbar

* add share text to button

* need spacer when not in singleTopNav

* fix unit tests

* use secondary button styling when singleTopNav is enabled
2024-10-18 13:58:54 +01:00
renovate[bot]
54c500cd94 Update dependency @grafana/lezer-traceql to v0.0.20 (#94962)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-18 13:56:31 +01:00
Gaurav Soni
a72c89bd6e Update index.md to update Grafana Assume Role Notes (#94961)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-10-18 12:36:01 +00:00
Konrad Lalik
5548e5976b Alerting: Fix templates editing validation (#94960)
Fix title validation when editing template files
2024-10-18 14:28:35 +02:00
renovate[bot]
b64a5848aa Update dependency @floating-ui/react to v0.26.25 (#94957)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-18 13:24:04 +01:00
Andre Pereira
bbe7029d0a Tempo: Add support for /api/v2/traces/ and partial traces in Trace View (#94267)
* Request trace by id using v2, fallback for v1 when 404

* Show partial traces badge in Trace View

* update go work sum

* Fix tests

* some linting

* Fix tests and try to ignore linter

* Move no lint

* nolint:bodyclose

* merge main

* Fix null tags in array

* Fix test

* Update go.sum

* Update go.sum
2024-10-18 15:10:22 +03:00
renovate[bot]
75fe42876a Update React Aria 2024-10-18 11:38:05 +00:00
Karl Persson
a82d01214d Auth: Update authlib (#94947)
* Update authlib
2024-10-18 13:36:21 +02:00
Jack Westbrook
1ec68b6917 Decoupled Plugins: Prevent copying project.json into dist directories (#94952)
fix(plugin-configs): prevent copying project.json into dist directories
2024-10-18 14:03:28 +03:00
renovate[bot]
afeb0fc792 Update dependency @types/testing-library__jest-dom to v6 (#94607)
* Update dependency @types/testing-library__jest-dom to v6

* remove package and fix types

* don't include setupTests in the build tsconfig

* exclude testUtils

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-10-18 11:59:47 +01:00
Sam Jewell
ea71201ddc ServerSideExpressions: Disable SQL Expressions to prevent RCE and LFI vulnerability (#94942)
* disable sql expressions

remove duckdb ref

* Run `make update-workspace`

---------

Co-authored-by: Scott Lepper <scott.lepper@gmail.com>
2024-10-18 11:28:26 +01:00
Gábor Farkas
cbe1e7d63f expr: add explicit strict-mode const (#94838)
expr: add explicit strict-mode value
2024-10-18 10:46:27 +02:00
Marcus Efraimsson
42016dc359 Chore: Update SDK to v0.255.0 (#94894) 2024-10-18 10:42:32 +02:00
Gábor Farkas
34bb959835 expr: improved test (#94837) 2024-10-18 10:31:58 +02:00
Alexander Akhmetov
0b804e720f Alerting: Add RuleGroup field to ListAlertInstancesQuery struct (#94615)
Alerting: add RuleGroup field to ListAlertInstancesQuery struct
2024-10-18 09:44:16 +02:00
Alex Khomenko
22d5efba25 Routing: Replace Prompt component (#94675)
* Add custom Prompt component

* Add test

* Remove beforeunload handling

* Updates

* Use custom Prompt in CorrelationEditorModeBar.tsx

* Simplify component

* Update DashboardPrompt

* Simplify Prompt

* Update

* Update DashboardPrompt.tsx

* Update type

* Update tests
2024-10-18 07:49:25 +03:00
Diego Augusto Molina
3e1f5559a6 Unistore Chore: Add database-level observability (#92266)
* add testing harness

* fix mockery and linters

* WIP

* wip

* fix transactions

* fix transaction tracing; add tracing by default

* rename package

* move WithTx to simplify logic of DB implementations

* fix potential issue with context deadline

* add db instrumentation to dbutil

* add otel tests

* improve naming

* minor fix in semantics and add comprehensive OTel testing

* fix naming

* instrument resourceVersionAtomicInc

* provide a default testing tracer

* fix docs

* fix typo in docs

* add semconv for k8s
2024-10-18 00:32:08 -03:00
Adela Almasan
9125f0df20 Table: Add support for ActionsCell (#94648) 2024-10-18 02:15:34 +03:00
Adela Almasan
0d70dbe730 Table: Add actions support (#94578) 2024-10-18 01:47:39 +03:00
Santiago
4c15266a77 Alerting: Add X-Remote-Alertmanager header to the remote AM client (#94913) 2024-10-17 22:38:13 +02:00
Josh Hunt
8f7352e862 CI: Additional changes for +security versions (#94854)
* Build: Fix docker manifest create not using correct IMAGE_TAG

* Support publishing security versions of NPM packages

---------

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
2024-10-17 22:13:42 +03:00
Edvard Falkskär
125b7c2fd8 Histogram: Fix field displayName cache (#94685) 2024-10-17 14:00:03 -05:00
grafana-delivery-bot[bot]
221e640264 Release: update changelog for 11.1.7+security-01 (#94918)
* Update changelog

* update changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2024-10-17 13:49:01 -05:00
Kyle Cunningham
d7ee3ea086 Table: Fix text wrapping applying to wrong field (#93707)
* Fix text wrap
---------

Co-authored-by: Ihor Yeromin <yeryomin.igor@gmail.com>
2024-10-17 20:33:59 +02:00
grafana-delivery-bot[bot]
37c54b4403 Release: update changelog for 11.1.6+security-01 (#94914)
* Update changelog

* remove old changes

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2024-10-17 18:32:00 +00:00
grafana-delivery-bot[bot]
5fecfe9d53 Release: update changelog for 11.2.2+security-01 (#94911)
* Update changelog

* update changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2024-10-17 18:22:22 +00:00
Charandas
2fd4fe40f0 K8s: for tests to use kubectl access, port-forwarding requires 0.0.0.0 (#94836) 2024-10-17 11:15:57 -07:00
Kristina
c12a662f9f Transformations: Allow negatives in limit (#94746)
* Allow negatives in limit

* Add test
2024-10-17 13:13:00 -05:00
grafana-delivery-bot[bot]
0ff7783745 Release: update changelog for 11.2.1+security-01 (#94909)
* Update changelog

* Update changelog

* update changelog

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2024-10-17 18:12:51 +00:00
dependabot[bot]
a52d0ca5a6 Bump aquasecurity/trivy-action from 0.24.0 to 0.28.0 (#94787)
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.24.0 to 0.28.0.
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](https://github.com/aquasecurity/trivy-action/compare/0.24.0...0.28.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-17 18:12:31 +00:00
Alexander Weaver
be0d8b4f19 Docs: Update Grafana-Managed Recording Rule docs (#94895)
* Config ini section

* Extend header

* Drop hysteresis line which doesnt apply to recording rules

* Touch up evaluation behavior section

* Dissolve incorrect/unrelated section

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Run linter

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-10-17 12:12:35 -05:00
Galen Kistler
5fe5e8a5a6 DataLinks: Fix onClick functionality (#94815)
* fix: add onclick functionality back to DataLinks in VizPanelFooter

---------

Co-authored-by: Adela Almasan <adela.almasan@grafana.com>
Co-authored-by: Matias Chomicki <matyax@gmail.com>
2024-10-17 12:07:22 -05:00
grafana-delivery-bot[bot]
c062389f66 Release: update changelog for 11.0.6+security-01 (#94901)
* Update changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2024-10-17 16:58:21 +00:00
grafana-delivery-bot[bot]
27e005c4c4 Release: update changelog for 11.0.5+security-01 (#94889)
* Update changelog

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2024-10-17 17:44:35 +01:00
grafana-pr-automation[bot]
3d715840f1 I18n: Download translations from Crowdin (#94877)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-17 18:20:06 +03:00
Matheus Macabu
8673c757a5 CloudMigrations: only append notification policy if feature flag is on and it exists (#94896) 2024-10-17 17:15:30 +02:00
Alex Khomenko
ccedc41c57 Routing: Remove Switch from Grafana routes (#94795)
* Routing: Use Routes instead of Switch

* Update routeProps

* Update GrafanaRoute.test

* Update DashboardScenePage.tsx

* Update DashboardPageProxy.test.tsx

* Remove exact paths

* Update parent routes

* Move route wrapper

* Update type

* Fix plugin paths

* Switch to the location hook
2024-10-17 18:11:31 +03:00
Laura Benz
b2036ffcbf RestoreDashboards: Correct tracking data (#94855)
* refactor: change output for restore_enabled

* refactor: change output for restore_enabled

* refactor
2024-10-17 17:11:17 +02:00
Esteban Beltran
f248a55576 Frontend Sandbox: Create a plugin sandbox enable registry. Use enable list instead of disable list (#94809)
* Use a enable configuration to enable frontend sandbox

* Modify settings to load enableFrontendSandbox

* Check for signature type

* Update commment

* Fix e2e tests for the frontend sandbox

* Modify logic so a custom check function is used instead of a list of checks

* Fixes flaky test

* fix comment

* Update comment

* Empty commit

* Empty commit
2024-10-17 16:56:50 +02:00
Victor Marin
beac7de4df DashboardScenes: Fix panel links to update on variable or timerange change (#94865)
* Fix panel links to update on variable or timerange change

* refactor

---------

Co-authored-by: alexandra vargas <alexa1866@gmail.com>
2024-10-17 17:22:04 +03:00
Sonia Aguilar
1860737117 Alerting: Update texts for gm rr in the form (#94844)
* Update texts for gm rr in the form

* fix translations

* Fix test

* address review comments

* address review comments - part2

* translations

* update docs for new term: output
2024-10-17 15:56:24 +02:00
Ashley Harrison
95ad094438 Sparkline: Add test to make sure the Sparkline at least renders (#94880)
add test to make sure the sparkline at least renders
2024-10-17 16:38:11 +03:00
Karl Persson
4083b2208e Zanzana: periodic sync of team members (#94752)
* Rewrite zanzana collector to fetch all available pages

* Register access control as a background service

* If zanzana is enabled we run Syncs and start Reconciliation job

* Update pkg/services/authz/zanzana/client/client.go

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>

* Use server lock when doing performing reconciliation
2024-10-17 15:28:33 +02:00
Dana Axinte
a50507e645 CloudMigration: Interpret error code from migration resource item (#94407)
* start on loading the error code

* error code to message mapping

* use resource code type

* use defined error code

* partial updates from comments

* i18nKey gen

* fixed t

* fixed translations

* typing
2024-10-17 14:09:09 +01:00
Matheus Macabu
1051561154 CloudMigrations: create snapshot for Notification Policies (#94852)
* CloudMigrations: create snapshot for Notification Policy

* CloudMigrations: add notification policy constants and components

* CloudMigrations: add uid to resources that have it
2024-10-17 14:58:05 +02:00
Jack Westbrook
8f5edb09ef MSSQL: Add a project.json so NX builds the plugin (#94866)
build(mssql): add a project.json so nx builds the plugin
2024-10-17 15:57:27 +03:00
Diego Augusto Molina
cf08f6762d Unistore Chore: Add OTEL testing harness (#94835)
* add testing harness

* fix mockery and linters

* fix data race in tests

* fix data race in tests

* reduce cardinality of data
2024-10-17 08:41:06 -03:00
Ryan McKinley
8b9bb2acf6 K8s/Folders: Warn against using full path in metadata (#94829) 2024-10-17 14:32:39 +03:00
kay delaney
4e93b0f467 Frontend/Themes: Fix handleMotion function (#94856) 2024-10-17 12:02:16 +01:00
Ieva
dca881289a Group attribute sync: Add swagger defs for group attribute sync endpoints (#94531)
* add generated files

* add swagger def for group role endpoint

* some cleanup to make Go client nicer to use
2024-10-17 12:01:55 +01:00
Tom Ratcliffe
4c5483ee15 Alerting: Fix notification policies tests and implement "stateful" mock endpoints (#94732) 2024-10-17 11:57:57 +01:00
Eric Leijonmarck
a46ff09bf9 LBAC for datasources: Override lbac rules if present when updating via datasources endpoints (#94608)
bloc updates to datasources
2024-10-17 11:29:30 +01:00
Jack Westbrook
573b40ab98 Chore: Resolve duplicate e2e-selectors packages to workspace (#94853)
chore(scenes): resolve e2e-selectors package to workspace
2024-10-17 12:22:51 +02:00
Ryan McKinley
3457f219be Storage: Add blob storage interfaces (#90932)
Co-authored-by: Jean-Philippe Quémémer <jeanphilippe.quemener@grafana.com>
2024-10-17 12:18:29 +02:00
Andrej Ocenas
1b8b1d6c7a Sidecar: Add local storage persistence for the sidecar state (#94820)
* Add local storage persistence

* Fix arg name
2024-10-17 12:00:50 +02:00
renovate[bot]
ce3da025cc Update scenes to v5.20.2 2024-10-17 09:44:06 +00:00
Robby Milo
c6eeb2d845 remove unnecessary version notices (#94839) 2024-10-17 10:32:17 +01:00
Ashley Harrison
ba6829f4a7 Topnav: Remove from feature toggle registry + hardcode in config (#94736)
remove topnav from feature toggle registry + hardcode to true
2024-10-17 10:18:30 +01:00
Jean-Philippe Quéméner
b4a804776f fix: update yarn files (#94843) 2024-10-17 12:10:17 +03:00
Ashley Harrison
241dca57cf Geomap: Fix tooltip positioning when screen is scrolled (#94827)
* account for y-scrolling when positioning geomap tooltip

* remove config import
2024-10-17 09:42:58 +01:00
Sonia Aguilar
f9ba4e3e5d Alerting: Update docs for grafana recording rules (#94811)
* update docs for grafana recording rules

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* remove notes

* fix note tag

* update note for grafana-managed feature toggle

* Update docs/sources/alerting/alerting-rules/create-mimir-loki-managed-recording-rule.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-10-17 10:33:14 +02:00
Jack Westbrook
3c23ab5428 Chore: Resolve scenes e2e-selectors to workspace (#94484)
chore: resolve scenes e2e-selectors to workspace
2024-10-17 10:27:56 +02:00
Gábor Farkas
2cea7af2f5 datasources: querier: handle reducer-settings-mode correctly (#94595)
* datasources: querier: handle reducer-settings-mode correctly

* Try to fix linting error

"unnecessary leading newline (whitespace)"

---------

Co-authored-by: Sam Jewell <sam.jewell@grafana.com>
2024-10-17 08:38:14 +02:00
Victor Marin
96893aef2a DashboardScene: Re-add support for default datasource var (#94806)
re-add support for default datasource var
2024-10-17 08:25:20 +03:00
Diego Augusto Molina
e462974359 Chore: Prevent xorm from interfering with indexes (#94790)
prevent xorm from interfering with indexes
2024-10-16 22:52:42 -03:00
Kim Nylander
e8f23bb2cf Update Pyroscope data source for Exlore Profiles (#94825)
* Update Pyroscope data source for Exlore Profiles

* Update docs/sources/datasources/pyroscope/query-profile-data.md

* Update docs/sources/datasources/pyroscope/query-profile-data.md
2024-10-16 16:53:13 -04:00
Jennifer Villa
c77c81fc1a Remove reference to Aggregate By being experimental (#94791)
At this point, its moved from experimental to deprecated.
2024-10-16 16:42:27 -04:00
Kim Nylander
17eff37104 [DOC] Add streamingEnabled to Tempo ds docs (#94751)
* Add streamingEnabled to Tempo ds docs

* Update docs/sources/datasources/tempo/configure-tempo-data-source.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

---------

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-10-16 16:39:22 -04:00
Diego Augusto Molina
44282134da Unistore Chore: Make it easier to implement DB interface (#94680)
make it easier to implement DB interface
2024-10-16 13:40:35 -03:00
Joey
bd321216db Tempo: Support new traceql intrinsics (#94240)
* Tidy and update types

* Tidy up comments

* More tidy up

* Simplify logic and reduce repitition in autocomplete

* Simplify logic

* Add and support new intrinsics

* Only retrieve intrinsics from language provider

* Move generateQueryFromFilters to languageProvider
2024-10-16 16:08:02 +01:00
Misi
50a635bc7e Auth: Introduce authn.SSOClientConfig to get client config from SSOSettings service (#94618)
* wip

* possible solution

* Separate interface for SSO settings clients

* Rename interface

* Fix tests

* Rename

* Change GetClientConfig to comma ok idiom
2024-10-16 16:27:44 +02:00
maicon
c4f906f7fa UniStore: Fix DualWriter compare method (#94705)
* UniStore: Fix DualWriter compare method

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

---------

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-16 16:22:49 +02:00
maicon
4a60f29709 UniStore: register dual_writer_data_syncer_outcome metric (#94789)
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-16 16:44:20 +03:00
Tom Ratcliffe
dfe2d5eb98 Alerting: Fix display of quotes in expression component (#94807) 2024-10-16 16:12:35 +03:00
Tobias Skarhed
9f78fd94d7 New Select: Async functionality (#94147)
* Initial async

* Set value

* Update story

* Ignore older returned requests

* Add tests

* Update async test

* Support custom value

* Fix ignore late responses test

* Add act to test

* Fix final test

* Remove comment and fix type error

* refactor async story to look more like api call

* allow consumers to pass in a value with a label, for async

* compare story to async select

* Move 'keep latest async value' into seperate hook

* remove null fn from useLatestAsyncCall

* remove commented assertion

* move custom value to top

* before/afterAll & useRealTimers

* create a user

* no useless await

---------

Co-authored-by: Joao Silva <joao.silva@grafana.com>
Co-authored-by: joshhunt <josh@trtr.co>
2024-10-16 13:16:09 +01:00
Ieva
ca1fd028a2 Service Accounts: Run service account creation in transaction (#94744)
* run service account creation DB queries in transaction

* extract the signed in user from the context

* undo unneeded change

* don't error out if a user is not found

* Update pkg/services/serviceaccounts/manager/service.go

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>

* Update pkg/services/serviceaccounts/manager/service.go

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

---------

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2024-10-16 11:45:21 +01:00
jackyin
cc9881343e Explore: Explore Log Download doesn't have same time format (#94519)
* Fixes #94296

* format code

* format code

* remove the timezone

* fix bug

* format code

* update unit test

* modified csv data order

* format code

* delete csv change
2024-10-16 12:29:29 +02:00
grafana-pr-automation[bot]
3990db3a16 I18n: Download translations from Crowdin (#94735)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-16 10:24:10 +01:00
Jack Westbrook
cfb46c8003 Frontend: Extract CSS imports into files (#94655)
* build(webpack): extract css imports into files including node_modules

* feat(webassets): add cssfiles to entrypoint assets for extracted css files

* feat(views): add entrypoint css link tags to html templates

* feat(webassets): set CDN prefix for CSS files

* test(webassets): trim down sample-assets-manifest, fix failing snapshot tests

* Update pkg/api/webassets/webassets_test.go

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>

* build(webpack): remove css module loader

---------

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2024-10-16 11:10:34 +02:00
Arati R.
65fc7cf004 K8s/Folders: Fix mode 2 folder creation (#94796)
* Use user UID as identifier instead of ID
* Remove malformed error
2024-10-16 10:44:09 +02:00
Ashley Harrison
3e9dd1239a update @grafana/scenes as well + group together in future 2024-10-16 09:42:32 +01:00
renovate[bot]
cd35cf7982 Update dependency @grafana/scenes-react to v5.20.1 2024-10-16 09:42:32 +01:00
Igor
0a255ac5fb ShareInternally: Make stale short link expiry optional (#88137)
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Irene Rodriguez <irene.rodriguez@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-10-16 11:36:54 +03:00
Karl Persson
7fba9ba522 SA: Fix name validation so we can prevent creating service account with protected prefix (#94762)
Fix name validation so we can prevent creating service account with protected prefix
2024-10-16 10:27:06 +02:00
Alexander Akhmetov
bfbbdf5efb Alerting: Default pending period (for) to 0s when the rule is created using file provisioning (#94646)
Alerting: default for to 0s when the rule is created using file provisioning
2024-10-16 10:15:10 +02:00
Torkel Ödegaard
384562e1ad Dashboard: Fixes issue with dashboard inside get help drawer (#94725)
* Dashboard: Fixes issue with dashboard inside help help drawer

* Fix lint
2024-10-16 10:09:00 +02:00
maicon
9dc2ccdbfd UniStore: Test both Mode1 and Mode2 for LegacyToUnifiedStorage Syncer (#94784)
Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
2024-10-16 06:43:01 +02:00
Kim Nylander
a5022d9dc6 Deprecate notice for metrics summary and Aggregate by (#94761) 2024-10-15 20:48:23 -04:00
Charandas
b4234cb06e K8s: add aggregator metrics (#94579) 2024-10-15 12:41:27 -07:00
Stephanie Hingtgen
644a16048f K8s: add feature toggle for dashboard backend (#94753) 2024-10-15 14:30:05 -05:00
Todd Treece
a1434a98a3 Chore: Add gen-go as dependency for update-workspace (#94737) 2024-10-15 12:27:27 -04:00
Andrej Ocenas
1f39692d9b Sidecar: Use a proper way to get header height (#94691)
Use a proper hook
2024-10-15 18:09:34 +02:00
Kristina
2a6b73ca5f Transformations: Convert field type should handle Unix timestamps in seconds (#94442)
* Parse seconds unix formatted timestamps as expected

* clarify comment

---------

Co-authored-by: Ihor Yeromin <yeryomin.igor@gmail.com>
2024-10-15 10:49:07 -05:00
Kristina
6e39ea5e46 Transformations: Add description to what is searched (#94501)
Add transformation description to what is searched
2024-10-15 10:26:44 -05:00
Alyssa (Bull) Joyner
89da7d6fe5 Graphite: Fix Multi Dimensional Alias Name (#94563) 2024-10-15 09:20:09 -06:00
Alexander Zobnin
9f1b584c85 Chore: Update authlib version (#94714)
* Chore: Update authlib version

* update workspace

* use ParseNamespace()
2024-10-15 16:58:46 +02:00
Matheus Macabu
47115c714a CloudMigrations: create snapshot for Contact Points (#94719)
* CloudMigrations: create snapshot for Contact Points

* CloudMigrations: add contact point copies and components in frontend

* CloudMigrations: temporarily use bell for all alerts resources
2024-10-15 16:27:28 +02:00
Kevin Minehart
7a2edd35d5 CI: Support more version formats in publishing (#94575)
* cleanup dead code
* add tests and rewrite publish grafanacom steps to reuse
* add pkg/build tests; don't upload CDN assets on grafana releases
2024-10-15 09:27:13 -05:00
Yuri Tseretyan
ced5497ba1 Docs: Update alerting notifications documentation (#93944)
* add new permissions and fixed roles

* Apply suggestions from code review

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* address comments

* add actions to complete list

* fmt

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-10-15 16:16:15 +02:00
Santiago
87b57a1b25 Docs: Remove deprecation warnings for panelURL and dashboardURL (#94730)
Docs: Remove deprecation warnings for panelURL and dashboardURL in webhook and mqtt integration docs
2024-10-15 15:52:36 +02:00
Andres Martinez Gotor
2226225309 Chore: Avoid update-workspace when watching go files (#94716) 2024-10-15 15:40:51 +02:00
Ashley Harrison
4b72c159d8 Box: Expose position property (#94726)
expose position property on Box
2024-10-15 14:38:07 +01:00
Alex Khomenko
e5795c7b6d Routing: Update connections to react router 6 (#94461)
* Update routes

* Update test

* Remove the useDataSourcesRoutes hook

* Remove DataSourcesRoutesContext

* Fix imports

* Fix more imports

* Add default

* Betterer
2024-10-15 16:10:31 +03:00
Gabriel MABILLE
ba3629c01c Fix: Account for conflicting logins in dedupOrgInlogin migration (#94669) 2024-10-15 15:02:34 +02:00
kay delaney
7104782a74 Chore: Remove unused sass variables (#94723) 2024-10-15 13:38:42 +01:00
Jack Westbrook
9e50866356 Build: Nx improvements (#88341)
* feat(frontend): introduce project.json for every workspace to improve caching

* refactor(frontend): use nx tags for grafana dependson

* refactor(frontend): clean up nx tags for packages and plugins

* build(nx): make grafana dependent on cacheable generate icons command

* build(nx): clean up project files
2024-10-15 14:25:45 +02:00
Marcus Efraimsson
b28085110d Plugins: Auto instrumentation improvements (#94193) 2024-10-15 14:02:34 +02:00
Yves Siegrist
4a3c6325a4 Docs: correct typo in login solution documentation (#92393) 2024-10-15 14:00:40 +02:00
Sven Grossmann
9adba8537f Plugin Extension: use correct PluginExtensionAddedLinkConfig component in deprecation note (#94708) 2024-10-15 13:58:09 +02:00
kay delaney
22a3c9976f Chore: Convert QueryGroupOptions to functional component (#94342)
Also rewrites styles
2024-10-15 12:57:58 +01:00
grafana-pr-automation[bot]
940a9e0144 I18n: Download translations from Crowdin (#94707)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-15 14:20:18 +03:00
Tom Ratcliffe
0841497cad Alerting: Show a warning when a template has been potentially misconfigured (#94698) 2024-10-15 14:00:20 +03:00
Matheus Macabu
016dea1143 CloudMigrations: create snapshot for Notification Templates (#94676)
* CloudMigrations: create snapshot for Notification Templates

* CloudMigrations: add notification templates resource to frontend
2024-10-15 12:55:33 +02:00
Will Browne
f97f489c2c Plugins: Skip install errors if dependency plugin already exists (#94710)
* skip install errors if dependency plugin already exists

* add test
2024-10-15 11:35:45 +01:00
Ieva
284c2d6f71 Folders: Correctly show new folder button under root folder (#94687)
show new folder button under root folder if nested folders are disabled and user has the right perms
2024-10-15 10:45:07 +01:00
Victor Marin
aaba5a43bd DashboardScene: Rerender dashboard links on timerange change (#94570)
* fix

* refactor

* refactor
2024-10-15 12:39:36 +03:00
oksanaphmn
ef805f271e docs: Readme (#94657) 2024-10-15 09:38:09 +00:00
Matheus Macabu
081ec57443 CloudMigrations: create snapshot for Mute Timings (#94668)
* CloudMigrations: Create snapshot for Mute Timings

* CloudMigrations: add mute timings icon and copies to frontend
2024-10-15 09:44:41 +02:00
Agnès Toulet
5fb685dcc6 Scenes: add clearSceneCache to DashboardScenePageStateManager (#94227) 2024-10-15 09:43:54 +02:00
Ryan McKinley
36c38b5310 APIServer: add prometheus.Registerer to every init request (#94684) 2024-10-15 07:46:08 +03:00
maicon
bfd3506549 UniStore: Enable DataSyncer in Mode1 + better logging (#94688)
* UniStore: Enable DataSyncer Mode1 + better logging

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>

---------

Signed-off-by: Maicon Costa <maiconscosta@gmail.com>
Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
2024-10-15 06:41:12 +03:00
Alexander Weaver
4d8d916434 Alerting: Separate write errors from Prometheus/Mimir into 400/500 categories (#94699)
* Separate errors from Prometheus/Mimir into categories

* Drop duplicate

* tests
2024-10-14 15:31:36 -05:00
Jack Baldry
a8c1c15235 Fix list indentation to ensure continuous numbering (#94692) 2024-10-14 18:23:48 +01:00
Ihor Yeromin
bcf62612f3 Table: Improve code readability (#94690)
feat(table): improve code radability
2024-10-14 18:57:19 +02:00
Ashley Harrison
e48351fbd3 AppChromeService: Improve useChromeHeaderHeight to only react to necessary state changes (#94624)
make useChromeHeaderHeight only react to necessary state changes
2024-10-14 16:21:15 +01:00
Eric Leijonmarck
d5fe9ce87f LBAC for datasources: Fix generated swagger updates (#94587)
fix: generated swagger updates
2024-10-14 16:14:11 +01:00
Levente Balogh
2867f92974 Extensions: Show error and warning logs in the console (#94682)
fix: log extensions framework errors and warnings to the console
2024-10-14 16:44:47 +03:00
Ryan McKinley
97258ca1eb Chore: vscode devenv cleanup (#94290) 2024-10-14 16:37:04 +03:00
Ryan McKinley
517975a4b3 Chore: update feature toggle git stats (#93820) 2024-10-14 16:34:19 +03:00
Alexander Zobnin
fcfa4aa777 Zanzana: Add config options for Check and ListObjects queries (#94619)
* Zanzana: Add config options for Check and ListObjects queries

* remove fixme

* pass only zanzana settings
2024-10-14 14:44:47 +03:00
Santiago
981aad6b77 Docs: Fix description for GeneratorURL template value (#92578) 2024-10-14 13:16:27 +02:00
Jack Baldry
2f3c539d9b Remove doc-validator requirement to run on all pull requests (#94673) 2024-10-14 11:47:26 +01:00
Claudiu Dragalina-Paraipan
a69ee676ba [authn] adding appPlatformGrpcClientAuth featureflag (#94640)
* introduce appPlatformGrpcClientAuth (renamed appPlatformAccessTokens which is not used)

* re-run toggles gen

---------

Co-authored-by: gamab <gabriel.mabille@grafana.com>
2024-10-14 13:47:18 +03:00
Chirag Gomber
67cbbf84ca Prometheus: Display multiple hints at the same time on query code editor (#89775)
* Added Query hints for Prometheus query code editor

* ES Lint fixes

* Remoed displayName from queryEditorHints as it was unused

* Added the logic on button click to difference function

* extracted data to constants from props

* added css style to hints
2024-10-14 12:15:42 +02:00
Alexa V
00af0afe52 Dashboard Scene: Fix permissions and error handling in creating alert from panel (#94521)
* Dashboard Scene: Add better error handling when creating alert from panel menu

* Add missing permission to createNewAlert and add unit test
2024-10-14 12:11:31 +02:00
grafana-pr-automation[bot]
e746f55126 I18n: Download translations from Crowdin (#94667) 2024-10-14 10:37:05 +01:00
renovate[bot]
77effa6d90 Update testing-library monorepo (#94632)
* Update testing-library monorepo

* add @testing-library/dom

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-10-14 12:22:34 +03:00
Sonia Aguilar
fb5fb76ad1 Alerting: Use advanced options when query params are not transformable (#94588)
* Use advanced options when query params are not transformable

* Update public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/QueryAndExpressionsStep.tsx

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>

---------

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2024-10-14 11:03:58 +03:00
Andres Martinez Gotor
235f7db967 Add query migration handlers (#93735) 2024-10-14 09:29:44 +02:00
Dominik Prokop
97037580df PanelMenu: Allow showing panel menu when data source does not exist (#94545) 2024-10-14 09:17:37 +02:00
Alex Khomenko
9811725c59 Routing: Update PluginDetails (#94513) 2024-10-14 09:52:58 +03:00
Matheus Macabu
1830820363 CloudMigrations: add basic resource component and update migration message with many resource types (#94423)
* CloudMigrations: display generic success message with more than 4 resource types

* CloudMigrations: create generic named resource component
2024-10-14 08:08:33 +02:00
Aaron Godin
fa330900ff IAM: turn off migration causing instances to crashloop (#94642) 2024-10-11 20:46:34 +03:00
Marcus Efraimsson
65bcd72484 Chore: Fix failing build (#94633) 2024-10-11 19:26:12 +02:00
Sonia Aguilar
0dd5373e4a Alerting: Add interactions for Fullstory (#94631)
add interactions for Fullstory
2024-10-11 19:23:58 +02:00
William Wernert
19a9a79467 Alerting: Publish event when one or more rules are created or changed (#93637)
* Publish event when one or more rules are changed

* Publish affected rules

* Use a fake bus to test publish event without listening

* Wire alerting store into provisioning service
2024-10-11 12:19:52 -04:00
Yuri Tseretyan
18e66d22b1 Alerting: Add more tracing for receivers service (#94572) 2024-10-11 11:41:13 -04:00
Irene Rodriguez
0ed94dc71e Create strategies-for-upgrading-grafana (#94517)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-10-11 15:12:11 +00:00
grafana-pr-automation[bot]
20b94ea92f I18n: Download translations from Crowdin (#94623)
New Crowdin translations by GitHub Action

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-11 17:21:24 +03:00
Señor Performo - Leandro Melendez
9abadcbdb4 docs: added configure structure and youtube video link (#94609)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-10-11 10:15:32 -04:00
Josh Hunt
64bb94cc62 Combobox: Measure text of longest label for dropdown width (#93937)
* Combobox: Measure text of longest label for dropdown width

* remove commented out code

* add story to compare to Select

* move magic numbers to constants to reference, and calculate the scrollbar width

* look at first 100,000 items
2024-10-11 15:10:44 +01:00
Ashley Harrison
4d08f44667 SingleTopNav: Revert to using AppChromeUpdate so banners are correct (#94540)
* revert to using AppChromeUpdate

* fix dashboard settings in old arch

* remove empty interface

* fix AlertRuleForm
2024-10-11 15:07:01 +01:00
Alex Khomenko
a5d72e264d DataTrailsApp: Update to react-router v6 (#94447)
* DataTrailsApp: Update router

* Update route
2024-10-11 16:33:01 +03:00
Alexander Akhmetov
9d182986f1 Alerting: make StatePersister more configurable to support custom rule-level state persisters (#94590) 2024-10-11 15:25:29 +02:00
Torkel Ödegaard
6787e2f108 AddToDashboard: Refactorings & changes to address a number of problems (#94458)
* Extract shared add to dashboard flow

* Change how we save and add the new panels

* More cleanup

* Began updating tests

* Move and update tests

* set time range

* Fix lint / ts issues

* Fix time history step issue

* fix test

* Update betterer

* remove more tests that are now not needed

* work around cyclic dep

* Update

* Fixes

* fix lint

* remove unused type
2024-10-11 15:24:45 +02:00
Arati R.
992186c88f K8s/Folders: Require create permissions when creating folder (#94514)
* Require create permissions when creating folder
* Test folder create permissions
* Add test for nested folder permissions on creation
* Replace hardcoded verbs
2024-10-11 15:13:56 +02:00
Kim Nylander
8a3508a547 [DOC] Remove traceQLStreaming feature flag from docs (#94581)
* Remove traceQLStreaming feature flag from docs

* Apply suggestions from code review

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Updates from prettier

---------

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-10-11 08:57:05 -04:00
Misi
62738dd5c8 Auth: Fix missing authLabels from user list page (#94612)
Fix slice initialization
2024-10-11 15:42:32 +03:00
haelekuin
01897edccd Docs: Fix incorrect authentication token field name (#94610) 2024-10-11 12:25:49 +00:00
Sonia Aguilar
1596acbd3b Alerting: Add data-testids for Fullstory (#94555)
* add data-testids for Fullstory

* add more data-testids
2024-10-11 13:55:01 +02:00
Alexander Akhmetov
0a4e6ff86b Alerting: Add SaveAlertInstancesForRule instance store method (#94505)
Alerting: Add SaveAlertInstancesForRule method to the InstanceStore interface
2024-10-11 13:47:44 +02:00
Prem Saraswat
e2672021bc [unified-storage/apistore] Fix GuranteedUpdate skipping updates when tryUpdate is passed (#94557)
`GuranteedUpdate` method of `apistore.Storage` had a bug, where it would
errorneously conclude that the object is unchanged, in case a
`tryUpdate` function is passed that modifies the existing object itself
(as it is the case in many core types in K8s upstream).

The modified `existingObj` was compared with `updatedObj`, which would
essentially be same and this lead to the update being skipped.

This patch fixes this by always passing a copy of the `existingObj`.

Signed-off-by: Prem Kumar <prem.saraswat@grafana.com>
2024-10-11 17:15:43 +05:30
Giuseppe Guerra
95afb3a112 Plugins: Track SystemJS load errors with Faro (#94465)
* Test SRI check errors with Faro

* Plugins: Send SystemJS import errors to Faro

* unbork

* track loadingStrategy

* Revert "unbork"

This reverts commit 02a61f4046.

* Reapply "unbork"

This reverts commit eaee8fbb39.
2024-10-11 13:33:18 +03:00
renovate[bot]
7ef38bd6c1 Update dependency sass to v1.79.5 2024-10-11 10:32:48 +00:00
Andreas Christou
7c79f8f7a5 GCM: Time field naming (#94548)
* Name time field correctly

* Update tests

* Lint
2024-10-11 11:31:37 +01:00
grafana-delivery-bot[bot]
032d0669cd Release: Bump version to 11.4.0-pre (#94569)
bump version 11.4.0-pre

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-10-11 11:31:04 +01:00
grafana-pr-automation[bot]
67ee40ce12 I18n: Download translations from Crowdin (#94599) 2024-10-11 11:24:47 +01:00
renovate[bot]
64a00aff6e Update dependency msw to v2.4.10 2024-10-11 10:09:33 +00:00
Tom Ratcliffe
b91b9a1e38 Alerting: Use jest/expect-expect rule to check for assertions (#93112) 2024-10-11 13:08:50 +03:00
Sonia Aguilar
029b5bc2d0 Alerting: Default to right instant or range when filling alert rule from query params (#94272)
* default to right instant or range when filling alert rule from query params

* address pr review comment
2024-10-11 12:07:43 +02:00
Tom Ratcliffe
f08de95630 Alerting: Change styling so query results with no labels are clearer (#94404) 2024-10-11 10:54:15 +01:00
renovate[bot]
773030f15c Update dependency @types/eslint to v9 (#94564)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-11 10:47:01 +01:00
Georges Chaudy
d999b415df UniStore: Use epoch with microsecond resolution as RV (#92638)
* Use epoch with microsecond resolution as RV

* fix backend tests

* Add solution for when the clock goes back

* Add solution for when the clock goes back

* generate mocks

* go lint

* remove comment

* Use Greatest instead of max in msyql and postgres

* update tests

* Update pkg/storage/unified/sql/sqltemplate/dialect_sqlite.go

Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>

* cast to bigint

* add additional round trip

* increment the RV using 2 sql round trips instead of 3

* cleanup comments

* cast unix timestamp to integer

* fix postgres query

* remove old increment test data

* remove greatest

* cast unix_timestamp to signed

* Use statement_timestamp instead of clock_timestamp

---------

Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
2024-10-11 12:11:33 +03:00
Mihai Doarna
0bd3ad1d5a SSO: Fix client side validations for LDAP (#94561)
* fix client side validations for LDAP

* add translations for new messages

* simplify code in isInvalidField()
2024-10-11 12:09:34 +03:00
Laura Benz
4092741f24 RestoreDashboards: Merge both feature toggles to dashboardRestore (#94412)
* refactor: remove FE feat toggle from BE

* refactor: remove FE toggle and adjust roles

* refactor: replace feat toggle in tracking events

* refactor: remove FE feat toggle

* refactor: remove FE feat toggle

* fix: autogenerated file
2024-10-11 10:29:58 +02:00
owensmallwood
3d59d3b40f Search poc: Initial index paginates list response (#94582) 2024-10-11 10:13:10 +02:00
Misi
4eab10eaa1 Auth: Add missing Name property to SAML strategy (#94565)
Add Name to SAML strategy
2024-10-11 08:45:36 +02:00
Syerikjan Kh
f8748f0724 ref: pass tracer to plugin factory func (#93701)
* ref: pass tracer to plugin factory func

* fix: add tracer to coreplugin

* test: fix test, generate wire

* test: ignore trace field in loader_test

* ref: pass tracer as dependency, don't store in plugin

* ref: wrap tracer with tracer provider to satisfy WithTracerProvider

* ref: use otel trace.Tracer type for tracer
2024-10-10 20:30:56 -04:00
Yuri Tseretyan
27c44f4709 Alerting: Update notification policy service to check provenance status (#94359)
* update ResetPolicyTree to accept provenance status

* update methods to check for provenance status use relaxed validation
2024-10-10 16:26:30 -04:00
Santiago
75d42d82a3 Alerting: Make Google Chat URL a secure field (#94499) 2024-10-10 21:30:16 +02:00
Yuri Tseretyan
0418a7bc0a Chore: Turn off apiserver tracing when embedded in Grafana (#94574)
turn off apiserver tracing when embedded in Grafana to make it reuse Grafana initiated trace context
2024-10-10 14:40:16 -04:00
Jack Baldry
79614eabdf Remove "Add to docs project" workflow (#93476) 2024-10-10 21:11:51 +03:00
owensmallwood
d96baaa878 Search PoC: Add logging (#94567) 2024-10-10 20:34:57 +03:00
Brendan O'Handley
ce857c2680 Explore metrics: set options directly because of scenes error when options not set (#94284)
* scenes error when options not set

* add all of the options that are updated in onOptionsChange

* add options to all the other places we are building timeseries panels

* Update public/app/features/trails/AutomaticMetricQueries/graph-builders/percentiles.ts

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* remove activation handlers and unused code

* Update public/app/features/trails/AutomaticMetricQueries/graph-builders/simple.ts

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>

* Update public/app/features/trails/AutomaticMetricQueries/graph-builders/percentiles.ts

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

---------

Co-authored-by: Nick Richmond <5732000+NWRichmond@users.noreply.github.com>
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2024-10-10 11:49:24 -05:00
Victor Marin
4600bd2e77 Scopes: Open dashboard list when a scope is selected (#94464)
* Open dashboard list when a scope is selected

* refactor

* test

* remove localstorage key

* add checks on open/close methods

* remove redundant statement

* improve dashboards listing
2024-10-10 19:12:26 +03:00
Victor Marin
516e0cf7e2 DashboardScene: Update timerange in datalinks on change (#94419)
* fix types

* mods

* refactor

* refactor
2024-10-10 19:11:58 +03:00
renovate[bot]
e32caccc15 Update babel monorepo to v7.25.8 2024-10-10 15:39:53 +00:00
Alexander Zobnin
e642e1a804 Zanzana: Pass parent folder for the checks in search queries (#94541)
* Pass parent folder as a contextual tuple in Check request

* Search by listing folders and dashboards

* skip dashboards listing if limit reached

* remove unused

* add some comments

* only add ContextualTuples if parent provided

* Remove parent relation for dashboards from schema and perform separate checks
2024-10-10 17:38:15 +02:00
Prem Saraswat
5c03c14b25 resource-api: Loosen name validation to match K8s requirements (#93404)
* resource-api: Loosen name validation to match K8s requirements

This patch modifies some of the requirements for name validation of
objects in Resource API to match Kubernetes.

The limit we have on characters in name is 64, but some resources allow
upto 253 characters. Similarly we also include `:` in the regex, as many
objects in default K8s setup use it in the name (the group
`system:masters` for example)

Signed-off-by: Prem Kumar <prem.saraswat@grafana.com>

* Update the name column length in migrator and update e2e test to verify

---------

Signed-off-by: Prem Kumar <prem.saraswat@grafana.com>
2024-10-10 11:03:18 -04:00
linoman
21d26de4d8 Session Refactor: Add SAMLSession (#94490)
* add saml session struct

* resolve saml session

* Add NameID

---------

Co-authored-by: Mihaly Gyongyosi <mgyongyosi@users.noreply.github.com>
2024-10-10 16:57:34 +02:00
renovate[bot]
e30c398087 Update dependency @hello-pangea/dnd to v17 (#94543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 15:56:59 +01:00
renovate[bot]
a112c9487b Update dependency rollup to v4.24.0 (#94539)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 15:54:35 +01:00
Joey
a268a56acb Tempo: Put trace results data frame first when streaming (#93739)
* Put trace results dataframe first

* Add comment
2024-10-10 15:51:43 +01:00
kay delaney
42eb033b03 Chore: Change VariableEditorList overflow styling & tidy markup (#94394)
Chore: Channge VariableEditorList overflow styling & tidy markup
2024-10-10 15:49:48 +01:00
Karl Persson
86fc8da703 RBAC: Add legacy authorization checks to teams (#94524)
* Setup team authorization for teams

* Add list filter for teams
2024-10-10 16:47:31 +02:00
Oscar Kilhed
315778227b Dashboards: Links to explore should respect subpath (#94525)
* Links to explore should respect subpath

* Change to using assureBaseUrl

* Change back to normal single quotes
2024-10-10 15:54:48 +02:00
Misi
c872cad879 OrgSync: Do not set default Organization for a user to a non-existent Organization (#94537)
Do not set default org for a user to a missing org

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2024-10-10 15:31:30 +02:00
Bradley
747cdf938e Docs: Added instructions for configuring a private CA in Helm installs (#93249)
* Docs: Added instructions for configuring a private CA in Helm installs

Signed-off-by: Bradley Pettit <12028233+bradleypettit@users.noreply.github.com>

* Docs: linted new instructions for private CA cert

Signed-off-by: Bradley Pettit <12028233+bradleypettit@users.noreply.github.com>

* Expanded to gem/gel/get

Originally, it just referred to GEM

---------

Signed-off-by: Bradley Pettit <12028233+bradleypettit@users.noreply.github.com>
Co-authored-by: Jennifer Villa <jvilla2013@gmail.com>
2024-10-10 08:30:54 -05:00
Virginia Cepeda
c41c8c2026 Icons: add new k6 icons (#94439)
Added 4 new icons:
 - api-endpoint
- browser-alt
- k6-rounded
- multi-step

These icons where added in https://github.com/grafana/synthetic-monitoring-app/issues/955
2024-10-10 16:18:28 +03:00
Irene Rodriguez
844023ad92 remove whitespace (#94542) 2024-10-10 13:11:14 +00:00
renovate[bot]
088cb66635 Update dependency knip to v5.33.3 (#94538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 15:53:26 +03:00
owensmallwood
8e667c4165 Search POC: Fixes search request tenant id (#94511)
fixes search request tenant id
2024-10-10 08:43:16 -04:00
renovate[bot]
32845704ac Update dependency eslint-scope to v8.1.0 (#94530)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 12:53:35 +01:00
renovate[bot]
be48906257 Update dependency eslint-plugin-import to v2.31.0 (#94529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 12:53:03 +01:00
Arati R.
011978e81b K8s/Folders: Remove folder service from client (#94450)
* Support getting full path of UIDs
* Use full path to set parents field
* Update get folder test
* Add folder store test for getting with full path UIDs
* Add test for parsing parent titles
* Test nested folder create payload
2024-10-10 13:22:57 +02:00
renovate[bot]
bf9e5ae056 Update dependency @grafana/scenes to v5.20.0 (#94526)
* Update dependency @grafana/scenes to v5.20.0

* bump scenes-react as well

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-10-10 14:08:45 +03:00
linoman
f18b3ca340 SAML: Add a screenshot for Graph API integration config (#94494)
* Add a screenshot for Graph API config
2024-10-10 12:06:03 +02:00
renovate[bot]
e38c4c26ae Update dependency esbuild-plugin-browserslist to ^0.15.0 (#94523)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 10:52:17 +01:00
renovate[bot]
4e790ca240 Update dependency @react-types/shared to v3.25.0 (#94522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 10:51:14 +01:00
Tom Ratcliffe
074831153a Alerting: Config tracker - update link for default contact point (#94384)
Co-authored-by: Sonia Aguilar <soniaaguilarpeiron@gmail.com>
2024-10-10 10:18:36 +01:00
Tom Ratcliffe
f6abde3328 Alerting: Remove accesscontrol license feature requirement for contact points RBAC (#94418) 2024-10-10 10:18:25 +01:00
renovate[bot]
152f70a6a4 Update dependency @formatjs/intl-durationformat to ^0.3.0 (#94497)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 10:11:48 +01:00
renovate[bot]
3c376f137a Update dependency @react-types/button to v3.10.0 (#94498)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-10 10:10:04 +01:00
jjaychen
636d17c111 PanelQueryRunner: Fix diff between multiple errors (#89868) 2024-10-10 11:02:33 +02:00
Gabriel MABILLE
6dbd324ef9 Fix: Actually call the DedupOrgInLogin migration (#94520) 2024-10-10 10:53:31 +02:00
Sonia Aguilar
419598c745 Alerting: Fix getSimpleConditionFromExpressions (#94516)
fix getSimpleConditionFromExpressions
2024-10-10 09:56:15 +02:00
Karl Persson
9ece88d585 Zanzana: bump openfga version (#94485)
* Bump openfga

* Remove internall sqlite implementation for openfga

* Use sqlite implementation from openfga
2024-10-10 09:07:40 +02:00
Marcus Andersson
bc7386e815 PluginExtension: Added debug log (#94146)
* wip

* add simple scenes object with logs panel

* return hardcoded log message from runtime ds

* simplify log entry

* use log in links registry

* wired the log together.

* wip

* Connected the extensions log to the runtime datasource to steam logs

* wired the other registies.

* implemented child function.

* set right field type on labels

* set meta type

* using the logger in various places.

* added type of onclick.

* removed time picker.

* removed imports.

* passing log to functions where they are needed.

* moved scene into admin page.

* minor improvement to the message.

* added possibility to update query with values based on the data.

* added filter suppoert.

* wip

* wip

* fixed so extension points are displayed.

* use log level from grafana data

* fixed bugs with the filtering.

* Fixed some logs.

* only register extensions page in development mode.

* fixed filtering.

* added on click debug log.

* PluginExtensions: Add debug log to Grafana (Rewrite to scenes-react) (#93954)

* refactoring.

* simplify it even more.

* Update public/app/features/plugins/extensions/logs/LogViewer.tsx

Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>

* used VizGridLayout instead of VizGrid component.

* Fixed feedback and fixed bug in filtering logic.

* fixed another nit.

* empty string instead of title.

* Added tests and fixed error.

* added test file.

* regenerated yarn.lock

* Update public/app/features/plugins/extensions/logs/filterTransformation.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* fixed nit.

* more nits.

* added more test cases.

* simplified filtering logic.

* removed unused dep.

* defined broadcast channel in jest setup.

* added tests for datasource.

* fixed failed tests.

* fixed tests.

* fixing go lint issue.

* silent go lint.

* fixed lint issue.

---------

Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-10-10 09:27:57 +03:00
Alex Khomenko
97249d15d1 Routing: Update alerting routes to react router 6 (#94469)
* Update alertingRuleEditor

* Update Policy.test

* Update AlertRuleForm

* Update ReceiversSection

* Update SimplifiedRuleEditor.test.tsx

* Update CloneRule.tsx
2024-10-10 07:33:16 +03:00
Alex Khomenko
e0217c37a1 AlertmanagerContext: Remove react router dependency (#94470)
* AlertmanagerContext: Remove react router dependency

* Cleanup
2024-10-10 07:33:04 +03:00
kay delaney
0201e8e8fb Chore/TimezonesEditor: Add vertical gaps between inputs (#94487) 2024-10-10 01:57:14 +01:00
owensmallwood
97de44b0c2 Dashboard Sharing: Skips flaky e2e test for dashboard sharing (#94507)
skips flaky e2e test for dashboard sharing
2024-10-10 00:50:54 +03:00
Gábor Farkas
0a7b731242 datasources: querier: request parsing failures are not http 500 (#94488)
* datasources: querier: request parsing failures are not http500

* fix test

---------

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2024-10-10 00:28:27 +03:00
Diego Augusto Molina
c6c93a02aa Chore: add GIT_BASE variable to Makefile to allow configuring lint-go-diff target (#94480)
add GIT_BASE variable to Makefile to allow configuring lint-go-diff target
2024-10-09 20:32:23 +00:00
Diego Augusto Molina
4a800eda9f Unistore Chore: add inocuous preparative changes for otel-based db observability (#94473)
add inocuous preparative changes for otel tracing
2024-10-09 20:32:09 +00:00
owensmallwood
8349db4947 Table Component: Skip flaky test (#94506)
* skip flaky test

* use skip method on test
2024-10-09 22:40:42 +03:00
owensmallwood
612b864772 Indexing PoC: Add search/browse (#94126)
* adds Filter gRPC and make protobuf

* adds route for querying the filter gRPC

* wires up Filter gRPC call

* [WIP] index from start

* renames gRPC endpoint to "Search"

* adds /apis/search route into k8s routes. Hacky for now.

* updates readme - wrong casing

* adds feature toggle for unified storage search

* hides US search behind feature flag. Clean up print statements.

* removes indexer - will be added in another PR

* Search: Add API Builder

* adds required method

* implementing UpdateAPIGroupInfo (WIP)

* adds groupversion

* commenting out for now

* remove unneeded code from experimenting and update register.go to match interface required

* list resources and load into index

* pass context

* namespaces search route

* lint

* watch

* add todo

* add todo

* merge

* cleanup

* add todo

* gen protobuf

* lint; fix migration issue

* Updates index mapping function to map unified storage object Value

* Changes Index() to pointer receiver - fixes panic

* add delete

* cleanup

* gets search/browse functioning. Results show up as base64 encoded. Still a WIP.

* Doesnt json re-encode gRPC response in search handler

* add kind to SearchRequest proto

* Updates query interface to be more generic. Make proto. Parses query params in api server.

* make protobuf

* removes unused method and imports

* Returns all indexed fields in search results. Adds pagination support (limit + offset).

* remove comment

* remove unused struct

* gets tenant in search k8s api handler

* adds hardcoded spec field mappings - starting with playlists

* adds all spec fields to search results

* moved helper function for field mappings into index

* only includes allowed spec fields in search results

* cleans up error handling

* removes debug log

---------

Co-authored-by: leonorfmartins <leonorfmartins@gmail.com>
Co-authored-by: Todd Treece <todd.treece@grafana.com>
Co-authored-by: Scott Lepper <scott.lepper@gmail.com>
2024-10-09 11:20:05 -06:00
Kristina
1f9562ea72 State Timeline: Align left text to 0 when rectangle is left-truncated (#94422)
Handle negative x placement with displaying text
2024-10-09 11:24:06 -05:00
renovate[bot]
e8bcc5e831 Update dependency sass to v1.79.4 2024-10-09 16:15:35 +00:00
renovate[bot]
d5ff74ebac Update dependency @grafana/experimental to v2.1.2 2024-10-09 16:13:52 +00:00
Scott Lepper
c86c4ca65a [unified search] fix: remove unified searcher (#94492) 2024-10-09 12:02:52 -04:00
Oscar Kilhed
bf75e1fbf4 Bump scenes to 5.19.1 (#94491) 2024-10-09 18:54:09 +03:00
Esteban Beltran
2a7319809a Fix levitate detect breaking changes pipeline not sending slack messages (#94482)
* Fix levitate detect breaking changes pipeline not sending slack messages

* Use ref
2024-10-09 17:43:30 +02:00
Brendan O'Handley
748bfff601 Prometheus: Add series endpoint configuration (#94443)
* add series endpoint configuration

* gf-form is unnecessary and deprecated
2024-10-09 10:25:18 -05:00
Karl Persson
ace177f20a AuthN: Set access token name (#94471)
* Set access token name
2024-10-09 17:08:11 +02:00
Joao Silva
322dccdb4d Navigation: Fix wrong active item shown when parent is bookmarked (#94478) 2024-10-09 15:53:05 +01:00
Vishal N
55d970ef9a fix missing hyperlink to permissions page in docs (#94077)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-10-09 10:42:32 -04:00
Nick Richmond
38827e5a16 ExploreMetrics: Keep gaps consistent between sticky elements (#94441)
style: maintain gap between sticky elements while scrolling
2024-10-09 10:05:41 -04:00
Andreas Christou
97a90591ca AzureMonitor: Fix App Insights portal URL for multi-resource trace queries (#94119)
* Retrieve the resource in the query

* Appropriately construct url

* Update tests
2024-10-09 14:21:10 +01:00
Haris Rozajac
5f26fd87c7 Query Library: Notifications and query counter (#94444)
* Notifications about the feature

* i18n

* Fix test
2024-10-09 06:54:11 -06:00
Tobias Skarhed
5f61266931 AutoSizeInput: Forward onChange event (#94459)
Forward onChange event
2024-10-09 14:38:56 +02:00
Victor Marin
4a3ce66193 [Scopes] Inherit scope paths on node fetching (#93824)
* [Scopes]: Inherit scope paths on node fetching

* add function desc

---------

Co-authored-by: Bogdan Matei <bogdan.matei@grafana.com>
2024-10-09 14:49:38 +03:00
grafana-pr-automation[bot]
08d03cc315 I18n: Download translations from Crowdin (#94415) 2024-10-09 14:19:13 +03:00
Alex Khomenko
380ce19b1a Routing: Remove nested silences routes (#94385)
* Update SilencesTable

* Remove nested routes

* Update tests

* Update component names

* Update test

* Remove unused code
2024-10-09 13:56:54 +03:00
Esteban Beltran
84d580179d Chore: Fix levitate pipeline by removing non-generated link (#94460)
Remove reporting job link
2024-10-09 13:21:47 +03:00
Alex Khomenko
38f57d270a Routing: Update alerting template routes (#94366)
* Templates: Remove Switch routes

* Update tests

* Fix test

* Revert mock behaviour and render AppNotificationList

---------

Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
2024-10-09 12:08:10 +03:00
Sonia Aguilar
3924751827 Alerting: Fix detail view not showing instances nor history tab (#94424)
* Fix detail view not showing instances nor history tab

* small refactor

* Update public/app/features/alerting/unified/hooks/useCombinedRule.ts

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>

* refactor

---------

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2024-10-09 11:50:05 +03:00
renovate[bot]
c183a8930b Update dependency @playwright/test to v1.48.0 (#94425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-09 09:47:40 +01:00
Laura Fernández
9491ab9a93 Bookmarks: Create e2e tests (#90373) 2024-10-09 10:43:01 +02:00
Alex Khomenko
be7b293b79 Routing: Hoist alerting receivers routes (#94309)
* Separate receivers components

* Update exports

* Remove type assertion

* Add back test

* Format

* Update test

* Fix test import
2024-10-09 07:29:07 +03:00
2428 changed files with 86326 additions and 49371 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,6 @@
import { BettererFileTest } from '@betterer/betterer';
import { promises as fs } from 'fs';
import { ESLint, Linter } from 'eslint';
import path from 'path';
import { glob } from 'glob';
import { promises as fs } from 'fs';
// Why are we ignoring these?
// They're all deprecated/being removed so doesn't make sense to fix types
@@ -82,14 +80,8 @@ function countEslintErrors() {
}
const { baseDirectory } = resolver;
const cli = new ESLint({ cwd: baseDirectory });
// Get the base config to set up parsing etc correctly
// this is by far the slowest part of this code. It takes eslint about 2 seconds just to find the config
const baseConfig = await cli.calculateConfigForFile(filePaths[0]);
const baseRules: Partial<Linter.RulesRecord> = {
'@emotion/syntax-preference': [2, 'object'],
'@typescript-eslint/no-explicit-any': 'error',
'@grafana/no-aria-label-selectors': 'error',
'no-restricted-imports': [
@@ -106,57 +98,52 @@ function countEslintErrors() {
],
};
const config: Linter.Config = {
...baseConfig,
rules: baseRules,
// Be careful when specifying overrides for the same rules as in baseRules - it will... override
// the same rule, not merge them with different configurations
overrides: [
{
files: ['**/*.{ts,tsx}'],
excludedFiles: ['*.{test,spec}.{ts,tsx}', '**/__mocks__/**', '**/public/test/**'],
rules: {
'@typescript-eslint/consistent-type-assertions': ['error', { assertionStyle: 'never' }],
},
const config: Linter.Config[] = [
{
files: ['**/*.{js,jsx,ts,tsx}'],
rules: baseRules,
},
{
files: ['**/*.{ts,tsx}'],
ignores: ['**/*.{test,spec}.{ts,tsx}', '**/__mocks__/**', '**/public/test/**'],
rules: {
'@typescript-eslint/consistent-type-assertions': ['error', { assertionStyle: 'never' }],
},
{
files: ['public/app/**/*.{ts,tsx}'],
rules: {
'no-barrel-files/no-barrel-files': 'error',
},
},
{
files: ['public/app/**/*.{ts,tsx}'],
rules: {
'no-barrel-files/no-barrel-files': 'error',
},
{
files: ['public/**/*.tsx', 'packages/grafana-ui/**/*.tsx'],
excludedFiles: [
'public/app/plugins/**',
'*.story.tsx',
'*.{test,spec}.{ts,tsx}',
'**/__mocks__/**',
'public/test/**',
],
rules: {
'@grafana/no-untranslated-strings': 'error',
},
},
{
files: ['public/**/*.tsx', 'packages/grafana-ui/**/*.tsx'],
ignores: [
'public/app/plugins/**',
'**/*.story.tsx',
'**/*.{test,spec}.{ts,tsx}',
'**/__mocks__/',
'public/test',
],
rules: {
'@grafana/no-untranslated-strings': 'error',
},
],
};
},
];
const runner = new ESLint({
baseConfig: config,
useEslintrc: false,
overrideConfig: config,
cwd: baseDirectory,
warnIgnored: false,
});
const lintResults = await runner.lintFiles(Array.from(filePaths));
lintResults
.filter((lintResult) => lintResult.source)
.forEach(({ messages, filePath }) => {
const file = fileTestResult.addFile(filePath, '');
messages.forEach((message, index) => {
file.addIssue(0, 0, message.message, `${index}`);
});
lintResults.forEach(({ messages, filePath }) => {
const file = fileTestResult.addFile(filePath, '');
messages.forEach((message, index) => {
file.addIssue(0, 0, message.message, `${index}`);
});
});
});
}

View File

@@ -16,7 +16,7 @@ watch_exts = [".go", ".ini", ".toml", ".template.html"]
ignore_files = [".*_gen.go"]
build_delay = 1500
cmds = [
["GO_BUILD_DEV=1", "make", "build-go"],
["GO_BUILD_DEV=1", "make", "build-go-fast"],
["make", "gen-jsonnet"],
["./bin/grafana", "server", "-profile", "-profile-addr=127.0.0.1", "-profile-port=6000", "-profile-block-rate=1", "-profile-mutex-rate=5", "-packaging=dev", "cfg:app_mode=development"]
]

View File

@@ -18,18 +18,10 @@ load(
"publish_packages_pipeline",
)
load("scripts/drone/events/rrc-patch.star", "rrc_patch_pipelines")
load(
"scripts/drone/pipelines/ci_images.star",
"publish_ci_windows_test_image_pipeline",
)
load(
"scripts/drone/pipelines/publish_images.star",
"publish_image_pipelines_public",
)
load(
"scripts/drone/pipelines/windows.star",
"windows_test_backend",
)
load(
"scripts/drone/rgm.star",
"rgm",
@@ -46,12 +38,7 @@ def main(_ctx):
publish_npm_pipelines() +
publish_packages_pipeline() +
rgm() +
[windows_test_backend({
"event": ["promote"],
"target": ["test-windows"],
}, "oss", "testing")] +
integration_test_pipelines() +
publish_ci_windows_test_image_pipeline() +
cronjobs() +
secrets()
)

View File

@@ -71,18 +71,10 @@ steps:
- echo $DRONE_RUNNER_NAME
image: alpine:3.20.3
name: identify-runner
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
depends_on: []
environment:
CGO_ENABLED: 0
image: golang:1.23.1-alpine
name: compile-build-cmd
- commands:
- go install github.com/bazelbuild/buildtools/buildifier@latest
- buildifier --lint=warn -mode=check -r .
depends_on:
- compile-build-cmd
depends_on: []
image: golang:1.23.1-alpine
name: lint-starlark
trigger:
@@ -547,7 +539,7 @@ steps:
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -577,13 +569,6 @@ steps:
depends_on: []
image: golang:1.23.1-alpine
name: verify-gen-jsonnet
- commands:
- apk add --update make
- make gen-go
depends_on:
- verify-gen-cue
image: golang:1.23.1-alpine
name: wire-install
- commands:
- yarn install --immutable || yarn install --immutable
depends_on: []
@@ -614,9 +599,16 @@ steps:
token:
from_secret: drone_token
- commands:
- docker run --privileged --rm tonistiigi/binfmt --install all
- /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64
-a targz:grafana:linux/arm/v7 --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER
--build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt
-a targz:grafana:linux/arm/v7 -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu
-a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7
-a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER
--build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.3
--tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --ubuntu-tag-format='{{
.version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' --verify='false' --grafana-dir=$$PWD
> packages.txt
- find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i
depends_on:
- yarn-install
environment:
@@ -628,6 +620,27 @@ steps:
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- ./bin/grabpl artifacts docker publish --dockerhub-repo grafana/grafana
depends_on:
- rgm-package
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
GITHUB_APP_ID:
from_secret: delivery-bot-app-id
GITHUB_APP_INSTALLATION_ID:
from_secret: delivery-bot-app-installation-id
GITHUB_APP_PRIVATE_KEY:
from_secret: delivery-bot-app-private-key
failure: ignore
image: google/cloud-sdk:431.0.0
name: publish-images-grafana
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- yarn e2e:plugin:build
depends_on:
@@ -863,47 +876,6 @@ steps:
failure: always
image: grafana/docker-puppeteer:1.1.0
name: test-a11y-frontend
- commands:
- docker run --privileged --rm tonistiigi/binfmt --install all
- /src/grafana-build artifacts -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu
-a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7
-a docker:grafana:linux/arm/v7:ubuntu --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER
--go-version=1.23.1 --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.3 --tag-format='{{
.version_base }}-{{ .buildID }}-{{ .arch }}' --grafana-dir=$$PWD --ubuntu-tag-format='{{
.version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' > docker.txt
- find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i
depends_on:
- yarn-install
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
image: grafana/grafana-build:main
name: rgm-build-docker
pull: always
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- ./bin/grabpl artifacts docker publish --dockerhub-repo grafana/grafana
depends_on:
- rgm-build-docker
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
GITHUB_APP_ID:
from_secret: delivery-bot-app-id
GITHUB_APP_INSTALLATION_ID:
from_secret: delivery-bot-app-installation-id
GITHUB_APP_PRIVATE_KEY:
from_secret: delivery-bot-app-private-key
failure: ignore
image: google/cloud-sdk:431.0.0
name: publish-images-grafana
volumes:
- name: docker
path: /var/run/docker.sock
trigger:
event:
- pull_request
@@ -970,8 +942,9 @@ services:
path: /var/lib/mysql
- commands:
- /bin/mimir -target=backend -alertmanager.grafana-alertmanager-compatibility-enabled
-alertmanager.utf8-strict-mode-enabled
environment: {}
image: grafana/mimir-alpine:r304-3872ccb
image: grafana/mimir-alpine:r316-55f47f8
name: mimir_backend
- environment: {}
image: redis:6.2.11-alpine
@@ -1003,7 +976,7 @@ steps:
name: clone-enterprise
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -1278,13 +1251,6 @@ platform:
os: linux
services: []
steps:
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
depends_on: []
environment:
CGO_ENABLED: 0
image: golang:1.23.1-alpine
name: compile-build-cmd
- commands:
- apt-get update -yq && apt-get install shellcheck
- shellcheck -e SC1071 -e SC2162 scripts/**/*.sh
@@ -1418,8 +1384,9 @@ services:
path: /var/lib/mysql
- commands:
- /bin/mimir -target=backend -alertmanager.grafana-alertmanager-compatibility-enabled
-alertmanager.utf8-strict-mode-enabled
environment: {}
image: grafana/mimir-alpine:r304-3872ccb
image: grafana/mimir-alpine:r316-55f47f8
name: mimir_backend
- environment: {}
image: redis:6.2.11-alpine
@@ -1972,7 +1939,7 @@ steps:
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -2002,13 +1969,6 @@ steps:
depends_on: []
image: golang:1.23.1-alpine
name: verify-gen-jsonnet
- commands:
- apk add --update make
- make gen-go
depends_on:
- verify-gen-cue
image: golang:1.23.1-alpine
name: wire-install
- commands:
- yarn install --immutable || yarn install --immutable
depends_on: []
@@ -2038,9 +1998,16 @@ steps:
image: node:20.9.0-alpine
name: build-frontend-packages
- commands:
- docker run --privileged --rm tonistiigi/binfmt --install all
- /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64
-a targz:grafana:linux/arm/v7 --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER
--build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt
-a targz:grafana:linux/arm/v7 -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu
-a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7
-a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER
--build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.3
--tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --ubuntu-tag-format='{{
.version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' --verify='false' --grafana-dir=$$PWD
> packages.txt
- find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i
depends_on:
- update-package-json-version
environment:
@@ -2052,6 +2019,31 @@ steps:
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- ./bin/grabpl artifacts docker publish --dockerhub-repo grafana/grafana
depends_on:
- rgm-package
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
GCP_KEY:
from_secret: gcp_grafanauploads
GITHUB_APP_ID:
from_secret: delivery-bot-app-id
GITHUB_APP_INSTALLATION_ID:
from_secret: delivery-bot-app-installation-id
GITHUB_APP_PRIVATE_KEY:
from_secret: delivery-bot-app-private-key
image: google/cloud-sdk:431.0.0
name: publish-images-grafana
volumes:
- name: docker
path: /var/run/docker.sock
when:
repo:
- grafana/grafana
- commands:
- yarn e2e:plugin:build
depends_on:
@@ -2323,55 +2315,10 @@ steps:
when:
repo:
- grafana/grafana
- commands:
- docker run --privileged --rm tonistiigi/binfmt --install all
- /src/grafana-build artifacts -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu
-a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7
-a docker:grafana:linux/arm/v7:ubuntu --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER
--go-version=1.23.1 --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.3 --tag-format='{{
.version_base }}-{{ .buildID }}-{{ .arch }}' --grafana-dir=$$PWD --ubuntu-tag-format='{{
.version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' > docker.txt
- find ./dist -name '*docker*.tar.gz' -type f | xargs -n1 docker load -i
depends_on:
- update-package-json-version
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
image: grafana/grafana-build:main
name: rgm-build-docker
pull: always
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- ./bin/grabpl artifacts docker publish --dockerhub-repo grafana/grafana
depends_on:
- rgm-build-docker
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
GCP_KEY:
from_secret: gcp_grafanauploads
GITHUB_APP_ID:
from_secret: delivery-bot-app-id
GITHUB_APP_INSTALLATION_ID:
from_secret: delivery-bot-app-installation-id
GITHUB_APP_PRIVATE_KEY:
from_secret: delivery-bot-app-private-key
image: google/cloud-sdk:431.0.0
name: publish-images-grafana
volumes:
- name: docker
path: /var/run/docker.sock
when:
repo:
- grafana/grafana
- commands:
- ./bin/grabpl artifacts docker publish --dockerhub-repo grafana/grafana-oss
depends_on:
- rgm-build-docker
- rgm-package
environment:
DOCKER_PASSWORD:
from_secret: docker_password
@@ -2394,7 +2341,7 @@ steps:
repo:
- grafana/grafana
- commands:
- apk add --update bash
- apk add --update bash git
- ./scripts/publish-npm-packages.sh --dist-tag 'canary' --registry 'https://registry.npmjs.org'
depends_on:
- end-to-end-tests-dashboards-suite
@@ -2416,10 +2363,7 @@ steps:
- commands:
- ./bin/build upload-packages --edition oss
depends_on:
- end-to-end-tests-dashboards-suite
- end-to-end-tests-panels-suite
- end-to-end-tests-smoke-tests-suite
- end-to-end-tests-various-suite
- rgm-package
environment:
GCP_KEY:
from_secret: gcp_grafanauploads_base64
@@ -2433,7 +2377,7 @@ steps:
- commands:
- ./bin/build upload-cdn --edition oss
depends_on:
- grafana-server
- rgm-package
environment:
GCP_KEY:
from_secret: gcp_grafanauploads
@@ -2513,8 +2457,9 @@ services:
path: /var/lib/mysql
- commands:
- /bin/mimir -target=backend -alertmanager.grafana-alertmanager-compatibility-enabled
-alertmanager.utf8-strict-mode-enabled
environment: {}
image: grafana/mimir-alpine:r304-3872ccb
image: grafana/mimir-alpine:r316-55f47f8
name: mimir_backend
- environment: {}
image: redis:6.2.11-alpine
@@ -2525,7 +2470,7 @@ services:
steps:
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -2707,53 +2652,6 @@ volumes:
clone:
retries: 3
depends_on:
- main-test-frontend
- main-test-backend
- main-build-e2e-publish
- main-integration-tests
environment:
EDITION: oss
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: main-windows
platform:
arch: amd64
os: windows
version: "1809"
services: []
steps:
- commands:
- echo $env:DRONE_RUNNER_NAME
image: mcr.microsoft.com/windows:1809
name: identify-runner
- commands:
- $$ProgressPreference = "SilentlyContinue"
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/windows/grabpl.exe
-OutFile grabpl.exe
image: grafana/ci-wix:0.1.1
name: windows-init
trigger:
branch: main
event:
- push
paths:
exclude:
- '*.md'
- docs/**
- latest.json
repo:
- grafana/grafana
type: docker
volumes:
- host:
path: //./pipe/docker_engine/
name: docker
---
clone:
retries: 3
depends_on:
- main-build-e2e-publish
- main-integration-tests
environment:
@@ -2805,7 +2703,6 @@ depends_on:
- main-test-backend
- main-build-e2e-publish
- main-integration-tests
- main-windows
kind: pipeline
name: main-notify
platform:
@@ -3145,8 +3042,9 @@ services:
path: /var/lib/mysql
- commands:
- /bin/mimir -target=backend -alertmanager.grafana-alertmanager-compatibility-enabled
-alertmanager.utf8-strict-mode-enabled
environment: {}
image: grafana/mimir-alpine:r304-3872ccb
image: grafana/mimir-alpine:r316-55f47f8
name: mimir_backend
- environment: {}
image: redis:6.2.11-alpine
@@ -3157,7 +3055,7 @@ services:
steps:
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -3402,7 +3300,7 @@ steps:
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -3434,31 +3332,32 @@ steps:
- |2-
bash -c '
IMAGE_TAG=$(echo "$${TAG}" | sed -e "s/+/-/g")
debug=
if [[ -n $${DRY_RUN} ]]; then debug=echo; fi
docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD}
# Push the grafana-image-tags images
$$debug docker push grafana/grafana-image-tags:$${TAG}-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-amd64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-arm64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-armv7
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7
# Create the grafana manifests
$$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:$${IMAGE_TAG} grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7
$$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker manifest create grafana/grafana:$${IMAGE_TAG}-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7
# Push the grafana manifests
$$debug docker manifest push grafana/grafana:$${TAG}
$$debug docker manifest push grafana/grafana:$${TAG}-ubuntu
$$debug docker manifest push grafana/grafana:$${IMAGE_TAG}
$$debug docker manifest push grafana/grafana:$${IMAGE_TAG}-ubuntu
# if LATEST is set, then also create & push latest
if [[ -n $${LATEST} ]]; then
$$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7
$$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7
$$debug docker manifest push grafana/grafana:latest
$$debug docker manifest push grafana/grafana:latest-ubuntu
@@ -3533,7 +3432,7 @@ steps:
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -3565,31 +3464,32 @@ steps:
- |2-
bash -c '
IMAGE_TAG=$(echo "$${TAG}" | sed -e "s/+/-/g")
debug=
if [[ -n $${DRY_RUN} ]]; then debug=echo; fi
docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD}
# Push the grafana-image-tags images
$$debug docker push grafana/grafana-image-tags:$${TAG}-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-amd64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-arm64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-armv7
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64
$$debug docker push grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7
# Create the grafana manifests
$$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:$${IMAGE_TAG} grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7
$$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker manifest create grafana/grafana:$${IMAGE_TAG}-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7
# Push the grafana manifests
$$debug docker manifest push grafana/grafana:$${TAG}
$$debug docker manifest push grafana/grafana:$${TAG}-ubuntu
$$debug docker manifest push grafana/grafana:$${IMAGE_TAG}
$$debug docker manifest push grafana/grafana:$${IMAGE_TAG}-ubuntu
# if LATEST is set, then also create & push latest
if [[ -n $${LATEST} ]]; then
$$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${IMAGE_TAG}-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-armv7
$$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${IMAGE_TAG}-ubuntu-armv7
$$debug docker manifest push grafana/grafana:latest
$$debug docker manifest push grafana/grafana:latest-ubuntu
@@ -3681,7 +3581,8 @@ steps:
image: golang:1.23.1-alpine
name: compile-build-cmd
- commands:
- ./bin/build artifacts packages --tag $${DRONE_TAG} --src-bucket $${PRERELEASE_BUCKET}
- ./bin/build artifacts packages --artifacts-editions=oss --tag $${DRONE_TAG} --src-bucket
$${PRERELEASE_BUCKET}
depends_on:
- compile-build-cmd
environment:
@@ -3691,19 +3592,6 @@ steps:
from_secret: prerelease_bucket
image: grafana/grafana-ci-deploy:1.3.3
name: publish-artifacts
- commands:
- ./bin/build artifacts static-assets --tag ${DRONE_TAG} --static-asset-editions=grafana-oss
depends_on:
- compile-build-cmd
environment:
GCP_KEY:
from_secret: gcp_grafanauploads_base64
PRERELEASE_BUCKET:
from_secret: prerelease_bucket
STATIC_ASSET_EDITIONS:
from_secret: static_asset_editions
image: grafana/grafana-ci-deploy:1.3.3
name: publish-static-assets
- commands:
- ./bin/build artifacts storybook --tag ${DRONE_TAG}
depends_on:
@@ -3723,7 +3611,6 @@ steps:
-f latest=$${LATEST} --repo=grafana/grafana release-pr.yml
depends_on:
- publish-artifacts
- publish-static-assets
environment:
GH_CLI_URL: https://github.com/cli/cli/releases/download/v2.50.0/gh_2.50.0_linux_amd64.tar.gz
GITHUB_TOKEN:
@@ -3855,6 +3742,7 @@ platform:
services: []
steps:
- commands:
- export version=$(echo ${TAG} | sed -e "s/+security-/-/g")
- 'echo "Step 1: Updating package lists..."'
- apt-get update >/dev/null 2>&1
- 'echo "Step 2: Installing prerequisites..."'
@@ -3870,7 +3758,7 @@ steps:
- 'echo "Step 5: Installing Grafana..."'
- for i in $(seq 1 60); do
- ' if apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get
install -yq grafana=${TAG} >/dev/null 2>&1; then'
install -yq grafana=$version >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
@@ -3884,10 +3772,10 @@ steps:
- ' fi'
- done
- 'echo "Step 6: Verifying Grafana installation..."'
- 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then'
- ' echo "Successfully verified Grafana version ${TAG}"'
- 'if dpkg -s grafana | grep -q "Version: $version"; then'
- ' echo "Successfully verified Grafana version $version"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' echo "Failed to verify Grafana version $version"'
- ' exit 1'
- fi
- echo "Verification complete."
@@ -3915,11 +3803,12 @@ steps:
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
' > /etc/yum.repos.d/grafana.repo
- 'echo "Step 5: Checking RPM repository..."'
- dnf list available grafana-${TAG}
- export version=$(echo "${TAG}" | sed -e "s/+security-/^security_/g")
- dnf list available grafana-$version
- if [ $? -eq 0 ]; then
- ' echo "Grafana package found in repository. Installing from repo..."'
- for i in $(seq 1 60); do
- ' if dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1; then'
- ' if dnf install -y --nogpgcheck grafana-$version >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
@@ -3936,16 +3825,16 @@ steps:
- ' rpm --import https://rpm.grafana.com/gpg.key'
- ' rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana'
- else
- ' echo "Grafana package version ${TAG} not found in repository."'
- ' echo "Grafana package version $version not found in repository."'
- ' dnf repolist'
- ' dnf list available grafana*'
- ' exit 1'
- fi
- 'echo "Step 6: Verifying Grafana installation..."'
- if rpm -q grafana | grep -q "${TAG}"; then
- ' echo "Successfully verified Grafana version ${TAG}"'
- if rpm -q grafana | grep -q "$verison"; then
- ' echo "Successfully verified Grafana version $version"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' echo "Failed to verify Grafana version $version"'
- ' exit 1'
- fi
- echo "Verification complete."
@@ -4032,6 +3921,7 @@ steps:
from_secret: packages_service_account
target_bucket: grafana-packages
- commands:
- export version=$(echo ${TAG} | sed -e "s/+security-/-/g")
- 'echo "Step 1: Updating package lists..."'
- apt-get update >/dev/null 2>&1
- 'echo "Step 2: Installing prerequisites..."'
@@ -4047,7 +3937,7 @@ steps:
- 'echo "Step 5: Installing Grafana..."'
- for i in $(seq 1 60); do
- ' if apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get
install -yq grafana=${TAG} >/dev/null 2>&1; then'
install -yq grafana=$version >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
@@ -4061,10 +3951,10 @@ steps:
- ' fi'
- done
- 'echo "Step 6: Verifying Grafana installation..."'
- 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then'
- ' echo "Successfully verified Grafana version ${TAG}"'
- 'if dpkg -s grafana | grep -q "Version: $version"; then'
- ' echo "Successfully verified Grafana version $version"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' echo "Failed to verify Grafana version $version"'
- ' exit 1'
- fi
- echo "Verification complete."
@@ -4093,11 +3983,12 @@ steps:
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
' > /etc/yum.repos.d/grafana.repo
- 'echo "Step 5: Checking RPM repository..."'
- dnf list available grafana-${TAG}
- export version=$(echo "${TAG}" | sed -e "s/+security-/^security_/g")
- dnf list available grafana-$version
- if [ $? -eq 0 ]; then
- ' echo "Grafana package found in repository. Installing from repo..."'
- for i in $(seq 1 60); do
- ' if dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1; then'
- ' if dnf install -y --nogpgcheck grafana-$version >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
@@ -4114,16 +4005,16 @@ steps:
- ' rpm --import https://rpm.grafana.com/gpg.key'
- ' rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana'
- else
- ' echo "Grafana package version ${TAG} not found in repository."'
- ' echo "Grafana package version $version not found in repository."'
- ' dnf repolist'
- ' dnf list available grafana*'
- ' exit 1'
- fi
- 'echo "Step 6: Verifying Grafana installation..."'
- if rpm -q grafana | grep -q "${TAG}"; then
- ' echo "Successfully verified Grafana version ${TAG}"'
- if rpm -q grafana | grep -q "$verison"; then
- ' echo "Successfully verified Grafana version $version"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' echo "Failed to verify Grafana version $version"'
- ' exit 1'
- fi
- echo "Verification complete."
@@ -4287,51 +4178,6 @@ volumes:
clone:
retries: 3
depends_on: []
environment:
EDITION: oss
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: release-whatsnew-checker
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
depends_on: []
environment:
CGO_ENABLED: 0
image: golang:1.23.1-alpine
name: compile-build-cmd
- commands:
- ./bin/build whatsnew-checker
depends_on:
- compile-build-cmd
image: golang:1.23.1-alpine
name: whats-new-checker
trigger:
event:
exclude:
- promote
ref:
exclude:
- refs/tags/*-cloud*
include:
- refs/tags/v*
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on: []
image_pull_secrets:
- gcr
- gar
@@ -4402,53 +4248,34 @@ volumes:
---
clone:
retries: 3
depends_on:
- rgm-tag-prerelease
depends_on: []
environment:
EDITION: oss
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: rgm-tag-prerelease-windows
name: release-whatsnew-checker
node:
type: no-parallel
platform:
arch: amd64
os: windows
version: "1809"
os: linux
services: []
steps:
- commands:
- echo $env:DRONE_RUNNER_NAME
image: mcr.microsoft.com/windows:1809
name: identify-runner
- commands:
- $$ProgressPreference = "SilentlyContinue"
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/windows/grabpl.exe
-OutFile grabpl.exe
image: grafana/ci-wix:0.1.1
name: windows-init
- commands:
- $$gcpKey = $$env:GCP_KEY
- '[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($$gcpKey))
> gcpkey.json'
- dos2unix gcpkey.json
- gcloud auth activate-service-account --key-file=gcpkey.json
- rm gcpkey.json
- cp C:\App\nssm-2.24.zip .
- .\grabpl.exe windows-installer --target gs://grafana-prerelease/artifacts/downloads/${DRONE_TAG}/oss/release/grafana-${DRONE_TAG:1}.windows-amd64.zip
--edition oss ${DRONE_TAG}
- $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0]
- gsutil cp $$fname gs://grafana-prerelease/artifacts/downloads/${DRONE_TAG}/oss/release/
- gsutil cp "$$fname.sha256" gs://grafana-prerelease/artifacts/downloads/${DRONE_TAG}/oss/release/
depends_on:
- windows-init
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
depends_on: []
environment:
GCP_KEY:
from_secret: gcp_grafanauploads_base64
GITHUB_TOKEN:
from_secret: github_token
PRERELEASE_BUCKET:
from_secret: prerelease_bucket
image: grafana/ci-wix:0.1.1
name: build-windows-installer
CGO_ENABLED: 0
image: golang:1.23.1-alpine
name: compile-build-cmd
- commands:
- ./bin/build whatsnew-checker
depends_on:
- compile-build-cmd
image: golang:1.23.1-alpine
name: whats-new-checker
trigger:
event:
exclude:
@@ -4461,14 +4288,13 @@ trigger:
type: docker
volumes:
- host:
path: //./pipe/docker_engine/
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on:
- rgm-tag-prerelease
- rgm-tag-prerelease-windows
image_pull_secrets:
- gcr
- gar
@@ -5104,59 +4930,6 @@ volumes:
path: /var/run/docker.sock
name: docker
---
clone:
disable: true
depends_on: []
environment:
EDITION: oss
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: testing-test-backend-windows
platform:
arch: amd64
os: windows
version: "1809"
services: []
steps:
- commands:
- git clone "https://$$env:GITHUB_TOKEN@github.com/$$env:DRONE_REPO.git" .
- git checkout -f $$env:DRONE_COMMIT
environment:
GITHUB_TOKEN:
from_secret: github_token
image: grafana/ci-wix:0.1.1
name: clone
- commands: []
depends_on:
- clone
image: golang:1.23.1-windowsservercore-1809
name: windows-init
- commands:
- go install github.com/google/wire/cmd/wire@v0.5.0
- wire gen -tags oss ./pkg/server
depends_on:
- windows-init
image: golang:1.23.1-windowsservercore-1809
name: wire-install
- commands:
- go test -short -covermode=atomic -timeout=5m ./pkg/...
depends_on:
- wire-install
image: golang:1.23.1-windowsservercore-1809
name: test-backend
trigger:
event:
- promote
target:
- test-windows
type: docker
volumes:
- host:
path: //./pipe/docker_engine/
name: docker
---
clone:
retries: 3
depends_on: []
@@ -5209,8 +4982,9 @@ services:
path: /var/lib/mysql
- commands:
- /bin/mimir -target=backend -alertmanager.grafana-alertmanager-compatibility-enabled
-alertmanager.utf8-strict-mode-enabled
environment: {}
image: grafana/mimir-alpine:r304-3872ccb
image: grafana/mimir-alpine:r316-55f47f8
name: mimir_backend
- environment: {}
image: redis:6.2.11-alpine
@@ -5221,7 +4995,7 @@ services:
steps:
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.53/grabpl
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.1.1/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
@@ -5386,55 +5160,6 @@ volumes:
temp:
medium: memory
---
clone:
disable: true
depends_on: []
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: publish-ci-windows-test-image
platform:
arch: amd64
os: windows
version: "1809"
services: []
steps:
- commands:
- git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-ci-sandbox.git"
.
- git checkout -f $$env:DRONE_COMMIT
environment:
GITHUB_TOKEN:
from_secret: github_token
image: grafana/ci-wix:0.1.1
name: clone
- commands:
- cd scripts\build\ci-windows-test
- docker login -u $$env:DOCKER_USERNAME -p $$env:DOCKER_PASSWORD
- docker build -t grafana/grafana-ci-windows-test:$$env:TAG .
- docker push grafana/grafana-ci-windows-test:$$env:TAG
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USERNAME:
from_secret: docker_username
image: docker:windowsservercore-1809
name: build-and-publish
volumes:
- name: docker
path: //./pipe/docker_engine/
trigger:
event:
- promote
target:
- ci-windows-test-image
type: docker
volumes:
- host:
path: //./pipe/docker_engine/
name: docker
---
clone:
retries: 3
kind: pipeline
@@ -5731,7 +5456,7 @@ steps:
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM plugins/slack
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM python:3.8
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM postgres:12.3-alpine
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/mimir-alpine:r304-3872ccb
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/mimir-alpine:r316-55f47f8
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM mysql:5.7.39
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM mysql:8.0.32
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM redis:6.2.11-alpine
@@ -5745,6 +5470,7 @@ steps:
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM jwilder/dockerize:0.6.1
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM koalaman/shellcheck:stable
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM rockylinux:9
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM scottyhardy/docker-wine:stable-9.0
depends_on:
- authenticate-gcr
image: aquasec/trivy:0.21.0
@@ -5768,7 +5494,7 @@ steps:
- trivy --exit-code 1 --severity HIGH,CRITICAL plugins/slack
- trivy --exit-code 1 --severity HIGH,CRITICAL python:3.8
- trivy --exit-code 1 --severity HIGH,CRITICAL postgres:12.3-alpine
- trivy --exit-code 1 --severity HIGH,CRITICAL grafana/mimir-alpine:r304-3872ccb
- trivy --exit-code 1 --severity HIGH,CRITICAL grafana/mimir-alpine:r316-55f47f8
- trivy --exit-code 1 --severity HIGH,CRITICAL mysql:5.7.39
- trivy --exit-code 1 --severity HIGH,CRITICAL mysql:8.0.32
- trivy --exit-code 1 --severity HIGH,CRITICAL redis:6.2.11-alpine
@@ -5782,6 +5508,7 @@ steps:
- trivy --exit-code 1 --severity HIGH,CRITICAL jwilder/dockerize:0.6.1
- trivy --exit-code 1 --severity HIGH,CRITICAL koalaman/shellcheck:stable
- trivy --exit-code 1 --severity HIGH,CRITICAL rockylinux:9
- trivy --exit-code 1 --severity HIGH,CRITICAL scottyhardy/docker-wine:stable-9.0
depends_on:
- authenticate-gcr
environment:
@@ -6013,6 +5740,6 @@ kind: secret
name: gcr_credentials
---
kind: signature
hmac: e618274ea7a8bfbf3d5e151d459348aa9382fe63fe7fef76c997db3cba74779f
hmac: bb28bcd274c9d2ce724db12659ed6e3dcc461f8a07ae0eb9385a64ca5daad4de
...

View File

@@ -1,27 +0,0 @@
.git
.github
.yarn
build
compiled
/data
deployment_tools_config.json
/devenv
dist
/e2e/tmp
node_modules
/pkg
/public/lib/monaco
/scripts/grafana-server/tmp
vendor
e2e/test-plugins
playwright-report
# TS generate from cue by cuetsy
**/*.gen.ts
# Auto-generated internationalization files
/public/locales/_build/
/public/locales/**/*.js
# Auto-generated icon file
/packages/grafana-ui/src/components/Icon/iconBundle.ts

162
.eslintrc
View File

@@ -1,162 +0,0 @@
{
"extends": ["@grafana/eslint-config", "plugin:react/jsx-runtime"],
"root": true,
"plugins": [
"@emotion",
"lodash",
"jest",
"import",
"jsx-a11y",
"@grafana",
"no-barrel-files",
// Included so betterer doesn't fail when processing all files,
// as other parts of the code use testing-library plugin
"testing-library",
],
"settings": {
"import/internal-regex": "^(app/)|(@grafana)",
"import/external-module-folders": ["node_modules", ".yarn"],
},
"rules": {
"@grafana/no-border-radius-literal": "error",
"@grafana/no-unreduced-motion": "error",
"react/prop-types": "off",
// need to ignore emotion's `css` prop, see https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md#rule-options
"react/no-unknown-property": ["error", { "ignore": ["css"] }],
"@emotion/jsx-import": "error",
"lodash/import-scope": [2, "member"],
"jest/no-focused-tests": "error",
"import/order": [
"error",
{
"groups": [["builtin", "external"], "internal", "parent", "sibling", "index"],
"newlines-between": "always",
"alphabetize": { "order": "asc" },
},
],
"no-restricted-imports": [
"error",
{
"paths": [
{
"name": "react-redux",
"importNames": ["useDispatch", "useSelector"],
"message": "Please import from app/types instead.",
},
{
"name": "react-i18next",
"importNames": ["Trans", "t"],
"message": "Please import from app/core/internationalization instead",
},
],
},
],
// Use typescript's no-redeclare for compatibility with overrides
"no-redeclare": "off",
"@typescript-eslint/no-redeclare": ["error"],
},
"overrides": [
{
"files": ["packages/grafana-ui/src/components/uPlot/**/*.{ts,tsx}"],
"rules": {
"react-hooks/rules-of-hooks": "off",
"react-hooks/exhaustive-deps": "off",
},
},
{
"files": ["packages/grafana-ui/src/components/ThemeDemos/**/*.{ts,tsx}"],
"rules": {
"@emotion/jsx-import": "off",
"react/jsx-uses-react": "off",
"react/react-in-jsx-scope": "off",
},
},
{
"files": ["public/dashboards/scripted*.js"],
"rules": {
"no-redeclare": "error",
"@typescript-eslint/no-redeclare": "off",
},
},
{
"extends": ["plugin:jsx-a11y/recommended"],
"files": ["**/*.tsx"],
"excludedFiles": ["**/*.{spec,test}.tsx"],
"rules": {
// rules marked "off" are those left in the recommended preset we need to fix
// we should remove the corresponding line and fix them one by one
// any marked "error" contain specific overrides we'll need to keep
"jsx-a11y/no-autofocus": [
"error",
{
"ignoreNonDOM": true,
},
],
"jsx-a11y/label-has-associated-control": [
"error",
{
"controlComponents": ["NumberInput"],
"depth": 2,
},
],
},
},
{
"files": [
"public/app/plugins/datasource/azuremonitor/*.{ts,tsx}",
"public/app/plugins/datasource/azuremonitor/**/*.{ts,tsx}",
"public/app/plugins/datasource/cloud-monitoring/*.{ts,tsx}",
"public/app/plugins/datasource/cloud-monitoring/**/*.{ts,tsx}",
"public/app/plugins/datasource/elasticsearch/*.{ts,tsx}",
"public/app/plugins/datasource/elasticsearch/**/*.{ts,tsx}",
"public/app/plugins/datasource/grafana-postgresql-datasource/*.{ts,tsx}",
"public/app/plugins/datasource/grafana-postgresql-datasource/**/*.{ts,tsx}",
"public/app/plugins/datasource/grafana-pyroscope-datasource/*.{ts,tsx}",
"public/app/plugins/datasource/grafana-pyroscope-datasource/**/*.{ts,tsx}",
"public/app/plugins/datasource/grafana-testdata-datasource/*.{ts,tsx}",
"public/app/plugins/datasource/grafana-testdata-datasource/**/*.{ts,tsx}",
"public/app/plugins/datasource/jaeger/*.{ts,tsx}",
"public/app/plugins/datasource/jaeger/**/*.{ts,tsx}",
"public/app/plugins/datasource/loki/*.{ts,tsx}",
"public/app/plugins/datasource/loki/**/*.{ts,tsx}",
"public/app/plugins/datasource/mysql/*.{ts,tsx}",
"public/app/plugins/datasource/mysql/**/*.{ts,tsx}",
"public/app/plugins/datasource/parca/*.{ts,tsx}",
"public/app/plugins/datasource/parca/**/*.{ts,tsx}",
"public/app/plugins/datasource/tempo/*.{ts,tsx}",
"public/app/plugins/datasource/tempo/**/*.{ts,tsx}",
"public/app/plugins/datasource/loki/*.{ts,tsx}",
"public/app/plugins/datasource/loki/**/*.{ts,tsx}",
"public/app/plugins/datasource/elasticsearch/*.{ts,tsx}",
"public/app/plugins/datasource/elasticsearch/**/*.{ts,tsx}",
"public/app/plugins/datasource/cloudwatch/*.{ts,tsx}",
"public/app/plugins/datasource/cloudwatch/**/*.{ts,tsx}",
"public/app/plugins/datasource/zipkin/*.{ts,tsx}",
"public/app/plugins/datasource/zipkin/**/*.{ts,tsx}",
],
"settings": {
"import/resolver": {
"node": {
"extensions": [".ts", ".tsx"],
},
},
},
"rules": {
"import/no-restricted-paths": [
"error",
{
"zones": [
{
"target": "./public/app/plugins",
"from": "./public",
"except": ["./app/plugins"],
"message": "Core plugins are not allowed to depend on Grafana core packages",
},
],
},
],
},
},
],
}

103
.github/CODEOWNERS vendored
View File

@@ -12,8 +12,8 @@
# This should make it easy to add new rules without breaking existing ones.
# Documentation
/.changelog-archive @grafana/grafana-release-guild
/CHANGELOG.md @grafana/grafana-release-guild
/.changelog-archive @grafana/grafana-developer-enablement-squad
/CHANGELOG.md @grafana/grafana-developer-enablement-squad
/CODE_OF_CONDUCT.md @grafana/grafana-community-support
/CONTRIBUTING.md @grafana/grafana-community-support
/GOVERNANCE.md @RichiH
@@ -38,17 +38,11 @@
/docs/.codespellignore @grafana/docs-tooling
/docs/sources/ @irenerl24
/docs/sources/administration/ @jdbaldry
/docs/sources/alerting/ @brendamuir
/docs/sources/dashboards/ @imatwawana
/docs/sources/datasources/ @jdbaldry
/docs/sources/explore/ @grafana/explore-squad @lwandz13
/docs/sources/fundamentals @irenerl24
/docs/sources/getting-started/ @irenerl24
/docs/sources/introduction/ @irenerl24
/docs/sources/panels-visualizations/ @imatwawana
/docs/sources/release-notes/ @Eve832 @GrafanaWriter
/docs/sources/setup-grafana/ @irenerl24
/docs/sources/release-notes/ @irenerl24 @GrafanaWriter
/docs/sources/upgrade-guide/ @imatwawana
/docs/sources/whatsnew/ @imatwawana
@@ -78,6 +72,7 @@
/pkg/apis/ @grafana/grafana-app-platform-squad
/pkg/apis/alerting_notifications @grafana/grafana-app-platform-squad @grafana/alerting-backend @grafana/alerting-frontend
/pkg/apis/query @grafana/grafana-datasources-core-services
/pkg/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend
/pkg/bus/ @grafana/grafana-search-and-storage
/pkg/cmd/ @grafana/grafana-backend-group
/pkg/cmd/grafana-cli/commands/install_command.go @grafana/plugins-platform-backend
@@ -165,6 +160,7 @@
/pkg/setting/ @grafana/grafana-backend-services-squad
/pkg/tests/ @grafana/grafana-backend-services-squad
/pkg/tests/apis/ @grafana/grafana-app-platform-squad
/pkg/tests/apis/query @grafana/grafana-datasources-core-services
/pkg/tests/apis/alerting @grafana/grafana-app-platform-squad @grafana/alerting-backend
/pkg/tests/api/correlations/ @grafana/explore-squad
/pkg/tsdb/grafanads/ @grafana/grafana-backend-group
@@ -194,6 +190,7 @@
/devenv/dev-dashboards-without-uid/ @grafana/dashboards-squad
/devenv/dev-dashboards/ @grafana/dashboards-squad
/devenv/docker/blocks/alert_webhook_listener/ @grafana/alerting-backend
/devenv/docker/blocks/caddy_tls/ @grafana/alerting-backend
/devenv/docker/blocks/clickhouse/ @grafana/partner-datasources
/devenv/docker/blocks/collectd/ @grafana/observability-metrics
/devenv/docker/blocks/etcd @grafana/grafana-app-platform-squad
@@ -240,8 +237,8 @@
/devenv/docker/loadtest/ @grafana/grafana-backend-services-squad
/devenv/docker/rpmtest/ @grafana/grafana-backend-services-squad
/devenv/jsonnet/ @grafana/dataviz-squad
/devenv/local_cdn/ @grafana/frontend-ops
/devenv/local-npm/ @grafana/frontend-ops
/devenv/vscode/ @grafana/frontend-ops
/devenv/setup.sh @grafana/grafana-backend-services-squad
/devenv/plugins.yaml @grafana/plugins-platform-frontend
@@ -253,15 +250,15 @@
# Continuous Integration
.drone.yml @grafana/grafana-release-guild
.drone.star @grafana/grafana-release-guild
/scripts/drone/ @grafana/grafana-release-guild
/pkg/build/ @grafana/grafana-release-guild
/.dockerignore @grafana/grafana-release-guild
/Dockerfile @grafana/grafana-release-guild
/Makefile @grafana/grafana-release-guild
/scripts/build/ @grafana/grafana-release-guild
/scripts/list-release-artifacts.sh @grafana/grafana-release-guild
.drone.yml @grafana/grafana-developer-enablement-squad
.drone.star @grafana/grafana-developer-enablement-squad
/scripts/drone/ @grafana/grafana-developer-enablement-squad
/pkg/build/ @grafana/grafana-developer-enablement-squad
/.dockerignore @grafana/grafana-developer-enablement-squad
/Dockerfile @grafana/grafana-developer-enablement-squad
/Makefile @grafana/grafana-developer-enablement-squad
/scripts/build/ @grafana/grafana-developer-enablement-squad
/scripts/list-release-artifacts.sh @grafana/grafana-developer-enablement-squad
/.trivyignore @grafana/grafana-backend-services-squad
# OSS Plugin Partnerships backend code
@@ -280,6 +277,7 @@
# OSS Big Tent backend code
/pkg/tsdb/mysql/ @grafana/oss-big-tent
/pkg/tsdb/grafana-postgresql-datasource/ @grafana/oss-big-tent
/pkg/tsdb/zipkin/ @grafana/oss-big-tent
# Partner Datasources backend code
/pkg/tsdb/mssql/ @grafana/partner-datasources
@@ -386,7 +384,7 @@
/.nxignore @grafana/frontend-ops
/tsconfig.json @grafana/frontend-ops
/.editorconfig @grafana/frontend-ops
/.eslintignore @grafana/frontend-ops
/eslint.config.js @grafana/frontend-ops
/.gitattributes @grafana/frontend-ops
/.gitignore @grafana/frontend-ops
/.nvmrc @grafana/frontend-ops
@@ -396,7 +394,6 @@
/yarn.lock @grafana/frontend-ops
/lerna.json @grafana/frontend-ops
/.prettierrc.js @grafana/frontend-ops
/.eslintrc @grafana/frontend-ops
/.vim @zoltanbedi
/jest.config.js @grafana/frontend-ops
/latest.json @grafana/frontend-ops
@@ -475,6 +472,7 @@ playwright.config.ts @grafana/plugins-platform-frontend
/public/app/features/users/ @grafana/access-squad
/public/app/features/variables/ @grafana/dashboards-squad
/public/app/features/preferences/ @grafana/grafana-frontend-platform
/public/app/features/bookmarks/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/alertlist/ @grafana/alerting-frontend
/public/app/plugins/panel/annolist/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/barchart/ @grafana/dataviz-squad
@@ -553,27 +551,27 @@ playwright.config.ts @grafana/plugins-platform-frontend
/scripts/benchmark-access-control.sh @grafana/access-squad
/scripts/check-breaking-changes.sh @grafana/plugins-platform-frontend
/scripts/ci-* @grafana/grafana-release-guild
/scripts/circle-* @grafana/grafana-release-guild
/scripts/publish-npm-packages.sh @grafana/grafana-release-guild @grafana/plugins-platform-frontend
/scripts/validate-npm-packages.sh @grafana/grafana-release-guild @grafana/plugins-platform-frontend
/scripts/ci-* @grafana/grafana-developer-enablement-squad
/scripts/circle-* @grafana/grafana-developer-enablement-squad
/scripts/publish-npm-packages.sh @grafana/grafana-developer-enablement-squad @grafana/plugins-platform-frontend
/scripts/validate-npm-packages.sh @grafana/grafana-developer-enablement-squad @grafana/plugins-platform-frontend
/scripts/ci-frontend-metrics.sh @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend @grafana/dataviz-squad
/scripts/cli/ @grafana/grafana-frontend-platform
/scripts/clean-git-or-error.sh @grafana/grafana-as-code
/scripts/grafana-server/ @grafana/grafana-frontend-platform
/scripts/helpers/ @grafana/grafana-release-guild
/scripts/helpers/ @grafana/grafana-developer-enablement-squad
/scripts/import_many_dashboards.sh @torkelo
/scripts/mixin-check.sh @bergquist
/scripts/openapi3/ @grafana/grafana-operator-experience-squad
/scripts/prepare-packagejson.js @grafana/frontend-ops
/scripts/protobuf-check.sh @grafana/plugins-platform-backend
/scripts/stripnulls.sh @grafana/grafana-as-code
/scripts/tag_release.sh @grafana/grafana-release-guild
/scripts/trigger_docker_build.sh @grafana/grafana-release-guild
/scripts/trigger_grafana_packer.sh @grafana/grafana-release-guild
/scripts/trigger_windows_build.sh @grafana/grafana-release-guild
/scripts/tag_release.sh @grafana/grafana-developer-enablement-squad
/scripts/trigger_docker_build.sh @grafana/grafana-developer-enablement-squad
/scripts/trigger_grafana_packer.sh @grafana/grafana-developer-enablement-squad
/scripts/trigger_windows_build.sh @grafana/grafana-developer-enablement-squad
/scripts/cleanup-husky.sh @grafana/frontend-ops
/scripts/verify-repo-update/ @grafana/grafana-release-guild
/scripts/verify-repo-update/ @grafana/grafana-developer-enablement-squad
/scripts/generate-icon-bundle.js @grafana/plugins-platform-frontend @grafana/grafana-frontend-platform
/scripts/generate-rtk-apis.ts @grafana/grafana-frontend-platform
/scripts/generate-alerting-rtk-apis.ts @grafana/alerting-frontend
@@ -632,7 +630,7 @@ playwright.config.ts @grafana/plugins-platform-frontend
/pkg/services/rendering/ @grafana/sharing-squad
# SSE - Server Side Expressions
/pkg/expr/ @grafana/observability-metrics
/pkg/expr/ @grafana/grafana-datasources-core-services
# Cloud middleware
/grafana-mixin/ @grafana/grafana-backend-services-squad
@@ -680,6 +678,7 @@ embed.go @grafana/grafana-as-code
/pkg/registry/apis/ @grafana/grafana-app-platform-squad
/pkg/registry/apis/alerting @grafana/grafana-app-platform-squad @grafana/alerting-backend
/pkg/registry/apis/query @grafana/grafana-datasources-core-services
/pkg/registry/apis/userstorage @grafana/grafana-app-platform-squad @grafana/plugins-platform-backend
/pkg/codegen/ @grafana/grafana-as-code
/pkg/codegen/generators @grafana/grafana-as-code
/pkg/kinds/*/*_gen.go @grafana/grafana-as-code
@@ -696,44 +695,43 @@ embed.go @grafana/grafana-as-code
/.github/dependabot.yml @grafana/frontend-ops
/.github/issue-opened.json @grafana/grafana-community-support
/.github/metrics-collector.json @torkelo
/.github/pr-checks.json @marefr
/.github/pr-commands.json @marefr
/.github/pr-checks.json @tolzhabayev
/.github/pr-commands.json @tolzhabayev
/.github/renovate.json5 @grafana/frontend-ops
/.github/teams.yml @armandgrillet
/.github/workflows/alerting-swagger-gen.yml @grafana/alerting-backend
/.github/workflows/auto-milestone.yml @grafana/grafana-release-guild
/.github/workflows/backport.yml @grafana/grafana-release-guild
/.github/workflows/bump-version.yml @grafana/grafana-release-guild
/.github/workflows/close-milestone.yml @grafana/grafana-release-guild
/.github/workflows/release-pr.yml @grafana/grafana-release-guild
/.github/workflows/release-comms.yml @grafana/grafana-release-guild
/.github/workflows/auto-milestone.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/backport.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/bump-version.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/close-milestone.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/release-pr.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/release-comms.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/codeowners-validator.yml @tolzhabayev
/.github/workflows/codeql-analysis.yml @DanCech
/.github/workflows/commands.yml @torkelo
/.github/workflows/community-release.yml @grafana/grafana-release-guild
/.github/workflows/community-release.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/detect-breaking-changes-* @grafana/plugins-platform-frontend
/.github/workflows/doc-validator.yml @grafana/docs-tooling
/.github/workflows/epic-add-to-platform-ux-parent-project.yml @meanmina
/.github/workflows/github-release.yml @grafana/grafana-release-guild
/.github/workflows/github-release.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/issue-labeled.yml @armandgrillet
/.github/workflows/issue-opened.yml @grafana/grafana-community-support
/.github/workflows/metrics-collector.yml @torkelo
/.github/workflows/milestone.yml @marefr
/.github/workflows/pr-checks.yml @marefr
/.github/workflows/milestone.yml @tolzhabayev
/.github/workflows/pr-checks.yml @tolzhabayev
/.github/workflows/pr-codeql-analysis-go.yml @DanCech
/.github/workflows/pr-codeql-analysis-javascript.yml @DanCech
/.github/workflows/pr-codeql-analysis-python.yml @DanCech
/.github/workflows/pr-commands.yml @marefr
/.github/workflows/pr-patch-check.yml @grafana/grafana-release-guild
/.github/workflows/sync-mirror.yml @grafana/grafana-release-guild
/.github/workflows/pr-commands.yml @tolzhabayev
/.github/workflows/pr-patch-check.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/sync-mirror.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/publish-technical-documentation-next.yml @grafana/docs-tooling
/.github/workflows/publish-technical-documentation-release.yml @grafana/docs-tooling
/.github/workflows/remove-milestone.yml @grafana/grafana-release-guild
/.github/workflows/remove-milestone.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/sbom-report.yml @grafana/security-team
/.github/workflows/scripts/json-file-to-job-output.js @grafana/plugins-platform-frontend
/.github/workflows/scripts/pr-get-job-link.js @grafana/plugins-platform-frontend
/.github/workflows/stale.yml @grafana/grafana-release-guild
/.github/workflows/update-changelog.yml @grafana/grafana-release-guild
/.github/workflows/stale.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/update-changelog.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/update-make-docs.yml @grafana/docs-tooling
/.github/workflows/scripts/kinds/verify-kinds.go @grafana/platform-cat
/.github/workflows/publish-kinds-next.yml @grafana/platform-cat
@@ -741,11 +739,12 @@ embed.go @grafana/grafana-as-code
/.github/workflows/verify-kinds.yml @grafana/platform-cat
/.github/workflows/dashboards-issue-add-label.yml @grafana/dashboards-squad
/.github/workflows/ephemeral-instances-pr-comment.yml @grafana/grafana-backend-services-squad
/.github/workflows/create-security-patch-from-security-mirror.yml @grafana/grafana-release-guild
/.github/workflows/create-security-patch-from-security-mirror.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/core-plugins-build-and-release.yml @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
/.github/workflows/i18n-crowdin-upload.yml @grafana/grafana-frontend-platform
/.github/workflows/i18n-crowdin-download.yml @grafana/grafana-frontend-platform
/.github/workflows/pr-go-workspace-check.yml @grafana/grafana-app-platform-squad
/.github/workflows/pr-dependabot-update-go-workspace.yml @grafana/grafana-app-platform-squad
/.github/workflows/pr-k8s-codegen-check.yml @grafana/grafana-app-platform-squad
/.github/workflows/go_lint.yml @grafana/grafana-backend-services-squad
/.github/workflows/trivy-scan.yml @grafana/grafana-backend-services-squad

32
.github/commands.json vendored
View File

@@ -59,14 +59,6 @@
"url": "https://github.com/orgs/grafana/projects/76"
}
},
{
"type": "label",
"name": "type/docs",
"action": "addToProject",
"addToProject": {
"url": "https://github.com/orgs/grafana/projects/69"
}
},
{
"type": "label",
"name": "datasource/Azure",
@@ -539,6 +531,14 @@
"url": "https://github.com/orgs/grafana/projects/599"
}
},
{
"type": "label",
"name": "area/provisioning/datasources",
"action": "addToProject",
"addToProject": {
"url": "https://github.com/orgs/grafana/projects/76"
}
},
{
"type": "label",
"name": "area/scenes",
@@ -603,14 +603,6 @@
"url": "https://github.com/orgs/grafana/projects/660"
}
},
{
"type": "label",
"name": "area/expressions",
"action": "addToProject",
"addToProject": {
"url": "https://github.com/orgs/grafana/projects/112"
}
},
{
"type": "label",
"name": "area/backend/api",
@@ -1202,5 +1194,13 @@
"addToProject": {
"url": "https://github.com/orgs/grafana/projects/736"
}
},
{
"type": "label",
"name": "area/expressions",
"action": "addToProject",
"addToProject": {
"url": "https://github.com/orgs/grafana/projects/699"
}
}
]

View File

@@ -5,6 +5,21 @@ updates:
schedule:
interval: "daily"
- package-ecosystem: "gomod"
directory: "/"
directories:
- "/"
- "/apps/playlist"
- "/pkg/aggregator"
- "/pkg/apimachinery"
- "/pkg/apiserver"
- "/pkg/build"
- "/pkg/build/wire"
- "/pkg/promlib"
- "/pkg/semconv"
- "/pkg/storage/unified/apistore"
- "/pkg/storage/unified/resource"
- "/pkg/util/xorm"
schedule:
interval: "weekly"
interval: "daily"
time: "02:00"
timezone: Etc/UTC
open-pull-requests-limit: 10

113
.github/renovate.json5 vendored
View File

@@ -1,9 +1,7 @@
{
"extends": [
"config:base"
],
"enabledManagers": ["npm"],
"ignoreDeps": [
extends: ["config:recommended"],
enabledManagers: ["npm"],
ignoreDeps: [
"@types/history", // this can be removed entirely when we upgrade history since v5 exposes types directly
"history", // we should bump this together with react-router-dom (see https://github.com/grafana/grafana/issues/76744)
"react-router-dom", // we should bump this together with history (see https://github.com/grafana/grafana/issues/76744)
@@ -14,84 +12,71 @@
"slate", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
"slate-react", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
"@types/slate-react", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
"@types/slate" // we don't want to continue using this on the long run, use Monaco editor instead of Slate
"@types/slate", // we don't want to continue using this on the long run, use Monaco editor instead of Slate
// Temporarily pause updating lerna and nx until we resolve build issues
"lerna",
"nx"
],
"includePaths": ["package.json", "packages/**", "public/app/plugins/**"],
"ignorePaths": ["emails/**", "plugins-bundled/**", "**/mocks/**"],
"labels": ["area/frontend", "dependencies", "no-changelog"],
"postUpdateOptions": ["yarnDedupeHighest"],
"packageRules": [
includePaths: ["package.json", "packages/**", "public/app/plugins/**"],
ignorePaths: ["emails/**", "plugins-bundled/**", "**/mocks/**"],
labels: ["area/frontend", "dependencies", "no-changelog"],
postUpdateOptions: ["yarnDedupeHighest"],
packageRules: [
{
"automerge": true,
"matchCurrentVersion": "!/^0/",
"matchUpdateTypes": ["patch"],
"excludePackagePatterns": ["^@?storybook", "^@locker"]
automerge: true,
matchCurrentVersion: "!/^0/",
matchUpdateTypes: ["patch"],
matchPackageNames: ["!/^@?storybook/", "!/^@locker/"],
},
{
"matchPackagePatterns": ["^@?storybook"],
"extends": ["schedule:monthly"],
"groupName": "Storybook updates"
extends: ["schedule:monthly"],
groupName: "Storybook updates",
matchPackageNames: ["/^@?storybook/"],
},
{
"groupName": "React Aria",
"matchPackagePrefixes": [
"@react-aria/",
"@react-stately/"
]
groupName: "React Aria",
matchPackageNames: ["@react-aria/{/,}**", "@react-stately/{/,}**"],
},
{
"groupName": "Moveable",
"matchPackageNames": [
"moveable",
"react-moveable"
]
groupName: "Moveable",
matchPackageNames: ["moveable", "react-moveable"],
},
{
"groupName": "Slate",
"matchPackageNames": [
"@types/slate",
"@types/slate-react",
"slate",
"slate-react"
]
groupName: "Slate",
matchPackageNames: ["@types/slate", "@types/slate-react", "slate", "slate-react"],
},
{
"groupName": "d3",
"matchPackagePrefixes": [
"d3",
"@types/d3"
]
groupName: "d3",
matchPackageNames: ["d3{/,}**", "@types/d3{/,}**"],
},
{
"groupName": "visx",
"matchPackagePrefixes": [
"@visx/"
]
groupName: "scenes",
matchPackageNames: ["@grafana/scenes", "@grafana/scenes-react"],
},
{
"groupName": "uLibraries",
"matchPackageNames": [
"@leeoniya/ufuzzy",
"uplot"
],
"reviewers": ["leeoniya"],
groupName: "visx",
matchPackageNames: ["@visx/{/,}**"],
},
{
"groupName": "locker",
"matchPackagePrefixes": [
"@locker/"
],
"reviewers": ["team:grafana/plugins-platform-frontend"],
groupName: "uLibraries",
matchPackageNames: ["@leeoniya/ufuzzy", "uplot"],
reviewers: ["leeoniya"],
},
{
groupName: "locker",
reviewers: ["team:grafana/plugins-platform-frontend"],
matchPackageNames: ["@locker/{/,}**"],
},
],
"pin": {
"enabled": false
pin: {
enabled: false,
},
prConcurrentLimit: 10,
rebaseWhen: "conflicted",
reviewers: ["team:grafana/frontend-ops"],
separateMajorMinor: false,
vulnerabilityAlerts: {
addLabels: ["area/security"],
},
"prConcurrentLimit": 10,
"rebaseWhen": "conflicted",
"reviewers": ["team:grafana/frontend-ops"],
"separateMajorMinor": false,
"vulnerabilityAlerts": {
"addLabels": ["area/security"]
}
}

View File

@@ -3,8 +3,11 @@ on:
issues:
types: [opened, closed, edited, reopened, assigned, unassigned, labeled, unlabeled]
permissions:
contents: read
id-token: write
env:
GITHUB_TOKEN: ${{ secrets.ISSUE_COMMANDS_TOKEN }}
ORGANIZATION: ${{ github.repository_owner }}
REPO: ${{ github.event.repository.name }}
TARGET_PROJECT: 202
@@ -13,27 +16,28 @@ env:
concurrency:
group: issue-label-when-in-project-${{ github.event.number }}
jobs:
config:
runs-on: "ubuntu-latest"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
- name: "Check for secrets"
id: check
shell: bash
run: |
if [ -n "${{ (secrets.ISSUE_COMMANDS_TOKEN != '') || '' }}" ]; then
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
fi
main:
needs: config
if: needs.config.outputs.has-secrets
if: github.repository == 'grafana/grafana'
runs-on: ubuntu-latest
steps:
- name: log in
run: gh api user -q .login
- name: "Get vault secrets"
id: vault-secrets
uses: grafana/shared-workflows/actions/get-vault-secrets@main
with:
# Secrets placed in the ci/repo/grafana/grafana/plugins_platform_issue_commands_github_bot path in Vault
repo_secrets: |
GH_APP_ID=plugins_platform_issue_commands_github_bot:app_id
GH_APP_PEM=plugins_platform_issue_commands_github_bot:app_pem
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ env.GH_APP_ID }}
private_key: ${{ env.GH_APP_PEM }}
- name: Check if issue is in target project
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
gh api graphql -f query='
query($org: String!, $repo: String!) {
@@ -62,6 +66,8 @@ jobs:
done
- name: Add label to issue
if: env.IN_TARGET_PROJ
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
run: |
gh api graphql -f query='
mutation ($labelableId: ID!, $labelIds: [ID!]!) {

View File

@@ -6,6 +6,10 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
id-token: write
on:
pull_request:
paths:
@@ -154,26 +158,16 @@ jobs:
project_id: 'grafanalabs-global'
install_components: 'bq'
- name: Get link for the Github Action job
id: job
uses: actions/github-script@v6
with:
script: |
const name = 'Detect breaking changes';
const script = require('./.github/workflows/scripts/pr-get-job-link.js')
await script({name, github, context, core})
- name: Detect breaking changes
id: breaking-changes
run: ./scripts/check-breaking-changes.sh
env:
FORCE_COLOR: 3
GITHUB_JOB_LINK: ${{ steps.job.outputs.link }}
- name: Persisting the check output
run: |
mkdir -p ./levitate
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"job_link\": \"${{ steps.job.outputs.link }}#step:${GITHUB_STEP_NUMBER}:1\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./levitate/result.json
echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./levitate/result.json
- name: Upload check output as artifact
uses: actions/upload-artifact@v4
@@ -219,15 +213,12 @@ jobs:
PR_NUMBER: ${{ github.event.pull_request.number }}
with:
script: |
const { data } = await github.rest.issues.listLabelsOnIssue({
issue_number: process.env.PR_NUMBER,
const { data: labels } = await github.rest.issues.listLabelsOnIssue({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
});
const labels = data.map(({ name }) => name);
const doesExist = labels.includes('levitate breaking change');
return doesExist ? 1 : 0;
return labels.some(label => label.name === 'levitate breaking change') ? 1 : 0
# put the markdown into a variable
- name: Levitate Markdown
@@ -271,23 +262,41 @@ jobs:
delete: true
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
# Posts a notification to Slack if a PR has a breaking change and it did not have a breaking change before
- name: Post to Slack
- name: Send Slack Message via Payload
id: slack
if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0 && env.HAS_SECRETS
uses: slackapi/slack-github-action@v1.26.0
if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0 && github.repository == 'grafana/grafana'
uses: grafana/shared-workflows/actions/send-slack-message@main
with:
payload: |
channel-id: "C031SLFH6G0"
payload: |
{
"pr_link": "https://github.com/grafana/grafana/pull/${{ steps.levitate-run.outputs.pr_number }}",
"pr_number": "${{ steps.levitate-run.outputs.pr_number }}",
"job_link": "${{ steps.levitate-run.outputs.job_link }}",
"reporting_job_link": "${{ github.event.workflow_run.html_url }}",
"message": "${{ steps.levitate-run.outputs.message }}"
"channel": "C031SLFH6G0",
"text": ":warning: Possible breaking changes detected in *PR:* <${{ github.event.pull_request.html_url }}|#${{ github.event.pull_request.number }} :warning:",
"icon_emoji": ":grot:",
"username": "Levitate Bot",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*grafana/grafana* repository has possible breaking changes"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*PR:* <${{ github.event.pull_request.html_url }}|#${{ github.event.pull_request.number }}>"
},
{
"type": "mrkdwn",
"text": "*Job:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View Job>"
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_LEVITATE_WEBHOOK_URL }}
HAS_SECRETS: ${{ (github.repository == 'grafana/grafana' || secrets.SLACK_LEVITATE_WEBHOOK_URL != '') || '' }}
# Add the label
- name: Add "levitate breaking change" label

View File

@@ -1,13 +1,18 @@
name: "doc-validator"
on:
pull_request:
paths: ["docs/sources/**"]
workflow_dispatch:
inputs:
include:
description: |
Regular expression that matches paths to include in linting.
For example: docs/sources/(?:alerting|fundamentals)/.+\.md
required: true
jobs:
doc-validator:
runs-on: "ubuntu-latest"
container:
image: "grafana/doc-validator:v5.0.0"
image: "grafana/doc-validator:v5.2.0"
steps:
- name: "Checkout code"
uses: "actions/checkout@v4"
@@ -15,15 +20,7 @@ jobs:
# Only run doc-validator on specific directories.
run: >
doc-validator
'--include=^docs/sources/(?:alerting|fundamentals|getting-started|introduction|setup-grafana|upgrade-guide|whatsnew/whats-new-in-v(?:9|10))/.+\.md$'
'--include=${{ inputs.include }}'
'--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 }}"

View File

@@ -0,0 +1,49 @@
name: "Update Go Workspace for Dependabot PRs"
on:
pull_request:
branches: [main]
paths:
- .github/workflows/pr-dependabot-update-go-workspace.yml
- go.mod
- go.sum
- go.work
- go.work.sum
- '**/go.mod'
- '**/go.sum'
- '**.go'
permissions:
contents: write
jobs:
update:
runs-on: "ubuntu-latest"
if: ${{ github.actor == 'dependabot[bot]' }}
continue-on-error: true
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
- name: Set go version
uses: actions/setup-go@v4
with:
go-version-file: go.mod
- name: Update workspace
run: make update-workspace
- name: Commit and push workspace changes
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
run: |
if ! git diff --exit-code --quiet; then
git config --local user.name "Grot"
git config --local user.email "grot@grafana.com"
git config --local --add --bool push.autoSetupRemote true
echo "Committing and pushing workspace changes"
git remote
git branch -l
git commit -a -m "update workspace"
git push origin $BRANCH_NAME
fi

View File

@@ -4,6 +4,15 @@ on:
workflow_dispatch:
pull_request:
branches: [main]
paths:
- .github/workflows/pr-go-workspace-check.yml
- go.mod
- go.sum
- go.work
- go.work.sum
- '**/go.mod'
- '**/go.sum'
- '**.go'
jobs:
check:

View File

@@ -1,9 +0,0 @@
module.exports = async ({ name, github, context, core }) => {
const { owner, repo } = context.repo;
const url = `https://api.github.com/repos/${owner}/${repo}/actions/runs/${context.runId}/jobs`
const result = await github.request(url);
const job = result.data.jobs.find(j => j.name === name);
core.setOutput('link', `${job.html_url}?check_suite_focus=true`);
}

View File

@@ -4,48 +4,59 @@ on:
# only run on PRs where go.mod/go.sum/etc have been updated
paths:
- go.*
- .github/workflows/trivy-scan.yml
push:
branches:
- main
paths:
- go.*
- .github/workflows/trivy-scan.yml
jobs:
trivy-scan:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install Trivy
uses: aquasecurity/setup-trivy@v0.2.2
with:
version: v0.56.2
cache: true
- name: Download Trivy DB
run: |
trivy fs --no-progress --download-db-only --db-repository public.ecr.aws/aquasecurity/trivy-db
- name: Run Trivy vulnerability scanner (table output)
uses: aquasecurity/trivy-action@0.24.0
with:
# scan the filesystem, rather than building a Docker image prior - the
# downside is we won't catch dependencies that are only installed in the
# image, but the upside is we'll only catch vulnerabilities that are
# explicitly in the our dependencies
scan-type: 'fs'
scanners: 'vuln'
format: 'table'
exit-code: 1
ignore-unfixed: true
vuln-type: 'os,library'
severity: 'CRITICAL,HIGH'
trivyignores: .trivyignore
# for the PR check, ignore JS-related issues
skip-files: 'yarn.lock,package.json'
# Use the trivy binary rather than the aquasecurity/trivy-action action
# to avoid a few bugs
# scan the filesystem, rather than building a Docker image prior - the
# downside is we won't catch dependencies that are only installed in the
# image, but the upside is we'll only catch vulnerabilities that are
# explicitly in the our dependencies
run: |
trivy fs \
--scanners vuln \
--format table \
--exit-code 1 \
--ignore-unfixed \
--pkg-types os,library \
--severity CRITICAL,HIGH \
--ignorefile .trivyignore \
--skip-files yarn.lock,package.json \
--skip-db-update \
.
- name: Run Trivy vulnerability scanner (SARIF)
uses: aquasecurity/trivy-action@0.24.0
with:
scan-type: 'fs'
scanners: 'vuln'
# Note: The SARIF format ignores severity and uploads all vulns for
# later triage. The table-format step above is used to fail the build
# if there are any critical or high vulnerabilities.
# See https://github.com/aquasecurity/trivy-action/issues/95
format: 'sarif'
output: 'trivy-results.sarif'
ignore-unfixed: true
vuln-type: 'os,library'
trivyignores: .trivyignore
# Use the trivy binary rather than the aquasecurity/trivy-action action
# to avoid a few bugs
run: |
trivy fs \
--scanners vuln \
--format sarif \
--output trivy-results.sarif \
--ignore-unfixed \
--pkg-types os,library \
--ignorefile .trivyignore \
--skip-db-update \
.
if: always() && github.repository == 'grafana/grafana'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3

3
.gitignore vendored
View File

@@ -107,6 +107,7 @@ profile.cov
/pkg/extensions/*
/pkg/build/cmd/artifactspage.go
/pkg/build/cmd/artifactspage.tmpl.html
/pkg/build/cmd/exportversion.go
/pkg/server/wireexts_enterprise.go
/pkg/cmd/grafana-cli/runner/wireexts_enterprise.go
!/pkg/extensions/main.go
@@ -223,3 +224,5 @@ public/app/plugins/**/dist/
# Mock service worker used for fake API responses in frontend development
public/mockServiceWorker.js
/e2e/test-plugins/*/dist

16
.vscode/launch.json vendored
View File

@@ -9,7 +9,21 @@
"program": "${workspaceFolder}/pkg/cmd/grafana/",
"env": {},
"cwd": "${workspaceFolder}",
"args": ["server", "--homepath", "${workspaceFolder}", "--packaging", "dev", "cfg:app_mode=development"]
"args": [
"server",
"--homepath", "${workspaceFolder}",
"--packaging", "dev",
"cfg:app_mode=development",
]
},
{
"name": "Attach to Test Process",
"type": "go",
"request": "attach",
"mode": "remote",
"host": "127.0.0.1",
"port": 50480,
"apiVersion": 2,
},
{
"name": "Run API Server (testdata)",

View File

@@ -1,63 +0,0 @@
diff --git a/cjs/history.js b/cjs/history.js
index fcd8ebab613c6d87b9ac824feb30ab1080cf0ef2..4df20d5cb2f9ba5fc8777899aada53f49399560b 100644
--- a/cjs/history.js
+++ b/cjs/history.js
@@ -103,16 +103,6 @@ function createLocation(path, state, key, currentLocation) {
if (state !== undefined && location.state === undefined) location.state = state;
}
- try {
- location.pathname = decodeURI(location.pathname);
- } catch (e) {
- if (e instanceof URIError) {
- throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');
- } else {
- throw e;
- }
- }
-
if (key) location.key = key;
if (currentLocation) {
diff --git a/esm/history.js b/esm/history.js
index df67820fe3eed558c44fca07a82b0cd409d46720..e0e0d4f69a407e8de782b3fdf8297d42708e110a 100644
--- a/esm/history.js
+++ b/esm/history.js
@@ -80,16 +80,6 @@ function createLocation(path, state, key, currentLocation) {
if (state !== undefined && location.state === undefined) location.state = state;
}
- try {
- location.pathname = decodeURI(location.pathname);
- } catch (e) {
- if (e instanceof URIError) {
- throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');
- } else {
- throw e;
- }
- }
-
if (key) location.key = key;
if (currentLocation) {
diff --git a/umd/history.js b/umd/history.js
index 80e4ff66c44a2a71d4f842cc05a252e48dd18e9a..f8f4901be95e48c66f5626fbf051747a2ffbe41d 100644
--- a/umd/history.js
+++ b/umd/history.js
@@ -207,16 +207,6 @@
if (state !== undefined && location.state === undefined) location.state = state;
}
- try {
- location.pathname = decodeURI(location.pathname);
- } catch (e) {
- if (e instanceof URIError) {
- throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');
- } else {
- throw e;
- }
- }
-
if (key) location.key = key;
if (currentLocation) {

File diff suppressed because one or more lines are too long

View File

@@ -26,7 +26,7 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-outdated.cjs
spec: 'https://mskelton.dev/yarn-outdated/v2'
yarnPath: .yarn/releases/yarn-4.5.0.cjs
yarnPath: .yarn/releases/yarn-4.5.1.cjs
# Uncomment the following lines if you want to use Verdaccio local npm registry. Read more at packages/README.md
#npmScopes:
# grafana:

View File

@@ -1,3 +1,150 @@
<!-- 11.3.0+security-01 START -->
# 11.3.0+security-01 (2024-11-12)
### Bug fixes
- **MigrationAssistant:** Fix Migration Assistant issue [CVE-2024-9476]
<!-- 11.3.0+security-01 END -->
<!-- 11.2.3+security-01 START -->
# 11.2.3+security-01 (2024-11-12)
- **MigrationAssistant:** Fix Migration Assistant issue [CVE-2024-9476]
<!-- 11.2.3+security-01 END -->
<!-- 10.4.12 START -->
# 10.4.12 (2024-11-08)
### Bug fixes
- **Alerting:** Make context deadline on AlertNG service startup configurable [#96058](https://github.com/grafana/grafana/pull/96058), [@fayzal-g](https://github.com/fayzal-g)
<!-- 10.4.12 END -->
<!-- 11.3.0 START -->
# 11.3.0 (2024-10-22)
### Features and enhancements
- **Alerting:** Add manage permissions UI logic for Contact Points [#92885](https://github.com/grafana/grafana/pull/92885), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Allow linking to silence form with `__alert_rule_uid__` value preset [#93526](https://github.com/grafana/grafana/pull/93526), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Hide query name when using simplified mode in the alert rule [#93779](https://github.com/grafana/grafana/pull/93779), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Limit and clean up old alert rules versions [#89754](https://github.com/grafana/grafana/pull/89754), [@igloo12](https://github.com/igloo12)
- **Alerting:** Style nits for the simple query mode [#93930](https://github.com/grafana/grafana/pull/93930), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Update texts in annotations step [#93977](https://github.com/grafana/grafana/pull/93977), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Use useProduceNewAlertmanagerConfiguration for contact points [#88456](https://github.com/grafana/grafana/pull/88456), [@gillesdemey](https://github.com/gillesdemey)
- **Auth:** Attach external session info to Grafana session [#93849](https://github.com/grafana/grafana/pull/93849), [@mgyongyosi](https://github.com/mgyongyosi)
- **Auth:** Replace jmespath/go-jmespath with jmespath-community/go-jmespath [#94203](https://github.com/grafana/grafana/pull/94203), [@mgyongyosi](https://github.com/mgyongyosi)
- **CloudMigrations:** Add support for migration of Library Elements (Panels) resources [#93898](https://github.com/grafana/grafana/pull/93898), [@macabu](https://github.com/macabu)
- **Cloudwatch:** Update grafana-aws-sdk [#94155](https://github.com/grafana/grafana/pull/94155), [@iwysiu](https://github.com/iwysiu)
- **Explore Logs:** Preinstall for onprem Grafana instances [#94221](https://github.com/grafana/grafana/pull/94221), [@svennergr](https://github.com/svennergr)
- **ExploreMetrics:** Ensure compatibility with Incremental Querying [#94355](https://github.com/grafana/grafana/pull/94355), [@NWRichmond](https://github.com/NWRichmond)
- **FieldConfig:** Add support for Actions [#92874](https://github.com/grafana/grafana/pull/92874), [@adela-almasan](https://github.com/adela-almasan)
- **Plugin Extensions:** Require meta-data to be defined in `plugin.json` during development mode [#93429](https://github.com/grafana/grafana/pull/93429), [@leventebalogh](https://github.com/leventebalogh)
- **Reporting:** Display template variables in the PDF (Enterprise)
- **Tempo:** Add deprecation notice for Aggregate By [#94050](https://github.com/grafana/grafana/pull/94050), [@joey-grafana](https://github.com/joey-grafana)
### Bug fixes
- **Alerting/Chore:** Fix TimeRangeInput not working across multiple months [#93622](https://github.com/grafana/grafana/pull/93622), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Fix default value for input in simple condition [#94248](https://github.com/grafana/grafana/pull/94248), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Fix eval interval not being saved when creating a new group [#93821](https://github.com/grafana/grafana/pull/93821), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Fix incorrect permission on POST external rule groups endpoint [CVE-2024-8118] [#93940](https://github.com/grafana/grafana/pull/93940), [@alexweav](https://github.com/alexweav)
- **Alerting:** Fix panics when attempting to create an Alertmanager after failing [#94023](https://github.com/grafana/grafana/pull/94023), [@santihernandezc](https://github.com/santihernandezc)
- **DashboardScene:** Fixes url issue with subpath when exiting edit mode [#93962](https://github.com/grafana/grafana/pull/93962), [@torkelo](https://github.com/torkelo)
- **Dashboards:** Enable scenes by default [#93818](https://github.com/grafana/grafana/pull/93818), [@ivanortegaalba](https://github.com/ivanortegaalba)
- **Dashboards:** Fixes view & edit keyboard shortcuts when grafana is behind a subpath [#93955](https://github.com/grafana/grafana/pull/93955), [@torkelo](https://github.com/torkelo)
- **ElasticSearch:** Fix errorsource in newInstanceSettings [#93859](https://github.com/grafana/grafana/pull/93859), [@iwysiu](https://github.com/iwysiu)
- **Reporting:** Fix reports on multi-org instance (Enterprise)
- **SubMenu:** Fix expanding sub menu items on touch devices [#93208](https://github.com/grafana/grafana/pull/93208), [@yincongcyincong](https://github.com/yincongcyincong)
<!-- 11.3.0 END -->
<!-- 11.2.3 START -->
# 11.2.3 (2024-10-22)
### Bug fixes
- **Alerting:** Fix incorrect permission on POST external rule groups endpoint [CVE-2024-8118] [#93947](https://github.com/grafana/grafana/pull/93947), [@alexweav](https://github.com/alexweav)
- **AzureMonitor:** Fix App Insights portal URL for multi-resource trace queries [#94475](https://github.com/grafana/grafana/pull/94475), [@aangelisc](https://github.com/aangelisc)
- **Canvas:** Allow API calls to grafana origin [#94129](https://github.com/grafana/grafana/pull/94129), [@adela-almasan](https://github.com/adela-almasan)
- **Folders:** Correctly show new folder button under root folder [#94712](https://github.com/grafana/grafana/pull/94712), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **OrgSync:** Do not set default Organization for a user to a non-existent Organization [#94549](https://github.com/grafana/grafana/pull/94549), [@mgyongyosi](https://github.com/mgyongyosi)
- **Plugins:** Skip install errors if dependency plugin already exists [#94717](https://github.com/grafana/grafana/pull/94717), [@wbrowne](https://github.com/wbrowne)
- **ServerSideExpressions:** Disable SQL Expressions to prevent RCE and LFI vulnerability [#94959](https://github.com/grafana/grafana/pull/94959), [@samjewell](https://github.com/samjewell)
<!-- 11.2.3 END -->
<!-- 11.2.2+security-01 START -->
# 11.2.2+security-01 (2024-10-17)
### Bug fixes
- **SQL Expressions**: Fixes CVE-2024-9264
<!-- 11.2.2+security-01 END -->
<!-- 11.2.1+security-01 START -->
# 11.2.1+security-01 (2024-10-17)
### Features and enhancements
### Bug fixes
- **SQL Expressions**: Fixes CVE-2024-9264
<!-- 11.2.1+security-01 END -->
<!-- 11.1.8 START -->
# 11.1.8 (2024-10-22)
### Bug fixes
- **Alerting:** Fix incorrect permission on POST external rule groups endpoint [CVE-2024-8118] [#93948](https://github.com/grafana/grafana/pull/93948), [@alexweav](https://github.com/alexweav)
- **AzureMonitor:** Fix App Insights portal URL for multi-resource trace queries [#94474](https://github.com/grafana/grafana/pull/94474), [@aangelisc](https://github.com/aangelisc)
- **OrgSync:** Do not set default Organization for a user to a non-existent Organization [#94551](https://github.com/grafana/grafana/pull/94551), [@mgyongyosi](https://github.com/mgyongyosi)
- **ServerSideExpressions:** Disable SQL Expressions to prevent RCE and LFI vulnerability [#94969](https://github.com/grafana/grafana/pull/94969), [@scottlepp](https://github.com/scottlepp)
<!-- 11.1.8 END -->
<!-- 11.1.7+security-01 START -->
# 11.1.7+security-01 (2024-10-17)
### Bug fixes
- **SQL Expressions**: Fixes CVE-2024-9264
<!-- 11.1.7+security-01 END -->
<!-- 11.1.6+security-01 START -->
# 11.1.6+security-01 (2024-10-17)
### Bug fixes
- **SQL Expressions**: Fixes CVE-2024-9264
<!-- 11.1.6+security-01 END -->
<!-- 11.0.6+security-01 START -->
# 11.0.6+security-01 (2024-10-17)
### Bug fixes
- **SQL Expressions**: Fixes CVE-2024-9264
<!-- 11.0.6+security-01 END -->
<!-- 11.0.5+security-01 START -->
# 11.0.5+security-01 (2024-10-17)
### Bug fixes
- **SQL Expressions**: Fixes CVE-2024-9264
<!-- 11.0.5+security-01 END -->
<!-- 11.2.2 START -->
# 11.2.2 (2024-10-01)
@@ -41,6 +188,19 @@
- **Plugins:** Avoid returning 404 for `AutoEnabled` apps [#93487](https://github.com/grafana/grafana/pull/93487), [@wbrowne](https://github.com/wbrowne)
<!-- 11.1.7 END -->
<!-- 11.0.7 START -->
# 11.0.7 (2024-10-22)
### Bug fixes
- **Alerting:** Fix incorrect permission on POST external rule groups endpoint [CVE-2024-8118] [#93949](https://github.com/grafana/grafana/pull/93949), [@alexweav](https://github.com/alexweav)
- **AzureMonitor:** Fix App Insights portal URL for multi-resource trace queries [#94489](https://github.com/grafana/grafana/pull/94489), [@aangelisc](https://github.com/aangelisc)
- **Dashboard:** Make dashboard search faster [#94702](https://github.com/grafana/grafana/pull/94702), [@knuzhdin](https://github.com/knuzhdin)
- **OrgSync:** Do not set default Organization for a user to a non-existent Organization [#94552](https://github.com/grafana/grafana/pull/94552), [@mgyongyosi](https://github.com/mgyongyosi)
- **ServerSideExpressions:** Disable SQL Expressions to prevent RCE and LFI vulnerability [#94971](https://github.com/grafana/grafana/pull/94971), [@samjewell](https://github.com/samjewell)
<!-- 11.0.7 END -->
<!-- 11.0.6 START -->
# 11.0.6 (2024-10-01)
@@ -58,6 +218,17 @@
- **Plugins:** Avoid returning 404 for `AutoEnabled` apps [#93486](https://github.com/grafana/grafana/pull/93486), [@wbrowne](https://github.com/wbrowne)
<!-- 11.0.6 END -->
<!-- 10.4.11 START -->
# 10.4.11 (2024-10-22)
### Bug fixes
- **Alerting:** Fix broken panelId links [#94686](https://github.com/grafana/grafana/pull/94686), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Fix incorrect permission on POST external rule groups endpoint [CVE-2024-8118] [#93946](https://github.com/grafana/grafana/pull/93946), [@alexweav](https://github.com/alexweav)
- **Dashboard:** Make dashboard search faster [#94703](https://github.com/grafana/grafana/pull/94703), [@knuzhdin](https://github.com/knuzhdin)
<!-- 10.4.11 END -->
<!-- 10.4.10 START -->
# 10.4.10 (2024-10-01)
@@ -73,6 +244,16 @@
- **Correlations:** Limit access to correlations page to users who can access Explore [#93673](https://github.com/grafana/grafana/pull/93673), [@ifrost](https://github.com/ifrost)
<!-- 10.4.10 END -->
<!-- 10.3.12 START -->
# 10.3.12 (2024-10-22)
### Bug fixes
- **Alerting:** Fix incorrect permission on POST external rule groups endpoint [CVE-2024-8118] [#93945](https://github.com/grafana/grafana/pull/93945), [@alexweav](https://github.com/alexweav)
- **Dashboard:** Make dashboard search faster [#94704](https://github.com/grafana/grafana/pull/94704), [@knuzhdin](https://github.com/knuzhdin)
<!-- 10.3.12 END -->
<!-- 10.3.11 START -->
# 10.3.11 (2024-10-01)

View File

@@ -3,3 +3,4 @@
List of previous team members that have had a big impact on the company or the product and contributed during a long period of time.
- Hugo Häggmark ([Björn Lundén](https://www.bjornlunden.se/))
- Marcus Efraimsson

View File

@@ -17,6 +17,7 @@ GO_RACE_FLAG := $(if $(GO_RACE),-race)
GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev)
GO_BUILD_FLAGS += $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS))
GO_BUILD_FLAGS += $(GO_RACE_FLAG)
GIT_BASE = remotes/origin/main
# GNU xargs has flag -r, and BSD xargs (e.g. MacOS) has that behaviour by default
XARGSR = $(shell xargs --version 2>&1 | grep -q GNU && echo xargs -r || echo xargs)
@@ -173,12 +174,16 @@ gen-jsonnet:
go generate ./devenv/jsonnet
.PHONY: update-workspace
update-workspace:
update-workspace: gen-go
@echo "updating workspace"
bash scripts/go-workspace/update-workspace.sh
.PHONY: build-go
build-go: gen-go update-workspace ## Build all Go binaries.
@echo "build go files with updated workspace"
$(GO) run build.go $(GO_BUILD_FLAGS) build
build-go-fast: gen-go ## Build all Go binaries.
@echo "build go files"
$(GO) run build.go $(GO_BUILD_FLAGS) build
@@ -308,7 +313,7 @@ lint-go: golangci-lint ## Run all code checks for backend. You can use GO_LINT_F
.PHONY: lint-go-diff
lint-go-diff: $(GOLANGCI_LINT)
git diff --name-only remotes/origin/main | \
git diff --name-only $(GIT_BASE) | \
grep '\.go$$' | \
$(XARGSR) dirname | \
sort -u | \
@@ -411,6 +416,7 @@ protobuf: ## Compile protobuf definitions
buf generate pkg/plugins/backendplugin/pluginextensionv2 --template pkg/plugins/backendplugin/pluginextensionv2/buf.gen.yaml
buf generate pkg/plugins/backendplugin/secretsmanagerplugin --template pkg/plugins/backendplugin/secretsmanagerplugin/buf.gen.yaml
buf generate pkg/storage/unified/resource --template pkg/storage/unified/resource/buf.gen.yaml
buf generate pkg/services/authz/proto/v1 --template pkg/services/authz/proto/v1/buf.gen.yaml
.PHONY: clean
clean: ## Clean up intermediate build artifacts.

View File

@@ -38,7 +38,7 @@ If you're interested in contributing to the Grafana project:
## Get involved
- Follow [@grafana on Twitter](https://twitter.com/grafana/).
- Follow [@grafana on X (formerly Twitter)](https://x.com/grafana/).
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/).
- If you have a specific question, check out our [discussion forums](https://community.grafana.com/).
- For general discussions, join us on the [official Slack](https://slack.grafana.com) team.

View File

@@ -0,0 +1,4 @@
.PHONY: generate
generate:
## --crdencoding none is needed to avoid infinite loop while generating recursive models'
grafana-app-sdk generate -c . -g ./apis --crdencoding none

View File

@@ -0,0 +1,49 @@
package core
route: {
kind: "RoutingTree"
group: "notifications"
apiResource: {
groupOverride: "notifications.alerting.grafana.app"
}
codegen: {
frontend: false
backend: true
}
pluralName: "RoutingTrees"
current: "v0alpha1"
versions: {
"v0alpha1": {
schema: {
#RouteDefaults: {
receiver: string
group_by?: [...string]
group_wait?: string
group_interval?: string
repeat_interval?: string
}
#Matcher: {
type: "=" |"!="|"=~"|"!~" @cuetsy(kind="enum")
label: string
value: string
}
#Route: {
receiver?: string
matchers?: [...#Matcher]
continue: bool
group_by?: [...string]
mute_time_intervals?: [...string]
routes?: [...#Route]
group_wait?: string
group_interval?: string
repeat_interval?: string
}
spec: {
defaults: #RouteDefaults
routes: [...#Route]
}
}
}
}
}

View File

@@ -1,3 +1,3 @@
.PHONY: generate
generate:
@grafana-app-sdk generate -g ./apis --kindgrouping=group --postprocess
@grafana-app-sdk generate -g ./pkg/apis --kindgrouping=group --postprocess --crdencoding none

View File

@@ -3,36 +3,81 @@ module github.com/grafana/grafana/apps/playlist
go 1.23.1
require (
github.com/grafana/grafana-app-sdk v0.19.0
github.com/grafana/grafana-app-sdk v0.23.1
k8s.io/apimachinery v0.31.1
k8s.io/klog/v2 v2.130.1
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340
)
require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/getkin/kin-openapi v0.128.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/invopop/yaml v0.3.1 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/perimeterx/marshmallow v1.1.5 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.60.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/puzpuzpuz/xsync/v2 v2.5.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/x448/float16 v0.8.4 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/text v0.18.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
go.opentelemetry.io/otel v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect
go.opentelemetry.io/otel/metric v1.31.0 // indirect
go.opentelemetry.io/otel/sdk v1.31.0 // indirect
go.opentelemetry.io/otel/trace v1.31.0 // indirect
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
golang.org/x/net v0.30.0 // indirect
golang.org/x/oauth2 v0.23.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/term v0.25.0 // indirect
golang.org/x/text v0.19.0 // indirect
golang.org/x/time v0.6.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect
google.golang.org/grpc v1.67.1 // indirect
google.golang.org/protobuf v1.35.1 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/api v0.31.1 // indirect
k8s.io/apiextensions-apiserver v0.31.1 // indirect
k8s.io/client-go v0.31.1 // indirect
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)

View File

@@ -1,19 +1,36 @@
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 h1:N7oVaKyGp8bttX0bfZGmcGkjz7DLQXhAn3DNd3T0ous=
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874/go.mod h1:r5xuitiExdLAJ09PR7vBVENGvp4ZuTBeWTGtxuX3K+c=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/getkin/kin-openapi v0.128.0 h1:jqq3D9vC9pPq1dGcOCv7yOp1DaEe7c/T1vzcLbITSp4=
github.com/getkin/kin-openapi v0.128.0/go.mod h1:OZrfXzUfGrNbsKj+xmFBx6E5c6yH3At/tAKSc2UszXM=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
@@ -26,18 +43,35 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/grafana/grafana-app-sdk v0.19.0 h1:RY9HvCFR+4WUy81n53wejZnof9qE6++pd6r24d6+JYs=
github.com/grafana/grafana-app-sdk v0.19.0/go.mod h1:y0BgzYxc+a7CwOqkwUhN9zXd5cgZJjd2zAbgHEd/xzo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grafana/grafana-app-sdk v0.23.1 h1:BRpUG0bA0oVxjthkmO2thuJBo3nbjaRSSmZJHw+mA8I=
github.com/grafana/grafana-app-sdk v0.23.1/go.mod h1:KzgPnTJfMeckGmMctv6CJb8Jr/o/5rwARDyjXoeR0Fc=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso=
github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -45,21 +79,59 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.60.0 h1:+V9PAREWNvJMAuJ1x1BaWl9dewMW4YrHZQbx0sJNllA=
github.com/prometheus/common v0.60.0/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/puzpuzpuz/xsync/v2 v2.5.1 h1:mVGYAvzDSu52+zaGyNjC+24Xw2bQi3kTr4QJ6N9pIIU=
github.com/puzpuzpuz/xsync/v2 v2.5.1/go.mod h1:gD2H2krq/w52MfPLE+Uy64TzJDVY7lP2znR9qmR35kU=
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 h1:FFeLy03iVTXP6ffeN2iXrxfGsZGCjVx0/4KlizjyBwU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0/go.mod h1:TMu73/k1CP8nBUpDLc71Wj/Kf7ZS9FK5b53VapRsP9o=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4=
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -69,18 +141,26 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -89,8 +169,16 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg=
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 h1:QCqS/PdaHTSWGvupk2F/ehwHtGc0/GYkT+3GAcR1CCc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -101,8 +189,14 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU=
k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI=
k8s.io/apiextensions-apiserver v0.31.1 h1:L+hwULvXx+nvTYX/MKM3kKMZyei+UiSXQWciX/N6E40=
k8s.io/apiextensions-apiserver v0.31.1/go.mod h1:tWMPR3sgW+jsl2xm9v7lAyRF1rYEK71i9G5dRtkknoQ=
k8s.io/apimachinery v0.31.1 h1:mhcUBbj7KUjaVhyXILglcVjuS4nYXiwC+KKFBgIVy7U=
k8s.io/apimachinery v0.31.1/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
k8s.io/client-go v0.31.1 h1:f0ugtWSbWpxHR7sjVpQwuvw9a3ZKLXX0u0itkFXufb0=
k8s.io/client-go v0.31.1/go.mod h1:sKI8871MJN2OyeqRlmA4W4KM9KBdBUpDLu/43eGemCg=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=

View File

@@ -5,6 +5,8 @@ externalName: {
group: "playlist"
apiResource: {
groupOverride: "playlist.grafana.app"
mutation: operations: ["create","update"]
validation: operations: ["create","update"]
}
codegen: {
frontend: false

View File

@@ -0,0 +1,64 @@
//
// This file is generated by grafana-app-sdk
// DO NOT EDIT
//
package apis
import (
"encoding/json"
"github.com/grafana/grafana-app-sdk/app"
)
var (
rawSchemaPlaylistv0alpha1 = []byte(`{"spec":{"properties":{"interval":{"type":"string"},"items":{"items":{"properties":{"type":{"description":"type of the item.","enum":["dashboard_by_tag","dashboard_by_uid","dashboard_by_id"],"type":"string"},"value":{"description":"Value depends on type and describes the playlist item.\n - dashboard_by_id: The value is an internal numerical identifier set by Grafana. This\n is not portable as the numerical identifier is non-deterministic between different instances.\n Will be replaced by dashboard_by_uid in the future. (deprecated)\n - dashboard_by_tag: The value is a tag which is set on any number of dashboards. All\n dashboards behind the tag will be added to the playlist.\n - dashboard_by_uid: The value is the dashboard UID","type":"string"}},"required":["type","value"],"type":"object"},"type":"array"},"title":{"type":"string"}},"required":["title","interval","items"],"type":"object"},"status":{"properties":{"additionalFields":{"description":"additionalFields is reserved for future use","type":"object","x-kubernetes-preserve-unknown-fields":true},"operatorStates":{"additionalProperties":{"properties":{"descriptiveState":{"description":"descriptiveState is an optional more descriptive state field which has no requirements on format","type":"string"},"details":{"description":"details contains any extra information that is operator-specific","type":"object","x-kubernetes-preserve-unknown-fields":true},"lastEvaluation":{"description":"lastEvaluation is the ResourceVersion last evaluated","type":"string"},"state":{"description":"state describes the state of the lastEvaluation.\nIt is limited to three possible states for machine evaluation.","enum":["success","in_progress","failed"],"type":"string"}},"required":["lastEvaluation","state"],"type":"object"},"description":"operatorStates is a map of operator ID to operator state evaluations.\nAny operator which consumes this kind SHOULD add its state evaluation information to this field.","type":"object"}},"type":"object","x-kubernetes-preserve-unknown-fields":true}}`)
versionSchemaPlaylistv0alpha1 app.VersionSchema
_ = json.Unmarshal(rawSchemaPlaylistv0alpha1, &versionSchemaPlaylistv0alpha1)
)
var appManifestData = app.ManifestData{
AppName: "playlist",
Group: "playlist.grafana.app",
Kinds: []app.ManifestKind{
{
Kind: "Playlist",
Scope: "Namespaced",
Conversion: false,
Versions: []app.ManifestKindVersion{
{
Name: "v0alpha1",
Admission: &app.AdmissionCapabilities{
Validation: &app.ValidationCapability{
Operations: []app.AdmissionOperation{
app.AdmissionOperationCreate,
app.AdmissionOperationUpdate,
},
},
Mutation: &app.MutationCapability{
Operations: []app.AdmissionOperation{
app.AdmissionOperationCreate,
app.AdmissionOperationUpdate,
},
},
},
Schema: &versionSchemaPlaylistv0alpha1,
},
},
},
},
}
func jsonToMap(j string) map[string]any {
m := make(map[string]any)
json.Unmarshal([]byte(j), &j)
return m
}
func LocalManifest() app.Manifest {
return app.NewEmbeddedManifest(appManifestData)
}
func RemoteManifest() app.Manifest {
return app.NewAPIServerManifest("playlist")
}

View File

@@ -65,12 +65,13 @@ func (o *Playlist) SetSubresource(name string, value any) error {
}
func (o *Playlist) GetStaticMetadata() resource.StaticMetadata {
gvk := o.GroupVersionKind()
return resource.StaticMetadata{
Name: o.ObjectMeta.Name,
Namespace: o.ObjectMeta.Namespace,
Group: o.GroupVersionKind().Group,
Version: o.GroupVersionKind().Version,
Kind: o.GroupVersionKind().Kind,
Group: gvk.Group,
Version: gvk.Version,
Kind: gvk.Kind,
}
}

View File

@@ -12,17 +12,17 @@ import (
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
return map[string]common.OpenAPIDefinition{
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.Playlist": schema_playlist_apis_playlist_v0alpha1_Playlist(ref),
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistItem": schema_playlist_apis_playlist_v0alpha1_PlaylistItem(ref),
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistList": schema_playlist_apis_playlist_v0alpha1_PlaylistList(ref),
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistOperatorState": schema_playlist_apis_playlist_v0alpha1_PlaylistOperatorState(ref),
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistSpec": schema_playlist_apis_playlist_v0alpha1_PlaylistSpec(ref),
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistStatus": schema_playlist_apis_playlist_v0alpha1_PlaylistStatus(ref),
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlayliststatusOperatorState": schema_playlist_apis_playlist_v0alpha1_PlayliststatusOperatorState(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.Playlist": schema_pkg_apis_playlist_v0alpha1_Playlist(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistItem": schema_pkg_apis_playlist_v0alpha1_PlaylistItem(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistList": schema_pkg_apis_playlist_v0alpha1_PlaylistList(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistOperatorState": schema_pkg_apis_playlist_v0alpha1_PlaylistOperatorState(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistSpec": schema_pkg_apis_playlist_v0alpha1_PlaylistSpec(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistStatus": schema_pkg_apis_playlist_v0alpha1_PlaylistStatus(ref),
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlayliststatusOperatorState": schema_pkg_apis_playlist_v0alpha1_PlayliststatusOperatorState(ref),
}
}
func schema_playlist_apis_playlist_v0alpha1_Playlist(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_Playlist(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -51,13 +51,13 @@ func schema_playlist_apis_playlist_v0alpha1_Playlist(ref common.ReferenceCallbac
"spec": {
SchemaProps: spec.SchemaProps{
Default: map[string]interface{}{},
Ref: ref("github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistSpec"),
Ref: ref("github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistSpec"),
},
},
"status": {
SchemaProps: spec.SchemaProps{
Default: map[string]interface{}{},
Ref: ref("github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistStatus"),
Ref: ref("github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistStatus"),
},
},
},
@@ -65,11 +65,11 @@ func schema_playlist_apis_playlist_v0alpha1_Playlist(ref common.ReferenceCallbac
},
},
Dependencies: []string{
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistSpec", "github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistSpec", "github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
}
}
func schema_playlist_apis_playlist_v0alpha1_PlaylistItem(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_PlaylistItem(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -99,7 +99,7 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistItem(ref common.ReferenceCal
}
}
func schema_playlist_apis_playlist_v0alpha1_PlaylistList(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_PlaylistList(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -132,7 +132,7 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistList(ref common.ReferenceCal
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Default: map[string]interface{}{},
Ref: ref("github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.Playlist"),
Ref: ref("github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.Playlist"),
},
},
},
@@ -143,11 +143,11 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistList(ref common.ReferenceCal
},
},
Dependencies: []string{
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.Playlist", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.Playlist", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
}
}
func schema_playlist_apis_playlist_v0alpha1_PlaylistOperatorState(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_PlaylistOperatorState(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -199,7 +199,7 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistOperatorState(ref common.Ref
}
}
func schema_playlist_apis_playlist_v0alpha1_PlaylistSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_PlaylistSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -220,7 +220,7 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistSpec(ref common.ReferenceCal
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Default: map[string]interface{}{},
Ref: ref("github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistItem"),
Ref: ref("github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistItem"),
},
},
},
@@ -238,11 +238,11 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistSpec(ref common.ReferenceCal
},
},
Dependencies: []string{
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlaylistItem"},
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlaylistItem"},
}
}
func schema_playlist_apis_playlist_v0alpha1_PlaylistStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_PlaylistStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
@@ -273,7 +273,7 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistStatus(ref common.ReferenceC
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Default: map[string]interface{}{},
Ref: ref("github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlayliststatusOperatorState"),
Ref: ref("github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlayliststatusOperatorState"),
},
},
},
@@ -283,11 +283,11 @@ func schema_playlist_apis_playlist_v0alpha1_PlaylistStatus(ref common.ReferenceC
},
},
Dependencies: []string{
"github.com/grafana/grafana/apps/playlist/apis/playlist/v0alpha1.PlayliststatusOperatorState"},
"github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1.PlayliststatusOperatorState"},
}
}
func schema_playlist_apis_playlist_v0alpha1_PlayliststatusOperatorState(ref common.ReferenceCallback) common.OpenAPIDefinition {
func schema_pkg_apis_playlist_v0alpha1_PlayliststatusOperatorState(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{

View File

@@ -0,0 +1,87 @@
package app
import (
"context"
"fmt"
"github.com/grafana/grafana-app-sdk/app"
"github.com/grafana/grafana-app-sdk/operator"
"github.com/grafana/grafana-app-sdk/resource"
"github.com/grafana/grafana-app-sdk/simple"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/klog/v2"
playlistv0alpha1 "github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1"
"github.com/grafana/grafana/apps/playlist/pkg/watchers"
)
type PlaylistConfig struct {
EnableWatchers bool
}
func New(cfg app.Config) (app.App, error) {
var (
playlistWatcher operator.ResourceWatcher
err error
)
playlistConfig, ok := cfg.SpecificConfig.(*PlaylistConfig)
if ok && playlistConfig.EnableWatchers {
playlistWatcher, err = watchers.NewPlaylistWatcher()
if err != nil {
return nil, fmt.Errorf("unable to create PlaylistWatcher: %w", err)
}
}
simpleConfig := simple.AppConfig{
Name: "playlist",
KubeConfig: cfg.KubeConfig,
InformerConfig: simple.AppInformerConfig{
ErrorHandler: func(ctx context.Context, err error) {
klog.ErrorS(err, "Informer processing error")
},
},
ManagedKinds: []simple.AppManagedKind{
{
Kind: playlistv0alpha1.PlaylistKind(),
Watcher: playlistWatcher,
Mutator: &simple.Mutator{
MutateFunc: func(ctx context.Context, req *app.AdmissionRequest) (*app.MutatingResponse, error) {
// modify req.Object if needed
return &app.MutatingResponse{
UpdatedObject: req.Object,
}, nil
},
},
Validator: &simple.Validator{
ValidateFunc: func(ctx context.Context, req *app.AdmissionRequest) error {
// do something here if needed
return nil
},
},
},
},
}
a, err := simple.NewApp(simpleConfig)
if err != nil {
return nil, err
}
err = a.ValidateManifest(cfg.ManifestData)
if err != nil {
return nil, err
}
return a, nil
}
func GetKinds() map[schema.GroupVersion]resource.Kind {
gv := schema.GroupVersion{
Group: playlistv0alpha1.PlaylistKind().Group(),
Version: playlistv0alpha1.PlaylistKind().Version(),
}
return map[schema.GroupVersion]resource.Kind{
gv: playlistv0alpha1.PlaylistKind(),
}
}

View File

@@ -0,0 +1,75 @@
package watchers
import (
"context"
"fmt"
"github.com/grafana/grafana-app-sdk/operator"
"github.com/grafana/grafana-app-sdk/resource"
"k8s.io/klog/v2"
playlist "github.com/grafana/grafana/apps/playlist/pkg/apis/playlist/v0alpha1"
)
var _ operator.ResourceWatcher = &PlaylistWatcher{}
type PlaylistWatcher struct{}
func NewPlaylistWatcher() (*PlaylistWatcher, error) {
return &PlaylistWatcher{}, nil
}
// Add handles add events for playlist.Playlist resources.
func (s *PlaylistWatcher) Add(ctx context.Context, rObj resource.Object) error {
object, ok := rObj.(*playlist.Playlist)
if !ok {
return fmt.Errorf("provided object is not of type *playlist.Playlist (name=%s, namespace=%s, kind=%s)",
rObj.GetStaticMetadata().Name, rObj.GetStaticMetadata().Namespace, rObj.GetStaticMetadata().Kind)
}
klog.InfoS("Added resource", "name", object.GetStaticMetadata().Identifier().Name)
return nil
}
// Update handles update events for playlist.Playlist resources.
func (s *PlaylistWatcher) Update(ctx context.Context, rOld resource.Object, rNew resource.Object) error {
oldObject, ok := rOld.(*playlist.Playlist)
if !ok {
return fmt.Errorf("provided object is not of type *playlist.Playlist (name=%s, namespace=%s, kind=%s)",
rOld.GetStaticMetadata().Name, rOld.GetStaticMetadata().Namespace, rOld.GetStaticMetadata().Kind)
}
_, ok = rNew.(*playlist.Playlist)
if !ok {
return fmt.Errorf("provided object is not of type *playlist.Playlist (name=%s, namespace=%s, kind=%s)",
rNew.GetStaticMetadata().Name, rNew.GetStaticMetadata().Namespace, rNew.GetStaticMetadata().Kind)
}
klog.InfoS("Updated resource", "name", oldObject.GetStaticMetadata().Identifier().Name)
return nil
}
// Delete handles delete events for playlist.Playlist resources.
func (s *PlaylistWatcher) Delete(ctx context.Context, rObj resource.Object) error {
object, ok := rObj.(*playlist.Playlist)
if !ok {
return fmt.Errorf("provided object is not of type *playlist.Playlist (name=%s, namespace=%s, kind=%s)",
rObj.GetStaticMetadata().Name, rObj.GetStaticMetadata().Namespace, rObj.GetStaticMetadata().Kind)
}
klog.InfoS("Deleted resource", "name", object.GetStaticMetadata().Identifier().Name)
return nil
}
// Sync is not a standard resource.Watcher function, but is used when wrapping this watcher in an operator.OpinionatedWatcher.
// It handles resources which MAY have been updated during an outage period where the watcher was not able to consume events.
func (s *PlaylistWatcher) Sync(ctx context.Context, rObj resource.Object) error {
object, ok := rObj.(*playlist.Playlist)
if !ok {
return fmt.Errorf("provided object is not of type *playlist.Playlist (name=%s, namespace=%s, kind=%s)",
rObj.GetStaticMetadata().Name, rObj.GetStaticMetadata().Namespace, rObj.GetStaticMetadata().Kind)
}
klog.InfoS("Possible resource update", "name", object.GetStaticMetadata().Identifier().Name)
return nil
}

View File

@@ -316,6 +316,9 @@ feedback_links_enabled = true
# Static context that is being added to analytics events
reporting_static_context =
# Logs interaction events to the browser javascript console, intended for development only
browser_console_reporter = false
#################################### Security ############################
[security]
# disable creation of admin user on first start of grafana
@@ -403,8 +406,9 @@ angular_support_enabled = false
# The CSRF check will be executed even if the request has no login cookie.
csrf_always_check = false
# Comma-separated list of plugins ids that won't be loaded inside the frontend sandbox
disable_frontend_sandbox_for_plugins = grafana-incident-app
# Comma-separated list of plugins ids that will be loaded inside the frontend sandbox
# Currently behind the feature flag pluginsFrontendSandbox
enable_frontend_sandbox_for_plugins =
# Comma-separated list of paths for POST/PUT URL in actions. Empty will allow anything that is not on the same origin
actions_allow_post_url =
@@ -553,7 +557,7 @@ token_expiration_day_limit =
# Login cookie name
login_cookie_name = grafana_session
# Disable usage of Grafana build-in login solution.
# Disable usage of Grafana's built-in login solution.
disable_login = false
# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation (token_rotation_interval_minutes).
@@ -622,6 +626,11 @@ id_response_header_namespaces = user api-key service-account
# This feature currently **only supports single-organization deployments**
managed_service_accounts_enabled = false
#################################### Passwordless Auth ###########################
[auth.passwordless]
enabled = false
code_expiration = 20m
#################################### SSO Settings ###########################
[sso_settings]
# interval for reloading the SSO Settings from the database
@@ -1125,6 +1134,9 @@ log_endpoint_requests_per_second_limit = 3
# Max requests accepted per short interval of time for Grafana backend log ingestion endpoint (/log)
log_endpoint_burst_limit = 15
# Enables all Faro default instrumentation by using `getWebInstrumentations`. Overrides other instrumentation flags.
instrumentations_all_enabled = false
# Should error instrumentation be enabled, only affects Grafana Javascript Agent
instrumentations_errors_enabled = true
@@ -1209,6 +1221,9 @@ enabled =
# Comma-separated list of organization IDs for which to disable unified alerting. Only supported if unified alerting is enabled.
disabled_orgs =
# Specify how long to wait for the alerting service to initialize
initialization_timeout = 30s
# Specify the frequency of polling for admin config changes.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
admin_config_poll_interval = 60s
@@ -1559,7 +1574,8 @@ enabled = true
#################################### Short Links #############################
[short_links]
# Short links which are never accessed will be deleted as cleanup. Time is in days. Default is 7 days. Max is 365. 0 means they will be deleted approximately every 10 minutes.
# Short links that are never accessed will be deleted as cleanup. Time is set up in days. The default is 7 days. Maximum value is 365.
# 0 means they will be deleted approximately every 10 minutes. A negative value (such as -1) will disable expiration.
expire_time = 7
#################################### Internal Grafana Metrics ############
@@ -1745,7 +1761,8 @@ hide_angular_deprecation =
# Comma separated list of plugin ids for which environment variables should be forwarded. Used only when feature flag pluginsSkipHostEnvVars is enabled.
forward_host_env_vars =
# Comma separated list of plugin ids to install as part of the startup process.
preinstall = grafana-lokiexplore-app
# By default, the following plugins will be preinstalled: "grafana-lokiexplore-app"
preinstall =
# Controls whether preinstall plugins asynchronously (in the background) or synchronously (blocking). Useful when preinstalled plugins are used with provisioning.
preinstall_async = true
# Disables preinstall feature. It has the same effect as setting preinstall to an empty list.

View File

@@ -315,6 +315,9 @@
# Static context that is being added to analytics events
;reporting_static_context = grafanaInstance=12, os=linux
# Logs interaction events to the browser javascript console, intended for development only
;browser_console_reporter = false
#################################### Security ####################################
[security]
# disable creation of admin user on first start of grafana
@@ -408,8 +411,9 @@
# The CSRF check will be executed even if the request has no login cookie.
;csrf_always_check = false
# Comma-separated list of plugins ids that won't be loaded inside the frontend sandbox
;disable_frontend_sandbox_for_plugins =
# Comma-separated list of plugins ids that will be loaded inside the frontend sandbox
# Currently behind the feature flag pluginsFrontendSandbox
;enable_frontend_sandbox_for_plugins =
# Comma-separated list of paths for POST/PUT URL in actions. Empty will allow anything that is not on the same origin
;actions_allow_post_url =
@@ -1118,6 +1122,9 @@
# Max requests accepted per short interval of time for Grafana backend log ingestion endpoint (/log).
;log_endpoint_burst_limit = 15
# Enables all Faro default instrumentation by using `getWebInstrumentations`. Overrides other instrumentation flags.
;instrumentations_all_enabled = false
# Should error instrumentation be enabled, only affects Grafana Javascript Agent
;instrumentations_errors_enabled = true
@@ -1197,6 +1204,9 @@
# Comma-separated list of organization IDs for which to disable unified alerting. Only supported if unified alerting is enabled.
;disabled_orgs =
# Specify how long to wait for the alerting service to initialize
;initialization_timeout = 30s
# Specify the frequency of polling for admin config changes.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;admin_config_poll_interval = 60s

View File

@@ -81,7 +81,7 @@ host = "localhost:1025"
You can access the web UI at http://localhost:12080/#/
## Debugging setup in VS Code
An example of launch.json is provided in `devenv/vscode/launch.json`. It basically does what Makefile and .bra.toml do. The 'program' field is set to the folder name so VS Code loads all *.go files in it instead of just main.go.
An example of launch.json is provided in `.vscode/launch.json`. It basically does what Makefile and .bra.toml do. The 'program' field is set to the folder name so VS Code loads all *.go files in it instead of just main.go.
## Troubleshooting

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
echo "Deleting previous bulk folders"
find ./bulk-folders -type d -name "Bulk Folder*" -exec rm -rf "{}" \;

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
blocks_dir=docker/blocks
docker_dir=docker

View File

@@ -321,3 +321,11 @@ datasources:
access: proxy
url: http://localhost:4040
editable: false
- name: gdev-e2etestdatasource
type: grafana-e2etest-datasource
uid: gdev-e2etest-datasource
access: proxy
url: http://localhost:4040
editable: false

View File

@@ -0,0 +1,33 @@
# TLS Caddy Server
Starts a [Caddy server](https://caddyserver.com/) with TLS configured.
## Setup
- Caddy is setup to run on port 2081, so when configuring the webhook receiver in Grafana Alerting you should use the
following the following URL: `https://localhost:2081`
- Also, Caddy is configured to use a self-signed certificate and to check the client certificate (`require_and_verify` mode)
- Caddy is setup to log requests and has debug mode enabled to make it easier to investigate possible issues
## TLS Certificates
If you want to configure a webhook contact point in Grafana Alerting with TLS, you need to provide a certificate and key.
You can find them in `/etc/caddy` directory in the container:
``` shell
docker exec devenv-caddy_tls-1 ls /etc/caddy/
```
### CA Certificate
``` shell
docker exec devenv-caddy_tls-1 cat /etc/caddy/ca.pem
```
### Client certificates
``` shell
docker exec devenv-caddy_tls-1 cat /etc/caddy/client.pem
docker exec devenv-caddy_tls-1 cat /etc/caddy/client.key
```

View File

@@ -0,0 +1,14 @@
{
debug
}
localhost:2081 {
log
tls /etc/caddy/server.pem /etc/caddy/server.key {
ca_root /etc/caddy/ca.pem
client_auth {
mode require_and_verify
trust_pool file /etc/caddy/client.pem /etc/caddy/ca.pem
}
}
}

View File

@@ -0,0 +1,12 @@
FROM caddy:2.8.4-alpine
WORKDIR /etc/caddy
EXPOSE 2081
COPY Caddyfile ./Caddyfile
COPY san.cnf ./san.cnf
COPY gen_certs.sh ./gen_certs.sh
RUN apk update && apk upgrade --no-cache && apk add openssl
RUN ./gen_certs.sh

View File

@@ -0,0 +1,17 @@
#!/bin/sh
DAYS_VALID=3650
# Create CA certificate
openssl genpkey -algorithm RSA -out ca.key
openssl req -new -x509 -days $DAYS_VALID -key ca.key -out ca.pem -subj "/CN=My CA"
# Create server certificate
openssl genpkey -algorithm RSA -out server.key
openssl req -new -key server.key -out server.csr -subj "/CN=localhost"
openssl x509 -req -days $DAYS_VALID -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -extfile san.cnf -extensions v3_req
# Create client key and certificate
openssl genpkey -algorithm RSA -out client.key
openssl req -new -key client.key -out client.csr -subj "/CN=Client"
openssl x509 -req -days $DAYS_VALID -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem -extfile san.cnf -extensions v3_req

View File

@@ -0,0 +1,7 @@
[ v3_req ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1
IP.2 = ::1

View File

@@ -0,0 +1,5 @@
caddy_tls:
build:
context: docker/blocks/caddy_tls/build
ports:
- "2081:2081"

View File

@@ -150,7 +150,8 @@ function getRandomLogItem(counter, timestamp) {
value: counter,
metric: chooseRandomElement(['cpu', 'memory', 'latency']),
description: "this is description",
slash: "Access to the path '\\\\tkasnpo\\KASNPO\\Files\\contacts.xml' is denied."
slash: "Access to the path '\\\\tkasnpo\\KASNPO\\Files\\contacts.xml' is denied.",
url: "/foo/blah"
};
}

View File

@@ -1,9 +1,10 @@
mimir_backend:
image: grafana/mimir-alpine:r304-3872ccb
image: grafana/mimir-alpine:r316-55f47f8
container_name: mimir_backend
command:
- -target=backend
- -alertmanager.grafana-alertmanager-compatibility-enabled
- -alertmanager.utf8-strict-mode-enabled
nginx:
environment:
- NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx

View File

@@ -0,0 +1,24 @@
server {
root /data;
autoindex on;
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '$http_origin' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Headers' '*' always;
add_header 'Access-Control-Allow-Methods' '*';
# add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
add_header 'Access-Control-Allow-Origin' '$http_origin' always;
add_header 'Access-Control-Allow-Methods' '*' always;
add_header 'Access-Control-Allow-Headers' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
rewrite ^/grafana-oss/11.4.0-pre/public(.*)$ $1 last;
}
}

View File

@@ -0,0 +1,11 @@
version: '2'
services:
grafana_local_cdn:
image: nginx:alpine
container_name: grafana_local_cdn
ports:
- "8080:80"
volumes:
- ../../public:/data
- ./default.conf:/etc/nginx/conf.d/default.conf

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
bulkDashboard() {

View File

@@ -1,21 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "grafana-server",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/pkg/cmd/grafana-server",
"env": {},
"args": [
"--homepath=${workspaceFolder}",
"--packaging=dev",
"cfg:app_mode=development",
]
}
]
}

View File

@@ -234,7 +234,7 @@ To determine the number of active users:
A tiered license defines dashboard viewers, and dashboard editors and administrators, as two distinct user types that each have their own user limit.
As of Grafana Enterprise version 9.0, Grafana only counts and enforces the _total_ number of active users in your Grafana instance. For example, if you purchase 150 active users, you can have 20 admins, 70 editors, and 60 viewers, or you can have 150 admins. Grafana will enforce the total number of active users even if you use a license that grants a specific number of admins or editors and a certain number of viewers. This is a more permissive policy than before, which gives you the flexibility to change users' roles.
Grafana only counts and enforces the _total_ number of active users in your Grafana instance. For example, if you purchase 150 active users, you can have 20 admins, 70 editors, and 60 viewers, or you can have 150 admins. Grafana will enforce the total number of active users even if you use a license that grants a specific number of admins or editors and a certain number of viewers. This is a more permissive policy than before, which gives you the flexibility to change users' roles.
If you are running a pre-9.0 version of Grafana Enterprise, please refer to the documentation for that version to learn more about license enforcement in your current version.

View File

@@ -35,9 +35,9 @@ To activate your license, complete the following tasks.
For more information about deploying an application on Amazon ECS, refer to [Creating an Amazon ECS service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service.html).
1. As you create the Amazon ECS service, use the Grafana Enterprise version 8.3.0 or later container image.
1. As you create the Amazon ECS service, use the intended Grafana Enterprise container image version.
For example, enter `grafana/grafana-enterprise:8.3.3`.
For example, enter `grafana/grafana-enterprise:11.3.0`.
> Only Grafana Enterprise versions 8.3.0 and later support licenses granted through AWS Marketplace.

View File

@@ -20,7 +20,7 @@ weight: 200
# Activate a Grafana Enterprise license from AWS Marketplace on EKS
If you have purchased a Grafana Enterprise subscription through AWS Marketplace, you must activate it in order to use Grafana Enterprise data source plugins and features in Grafana.
If you have purchased a Grafana Enterprise subscription through AWS Marketplace, you must activate it to use Grafana Enterprise data source plugins and features in Grafana.
## Before you begin:
@@ -37,9 +37,9 @@ To activate your license, complete the following tasks:
For more information about installing Grafana on Kubernetes using the Helm Chart, refer to the [Grafana Helm Chart](https://github.com/grafana/helm-charts/tree/main/charts/grafana#readme).
1. Use `kubectl set image deployment/my-release grafana=grafana/grafana-enterprise:<version>` to update the container image to Grafana Enterprise version 8.3.0 or later.
1. Use `kubectl set image deployment/my-release grafana=grafana/grafana-enterprise:<version>` to update the container image.
For example, enter `grafana/grafana-enterprise:8.3.3`.
For example, enter `grafana/grafana-enterprise:11.3.0`.
> Only Grafana Enterprise versions 8.3.0 and later support licenses granted through AWS Marketplace.

View File

@@ -228,6 +228,58 @@ WARN[06-01|16:45:59] Running an unsigned plugin pluginID=<plugin id>
If you're developing a plugin, then you can enable development mode to allow all unsigned plugins.
{{% /admonition %}}
## Plugin Frontend Sandbox
{{% admonition type="caution" %}}
Plugin Frontend Sandbox is currently in [public preview](/docs/release-life-cycle/). Grafana Labs offers limited support, and breaking changes might occur prior to the feature being made generally available.
{{% /admonition %}}
The Plugin Frontend Sandbox is a security feature that isolates plugin frontend code from the main Grafana application.
When enabled, plugins run in a separate JavaScript context, which provides several security benefits:
- Prevents plugins from modifying parts of the Grafana interface outside their designated areas
- Stops plugins from interfering with other plugins functionality
- Protects core Grafana features from being altered by plugins
- Prevents plugins from modifying global browser objects and behaviors
Plugins running inside the Frontend Sandbox should continue to work normally without any noticeable changes in their intended functionality.
### Enable Frontend Sandbox
The Frontend Sandbox feature is currently behind the `pluginsFrontendSandbox` feature flag. To enable it, you'll need to:
1. Enable the feature flag in your Grafana configuration. For more information about enabling feature flags, refer to [Configure feature toggles](/setup-grafana/configure-grafana/feature-toggles/).
2. For self-hosted Grafana installations, add the plugin IDs you want to sandbox in the `security` section using the `enable_frontend_sandbox_for_plugins` configuration option.
For Grafana Cloud users, you can simply use the toggle switch in the plugin catalog page to enable or disable the sandbox for each plugin. By default, the sandbox is disabled for all plugins.
{{% admonition type="note" %}}
Enabling the Frontend Sandbox might impact the performance of certain plugins. Only disable the sandbox if you fully trust the plugin and understand the security implications.
{{% /admonition %}}
### Compatibility
The Frontend Sandbox is available in public preview in Grafana >=11.4. It is compatible with all types of plugins including app plugins, panel plugins, and data source plugins. Angular-based plugins are not supported. Plugins developed and signed by Grafana Labs are excluded and cannot be sandboxed.
### When to Use Frontend Sandbox
We strongly recommend enabling the Frontend Sandbox for plugins that allow users to write custom JavaScript code for data visualization or manipulation. These plugins, while powerful, can potentially execute arbitrary JavaScript code in your Grafana instance. The sandbox provides an additional layer of security by restricting what this code can access and modify.
Examples of plugins where the sandbox is particularly important include:
- Panel plugins that allow users to write custom JavaScript code
- Plugins from untrusted sources
### Troubleshooting
If a plugin isn't functioning correctly with the Frontend Sandbox enabled:
1. Temporarily disable the sandbox for that specific plugin
1. Test if the plugin works correctly without the sandbox
1. If the plugin only works with the sandbox disabled, ensure you trust the plugin source before continuing to use it without sandbox protection
1. Report any sandbox-related issues to the plugin developer
## Learn more
- [Browse plugins](/grafana/plugins)

View File

@@ -73,7 +73,7 @@ Therefore, we heavily rely on the expertise of the community.
## Data sources
You can manage data sources in Grafana by adding YAML configuration files in the [`provisioning/data sources`]({{< 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 configuration file can contain a list of `datasources` to add or update during startup.
If the data source already exists, Grafana reconfigures it to match the provisioned configuration file.
@@ -81,13 +81,9 @@ The configuration file can also list data sources to automatically delete, calle
Grafana deletes the data sources listed in `deleteDatasources` _before_ adding or updating those in the `datasources` list.
You can configure Grafana to automatically delete provisioned data sources when they're removed from the provisioning file.
To do so, add `prune: true` to the root of your provisioning file.
To do so, add `prune: true` to the root of your data source provisioning file.
With this configuration, Grafana also removes the provisioned data sources if you remove the provisioning file entirely.
{{< admonition type="note" >}}
The `prune` parameter is available in Grafana v11.1 and higher.
{{< /admonition >}}
### Running multiple Grafana instances
If you run multiple instances of Grafana, add a version number to each data source in the configuration and increase it when you update the configuration.
@@ -231,9 +227,9 @@ Data sources tagged with _HTTP\*_ communicate using the HTTP protocol, which inc
| encrypt | string | MSSQL | Determines SSL encryption handling. Options include: `disable` - data sent between client and server is not encrypted; `false` - data sent between client and server is not encrypted beyond the login packet; `true` - data sent between client and server is encrypted. Default is `false`. |
| postgresVersion | number | PostgreSQL | Postgres version as a number (903/904/905/906/1000) meaning v9.3, v9.4, ..., v10 |
| timescaledb | boolean | PostgreSQL | Enable usage of TimescaleDB extension |
| maxOpenConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of open connections to the database (Grafana v5.4+) |
| maxIdleConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of connections in the idle connection pool (Grafana v5.4+) |
| connMaxLifetime | number | MySQL, PostgreSQL and MSSQL | Maximum amount of time in seconds a connection may be reused (Grafana v5.4+) |
| maxOpenConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of open connections to the database |
| maxIdleConns | number | MySQL, PostgreSQL and MSSQL | Maximum number of connections in the idle connection pool |
| connMaxLifetime | number | MySQL, PostgreSQL and MSSQL | Maximum amount of time in seconds a connection may be reused |
| keepCookies | array | _HTTP\*_ | Cookies that needs to be passed along while communicating with data sources |
| prometheusVersion | string | Prometheus | The version of the Prometheus data source, such as `2.37.0`, `2.24.0` |
| prometheusType | string | Prometheus | Prometheus database type. Options are `Prometheus`, `Cortex`, `Mimir` or`Thanos`. |
@@ -257,17 +253,17 @@ All of these settings are optional.
The _HTTP\*_ tag denotes data sources that communicate using the HTTP protocol, including all core data source plugins except MySQL, PostgreSQL, and MS SQL.
{{< /admonition >}}
| Name | Type | Data source | Description |
| ----------------- | ------ | ---------------------------------- | -------------------------------------------------------- |
| tlsCACert | string | _HTTP\*_, MySQL, PostgreSQL | CA cert for out going requests |
| tlsClientCert | string | _HTTP\*_, MySQL, PostgreSQL | TLS Client cert for outgoing requests |
| tlsClientKey | string | _HTTP\*_, MySQL, PostgreSQL | TLS Client key for outgoing requests |
| password | string | _HTTP\*_, MySQL, PostgreSQL, MSSQL | password |
| basicAuthPassword | string | _HTTP\*_ | password for basic authentication |
| accessKey | string | Cloudwatch | Access key for connecting to Cloudwatch |
| secretKey | string | Cloudwatch | Secret key for connecting to Cloudwatch |
| sigV4AccessKey | string | Elasticsearch and Prometheus | SigV4 access key. Required when using keys auth provider |
| sigV4SecretKey | string | Elasticsearch and Prometheus | SigV4 secret key. Required when using keys auth provider |
| Name | Type | Data source | Description |
| ----------------- | ------ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tlsCACert | string | _HTTP\*_, MySQL, PostgreSQL | CA cert for out going requests. You can point directly to your stored cert by using an environment variable following the `$__file{path/to/ca}` format. |
| tlsClientCert | string | _HTTP\*_, MySQL, PostgreSQL | TLS Client cert for outgoing requests. You can point directly to your stored cert by using an environment variable following the `$__file{path/to/cert}` format. |
| tlsClientKey | string | _HTTP\*_, MySQL, PostgreSQL | TLS Client key for outgoing requests. You can point directly to your stored key by using an environment variable following the `$__file{path/to/key}` format. |
| password | string | _HTTP\*_, MySQL, PostgreSQL, MSSQL | password |
| basicAuthPassword | string | _HTTP\*_ | password for basic authentication |
| accessKey | string | Cloudwatch | Access key for connecting to Cloudwatch |
| secretKey | string | Cloudwatch | Secret key for connecting to Cloudwatch |
| sigV4AccessKey | string | Elasticsearch and Prometheus | SigV4 access key. Required when using keys auth provider |
| sigV4SecretKey | string | Elasticsearch and Prometheus | SigV4 secret key. Required when using keys auth provider |
#### Custom HTTP headers for data sources
@@ -618,12 +614,22 @@ The following sections detail the supported settings and secure settings for eac
#### Alert notification `webhook`
| Name | Secure setting |
| ---------- | -------------- |
| url | |
| httpMethod | |
| username | |
| password | yes |
| Name | Secure setting |
| ----------- | -------------- |
| url | |
| http_method | |
| username | |
| password | yes |
| tls_config | |
##### TLS config
| Name | Secure setting |
| ------------------ | -------------- |
| insecureSkipVerify | |
| clientCertificate | yes |
| clientKey | yes |
| caCertificate | yes |
#### Alert notification `googlechat`

View File

@@ -100,6 +100,8 @@ The following list contains role-based access control actions.
| `folders:delete` | <ul><li>`folders:*`</li><li>`folders:uid:*`</li></ul> | Delete one or more folders and their subfolders. |
| `folders:read` | <ul><li>`folders:*`</li><li>`folders:uid:*`</li></ul> | Read one or more folders and their subfolders. |
| `folders:write` | <ul><li>`folders:*`</li><li>`folders:uid:*`</li></ul> | Update one or more folders and their subfolders. |
| `groupsync.mappings:read` | None | List group attribute sync mappings. To use this permission, enable the `groupAttributeSync` feature toggle. |
| `groupsync.mappings:write` | None | List, create, update, and delete group attribute sync mappings. To use this permission, enable the `groupAttributeSync` feature toggle. |
| `ldap.config:reload` | None | Reload the LDAP configuration. |
| `ldap.status:read` | None | Verify the availability of the LDAP server or servers. |
| `ldap.user:read` | None | Read users via LDAP. |
@@ -188,16 +190,38 @@ The following list contains role-based access control actions used by Grafana Ad
| Action | Applicable scopes | Description |
| ---------------------------------------------------- | ----------------- | ----------------------------------------------------- |
| `grafanaadaptivemetricsapp.plugin:access` | None | Access the Adaptive Metrics plugin in Grafana Cloud. |
| `grafanaadaptivemetricsapp.config:read` | None | Read the Adaptive Metrics app configuration. |
| `grafanaadaptivemetricsapp.config:write` | None | Update the Adaptive Metrics app configuration. |
| `grafanaadaptivemetricsapp.recommendations:read` | None | Read aggregation recommendations. |
| `grafanaadaptivemetricsapp.recommendations:apply` | None | Apply aggregation recommendations. |
| `grafanaadaptivemetricsapp.rules:read` | None | Read aggregation rules. |
| `grafanaadaptivemetricsapp.rules:write` | None | Create aggregation rules. |
| `grafanaadaptivemetricsapp.rules:delete` | None | Delete aggregation rules. |
| `grafanaadaptivemetricsapp.exemptions:read` | None | Read recommendation exemptions. |
| `grafanaadaptivemetricsapp.exemptions:write` | None | Create, update, and delete recommendation exemptions. |
| `grafana-adaptive-metrics-app.plugin:access` | None | Access the Adaptive Metrics plugin in Grafana Cloud. |
| `grafana-adaptive-metrics-app.config:read` | None | Read the Adaptive Metrics app configuration. |
| `grafana-adaptive-metrics-app.config:write` | None | Update the Adaptive Metrics app configuration. |
| `grafana-adaptive-metrics-app.recommendations:read` | None | Read aggregation recommendations. |
| `grafana-adaptive-metrics-app.recommendations:apply` | None | Apply aggregation recommendations. |
| `grafana-adaptive-metrics-app.rules:read` | None | Read aggregation rules. |
| `grafana-adaptive-metrics-app.rules:write` | None | Create aggregation rules. |
| `grafana-adaptive-metrics-app.rules:delete` | None | Delete aggregation rules. |
| `grafana-adaptive-metrics-app.exemptions:read` | None | Read recommendation exemptions. |
| `grafana-adaptive-metrics-app.exemptions:write` | None | Create, update, and delete recommendation exemptions. |
### Grafana Alerting Notification action definitions
To use these permissions, enable the `alertingApiServer` feature toggle.
| Action | Applicable scopes | Description |
| -------------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `alert.notifications.receivers:read` | `receivers:*`<br>`receivers:uid:*` | Read contact points. |
| `alert.notifications.receivers.secrets:read` | `receivers:*`<br>`receivers:uid:*` | Export contact points with decrypted secrets. |
| `alert.notifications.receivers:create` | None | Create a new contact points. The creator is automatically granted full access to the created contact point. |
| `alert.notifications.receivers:write` | `receivers:*`<br>`receivers:uid:*` | Update existing contact points. |
| `alert.notifications.receivers:delete` | `receivers:*`<br>`receivers:uid:*` | Update and delete existing contact points. |
| `receivers.permissions:read` | `receivers:*`<br>`receivers:uid:*` | Read permissions for contact points. |
| `receivers.permissions:write` | `receivers:*`<br>`receivers:uid:*` | Manage permissions for contact points. |
| `alert.notifications.time-intervals:read` | None | Read mute time intervals. |
| `alert.notifications.time-intervals:write` | None | Create new or update existing mute time intervals. |
| `alert.notifications.time-intervals:delete` | None | Delete existing time intervals. |
| `alert.notifications.templates:read` | None | Read templates. |
| `alert.notifications.templates:write` | None | Create new or update existing templates. |
| `alert.notifications.templates:delete` | None | Delete existing templates. |
| `alert.notifications.routes:read` | None | Read notification policies. |
| `alert.notifications.routes:write` | None | Create new, update or delete notification policies |
## Scope definitions

View File

@@ -54,13 +54,13 @@ The following tables list permissions associated with basic and fixed roles.
## Basic role assignments
| Basic role | UID | Associated fixed roles | Description |
| ------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Grafana Admin | `basic_grafana_admin` | `fixed:roles:reader`<br>`fixed:roles:writer`<br>`fixed:users:reader`<br>`fixed:users:writer`<br>`fixed:org.users:reader`<br>`fixed:org.users:writer`<br>`fixed:ldap:reader`<br>`fixed:ldap:writer`<br>`fixed:stats:reader`<br>`fixed:settings:reader`<br>`fixed:settings:writer`<br>`fixed:provisioning:writer`<br>`fixed:organization:reader`<br>`fixed:organization:maintainer`<br>`fixed:licensing:reader`<br>`fixed:licensing:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:plugins:maintainer`<br>`fixed:authentication.config:writer`<br>`fixed:library.panels:creator`<br>`fixed:library.panels:reader`<br>`fixed:library.panels:general.reader`<br>`fixed:library.panels:writer`<br>`fixed:library.panels:general.writer` | Default [Grafana server administrator](/docs/grafana/<GRAFANA_VERSION>/administration/roles-and-permissions/#grafana-server-administrators) assignments. |
| Admin | `basic_admin` | `fixed:reports:reader`<br>`fixed:reports:writer`<br>`fixed:datasources:reader`<br>`fixed:datasources:writer`<br>`fixed:organization:writer`<br>`fixed:datasources.permissions:reader`<br>`fixed:datasources.permissions:writer`<br>`fixed:teams:writer`<br>`fixed:dashboards:reader`<br>`fixed:dashboards:writer`<br>`fixed:dashboards.permissions:reader`<br>`fixed:dashboards.permissions:writer`<br>`fixed:dashboards.public:writer`<br>`fixed:folders:reader`<br>`fixed:folders:writer`<br>`fixed:folders.permissions:reader`<br>`fixed:folders.permissions:writer`<br>`fixed:alerting:writer`<br>`fixed:apikeys:reader`<br>`fixed:apikeys:writer`<br>`fixed:alerting.provisioning.secrets:reader`<br>`fixed:alerting.provisioning:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:plugins:writer`<br>`fixed:library.panels:creator`<br>`fixed:library.panels:reader`<br>`fixed:library.panels:general.reader`<br>`fixed:library.panels:writer`<br>`fixed:library.panels:general.writer`<br>`fixed:alerting.provisioning.status:writer` | Default [Grafana organization administrator](ref:rbac-basic-roles) assignments. |
| Editor | `basic_editor` | `fixed:datasources:explorer`<br>`fixed:dashboards:creator`<br>`fixed:folders:creator`<br>`fixed:annotations:writer`<br>`fixed:teams:creator` if the `editors_can_admin` configuration flag is enabled<br>`fixed:alerting:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:library.panels:creator`<br>`fixed:library.panels:general.reader`<br>`fixed:library.panels:general.writer`<br>`fixed:alerting.provisioning.status:writer` | Default [Editor](ref:rbac-basic-roles) assignments. |
| Viewer | `basic_viewer` | `fixed:datasources.id:reader`<br>`fixed:organization:reader`<br>`fixed:annotations:reader`<br>`fixed:annotations.dashboard:writer`<br>`fixed:alerting:reader`<br>`fixed:plugins.app:reader`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:library.panels:general.reader`<br>`fixed:datasources:explorer` if the `viewers_can_edit` configuration flag is enabled | Default [Viewer](ref:rbac-basic-roles) assignments. |
| No Basic Role | n/a | | Default [No Basic Role](ref:rbac-basic-roles) |
| Basic role | UID | Associated fixed roles | Description |
| ------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Grafana Admin | `basic_grafana_admin` | `fixed:roles:reader`<br>`fixed:roles:writer`<br>`fixed:users:reader`<br>`fixed:users:writer`<br>`fixed:org.users:reader`<br>`fixed:org.users:writer`<br>`fixed:ldap:reader`<br>`fixed:ldap:writer`<br>`fixed:stats:reader`<br>`fixed:settings:reader`<br>`fixed:settings:writer`<br>`fixed:provisioning:writer`<br>`fixed:organization:reader`<br>`fixed:organization:maintainer`<br>`fixed:licensing:reader`<br>`fixed:licensing:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:plugins:maintainer`<br>`fixed:authentication.config:writer`<br>`fixed:library.panels:creator`<br>`fixed:library.panels:reader`<br>`fixed:library.panels:general.reader`<br>`fixed:library.panels:writer`<br>`fixed:library.panels:general.writer`<br>`fixed:groupsync:writer` | Default [Grafana server administrator](/docs/grafana/<GRAFANA_VERSION>/administration/roles-and-permissions/#grafana-server-administrators) assignments. |
| Admin | `basic_admin` | `fixed:reports:reader`<br>`fixed:reports:writer`<br>`fixed:datasources:reader`<br>`fixed:datasources:writer`<br>`fixed:organization:writer`<br>`fixed:datasources.permissions:reader`<br>`fixed:datasources.permissions:writer`<br>`fixed:teams:writer`<br>`fixed:dashboards:reader`<br>`fixed:dashboards:writer`<br>`fixed:dashboards.permissions:reader`<br>`fixed:dashboards.permissions:writer`<br>`fixed:dashboards.public:writer`<br>`fixed:folders:reader`<br>`fixed:folders:writer`<br>`fixed:folders.permissions:reader`<br>`fixed:folders.permissions:writer`<br>`fixed:alerting:writer`<br>`fixed:apikeys:reader`<br>`fixed:apikeys:writer`<br>`fixed:alerting.provisioning.secrets:reader`<br>`fixed:alerting.provisioning:writer`<br>`fixed:datasources.caching:reader`<br>`fixed:datasources.caching:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:plugins:writer`<br>`fixed:library.panels:creator`<br>`fixed:library.panels:reader`<br>`fixed:library.panels:general.reader`<br>`fixed:library.panels:writer`<br>`fixed:library.panels:general.writer`<br>`fixed:alerting.provisioning.status:writer`<br>`fixed:groupsync:writer` | Default [Grafana organization administrator](ref:rbac-basic-roles) assignments. |
| Editor | `basic_editor` | `fixed:datasources:explorer`<br>`fixed:dashboards:creator`<br>`fixed:folders:creator`<br>`fixed:annotations:writer`<br>`fixed:teams:creator` if the `editors_can_admin` configuration flag is enabled<br>`fixed:alerting:writer`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:library.panels:creator`<br>`fixed:library.panels:general.reader`<br>`fixed:library.panels:general.writer`<br>`fixed:alerting.provisioning.status:writer` | Default [Editor](ref:rbac-basic-roles) assignments. |
| Viewer | `basic_viewer` | `fixed:datasources.id:reader`<br>`fixed:organization:reader`<br>`fixed:annotations:reader`<br>`fixed:annotations.dashboard:writer`<br>`fixed:alerting:reader`<br>`fixed:plugins.app:reader`<br>`fixed:dashboards.insights:reader`<br>`fixed:datasources.insights:reader`<br>`fixed:library.panels:general.reader`<br>`fixed:datasources:explorer` if the `viewers_can_edit` configuration flag is enabled | Default [Viewer](ref:rbac-basic-roles) assignments. |
| No Basic Role | n/a | | Default [No Basic Role](ref:rbac-basic-roles) |
## Fixed role definitions
@@ -115,6 +115,8 @@ To learn how to use the roles API to determine the role UUIDs, refer to [Manage
| `fixed:folders.permissions:reader` | `fixed_E06l4cx0JFm47EeLBE4nmv3pnSo` | `folders.permissions:read` | Read all folder permissions. |
| `fixed:folders.permissions:writer` | `fixed_3GAgpQ_hWG8o7-lwNb86_VB37eI` | All permissions from `fixed:folders.permissions:reader` and <br>`folders.permissions:write` | Read and update all folder permissions. |
| `fixed:ldap:reader` | `fixed_lMcOPwSkxKY-qCK8NMJc5k6izLE` | `ldap.user:read`<br>`ldap.status:read` | Read the LDAP configuration and LDAP status information. |
| `fixed:groupsync:reader` | `fixed_tLIbDrE6kw93sKqooF8GVS9BF4E` | `groupsync.mappings:read` | List all group attribute sync mappings. To use this role, enable the `groupAttributeSync` feature toggle. |
| `fixed:groupsync:writer` | `fixed_q7XUYx_efzxxsVmWhQgpiYClwBs` | `groupsync.mappings:read`<br>`groupsync.mappings:write` | Create, read, update, and delete all group attribute sync mappings. To use this role, enable the `groupAttributeSync` feature toggle. |
| `fixed:ldap:writer` | `fixed_p6AvnU4GCQyIh7-hbwI-bk3GYnU` | All permissions from `fixed:ldap:reader` and <br>`ldap.user:sync`<br>`ldap.config:reload` | Read and update the LDAP configuration, and read LDAP status information. |
| `fixed:library.panels:creator` | `fixed_6eX6ItfegCIY5zLmPqTDW8ZV7KY` | `library.panels:create`<br>`folders:read` | Create library panel at the root level. |
| `fixed:library.panels:general.reader` | `fixed_ct0DghiBWR_2BiQm3EvNPDVmpio` | `library.panels:read` | Read all library panels at the root level. |

View File

@@ -27,7 +27,7 @@ filters = accesscontrol:debug accesscontrol.evaluator:debug dashboard.permission
## Enable audit logging
{{% admonition type="note" %}}
Available in [Grafana Enterprise](/docs/grafana/<GRAFANA_VERSION>/introduction/grafana-enterprise/) version 7.3 and later, and [Grafana Cloud](/docs/grafana-cloud).
Available in [Grafana Enterprise](/docs/grafana/<GRAFANA_VERSION>/introduction/grafana-enterprise/) and [Grafana Cloud](/docs/grafana-cloud).
{{% /admonition %}}
You can enable auditing in the Grafana configuration file.

View File

@@ -27,10 +27,6 @@ cards:
href: ./fundamentals/
description: Learn more about the fundamentals and available features that help you create, manage, and respond to alerts; and improve your teams ability to resolve issues quickly.
height: 24
- title: Set up
href: ./set-up/
description: Set up your implementation of Grafana Alerting.
height: 24
- title: Configure alert rules
href: ./alerting-rules/
description: Create, manage, view, and adjust alert rules to alert on your metrics data or log entries from multiple data sources — no matter where your data is stored.
@@ -39,13 +35,13 @@ cards:
href: ./configure-notifications/
description: Choose how, when, and where to send your alert notifications.
height: 24
- title: Detect and respond
- title: Monitor status
href: ./manage-notifications/
description: Monitor, respond to, and triage issues within your services.
height: 24
- title: Monitor
href: ./monitor/
description: Monitor your alerting metrics to ensure you identify potential issues before they become critical.
- title: Additional configuration
href: ./set-up/
description: Use advanced configuration options to further tailor your alerting setup. These options can enhance security, scalability, and automation in complex environments.
height: 24
---

View File

@@ -1,45 +0,0 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/create-alerts-panels/
description: Create alert rules from panels. Reuse the queries in the panel and create alert rules based on them.
keywords:
- grafana
- alerting
- panels
- create
- grafana-managed
- data source-managed
labels:
products:
- cloud
- enterprise
- oss
title: Create alert rules from panels
weight: 400
---
## Create alert rules from panels
Create alert rules from time series panels. By doing so, you can reuse the queries in the panel and create alert rules based on them.
1. Navigate to a dashboard in the **Dashboards** section.
2. Hover over the top-right corner of a time series panel and click the panel menu icon.
3. From the dropdown menu, select **More...** > **New alert rule**.
The New alert rule form opens where you can configure and create your alert rule based on the query used in the panel.
{{% admonition type="note" %}}
Changes to the panel aren't reflected on the linked alert rules. If you change a query, you have to update it in both the panel and the alert rule.
Alert rules are only supported in [time series](ref:time-series) visualizations.
{{% /admonition %}}
{{< docs/play title="visualizations with linked alerts in Grafana" url="https://play.grafana.org/d/000000074/" >}}
## View alert rules from panels
To view alert rules associated with a time series panel, complete the following steps.
1. Open the panel editor by hovering over the top-right corner of any panel
1. Click the panel menu icon that appears.
1. Click **Edit**.
1. Click the **Alert** tab to view existing alert rules or create a new one.

View File

@@ -64,16 +64,17 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/
alert-list:
link-alert-rules-to-panels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/alert-list/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/link-alert-rules-to-panels/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/alert-list/
time-series:
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/link-alert-rules-to-panels/
data-sources:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/time-series/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/time-series/
destination: /docs/grafana/<GRAFANA_VERSION>/datasources/
compatible-data-sources:
- pattern: /docs/grafana/
destination: /docs/grafana/GRAFANA_VERSION>/alerting/fundamentals/alert-rules/#supported-data-sources
---
# Configure Grafana-managed alert rules
@@ -84,6 +85,9 @@ Multiple alert instances can be created as a result of one alert rule (also know
{{% admonition type="note" %}}
For Grafana Cloud Free Forever, you can create up to 100 free Grafana-managed alert rules with each alert rule having a maximum of 1000 alert instances.
For all paid tiers (Cloud Pro and Advanced), there is a soft limit of 2000 alert rules and unlimited alert instances. To increase the limit, open a support ticket from the [Cloud portal](https://grafana.com/docs/grafana-cloud/account-management/support/).
{{% /admonition %}}
Grafana-managed alert rules can only be edited or deleted by users with Edit permissions for the folder storing the rules.
@@ -93,6 +97,13 @@ To make a backup of your configuration and to be able to restore deleted alertin
## Before you begin
If you are using Grafana OSS:
1. Configure your [data sources](ref:data-sources).
1. Check which [data sources](ref:compatible-data-sources) are compatible with and supported by Grafana Alerting.
If you are using Grafana OSS, Enterprise, or Cloud:
You can use default or advanced options for Grafana-managed alert rule creation. The default options streamline rule creation with a cleaner header and a single query and condition. For more complex rules, use advanced options to add multiple queries and expressions.
Default and advanced options are enabled by default for Grafana Cloud users and this feature is being rolled out progressively.
@@ -257,13 +268,9 @@ Annotations add metadata to provide more information on the alert in your alert
Webpage where you keep your runbook for the alert
1. Optional: Add a custom annotation
1. Optional: Add a **dashboard and panel link**.
1. Optional: **Link dashboard and panel**.
Links alert rules to panels in a dashboard.
{{% admonition type="note" %}}
At the moment, alert rules are only supported in [time series](ref:time-series) and [alert list](ref:alert-list) visualizations.
{{% /admonition %}}
[Link the alert rule to a panel](ref:link-alert-rules-to-panels) to facilitate alert investigation.
1. Click **Save rule**.

View File

@@ -1,184 +0,0 @@
---
aliases:
- ../unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
description: Create recording rules for an external Grafana Mimir or Loki instance
keywords:
- grafana
- alerting
- guide
- rules
- recording rules
- configure
labels:
products:
- cloud
- enterprise
- oss
title: Configure recording rules
weight: 300
refs:
configure-grafana:
- pattern: /docs/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/
annotation-label:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/
---
# Configure recording rules
{{< admonition type="note" >}}
In Grafana Cloud, you can only create data source-managed recording rules.
In Grafana OSS and Enterprise, you can create both Grafana-managed and data source-managed recording rules if you enable the `grafanaManagedRecordingRules` feature flag.
For more information on enabling feature toggles, refer to [Configure feature toggles](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/feature-toggles).
{{< /admonition >}}
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.
For more information on recording rules in Prometheus, refer to [Defining recording rules in Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/).
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](ref: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.
## Configure data source-managed recording rules
Configure data source-managed recording rules.
### 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.
- For Grafana Mimir and Loki data sources, enable the ruler API by configuring their respective services.
- **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](/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.
To configure data-source managed recording rules, complete the following steps.
1. Click **Alerts & IRM** -> **Alerting** ->
**Alert rules**.
1. Scroll to the **Data source-managed section** and click **+New recording rule**.
#### Enter recording rule name
The recording rule name must be a Prometheus metric name and contain no whitespace.
#### Define recording rule
Select your data source and enter a query.
#### Add namespace and group
1. 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.
1. 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 labels
1. Add custom labels selecting existing key-value pairs from the drop down, or add new labels by entering the new key or value.
1. Click **Save rule** to save the rule or **Save rule and exit** to save the rule and go back to the Alerting page.
## Configure Grafana-managed recording rules
Configure Grafana-managed recording rules.
{{< admonition type="note" >}}
This feature is only available for Grafana OSS and Enterprise users. It is not available in Grafana Cloud.
{{< /admonition >}}
### Before you begin
- Enable the `grafanaManagedRecordingRules` [feature flag](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/feature-toggles/).
To configure Grafana-managed recording rules, complete the following steps.
1. Click **Alerts & IRM** -> **Alerting** ->
**Alert rules**.
1. Scroll to the **Grafana-managed section** and click **+New recording rule**.
#### Enter a recording rule and metric name
Enter a names to identify your recording rule and metric. The metric name must be a Prometheus metric name and contain no whitespace.
For more information, refer to [Metrics and labels](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
#### Define recording rule
Define a query to get the data you want to measure and a condition that needs to be met before an alert rule fires.
1. Select a data source.
1. From the **Options** dropdown, specify a time range.
{{< admonition type="note" >}}
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`.
{{< /admonition >}}
1. Add a query.
To add multiple queries, click **Add query**.
All alert rules are managed by Grafana by default. If you want to switch to a data source-managed alert rule, click **Switch to data source-managed alert rule**.
2. Add one or more [expressions].
a. For each expression, select either **Classic condition** to create a single alert rule, or choose from the **Math**, **Reduce**, and **Resample** options to generate separate alert for each series.
{{% admonition type="note" %}}
When using Prometheus, you can use an instant vector and built-in functions, so you don't need to add additional expressions.
{{% /admonition %}}
b. Click **Preview** to verify that the expression is successful.
3. To add a recovery threshold, turn the **Custom recovery threshold** toggle on and fill in a value for when your alert rule should stop firing.
You can only add one recovery threshold in a query and it must be the alert condition.
4. Click **Set as alert condition** on the query or expression you want to set as your alert condition.
#### Set evaluation behavior
Use alert rule evaluation to determine how frequently an alert rule should be evaluated and how quickly it should change its state.
To do this, you need to make sure that your alert rule is in the right evaluation group and set a pending period time that works best for your use case.
1. Select a folder or click **+ New folder**.
1. Select an evaluation group or click **+ New evaluation group**.
If you are creating a new evaluation group, specify the interval for the group.
All rules within the same group are evaluated concurrently over the same time interval.
1. Enter a pending period.
The pending period is the period in which an alert rule can be in breach of the condition until it fires.
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. Turn on pause alert notifications, if required.
{{< admonition type="note" >}}
You can pause alert rule evaluation to prevent noisy alerting while tuning your alerts.
Pausing stops alert rule evaluation and doesn't create any alert instances.
This is different to mute timings, which stop notifications from being delivered, but still allows for alert rule evaluation and the creation of alert instances.
{{< /admonition >}}
#### Add labels
Add labels to your rule for searching, silencing, or routing to a notification policy.

View File

@@ -1,8 +1,8 @@
---
aliases:
- ../unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-rule/
- ../unified-alerting/alerting-rules/edit-cortex-loki-namespace-group/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/edit-cortex-loki-namespace-group/
- ../unified-alerting/alerting-rules/edit-mimir-loki-namespace-group/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/edit-mimir-loki-namespace-group/
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/create-mimir-loki-managed-rule/
description: Configure data source-managed alert rules alert for an external Grafana Mimir or Loki instance
keywords:
@@ -29,16 +29,11 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/
alert-list:
link-alert-rules-to-panels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/alert-list/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/link-alert-rules-to-panels/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/alert-list/
time-series:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/time-series/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/time-series/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/link-alert-rules-to-panels/
---
# Configure data source-managed alert rules
@@ -142,12 +137,8 @@ Annotations add metadata to provide more information on the alert in your alert
Webpage where you keep your runbook for the alert
1. Optional: Add a custom annotation
1. Optional: Add a **dashboard and panel link**.
1. Optional: **Link dashboard and panel**.
Links alerts to panels in a dashboard.
{{% admonition type="note" %}}
At the moment, alert rules are only supported in [time series](ref:time-series) and [alert list](ref:alert-list) visualizations.
{{% /admonition %}}
[Link the alert rule to a panel](ref:link-alert-rules-to-panels) to facilitate alert investigation.
1. Click **Save rule**.

View File

@@ -0,0 +1,54 @@
---
aliases:
- ../fundamentals/alert-rules/recording-rules/ # /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/recording-rules/
- ../unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-cortex-loki-managed-recording-rule/
- ../unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
- ../alerting-rules/create-mimir-loki-managed-recording-rule/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-mimir-loki-managed-recording-rule/
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/create-recording-rules/
description: Recording rules allow you to pre-compute frequently needed or computationally expensive expressions and save the results as a new set of time series. Querying precomputed results is faster and can reduce system load.
keywords:
- grafana
- alerting
- guide
- rules
- recording rules
- configure
labels:
products:
- cloud
- enterprise
- oss
title: Create recording rules
weight: 400
refs:
grafana-managed-recording-rules:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-recording-rules/create-grafana-managed-recording-rules/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-recording-rules/create-grafana-managed-recording-rules/
data-source-managed-recording-rules:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-recording-rules/create-data-source-managed-recording-rules/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-recording-rules/create-data-source-managed-recording-rules/
---
# Configure recording rules
Recording rules allows you to periodically pre-compute frequently used or computationally expensive queries, saving the results as a new time series metric.
For instance, you can create a recording rule generating a new metric, `error_9001_count`, which counts occurrences of a specific log error within one minute. Then, query the `error_9001_count` metric in dashboards and alert rules.
Recording rules can be helpful in various scenarios, such as:
- **Faster queries** are needed: Performing heavy aggregations or querying large data sets is quicker with precomputed results than real-time queries.
- **Reducing system load:** Precomputing specific queries in advance can reduce system overload caused by multiple simultaneous queries.
- **Simplifying complex aggregations:** Create a new metric from complex aggregations to facilitate alert and dashboard setup.
- **Reusing queries across alerts:** Improve efficiency by reusing the same query across similar alert rules and dashboards.
The evaluation group of the recording rule determines how often the metric is pre-computed.
Similar to alert rules, Grafana supports two types of recording rules:
1. [Grafana-managed recording rules](ref:grafana-managed-recording-rules), which can query any Grafana data source supported by alerting.
2. [Data source-managed recording rules](ref:data-source-managed-recording-rules), which can query Prometheus-based data sources like Mimir or Loki.

View File

@@ -0,0 +1,79 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/create-recording-rules/create-data-source-managed-recording-rules/
description: Recording rules allow you to pre-compute expensive queries in advance and save the results as a new set of time series. Data source-managed recording rules can create a recording rule for Prometheus-based data sources like Mimir or Loki.
keywords:
- grafana
- alerting
- guide
- rules
- recording rules
- configure
labels:
products:
- cloud
- enterprise
- oss
title: Create data source-managed recording rules
weight: 402
refs:
create-recording-rules:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-recording-rules/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-recording-rules/
---
# Create data source-managed recording rules
[Recording rules](ref:create-recording-rules) allow you to periodically pre-compute frequently used or computationally expensive queries, saving the results as a new time series metric.
Alert rules and dashboards can then query the new metric resulting from the recording rule. This is faster than querying real-time data and can help to reduce system load.
Data source-managed recording rules can query Prometheus-based data sources like Mimir or Loki. For more information on recording rules in Prometheus, refer to [Defining recording rules in Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/).
Note that in data source-managed groups, the alert rules and recording rules within the same evaluation group are evaluated sequentially. This is useful to ensure that a recording rule is evaluated before any other alert rule queries the pre-computed metric.
## 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.
- For Grafana Mimir and Loki data sources, enable the ruler API by configuring their respective services.
- **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](/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.
## Add new recording rule
To create a new data source-managed recording rule:
1. Click **Alerts & IRM** -> **Alerting** -> **Alert rules**.
1. Scroll to the **Data source-managed section** and click **+New recording rule**.
## Enter recording rule name
The recording rule name must be a Prometheus metric name and contain no whitespace.
## Define recording rule
Select your data source and enter a query. The queries used in data source-managed recording rules always run as instant queries.
## Add namespace and group
1. 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.
1. 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 labels
Optionally, you can add custom labels to the resulting metric by selecting existing key-value pairs from the drop down or entering the new key or value.
## Query the new metric in dashboards or alert rules
Click **Save rule** or **Save rule and exit** to save the rule.
Once saved, the new recording metric is available for use in dashboards and alert rules.

View File

@@ -0,0 +1,151 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/create-recording-rules/create-grafana-managed-recording-rules/
description: Recording rules allow you to pre-compute expensive queries in advance and save the results as a new set of time series. Grafana-managed recording rules can create a recording rule for any data source supported by alerting.
keywords:
- grafana
- alerting
- guide
- rules
- recording rules
- configure
labels:
products:
- cloud
- enterprise
- oss
title: Create Grafana-managed recording rules
weight: 401
refs:
expressions:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/queries-conditions/#expression-queries
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/queries-conditions/#expression-queries
create-recording-rules:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-recording-rules/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-recording-rules/
alerting-data-sources:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/#supported-data-sources
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/#supported-data-sources
configure-grafana-min-interval:
- pattern: /docs/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#min_interval
configure-feature-toggles:
- pattern: /docs/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/feature-toggles/
---
# Create Grafana-managed recording rules
[Recording rules](ref:create-recording-rules) allow you to periodically pre-compute frequently used or computationally expensive queries, saving the results as a new time series metric.
Alert rules and dashboards can then query the new metric resulting from the recording rule. This is faster than querying real-time data and can help to reduce system load.
Grafana does not contain an embedded time-series database to store recording rule results. You must bring your own Prometheus-compatible database to store the series generated by recording rules.
Grafana-managed recording rules offer the same Prometheus-like semantics but allow you to query [data sources supported by alerting](ref:alerting-data-sources). Additionally, you can use recording rules to import and map data from other data sources into Prometheus.
{{< admonition type="note" >}}
Grafana-managed recording rules are enabled by default in Grafana Cloud.
In Grafana OSS and Enterprise, you must enable them by following the [Before you begin](#before-you-begin) instructions.
{{< /admonition >}}
To configure Grafana-managed recording rules, complete the following steps.
## Before you begin
This section only applies to Grafana OSS and Grafana Enterprise.
First, enable the `grafanaManagedRecordingRules` [feature flag](ref:configure-feature-toggles).
Then, enable the feature by setting `enabled = true` in the `[recording_rules]` section of the Grafana config .ini. Provide the URL of your Prometheus-compatible remote-write endpoint in the `url` field, along with optional credentials or headers.
```
[recording_rules]
enabled = true
url = http://my-example-prometheus.local:9090/api/prom/push
basic_auth_username = my-user
basic_auth_password = my-pass
[recording_rules.custom_headers]
X-My-Header = MyValue
```
## Add new recording rule
To create a new Grafana-managed recording rule:
1. Click **Alerts & IRM** -> **Alerting** ->
**Alert rules**.
1. Scroll to the **Grafana-managed section** and click **+New recording rule**.
1. Enter the names to identify your recording rule and metric.
The metric name must be a Prometheus metric name and contain no whitespace. For details, refer to [Prometheus metric names](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
## Define recording rule
Define a query to get the data you want to measure and set the recording rule output.
1. Select a data source.
1. From the **Options** dropdown, specify a time range.
{{< admonition type="note" >}}
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`.
{{< /admonition >}}
1. Add a query.
To add multiple queries, click **Add query**.
1. Add one or more [expressions](ref:expressions).
a. For each expression, select either **Classic condition** to create a single recording rule, or choose from the **Math**, **Reduce**, and **Resample** options.
When using Prometheus, you can use an instant vector and built-in functions, so you don't need to add additional expressions.
b. Click **Preview** to verify that the expression is successful.
1. Click **Set as recording rule output** on the query or expression you want to set as your rule output.
## Set evaluation behavior
Use recording rule evaluation to determine how frequently a recording rule should be evaluated.
To do this, you need to make sure that your recording rule is in the right evaluation group with an interval that works best for your use case.
1. Select a folder or click **+ New folder**.
1. Select an evaluation group or click **+ New evaluation group**.
If you are creating a new evaluation group, specify the interval for the group.
All rules within the same group are evaluated concurrently over the same time interval. Every recording rule in a group uses the same evaluation time, meaning that all queries from the same group are always aligned with each other.
1. Before or after creating a recording rule, you have the option to **Pause evaluation** if necessary.
### Advanced configuration
[min_interval](ref:configure-grafana-min-interval) sets the minimum interval to enforce between rule evaluations. The default value is 10s which equals the scheduler interval. Rules are 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.
This setting applies to both Grafana-managed alert and recording rules.
## Add labels
Optionally, you can add custom labels to the resulting metric by selecting existing key-value pairs from the drop down or entering the new key or value.
## Query the new metric in dashboards or alert rules
Click **Save rule** or **Save rule and exit** to save the rule.
Once saved, the new recording metric is available for use in dashboards and alert rules.

View File

@@ -0,0 +1,84 @@
---
aliases:
- ../../alerting/alerting-rules/create-alerts-panels/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-alerts-panels/
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/link-alert-rules-to-panels/
description: Grafana allows you to link alert rules with panels and dashboards. This helps connect alerts with an existing dashboard and informs alert responders on where to investigate.
keywords:
- grafana
- alerting
- panels
- create
- grafana-managed
- data source-managed
labels:
products:
- cloud
- enterprise
- oss
title: Create and link alert rules to panels
weight: 300
refs:
time-series-visualizations:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/time-series/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/time-series/
annotations:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/#annotations
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/#annotations
view-alert-state-on-panels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/view-alert-state-on-panels/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/view-alert-state-on-panels/
---
# Create and link alert rules to panels
Grafana allows you to link an alert rule to a dashboard panel. This can help you:
- Inform alert responders about where to investigate and which data to examine.
- Visualize the alert state directly from dashboards.
An alert rule is linked to a panel by setting the [`dashboardUId` and `panelId` annotations](ref:annotations). Both annotations must be set together.
## Link alert rules to panels
When configuring the alert rule, you can set the dashboard and panel annotations as shown in this [video](https://youtu.be/ClLp-iSoaSY?si=qKWnvSVaQuvYcuw9&t=170).
1. Configure the alert rule.
1. In the **Configure notification message** section, click **Link dashboard and panel**.
1. Select an existing dashboard, then choose a panel from the selected dashboard.
1. Complete the alert rule configuration and click **Save rule** to initiate the alert rule.
You can then [view the alert state on the panel](ref:view-alert-state-on-panels).
{{< figure src="/media/docs/alerting/panel-displays-alert-state.png" max-width="1200px" caption="A panel displaying the alert status and state changes." >}}
## Create alert rules from panels
To streamline alert creation, you can create an alert rule directly from a panel.
1. Navigate to a dashboard in the **Dashboards** section.
1. Hover over the top-right corner of a panel and click the panel menu icon.
1. From the dropdown menu, select **More...** > **New alert rule**.
1. This opens the **Edit rule** form and pre-fills some values:
- Sets the `dashboardUId` and `panelId` annotations to the corresponding dashboard and panel.
- Sets the alert rule query using the panel query.
1. Complete the alert rule configuration and click **Save rule** to initiate the alert rule.
You can then [view the alert state on the panel](ref:view-alert-state-on-panels).
{{% admonition type="note" %}}
Changes to panel and alert rule queries aren't synchronized. If you change a query, you have to update it in both the panel and the alert rule.
{{% /admonition %}}
## Access linked alert rules from panels
This option is available only in [time series panels](ref:time-series-visualizations). To access alert rules associated to a time series panel, complete the following steps.
1. Hover over the top-right corner of the panel and click the panel menu icon.
1. Click **Edit**.
1. Click the **Alert** tab to view existing alert rules or create a new one.

View File

@@ -0,0 +1,215 @@
---
aliases:
- ../fundamentals/annotation-label/variables-label-annotation/ # /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label/variables-label-annotation/
- ../alerting-rules/templating-labels-annotations/ # /docs/grafana/<GRAFANA_VERSION>/alerting-rules/templating-labels-annotations/
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/templates/
description: Learn how to template annotations and labels to include data from queries and expressions in alert messages
keywords:
- grafana
- alerting
- templating
- labels
- annotations
labels:
products:
- cloud
- enterprise
- oss
title: Template annotations and labels
weight: 500
refs:
labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/#labels
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/#labels
values:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/#values
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/#values
annotations:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/#annotations
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/#annotations
explore:
- pattern: /docs/
destination: /docs/grafana/<GRAFANA_VERSION>/explore/
intro-to-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/templates/
alert-rule-template-reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/
alert-rule-template-examples:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/examples/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/examples/
notification-template-reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/
notification-data-reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/#notification-data
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/#notification-data
view-alert-state:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/view-state-health/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/manage-notifications/view-state-health/
preview-notifications:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/manage-notification-templates/#preview-notification-templates
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/manage-notification-templates/#preview-notification-templates
---
# Template annotations and labels
You can use templates to customize alert and notification messages, including dynamic data from alert rule queries.
In Grafana Alerting, you can template alert messages in two ways.
1. **Template annotations and labels**: In the alert rule definition, you can template annotations and labels to include extra information from query data to the alert, adding meaningful details based on the query results.
1. **Template notifications**: You can template notifications to control the content and appearance of your notifications.
## How templating works
In this diagram, you can see the differences between both types of templates.
{{< figure src="/media/docs/alerting/how-notification-templates-works.png" max-width="1200px" alt="How templating works" >}}
Refer to [Templates Introduction](ref:intro-to-templates) for a more detailed explanation of this diagram.
Both types of templates are written in the Go templating system. However, it's important to understand that variables and functions used in notification templates are different from those used in annotation and label templates.
1. **Template annotations and labels**: These templates add extra information to individual alert instances. Template variables like [`$labels`](ref:labels) and [`$values`](ref:values) represent alert query data of the individual alert instance.
1. **Template notifications**: Notification templates format the notification content for a group of alerts. Variables like [`.Alerts`](ref:notification-data-reference) include all firing and resolved alerts in the notification.
## Template annotations
[Annotations](ref:annotations) add additional information to alert instances and are often used to help identify the alert and guide responders on how to address the issue.
Annotations are key-value pairs defined in the alert rule. They can contain plain text or template code that is evaluated when the alert fires.
Grafana includes several optional annotations, such as `description`, `summary`, `runbook_url`, `dashboardUId` and `panelId`, which can be edited in the alert rule. You can also create your custom annotations. For example, you might create a new annotation named `location` to report the location of the system that triggered the alert.
Heres an example of a `summary` annotation explaining why the alert was triggered, using plain text.
```
CPU usage has exceeded 80% for the last 5 minutes.
```
However, if you want to display dynamic query values in annotations, you need to use template code. Common use cases include:
- Displaying the query value or threshold that triggered the alert.
- Highlighting label information that identifies the alert, such as environment, region, or priority.
- Providing specific instructions based on query values.
- Customizing runbook links depending on query or label values.
- Including contact information based on alert labels.
For instance, you can template the previous example to display the specific instance and CPU value that triggered the alert.
```
CPU usage for {{ $labels.instance }} has exceeded 80% ({{ $values.A.Value }}) for the last 5 minutes.
```
Alternatively, you can use the `index` function to print query values.
```
CPU usage for {{ index $labels "instance" }} has exceeded 80% ({{ index $values "A" }}) for the last 5 minutes.
```
The result of the annotation would be as follows.
```
CPU usage for Instance 1 has exceeded 80% (81.2345) for the last 5 minutes.
```
### How to template an annotation
Complete the following steps to template an annotation.
1. Navigate to **Alerts & IRM** -> **Alert rules** -> create or edit an alert rule.
1. Scroll down to the **Configure notification message** section.
1. Copy in your template in the corresponding annotation field (`summary`, `description`, `runbook_url`, `custom`).
### Preview annotation templates
You can template annotations when creating or editing an alert rule.
{{< figure src="/media/docs/alerting/alert-rule-using-annotation-template.png" max-width="1200px" alt="An alert rule templating the annotation summary" >}}
Two common methods are used to test and preview annotation templates:
1. Trigger the alert and [view the alert instance state in the Grafana UI](ref:view-alert-state), where all annotations of the alert instance are displayed.
1. Use a notification template that displays all annotations, then [preview the notification template](ref:preview-notifications) using the alert instance.
## Template labels
The set of [labels](ref:labels) for an alert instance is used to uniquely identify that alert among all other alert instances.
Labels determine how alerts are routed and managed for notifications, making their design key to the effectiveness of your alerting system.
Labels can be returned from an alert rule query, such as the `pod` label in a Kubernetes Prometheus query. You can also define additional labels in the alert rule to provide extra information for processing alerts.
Like annotations, labels are key-value pairs that can contain plain text or template code evaluated when the alert fires.
Template labels when the labels returned by your queries are insufficient. For instance:
- A new label based on a query value can group a subset of alerts differently, changing how notifications are sent.
- A new label based on a query value can be used in a notification policy to alter the notification contact point.
Heres an example of templating a `severity` label based on the query value.
```
{{ if (gt $values.A.Value 90.0) -}}
critical
{{ else if (gt $values.A.Value 80.0) -}}
high
{{ else if (gt $values.A.Value 60.0) -}}
medium
{{ else -}}
low
{{- end }}
```
In this example, the value of the `severity` label is determined by the query value, and the possible options are `critical`, `high`, `medium`, or `low`. You can then use the `severity` label to change their notifications—for instance, sending `critical` alerts immediately or routing `low` alerts to a specific team for further review.
{{% admonition type="note" %}}
You should avoid displaying query values in labels, as this may create numerous unique alert instances—one for each distinct label value. Instead, use annotations for query values.
{{% /admonition %}}
### How to template a label
Complete the following steps to template a label.
1. Navigate to **Alerts & IRM** -> **Alert rules** -> create or edit an alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Click **+ Add labels**.
1. Enter a **key** that identifies the label.
1. Copy in your template in the **value** field.
### Preview label templates
You can template label values when creating or editing an alert rule.
To preview label values, select `Use notification policy`, and then click on `Preview routing`.
{{< figure src="/media/docs/alerting/alert-instance-routing-preview.png" max-width="1200px" alt="Routing preview displays label values" >}}
## More information
For further details on how to template alert rules, refer to:
- [Annotation and label template reference](ref:alert-rule-template-reference)
- [Annotation and label examples](ref:alert-rule-template-examples)

View File

@@ -0,0 +1,308 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/templates/examples/
description: Examples of templating labels and annotations in Grafana alert rules
keywords:
- grafana
- alerting
- templating
- labels
- annotations
labels:
products:
- cloud
- enterprise
- oss
title: Labels and annotations template examples
menuTitle: Examples
weight: 102
refs:
labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/#labels
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/#labels
annotations:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/#annotations
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/#annotations
alert-rule-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/
- pattern: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/
reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/
reference-labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#labels
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#labels
reference-values:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#values
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#values
reference-humanize:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#humanize
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#humanize
reference-humanizepercentage:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#humanizepercentage
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#humanizepercentage
reference-match:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#match
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#match
reference-functions:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#functions
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#functions
language-functions:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/language/#functions
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/language/#functions
language-index:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/language/#functions
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/language/#functions
language:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/language
- pattern: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/language
---
# Labels and annotations template examples
Templating allows you to add dynamic data from queries to alert labels and annotations. Dynamic data enhances alert context, making it easier for responders to quickly assess and address the issue.
This page provides common examples for templating labels and annotations. For more information on templating, refer to:
- [Template annotations and labels](ref:alert-rule-templates)
- [Annotation and label template reference](ref:reference)
- [Alerting template language](ref:language)
## Annotation example
[Annotations](ref:annotations) add extra details to alert instances and are often used to provide helpful information for identifying the issue and guiding the response.
A common use case for annotations is to display the specific query value or threshold that triggered the alert.
For example, you can display the query value from the [`$values`](ref:reference-values) variable to inform about the CPU value that triggered the alert.
```
CPU usage has exceeded 80% ({{ $values.A.value }}) for the last 5 minutes.
```
Alternatively, you can use the [`index()`](ref:language-index) function to retrieve the query value as follows.
```
CPU usage has exceeded 80% ({{ index $values "A" }}) for the last 5 minutes.
```
```template_output
CPU usage has exceeded 80% (81.2345) for the last 5 minutes.
```
### Include labels for extra details
To provide additional context, you can include labels from the query. For instance, access the [`$labels`](ref:reference-labels) variable to display a label that informs about the affected instance:
```
CPU usage for {{ $labels.instance }} has exceeded 80% ({{ $values.A.Value }}) for the last 5 minutes.
```
```template_output
CPU usage for Instance 1 has exceeded 80% (81.2345) for the last 5 minutes.
```
Annotations can also be used to provide a summary of key alert labels, such as the environment and alert severity. For instance, you can display a summary of the alert with important labels like:
```
Alert triggered in {{ $labels.environment }} with severity {{ $labels.severity }}
```
```template_output
Alert triggered in production with severity critical.
```
### Print a range query
To print the value of an instant query you can print its Ref ID using the `index` function or the `$values` variable:
```
{{ $values.A.Value }}
```
For range queries, reduce them from a time series to an instant vector using a reduce expression. You can then print the result by referencing its Ref ID. For example, if the reduce expression averages `A` with the Ref ID `B`, you would then print `$values.B`:
```
{{ $values.B.Value }}
```
### Humanize the value of a query
To print the humanized value of an instant query, use the [`humanize`](ref:reference-humanize) function:
```
{{ humanize $values.A.Value }}
```
Alternatively:
```
{{ humanize (index $values "A").Value }}
```
```template_output
554.9
```
To print the value of an instant query as a percentage, use the [`humanizePercentage`](ref:reference-humanizepercentage) function:
```
{{ humanizePercentage $values.A.Value }}
```
```template_output
10%
```
For additional functions to display or format data, refer to:
- [Annotation and label template functions](ref:reference-functions)
- [Template language functions](ref:language-functions)
## Label example
[Labels](ref:labels) determine how alerts are routed and managed, ensuring that notifications reach the right teams at the right time. If the labels returned by your queries dont fully capture the necessary context, you can create a new label and sets its value based on query data.
### Based on query value
Heres an example of creating a `severity` label based on a query value:
```go
{{ if (gt $values.A.Value 90.0) -}}
critical
{{ else if (gt $values.A.Value 80.0) -}}
high
{{ else if (gt $values.A.Value 60.0) -}}
medium
{{ else -}}
low
{{- end }}
```
In this example, the `severity` label is determined by the query value:
- `critical` for values above 90,
- `high` for values above 80,
- `medium` for values above 60,
- and `low` for anything below.
You can then use the `severity` label to control how alerts are handled. For instance, you could send `critical` alerts immediately, while routing `low` severity alerts to a team for further investigation.
{{% admonition type="note" %}}
You should avoid displaying query values in labels, as this may create many alert instances—one for each distinct label value. Instead, use annotations to convey query values.
{{% /admonition %}}
### Based on query label
You can use labels to differentiate alerts coming from various environments (e.g., production, staging, dev). For example, you may want to add a label that sets the environment based on the instances label. Heres how you can template it:
```go
{{ if eq $labels.instance "prod-server-1" }}production
{{ else if eq $labels.instance "staging-server-1" }}staging
{{ else }}development
{{ end }}
```
This would print:
- For instance `prod-server-1`, the label would be `production`.
- For `staging-server-1`, the label would be `staging`.
- All other instances would be labeled `development`.
To make this template more flexible, you can use a regular expression that matches the instance name with the instance name prefix using the [`match()`](ref:reference-match) function:
```go
{{ if match "^prod-server-.*" $labels.instance }}production
{{ else if match "^staging-server-.*" $labels.instance}}staging
{{ else }}development
{{ end }}
```
{{< collapse title="Legacy Alerting templates" >}}
## Legacy Alerting templates
For users working with Grafana's legacy alerting system, templates can still be utilized to extract useful information from alert conditions. However, it's important to note that you cannot use `$labels` to print labels from the query if you are using classic conditions, and must use `$values` instead. The reason for this is classic conditions discard these labels to enforce uni-dimensional behavior (at most one alert per alert rule). If classic conditions didn't discard these labels, then queries that returned many time series would cause alerts to flap between firing and resolved constantly as the labels would change every time the alert rule was evaluated.
Instead, the `$values` variable contains the reduced values of all time series for all conditions that are firing. For example, if you have an alert rule with a query A that returns two time series, and a classic condition B with two conditions, then `$values` would contain `B0`, `B1`, `B2` and `B3`. If the classic condition B had just one condition, then `$values` would contain just `B0` and `B1`.
#### Print all labels from a classic condition
To print all labels of all firing time series use the following template (make sure to replace `B` in the regular expression with the Ref ID of the classic condition if it's different):
```go
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Labels }}{{ end }}
{{ end }}
```
For example, a classic condition for two time series exceeding a single condition would print:
```
B0: instance=server1
B1: instance=server2
```
If the classic condition has two or more conditions, and a time series exceeds multiple conditions at the same time, then its labels will be duplicated for each condition that is exceeded:
```
B0: instance=server1
B1: instance=server2
B2: instance=server1
B3: instance=server2
```
If you need to print unique labels you should consider changing your alert rules from uni-dimensional to multi-dimensional instead. You can do this by replacing your classic condition with reduce and math expressions.
#### Print all values from a classic condition
To print all values from a classic condition take the previous example and replace `$v.Labels` with `$v.Value`:
```go
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Value }}{{ end }}
{{ end }}
```
For example, a classic condition for two time series exceeding a single condition would print:
```
B0: 81.2345
B1: 84.5678
```
If the classic condition has two or more conditions, and a time series exceeds multiple conditions at the same time, then `$values` will contain the values of all conditions:
```
B0: 81.2345
B1: 92.3456
B2: 84.5678
B3: 95.6789
```
{{< /collapse >}}

View File

@@ -0,0 +1,81 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/template-notifications/language/
description: Use Go template language to create your notification and alert rule templates
keywords:
- grafana
- alerting
- templates
- write templates
labels:
products:
- cloud
- enterprise
- oss
title: Alerting template language
menuTitle: Template language
refs:
alert-rule-template-reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/
alert-rule-template-reference-variables:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/reference/#variables
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/reference/#variables
notification-template-reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/
reference-notificationdata:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/#notification-data
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/#notification-data
---
# Alerting template language
Notification templates and alert rule templates, such as annotations and labels, both use the Go template language, [text/template](https://pkg.go.dev/text/template).
Both types of templates can use the same keywords, functions, and comparison operators of the Go template language, such as `range`, `if`, `and`, `index`, `eq`, and more.
However, it's important to note that because notifications and alert rules operate in distinct contexts, some additional variables and functions are only available for either notification or alert rule templates. Refer to:
- [Annotation and label template reference](ref:alert-rule-template-reference)
- [Notification template reference](ref:notification-template-reference)
This documentation provides an overview of the functions and operators of the Go template language that are available for both notification and alert rule templates.
## Print
To print the value of something, use `{{` and `}}`. You can print the value of a [variable](#variables), a field of a variable, the result of a function, or the value of dot.
```go
{{ $values }}
{{ $values.A.Value }}
{{ humanize 1000.0 }}
{{ .Alerts }}
```
## Dot
In `text/template`, there is a special cursor called dot, written as `.`. You can think of this cursor as a variable whose value changes depending on where in the template it is used.
At the start of notification templates, dot (`.`) refers to [Notification Data](ref:reference-notificationdata).
```go
{{ .Alerts }}
```
In annotation and label templates, dot (`.`) is initialized with all alert data. Its recommended to use the [`$labels` and `$values` variables](ref:alert-rule-template-reference-variables) instead to directly access the alert labels and query values.
{{% admonition type="note" %}}
Dot (`.`) might refer to something else when used in a [range](#range), a [with](#with), or when writing [templates](#templates) used in other templates.
{{% /admonition %}}
[//]: <> (The above section is not included in the shared file because `refs` links are not supported in shared files.)
{{< docs/shared lookup="alerts/template-language.md" source="grafana" version="<GRAFANA_VERSION>" >}}

View File

@@ -0,0 +1,445 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/templates/reference/
description: Reference for variables and functions in Grafana alert rule templating.
keywords:
- grafana
- alerting
- templating
- labels
- annotations
labels:
products:
- cloud
- enterprise
- oss
title: Annotation and label template reference
menuTitle: Template reference
weight: 101
refs:
notification-template-reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/
language:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/language/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/language/
language-functions:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/language/#functions
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/language/#functions
language-index:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/language/#functions
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/language/#functions
print-all-labels-from-a-classic-condition:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/examples/#print-all-labels-from-a-classic-condition
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/examples/#print-all-labels-from-a-classic-condition
template-annotations-and-labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/
---
# Annotation and label template reference
Annotations and labels in alert rules can be defined using plain text. However, you can also define templates to customize their values with dynamic data from alert rule queries.
For example, you can template the `summary` annotation to include information from query values, providing relevant alert context for responders. Refer to [Template annotations and labels](ref:template-annotations-and-labels) for various use cases.
In templates, variables represent dynamic values from queries, while functions perform actions to transform or format this data.
## Variables
Variables represent dynamic values from alert rule queries that can be displayed or accessed in your templates.
The `$` and `.` symbols are used to reference variables and their properties. You can reference variables directly in your alert rule definitions using the `$` symbol followed by the variable name. Similarly, you can access properties of variables using the dot (`.`) notation in alert rule templates.
```
{{ $values.A.Value }}
```
Templates are based on the **Go templating system**. Refer to [Template language](ref:language) for additional information.
The following variables are available when templating annotations and labels:
| Variables | Description |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| [$labels](#labels) | Contains all labels from the query. |
| [$values](#values) | Contains the labels and floating point values of all instant queries and expressions, indexed by their Ref IDs. |
| [$value](#value) | A string containing the labels and values of all instant queries; threshold, reduce and math expressions, and classic conditions in the alert rule. |
### $labels
The `$labels` variable contains all labels from the query.
{{< figure src="/media/docs/alerting/query-labels-and_value.png" max-width="1200px" caption="An alert rule displaying labels and value from a query" >}}
For example, suppose you have a query that returns CPU usage for all of your servers, and you have an alert rule that fires when any of your servers have exceeded 80% CPU usage for the last 5 minutes. You want to add a summary annotation to the alert that tells you which server is experiencing high CPU usage. With the `$labels` variable you can write a template that prints a human-readable sentence such as:
```
CPU usage for {{ $labels.instance }} has exceeded 80% for the last 5 minutes
```
The outcome of this template would be:
```
CPU usage for server1 has exceeded 80% for the last 5 minutes
```
> If you are using a classic condition then `$labels` will not contain any labels from the query. Classic conditions discard these labels in order to enforce uni-dimensional behavior (at most one alert per alert rule). If you want to use labels from the query in your template then use the example [here](ref:print-all-labels-from-a-classic-condition).
### $values
The `$values` variable is a table containing the labels and floating point values of all instant queries and expressions, indexed by their Ref IDs (e.g, `A`, `B`, `C`, etc.). It does not contain the results of range queries, as they can return hundreds or thousands of rows.
Each Ref IDs, such as `$values.A`, has the following properties
| Property | Type | Description |
| -------- | --------------- | ------------------------------------------------------------ |
| `Value` | Float | The value returned by the instant query or expression. |
| `Labels` | Key/value pairs | The labels associated with the instance query or expression. |
Here's the previous example printing now the value of the instant query with Ref ID `A`:
```
{{ $values.A.Value }} CPU usage for {{ $labels.instance }} over the last 5 minutes.
```
If the alert has the label `instance=server1` and the query returns `81.2345`, the template would print:
```
81.2345 CPU usage for instance1 over the last 5 minutes.
```
If the query in Ref ID `A` is a range query rather than an instant query then add a reduce expression with Ref ID `B` and replace `$values.A.Value` with `$values.B.Value`:
```
{{ $values.B.Value }} CPU usage for {{ $labels.instance }} over the last 5 minutes.
```
Alternatively, you can use the `index()` function to retrieve the query value:
```
{{ index $values "B" }} CPU usage for {{ index $labels "instance" }} over the last 5 minutes.
```
#### $value
The `$value` variable is a string containing the labels and values of all instant queries; threshold, reduce and math expressions, and classic conditions in the alert rule.
This example prints the `$value` variable:
```
{{ $value }}: CPU usage has exceeded 80% for the last 5 minutes.
```
It would display something like this:
```
[ var='A' labels={instance=instance1} value=81.234 ]: CPU usage has exceeded 80% for the last 5 minutes.
```
Instead, we recommend using [$values](#values), which contains the same information as `$value` but is structured in an easier-to-use table format.
## Functions
Functions can perform actions in templates such as transforming or formatting data.
Note that the [functions provided by Go's template language](ref:language-functions), such as `index`, `and`, `printf`, and `len`, are available, along with many others.
In addition, the following functions are also available for templating annotations and labels:
**Numbers**
| Name | Arguments | Returns | Description |
| ----------------------------------------- | ---------------- | ------- | ---------------------------------------------------------------- |
| [humanize](#humanize) | number or string | string | Humanizes decimal numbers. |
| [humanize1024](#humanize1024) | number or string | string | Like `humanize`, but but uses 1024 as the base rather than 1000. |
| [humanizeDuration](#humanizeduration) | number or string | string | Humanizes a duration in seconds. |
| [humanizePercentage](#humanizepercentage) | number or string | string | Humanizes a ratio value to a percentage. |
| [humanizeTimestamp](#humanizetimestamp) | number or string | string | Humanizes a Unix timestamp. |
| [toTime](#totime) | number or string | time | Converts a Unix timestamp in seconds to time. |
**Strings**
| Name | Arguments | Returns | Description |
| ------------------------------- | -------------------------- | ------- | --------------------------------------------------------------------------------------------- |
| [title](#title) | string | string | Capitalizes the first character of each word. |
| [toUpper](#toupper) | string | string | Returns all text in uppercase. |
| [toLower](#tolower) | string | string | Returns all text in lowercase. |
| [stripPort](#stripport) | string | string | Returns only host. |
| [match](#match) | pattern, text | boolean | Matches the text against a regular expression pattern. |
| [reReplaceAll](#rereplaceall) | pattern, replacement, text | string | Replaces text matching the regular expression. |
| [graphLink](#graphlink) | expr | string | Returns the path to the graphical view in `Explore` for the given expression and data source. |
| [tableLink](#tablelink) | expr | string | Returns the path to the tabular view in `Explore` for the given expression and data source. |
| [parseDuration](#parseduration) | string | float | Parses a duration string such as "1h" into the number of seconds it represents. |
| [stripDomain](#stripdomain) | string | string | Returns the result of removing the domain part of a FQDN. |
**Others**
| Name | Arguments | Returns | Description |
| --------------------------- | ------------- | ---------------------- | -------------------------------------------------------------------------------- |
| [args](#args) | []interface{} | map[string]interface{} | Translates a list of objects to a map with keys arg0, arg1 etc. |
| [safeHtml](#safehtml) | string | string | Marks string as HTML not requiring auto-escaping. |
| [externalURL](#externalurl) | none | string | Returns the external URL of the Grafana server as configured in the ini file(s). |
| [pathPrefix](#pathprefix) | none | string | Returns the path of the Grafana server as configured in the ini file(s). |
For further context on these functions, note that templating in Grafana is based on the [Prometheus template implementation](https://prometheus.io/docs/prometheus/latest/configuration/template_reference/), enabling the use of these functions and Prometheus-like templates for formatting alert messages within Grafana.
#### humanize
The `humanize` function humanizes decimal numbers:
```
{{ humanize 1000.0 }}
```
```
1k
```
#### humanize1024
The `humanize1024` works similar to `humanize` but but uses 1024 as the base rather than 1000:
```
{{ humanize1024 1024.0 }}
```
```
1ki
```
#### humanizeDuration
The `humanizeDuration` function humanizes a duration in seconds:
```
{{ humanizeDuration 60.0 }}
```
```
1m 0s
```
#### humanizePercentage
The `humanizePercentage` function humanizes a ratio value between 0 and 1 to a percentage:
```
{{ humanizePercentage 0.2 }}
```
```
20%
```
#### humanizeTimestamp
The `humanizeTimestamp` function humanizes a Unix timestamp:
```
{{ humanizeTimestamp 1577836800.0 }}
```
```
2020-01-01 00:00:00 +0000 UTC
```
#### toTime
The `toTime` function converts a Unix timestamp in seconds to time.:
```
{{ toTime 1727802106 }}
```
```
2024-10-01 17:01:46 +0000 UTC
```
#### title
The `title` function capitalizes the first character of each word:
```
{{ title "hello, world!" }}
```
```
Hello, World!
```
#### toUpper
The `toUpper` function returns all text in uppercase:
```
{{ toUpper "Hello, world!" }}
```
```
HELLO, WORLD!
```
#### toLower
The `toLower` function returns all text in lowercase:
```
{{ toLower "Hello, world!" }}
```
```
hello, world!
```
#### stripPort
The `stripPort` splits string into host and port, then returns only host:
```
{{ stripPort "example.com:8080" }}
```
```
example.com
```
#### match
The `match` function matches the text against a regular expression pattern:
```
{{ match "a.*" "abc" }}
```
```
true
```
#### reReplaceAll
The `reReplaceAll` function replaces text matching the regular expression:
```
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
```
```
example.com:8080
```
#### graphLink
The `graphLink` function returns the path to the graphical view in [Explore](ref:explore) for the given expression and data source:
```
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```
```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
```
#### parseDuration
The `parseDuration` function parses a duration string such as "1h" into the number of seconds it represents.
```
{{ parseDuration "1h" }}
```
```
3600
```
#### stripDomain
The `stripDomain` removes the domain part of a FQDN, leaving port untouched:
```
{{ stripDomain "example.com:8080" }}
```
```
example:8080
```
#### tableLink
The `tableLink` function returns the path to the tabular view in [Explore](ref:explore) for the given expression and data source:
```
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```
```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
```
#### args
The `args` function translates a list of objects to a map with keys arg0, arg1 etc. This is intended to allow multiple arguments to be passed to templates:
```
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
```
```
1 2
```
#### safeHtml
The `safeHtml` function marks string as HTML not requiring auto-escaping:
```
{{ safeHtml "<b>Text</b>"}}
```
```
<b>Text</b>
```
#### externalURL
The `externalURL` function returns the external URL of the Grafana server as configured in the ini file(s):
```
{{ externalURL }}
```
```
https://example.com/grafana
```
#### pathPrefix
The `pathPrefix` function returns the path of the Grafana server as configured in the ini file(s):
```
{{ pathPrefix }}
```
```
/grafana
```
## Differences with notification templates
Both notification templates and alert rule templates use the Go templating system. However, the [functions and variables available in notification templates](ref:notification-template-reference) differ from those used in annotations and labels templates, which are described in this documentation.
Annotation and label templates operate in the context of an individual alert instance, while notification templates apply to a notification that includes a group of alert(s).
For example, notification templates provide the `.Alerts` variable, which includes the list of all firing and resolved alerts in the notification. This variable is not available in alert rule templates, which operate within the context of a single alert instance.
Additionally, you cannot reuse templates for labels and annotations as you can with notification templates. Instead, you need to write each template inline within the label or annotation fields and manually copy them wherever you want to reuse the templates.

View File

@@ -1,459 +0,0 @@
---
aliases:
- ../fundamentals/annotation-label/variables-label-annotation/ # /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/annotation-label/variables-label-annotation/
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/templating-labels-annotations/
description: Learn about how to template labels and annotations
keywords:
- grafana
- alerting
- templating
- labels
- annotations
labels:
products:
- cloud
- enterprise
- oss
title: Template labels and annotations
weight: 500
refs:
explore:
- pattern: /docs/
destination: /docs/grafana/<GRAFANA_VERSION>/explore/
---
# Template labels and annotations
You can use templates to include data from queries and expressions in labels and annotations. For example, you might want to set the severity label for an alert based on the value of the query, or use the instance label from the query in a summary annotation so you know which server is experiencing high CPU usage.
When using custom labels with templates it is important to make sure that the label value does not change between consecutive evaluations of the alert rule as this will end up creating large numbers of distinct alerts. However, it is OK for the template to produce different label values for different alerts. For example, do not put the value of the query in a custom label as this will end up creating a new set of alerts each time the value changes. Instead use annotations.
All templates should be written in [text/template](https://pkg.go.dev/text/template). Regardless of whether you are templating a label or an annotation, you should write each template inline inside the label or annotation that you are templating. This means you cannot share templates between labels and annotations, and instead you will need to copy templates wherever you want to use them.
Each template is evaluated whenever the alert rule is evaluated, and is evaluated for every alert separately. For example, if your alert rule has a templated summary annotation, and the alert rule has 10 firing alerts, then the template will be executed 10 times, once for each alert. You should try to avoid doing expensive computations in your templates as much as possible.
{{% admonition type="caution" %}}
Extra whitespace in label templates can break matches with notification policies.
{{% /admonition %}}
## Variables
In Grafana templating, the `$` and `.` symbols are used to reference variables and their properties. You can reference variables directly in your alert rule definitions using the `$` symbol followed by the variable name. Similarly, you can access properties of variables using the dot (`.`) notation within alert rule definitions.
The following variables are available to you when templating labels and annotations:
### The labels variable
The `$labels` variable contains all labels from the query. For example, suppose you have a query that returns CPU usage for all of your servers, and you have an alert rule that fires when any of your servers have exceeded 80% CPU usage for the last 5 minutes. You want to add a summary annotation to the alert that tells you which server is experiencing high CPU usage. With the `$labels` variable you can write a template that prints a human-readable sentence such as:
```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes
```
> If you are using a classic condition then `$labels` will not contain any labels from the query. Classic conditions discard these labels in order to enforce uni-dimensional behavior (at most one alert per alert rule). If you want to use labels from the query in your template then use the example [here](#print-all-labels-from-a-classic-condition).
### The value variable
The `$value` variable is a string containing the labels and values of all instant queries; threshold, reduce and math expressions, and classic conditions in the alert rule. It does not contain the results of range queries, as these can return anywhere from 10s to 10,000s of rows or metrics. If it did, for especially large queries a single alert could use 10s of MBs of memory and Grafana would run out of memory very quickly.
To print the `$value` variable in the summary you would write something like this:
```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ $value }}
```
And would look something like this:
```
CPU usage for instance1 has exceeded 80% for the last 5 minutes: [ var='A' labels={instance=instance1} value=81.234 ]
```
Here `var='A'` refers to the instant query with Ref ID A, `labels={instance=instance1}` refers to the labels, and `value=81.234` refers to the average CPU usage over the last 5 minutes.
If you want to print just some of the string instead of the full string then use the `$values` variable. It contains the same information as `$value`, but in a structured table, and is much easier to use then writing a regular expression to match just the text you want.
### The values variable
The `$values` variable is a table containing the labels and floating point values of all instant queries and expressions, indexed by their Ref IDs.
To print the value of the instant query with Ref ID A:
```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ index $values "A" }}
```
For example, given an alert with the labels `instance=server1` and an instant query with the value `81.2345`, this would print:
```
CPU usage for instance1 has exceeded 80% for the last 5 minutes: 81.2345
```
If the query in Ref ID A is a range query rather than an instant query then add a reduce expression with Ref ID B and replace `(index $values "A")` with `(index $values "B")`:
```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ index $values "B" }}
```
## Examples
The following examples attempt to show the most common use-cases we have seen for templates. You can use these examples verbatim, or adapt them as necessary for your use case. For more information on how to write text/template refer see [the beginner's guide to alert notification templates in Grafana](https://grafana.com/blog/2023/04/05/grafana-alerting-a-beginners-guide-to-templating-alert-notifications/).
### Print all labels, comma separated
To print all labels, comma separated, print the `$labels` variable:
```
{{ $labels }}
```
For example, given an alert with the labels `alertname=High CPU usage`, `grafana_folder=CPU alerts` and `instance=server1`, this would print:
```
alertname=High CPU usage, grafana_folder=CPU alerts, instance=server1
```
> If you are using classic conditions then `$labels` will not contain any labels from the query. Refer to [the $labels variable](#the-labels-variable) for more information.
### Print all labels, one per line
To print all labels, one per line, use a `range` to iterate over each key/value pair and print them individually. Here `$k` refers to the name and `$v` refers to the value of the current label:
```
{{ range $k, $v := $labels -}}
{{ $k }}={{ $v }}
{{ end }}
```
For example, given an alert with the labels `alertname=High CPU usage`, `grafana_folder=CPU alerts` and `instance=server1`, this would print:
```
alertname=High CPU usage
grafana_folder=CPU alerts
instance=server1
```
> If you are using classic conditions then `$labels` will not contain any labels from the query. Refer to [the $labels variable](#the-labels-variable) for more information.
### Print an individual label
To print an individual label use the `index` function with the `$labels` variable:
```
The host {{ index $labels "instance" }} has exceeded 80% CPU usage for the last 5 minutes
```
For example, given an alert with the labels `instance=server1`, this would print:
```
The host server1 has exceeded 80% CPU usage for the last 5 minutes
```
> If you are using classic conditions then `$labels` will not contain any labels from the query. Refer to [the $labels variable](#the-labels-variable) for more information.
### Print the value of a query
To print the value of an instant query you can print its Ref ID using the `index` function and the `$values` variable:
```
{{ index $values "A" }}
```
For example, given an instant query that returns the value 81.2345, this will print:
```
81.2345
```
To print the value of a range query you must first reduce it from a time series to an instant vector with a reduce expression. You can then print the result of the reduce expression by using its Ref ID instead. For example, if the reduce expression takes the average of A and has the Ref ID B you would write:
```
{{ index $values "B" }}
```
### Print the humanized value of a query
To print the humanized value of an instant query use the `humanize` function:
```
{{ humanize (index $values "A").Value }}
```
For example, given an instant query that returns the value 81.2345, this will print:
```
81.234
```
To print the humanized value of a range query you must first reduce it from a time series to an instant vector with a reduce expression. You can then print the result of the reduce expression by using its Ref ID instead. For example, if the reduce expression takes the average of A and has the Ref ID B you would write:
```
{{ humanize (index $values "B").Value }}
```
### Print the value of a query as a percentage
To print the value of an instant query as a percentage use the `humanizePercentage` function:
```
{{ humanizePercentage (index $values "A").Value }}
```
This function expects the value to be a decimal number between 0 and 1. If the value is instead a decimal number between 0 and 100 you can either divide it by 100 in your query or using a math expression. If the query is a range query you must first reduce it from a time series to an instant vector with a reduce expression.
### Set a severity from the value of a query
To set a severity label from the value of a query use an if statement and the greater than comparison function. Make sure to use decimals (`80.0`, `50.0`, `0.0`, etc) when doing comparisons against `$values` as text/template does not support type coercion. You can find a list of all the supported comparison functions [here](https://pkg.go.dev/text/template#hdr-Functions).
```
{{ if (gt $values.A.Value 80.0) -}}
high
{{ else if (gt $values.A.Value 50.0) -}}
medium
{{ else -}}
low
{{- end }}
```
### Print all labels from a classic condition
You cannot use `$labels` to print labels from the query if you are using classic conditions, and must use `$values` instead. The reason for this is classic conditions discard these labels to enforce uni-dimensional behavior (at most one alert per alert rule). If classic conditions didn't discard these labels, then queries that returned many time series would cause alerts to flap between firing and resolved constantly as the labels would change every time the alert rule was evaluated.
Instead, the `$values` variable contains the reduced values of all time series for all conditions that are firing. For example, if you have an alert rule with a query A that returns two time series, and a classic condition B with two conditions, then `$values` would contain `B0`, `B1`, `B2` and `B3`. If the classic condition B had just one condition, then `$values` would contain just `B0` and `B1`.
To print all labels of all firing time series use the following template (make sure to replace `B` in the regular expression with the Ref ID of the classic condition if it's different):
```
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Labels }}{{ end }}
{{ end }}
```
For example, a classic condition for two time series exceeding a single condition would print:
```
B0: instance=server1
B1: instance=server2
```
If the classic condition has two or more conditions, and a time series exceeds multiple conditions at the same time, then its labels will be duplicated for each condition that is exceeded:
```
B0: instance=server1
B1: instance=server2
B2: instance=server1
B3: instance=server2
```
If you need to print unique labels you should consider changing your alert rules from uni-dimensional to multi-dimensional instead. You can do this by replacing your classic condition with reduce and math expressions.
### Print all values from a classic condition
To print all values from a classic condition take the previous example and replace `$v.Labels` with `$v.Value`:
```
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Value }}{{ end }}
{{ end }}
```
For example, a classic condition for two time series exceeding a single condition would print:
```
B0: 81.2345
B1: 84.5678
```
If the classic condition has two or more conditions, and a time series exceeds multiple conditions at the same time, then `$values` will contain the values of all conditions:
```
B0: 81.2345
B1: 92.3456
B2: 84.5678
B3: 95.6789
```
## Functions
The following functions are available to you when templating labels and annotations:
### args
The `args` function translates a list of objects to a map with keys arg0, arg1 etc. This is intended to allow multiple arguments to be passed to templates:
```
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
```
```
1 2
```
### externalURL
The `externalURL` function returns the external URL of the Grafana server as configured in the ini file(s):
```
{{ externalURL }}
```
```
https://example.com/grafana
```
### graphLink
The `graphLink` function returns the path to the graphical view in [Explore](ref:explore) for the given expression and data source:
```
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```
```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
```
### humanize
The `humanize` function humanizes decimal numbers:
```
{{ humanize 1000.0 }}
```
```
1k
```
### humanize1024
The `humanize1024` works similar to `humanize` but but uses 1024 as the base rather than 1000:
```
{{ humanize1024 1024.0 }}
```
```
1ki
```
### humanizeDuration
The `humanizeDuration` function humanizes a duration in seconds:
```
{{ humanizeDuration 60.0 }}
```
```
1m 0s
```
### humanizePercentage
The `humanizePercentage` function humanizes a ratio value to a percentage:
```
{{ humanizePercentage 0.2 }}
```
```
20%
```
### humanizeTimestamp
The `humanizeTimestamp` function humanizes a Unix timestamp:
```
{{ humanizeTimestamp 1577836800.0 }}
```
```
2020-01-01 00:00:00 +0000 UTC
```
### match
The `match` function matches the text against a regular expression pattern:
```
{{ match "a.*" "abc" }}
```
```
true
```
### pathPrefix
The `pathPrefix` function returns the path of the Grafana server as configured in the ini file(s):
```
{{ pathPrefix }}
```
```
/grafana
```
### tableLink
The `tableLink` function returns the path to the tabular view in [Explore](ref:explore) for the given expression and data source:
```
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```
```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
```
### title
The `title` function capitalizes the first character of each word:
```
{{ title "hello, world!" }}
```
```
Hello, World!
```
### toLower
The `toLower` function returns all text in lowercase:
```
{{ toLower "Hello, world!" }}
```
```
hello, world!
```
### toUpper
The `toUpper` function returns all text in uppercase:
```
{{ toUpper "Hello, world!" }}
```
```
HELLO, WORLD!
```
### reReplaceAll
The `reReplaceAll` function replaces text matching the regular expression:
```
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
```
```
example.com:8080
```

View File

@@ -26,9 +26,9 @@ refs:
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/notification-policies/
templates-page:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/templates/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/templates/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/templates/
---
# Configure notifications

View File

@@ -26,6 +26,16 @@ labels:
title: Configure contact points
weight: 410
refs:
sns:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-amazon-sns/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-amazon-sns/
gchat:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-google-chat/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-google-chat/
email:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-email/
@@ -81,27 +91,28 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-mqtt/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-mqtt/
manage-notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/manage-notification-templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/manage-notification-templates/
---
# Configure contact points
Use contact points to select your preferred communication channel for receiving notifications when your alert rules are firing. You can add, edit, delete, export, and test a contact point.
Use contact points to specify where to receive alert notifications. Contact points contain the configuration for sending alert notifications, including destinations like email, Slack, OnCall, webhooks, and their notification messages.
Testing a contact point is only available for Grafana Alertmanager.
A contact point can have one or multiple destinations, known as [contact point integrations](#list-of-supported-integrations). Alert notifications are sent to each integration within the chosen contact point.
On the **Contact Points** tab, you can:
- Add, edit, and view contact points and integrations.
- Search for name and type of contact points and integrations.
- View all existing contact points and integrations.
- View how many notification policies each contact point is being used for and navigate directly to the linked notification policies.
- View the status of notification deliveries.
- Export individual contact points or all contact points in JSON, YAML, or Terraform format.
- Delete contact points. Note that you cannot delete contact points that are in use by a notification policy. To proceed, either delete the notification policy or update it to use another contact point.
On the **Notification templates** tab, you can:
- View, edit, copy or delete existing notification templates.
## Add a contact point
Complete the following steps to add a contact point.
@@ -114,41 +125,23 @@ Complete the following steps to add a contact point.
1. From **Integration**, select a type and fill out mandatory fields. For example, if you choose email, enter the email addresses. Or if you choose Slack, enter the Slack channel and users who should be contacted.
1. Some contact point integrations, like email or Webhook, have optional settings. In **Optional settings**, specify additional settings for the selected contact point integration.
1. In Notification settings, optionally select **Disable resolved message** if you do not want to be notified when an alert resolves.
1. To add another contact point integration, click **Add contact point integration** and repeat steps 6 through 8.
1. Save your changes.
## Use notification templates
## Add another contact point integration
Use templates in contact points to customize your notifications.
A contact point can have multiple integrations, or destinations for sending notifications.
Complete the following steps to add templates to your contact point.
To add another integration to a contact point, complete the following steps.
1. Click an existing contact point or create a new one
1. In **Optional settings**, click any field that contains templates.
For example, if you are creating an email contact point integration, click **Message** or **Subject**.
1. Click **Edit**.
A dialog box opens where you can select templates.
1. [Optional] Click **Select existing template** to select a template and preview it using the default payload.
Click **Save** to use just a single template in the field.
You can also copy the selected template and use it in the custom tab.
1. [Optional] Click **Enter custom message** to customize and edit the field directly. Note that the title changes depending on the field you are editing.
Click **Save** to use just a single template in the field.
1. You can switch between the two tabs to access the list of available templates and copy them across to the customized version.
1. Click **Save contact point**.
1. Add or edit an existing contact point.
1. Click **Add contact point integration** and repeat the same steps as [Add a contact point](#add-a-contact-point).
- From **Integration**, select a type and fill out mandatory fields.
- In **Optional settings**, specify additional settings for the selected contact point integration.
1. Save your changes.
## Test a contact point
** For Grafana Alertmanager only.**
Complete the following steps to test a contact point.
Testing a contact point is only available for Grafana Alertmanager. Complete the following steps to test a contact point.
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
1. Click **Contact points** to view a list of existing contact points.
@@ -166,17 +159,17 @@ The following table lists the contact point integrations supported by Grafana.
| Name | Type |
| ---------------------------- | ------------------------- |
| Alertmanager | `prometheus-alertmanager` |
| Amazon SNS | `sns` |
| [Amazon SNS](ref:sns) | `sns` |
| Cisco Webex Teams | `webex` |
| DingDing | `dingding` |
| [Discord](ref:discord) | `discord` |
| [Email](ref:email) | `email` |
| Google Chat | `googlechat` |
| [Google Chat](ref:gchat) | `googlechat` |
| [Grafana Oncall](ref:oncall) | `oncall` |
| Kafka REST Proxy | `kafka` |
| [MQTT](ref:mqtt) | `mqtt` |
| Line | `line` |
| [Microsoft Teams](ref:teams) | `teams` |
| [MQTT](ref:mqtt) | `mqtt` |
| [Opsgenie](ref:opsgenie) | `opsgenie` |
| [Pagerduty](ref:pagerduty) | `pagerduty` |
| Pushover | `pushover` |
@@ -185,7 +178,17 @@ The following table lists the contact point integrations supported by Grafana.
| [Telegram](ref:telegram) | `telegram` |
| Threema Gateway | `threema` |
| VictorOps | `victorops` |
| WeCom | `wecom` |
| [Webhook](ref:webhook) | `webhook` |
| WeCom | `wecom` |
Some of these integrations are not compatible with [external Alertmanagers](ref:external-alertmanager). For the list of Prometheus Alertmanager integrations, refer to the [Prometheus Alertmanager receiver settings](https://prometheus.io/docs/alerting/latest/configuration/#receiver-integration-settings).
## Customize notification messages
In contact points, you can also customize notification messages. For example, when setting up an email contact point integration, click **Message** or **Subject** to modify it.
By default, notification messages include common alert details, which are usually sufficient for most cases.
If necessary, you can customize the content and format of notification messages. You can create a custom notification template, which can then be applied to one or more contact points.
On the **Notification templates** tab, you can view, edit, copy or delete notification templates. Refer to [manage notification templates](ref:manage-notification-templates) for instructions on selecting or creating a template for a contact point.

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Amazon SNS
title: Configure Amazon SNS for Alerting
weight: 0
weight: 100
---
# Configure Amazon SNS for Alerting

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Discord
title: Configure Discord for Alerting
weight: 0
weight: 105
---
# Configure Discord for Alerting

View File

@@ -13,13 +13,21 @@ labels:
- oss
menuTitle: Email
title: Configure email for Alerting
weight: 0
weight: 110
refs:
notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/
---
# Configure email for Alerting
Use the Grafana Alerting - email integration to send email notifications when your alerts are firing. An email is sent when an alert fires and when an alert gets resolved.
Note that you can customize the `subject` and `message` of the email using [notification templates](ref:notification-templates). However, you cannot add HTML and CSS to email notifications for visual changes.
## Before you begin
{{<admonition type="note">}}

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Google Chat
title: Configure Google Chat for Alerting
weight: 0
weight: 115
---
# Configure Google Chat for Alerting

View File

@@ -12,9 +12,9 @@ labels:
- cloud
- enterprise
- oss
menuTitle: MQTT notifier
menuTitle: MQTT
title: Configure the MQTT notifier for Alerting
weight: 0
weight: 140
---
# Configure the MQTT notifier for Alerting
@@ -149,8 +149,8 @@ Each alert instance in the `alerts` array has the following fields.
| generatorURL | string | URL of the alert rule in the Grafana UI |
| fingerprint | string | The labels fingerprint, alarms with the same labels will have the same fingerprint |
| silenceURL | string | URL to silence the alert rule in the Grafana UI |
| dashboardURL | string | **Deprecated. It will be removed in a future release.** |
| panelURL | string | **Deprecated. It will be removed in a future release.** |
| dashboardURL | string | A link to the Grafana Dashboard if the alert has a Dashboard UID annotation |
| panelURL | string | A link to the panel if the alert has a Panel ID annotation |
| imageURL | string | URL of a screenshot of a panel assigned to the rule that created this notification |
{{< admonition type="note" >}}

View File

@@ -2,6 +2,7 @@
aliases:
- ../../../alerting-rules/manage-contact-points/configure-oncall/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/manage-contact-points/configure-oncall/
- ../../../alerting-rules/manage-contact-points/integrations/configure-oncall/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/manage-contact-points/integrations/configure-oncall/
- ../configure-oncall/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/manage-contact-points/configure-oncall/
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/manage-contact-points/integrations/configure-oncall/
description: Configure the Alerting - Grafana OnCall integration to connect alerts generated by Grafana Alerting with Grafana OnCall
keywords:
@@ -9,8 +10,6 @@ keywords:
- alerting
- oncall
- integration
aliases:
- ../configure-oncall/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/manage-contact-points/configure-oncall/
labels:
products:
- cloud
@@ -18,7 +17,7 @@ labels:
- oss
menuTitle: Grafana OnCall
title: Configure Grafana OnCall for Alerting
weight: 0
weight: 120
---
# Configure Grafana OnCall for Alerting
@@ -26,7 +25,7 @@ weight: 0
Use the Grafana Alerting - Grafana OnCall integration to effortlessly connect alerts generated by Grafana Alerting with Grafana OnCall, where you can then route them according to defined escalation chains and schedules.
{{< admonition type="note" >}}
You can also configure the integration from Grafana OnCall. For more information, refer to [Grafana OnCall documentation](http://grafana.com/docs/oncall/latest/integrations/grafana-alerting/).
You can also configure the integration from Grafana OnCall. For more information, refer to [Grafana OnCall documentation](http://grafana.com/docs/oncall/latest/configure/integrations/references/grafana-alerting/).
{{< /admonition >}}
## Before you begin

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Opsgenie
title: Configure Opsgenie for Alerting
weight: 0
weight: 145
---
# Configure Opsgenie for Alerting

View File

@@ -13,8 +13,13 @@ labels:
- oss
menuTitle: Slack
title: Configure Slack for Alerting
weight: 0
weight: 155
refs:
notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/
nested-policy:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/create-notification-policy/#add-new-nested-policy
@@ -36,9 +41,9 @@ There are two ways of integrating Slack into Grafana Alerting.
Webhooks is the simpler way to post messages into Slack. Slack automatically creates a bot user with all the necessary permissions to post messages to one particular channel of your choice.
{{< admonition type="note" >}}
Grafana Alerting only allows one Slack channel per contact point.
{{< /admonition >}}
Note that you can only setup one Slack channel per contact point.
You can customize the `title` and `body` of the Slack message using [notification templates](ref:notification-templates); however, you cannot modify its visual appearance with custom blocks.
## Before you begin
@@ -53,17 +58,12 @@ If you are using a Slack API Token, complete the following steps.
1. Right click the channel you want to receive notifications in.
1. Click View channel details.
1. Scroll down and copy the Channel ID.
{{< admonition type="note" >}}
While going through these steps, Slack may prompt you to Reinstall your app in order for the changes to take effect.
{{< /admonition >}}
Note that while going through these steps, Slack may prompt you to Reinstall your app in order for the changes to take effect.
### Webhook URL
If you are using a Webhook URL, follow steps 1 and 5 in the [Slack API Quickstart](https://api.slack.com/start/quickstart).
{{< admonition type="note" >}}
Make sure you copy the Slack app Webhook URL. You need this when setting up your contact point integration in Grafana Alerting.
{{< /admonition >}}
If you are using a Webhook URL, follow steps 1 and 5 in the [Slack API Quickstart](https://api.slack.com/start/quickstart), and copy the Slack app Webhook URL. You need this when setting up your contact point integration in Grafana Alerting.
## Procedure

View File

@@ -13,13 +13,21 @@ labels:
- oss
menuTitle: Microsoft Teams
title: Configure Microsoft Teams for Alerting
weight: 0
weight: 135
refs:
notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/
---
# Configure Microsoft Teams for Alerting
Use the Grafana Alerting - Microsoft Teams integration to receive notifications in your teams channel when your alerts are firing.
Note that you can customize the `title` and `message` of the notification using [notification templates](ref:notification-templates); however, you cannot modify its visual appearance with adaptive cards.
## Before you begin
To set up Microsoft Teams for integration with Grafana Alerting, create a new workflow that accepts Webhook requests. This allows Grafana to send alert notifications to Microsoft Teams channels.

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Telegram
title: Configure Telegram for Alerting
weight: 0
weight: 160
---
# Configure Telegram for Alerting

View File

@@ -14,7 +14,7 @@ labels:
- oss
menuTitle: PagerDuty
title: Configure PagerDuty for Alerting
weight: 0
weight: 150
---
# Configure PagerDuty for Alerting

View File

@@ -19,9 +19,15 @@ labels:
- cloud
- enterprise
- oss
menuTitle: Webhook notifier
menuTitle: Webhook
title: Configure the webhook notifier for Alerting
weight: 0
weight: 165
refs:
notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/
---
# Configure the webhook notifier for Alerting
@@ -134,12 +140,16 @@ The webhook notification is a simple way to send information about a state chang
| generatorURL | string | URL of the alert rule in the Grafana UI |
| fingerprint | string | The labels fingerprint, alarms with the same labels will have the same fingerprint |
| silenceURL | string | URL to silence the alert rule in the Grafana UI |
| dashboardURL | string | **Will be deprecated soon** |
| panelURL | string | **Will be deprecated soon** |
| dashboardURL | string | A link to the Grafana Dashboard if the alert has a Dashboard UID annotation |
| panelURL | string | A link to the panel if the alert has a Panel ID annotation |
| imageURL | string | URL of a screenshot of a panel assigned to the rule that created this notification |
{{< admonition type="note" >}}
Alert rules are not coupled to dashboards anymore therefore the fields related to dashboards `dashboardId` and `panelId` have been removed.
You can customize the `title` and `message` fields using [notification templates](ref:notification-templates).
However, you cannot customize webhook data structure or format, including JSON fields or sending data in XML, nor can you change the webhook HTTP headers.
{{< /admonition >}}
## Procedure

View File

@@ -13,55 +13,98 @@ labels:
- cloud
- enterprise
- oss
title: Configure notification messages
title: Template notifications
weight: 430
refs:
use-notification-templates:
template-annotations-and-labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/use-notification-templates/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/use-notification-templates/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/
manage-notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/manage-notification-templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/manage-notification-templates/
reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/
using-go-templating-language:
examples:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/using-go-templating-language/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/examples/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/using-go-templating-language/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/examples/
---
# Configure notification messages
# Template notifications
Customize the content of your notifications with notifications templates.
You can use notification templates to change the title, message, and format of notifications.
You can use notification templates to change the title, message, and format of the message in your notifications.
Grafana provides a **default template** for notification titles (`default.title`) and one default template for notification messages (`default.message`). Both templates display common alert details.
Notification templates are not tied to specific contact point integrations, such as email or Slack. However, you can choose to create separate notification templates for different contact point integrations.
You can also create a notification template to customize the content and format of your notification messages. For example:
You can use notification templates to:
- Customize content: Personalize the subject of an email or the title of a message. Modify text within notifications, like selecting or omitting certain labels, annotations, and links. Format text with bold and italic styles, and add or remove line breaks.
- Personalize the subject of an email or the title of a message.
- Modify text within notifications, like selecting or omitting certain labels, annotations, and links.
- Format text with bold and italic styles, and add or remove line breaks.
However, there are limitations. You cannot:
- Modify Visual Appearance: Add HTML and CSS to email notifications for visual changes. Alter the design of notifications in messaging services like Slack and Microsoft Teams, such as adding custom blocks or adaptive cards.
- Manage Media and Data: Adjust the number and size of images or their placement in notifications. Customize webhook data structure or format, including JSON fields or sending data in XML. Modify HTTP headers in webhooks beyond those in the contact point configuration.
- Modify Visual Appearance: Add HTML or CSS to email notifications for visual changes. Alter the design of notifications in messaging services like Slack or Microsoft Teams, such as adding custom blocks or adaptive cards.
- Manage Media and Data: Customize the data structure or format passed to the templates, like adding new JSON fields or sending XML data for webhooks. Modify HTTP headers in webhooks beyond those defined in the configuration, or adjust the number, size, or placement of images.
## Learn more
Here's an [example](ref:examples) that displays the summary and description annotations for each alert in the notification:
[Using Go's templating language](ref:using-go-templating-language)
```go
{{ define "custom.alerts" -}}
{{ len .Alerts }} alert(s)
{{ range .Alerts -}}
{{ template "alert.summary_and_description" . -}}
{{ end -}}
{{ end -}}
{{ define "alert.summary_and_description" }}
Summary: {{.Annotations.summary}}
Status: {{ .Status }}
Description: {{.Annotations.description}}
{{ end -}}
```
Learn how to write the content of your notification templates in Gos templating language.
The notification message would look like this:
Create reusable notification templates for your contact points.
```
2 alert(s)
[Use notification templates](ref:use-notification-templates)
Summary: The database server db1 has exceeded 75% of available disk space.
Status: firing
Description: This alert fires when a database server is at risk of running out of disk space. You should take measures to increase the maximum available disk space as soon as possible to avoid possible corruption.
Use notification templates to send notifications to your contact points.
Summary: The web server web1 has been responding to 5% of HTTP requests with 5xx errors for the last 5 minutes.
Status: resolved
Description: This alert fires when a web server responds with more 5xx errors than is expected. This could be an issue with the web server or a backend service.
```
[Reference](ref:reference)
{{% admonition type="note" %}}
Avoid adding extra information about alert instances in notification templates, as this information will only be visible in the notification message.
Data that is available when writing templates.
Instead, you should [use annotations or labels](ref:template-annotations-and-labels) to add information directly to the alert, ensuring it's also visible in the alert state and alert history within Grafana. You can then print the new alert annotation or label in notification templates.
{{% /admonition %}}
#### Select a notification template for a contact point
Notification templates are not tied to specific contact point integrations, such as email or Slack, and the same template can be shared across multiple contact points.
The notification template is assigned to the contact point to determine the notification message sent to contact point integrations.
{{< figure src="/media/docs/alerting/how-notification-templates-works.png" max-width="1200px" caption="A flow of the alert notification process, from querying the alert rule to sending the alert notification message." >}}
By default, Grafana provides default templates, such as `default.title` and `default.message`, to format notification messages.
## More information
For further details on how to write notification templates, refer to:
- [Select, create, and preview a notification template](ref:manage-notification-templates)
- [Notification template reference](ref:reference)
- [Notification template examples](ref:examples)

View File

@@ -1,376 +0,0 @@
---
aliases:
- ../../manage-notifications/template-notifications/create-notification-templates/ # /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/template-notifications/create-notification-templates/
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/template-notifications/create-notification-templates/
description: Create notification templates to sent to your contact points
keywords:
- grafana
- alerting
- notifications
- templates
- create templates
- edit templates
- delete templates
labels:
products:
- cloud
- enterprise
- oss
title: Create notification templates
weight: 200
---
# Create notification templates
Create reusable notification templates to send to your contact points.
You can add one or more templates to your notification template.
Your notification template name must be unique. You cannot have two templates with the same name in the same notification template or in different notification templates. Avoid defining templates with the same name as default templates, such as: `__subject`, `__text_values_list`, `__text_alert_list`, `default.title` and `default.message`.
To create a notification template, complete the following steps.
1. Click **Alerts & IRM** -> **Contact points**.
1. Click the **Notification Templates** tab and then **+ Add notification template**.
1. Enter a name for the notification template.
1. Write the content of the template in the content field.
1. Save your changes.
`{{ define "email.subject" }}` and `{{ end }}` is automatically added to the start and end of the content:
To create a notification template that contains more than one template:
1. Click **+ Add notification template**.
2. Enter a name for the notification template.
3. Write each template in the Content field, including `{{ define "name-of-template" }}` and `{{ end }}` at the start and end of each template.
4. Save your changes.
## Preview notification templates
Preview how your notification templates should 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** -> **Notification Templates**.
1. Click **+ Add notification 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 **Select alert instances** or **Add custom alerts**.
1. Optional: To add alert data from existing alert instances:
a. Click **Select 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 custom 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**.
d. Click **Refresh preview** to see what your template content should 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. Save your changes.
## Template the subject of an email
Template the subject of an email to contain the number of firing and resolved alerts:
```
1 firing alert(s), 0 resolved alerts(s)
```
1. Create a template called `email.subject` with the following content:
```
{{ define "email.subject" }}
{{ len .Alerts.Firing }} firing alert(s), {{ len .Alerts.Resolved }} resolved alert(s)
{{ end }}
```
2. Execute the template from the subject field in your contact point integration:
```
{{ template "email.subject" . }}
```
## Template the message of an email
Template the message of an email to contain a summary of all firing and resolved alerts:
```
There are 2 firing alert(s), and 1 resolved alert(s)
Firing alerts:
- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2
Resolved alerts:
- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```
1. Create a notification template called `email` with two templates in the content: `email.message_alert` and `email.message`.
The `email.message_alert` template is used to print the labels and values for each firing and resolved alert while the `email.message` template contains the structure of the email.
```
{{- define "email.message_alert" -}}
{{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
{{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
{{- end -}}
{{ define "email.message" }}
There are {{ len .Alerts.Firing }} firing alert(s), and {{ len .Alerts.Resolved }} resolved alert(s)
{{ if .Alerts.Firing -}}
Firing alerts:
{{- range .Alerts.Firing }}
- {{ template "email.message_alert" . }}
{{- end }}
{{- end }}
{{ if .Alerts.Resolved -}}
Resolved alerts:
{{- range .Alerts.Resolved }}
- {{ template "email.message_alert" . }}
{{- end }}
{{- end }}
{{ end }}
```
2. Execute the template from the message field in your contact point integration:
```
{{ template "email.message" . }}
```
## Group multiple alert instances into one email notification
To make alerts more concise, you can group multiple instances of a firing alert into a single email notification in a table format. This way, you avoid long, repetitive emails and make alerts easier to digest.
Follow these steps to create a custom notification template that consolidates alert instances into a table.
1. Modify the alert rule to include an annotation that is referenced in the notification template later on.
1. Enter a name for the **custom annotation**: In this example, _ServerInfo_.
1. Enter the following code as the value for the annotation. It retrieves the server's instance name and a corresponding metric value, formatted as a table row:
```
{{ index $labels "instance" }}{{- "\t" -}}{{ index $values "A"}}{{- "\n" -}}
```
This line of code returns the labels and their values in the form of a table. Assuming $labels has `{"instance": "node1"}` and $values has `{"A": "123"}`, the output would be:
```
node1 123
```
1. Create a notification template that references the _ServerInfo_ annotation.
```go
{{ define "Table" }}
{{- "\nHost\t\tValue\n" -}}
{{ range .Alerts -}}
{{ range .Annotations.SortedPairs -}}
{{ if (eq .Name "ServerInfo") -}}
{{ .Value -}}
{{- end }}
{{- end }}
{{- end }}
{{ end }}
```
The notification template outputs a list of server information from the "ServerInfo" annotation for each alert instance.
1. Navigate to your contact point in Grafana
1. In the **Message** field, reference the template by name (see **Optional Email settings** section):
```
{{ template "Table" . }}
```
This generates a neatly formatted table in the email, grouping information for all affected servers into a single notification.
## Conditional notification template
Template alert notifications based on a label. In this example the label represents a namespace.
1. Use the following code in your notification template to display different messages based on the namespace:
```go
{{ define "my_conditional_notification" }}
{{ if eq .CommonLabels.namespace "namespace-a" }}
Alert: CPU limits have reached 80% in namespace-a.
{{ else if eq .CommonLabels.namespace "namespace-b" }}
Alert: CPU limits have reached 80% in namespace-b.
{{ else if eq .CommonLabels.namespace "namespace-c" }}
Alert: CPU limits have reached 80% in namespace-c.
{{ else }}
Alert: CPU limits have reached 80% for {{ .CommonLabels.namespace }} namespace.
{{ end }}
{{ end }}
```
`.CommonLabels` is a map containing the labels that are common to all the alerts firing.
Make sure to replace the `.namespace` label with a label that exists in your alert rule.
1. Replace `namespace-a`, `namespace-b`, and `namespace-c` with your specific namespace values.
1. Navigate to your contact point in Grafana
1. In the **Message** field, reference the template by name (see **Optional settings** section):
```
{{ template "my_conditional_notification" . }}
```
This template alters the content of alert notifications depending on the namespace value.
## Template the title of a Slack message
Template the title of a Slack message to contain the number of firing and resolved alerts:
```
1 firing alert(s), 0 resolved alerts(s)
```
1. Create a template called `slack.title` with the following content:
```
{{ define "slack.title" }}
{{ len .Alerts.Firing }} firing alert(s), {{ len .Alerts.Resolved }} resolved alert(s)
{{ end }}
```
2. Execute the template from the title field in your contact point integration:
```
{{ template "slack.title" . }}
```
## 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.
**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):
[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Silence: https://example.com/alerting/silence/new?alertmanager=grafana&matcher=alertname%3DTest1&matcher=grafana_folder%3DGrafanaCloud
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
1 resolved alert(s):
[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Silence: https://example.com/alerting/silence/new?alertmanager=grafana&matcher=alertname%3DTest2&matcher=grafana_folder%3DGrafanaCloud
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```
1. Create a template called `slack` with two templates in the content: `slack.print_alert` and `slack.message`.
The `slack.print_alert` template is used to print the labels, annotations, SilenceURL and DashboardURL while the `slack.message` template contains the structure of the notification.
```
{{ define "slack.print_alert" -}}
[{{.Status}}] {{ .Labels.alertname }}
Labels:
{{ range .Labels.SortedPairs -}}
- {{ .Name }}: {{ .Value }}
{{ end -}}
{{ if .Annotations -}}
Annotations:
{{ range .Annotations.SortedPairs -}}
- {{ .Name }}: {{ .Value }}
{{ end -}}
{{ end -}}
{{ if .SilenceURL -}}
Silence: {{ .SilenceURL }}
{{ end -}}
{{ if .DashboardURL -}}
Go to dashboard: {{ .DashboardURL }}
{{- end }}
{{- end }}
{{ define "slack.message" -}}
{{ if .Alerts.Firing -}}
{{ len .Alerts.Firing }} firing alert(s):
{{ range .Alerts.Firing }}
{{ template "slack.print_alert" . }}
{{ end -}}
{{ end }}
{{ if .Alerts.Resolved -}}
{{ len .Alerts.Resolved }} resolved alert(s):
{{ range .Alerts.Resolved }}
{{ template "slack.print_alert" .}}
{{ end -}}
{{ end }}
{{- end }}
```
2. Execute the template from the text body field in your contact point integration:
```
{{ template "slack.message" . }}
```
## Template both email and Slack with shared templates
Instead of creating separate notification templates for email and Slack, you can share the same template.
For example, if you want to send an email with this subject and Slack message with this title:
```
1 firing alert(s), 0 resolved alerts(s)
```
1. Create a template called `common.subject_title` with the following content:
```
{{ define "common.subject_title" }}
{{ len .Alerts.Firing }} firing alert(s), {{ len .Alerts.Resolved }} resolved alert(s)
{{ end }}
```
2. For email, execute the template from the subject field in your email contact point integration:
```
{{ template "common.subject_title" . }}
```
3. For Slack, execute the template from the title field in your Slack contact point integration:
```
{{ template "common.subject_title" . }}
```

View File

@@ -0,0 +1,362 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/alerting-rules/templates/examples/
description: Examples of notification templates
keywords:
- grafana
- alerting
- templating
- notification templates
labels:
products:
- cloud
- enterprise
- oss
title: Notification template examples
menuTitle: Examples
weight: 103
refs:
template-annotations-and-labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/templates/
template-notifications:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/
manage-notification-templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/manage-notification-templates/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/manage-notification-templates/
reference:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/
reference-notification-data:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/#notification-data
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/#notification-data
reference-alert:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/reference/#alert
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/reference/#alert
language:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/template-notifications/language/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/template-notifications/language/
group-alert-notifications:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/
---
# Notification template examples
Notification templates allows you to change the default notification messages.
You can modify the content and format of notification messages. For example, you can customize the content to show only specific information or adjust the format to suit a particular contact point, such as Slack or Email.
{{% admonition type="note" %}}
Avoid adding extra information about alert instances in notification templates, as this information is only be visible in the notification message.
Instead, you should [use annotations or labels](ref:template-annotations-and-labels) to add information directly to the alert, ensuring it's also visible in the alert state and alert history within Grafana. You can then print the new alert annotation or label in notification templates.
{{% /admonition %}}
This page provides various examples illustrating how to template common notification messages. For more details about notification templates, refer to:
- [Template notifications](ref:template-notifications)
- [Select, create, and preview a notification template](ref:manage-notification-templates)
- [Notification template reference](ref:reference)
## Basic examples
Notification templates can access the [notification data](ref:reference-notification-data) using the dot (`.`). The following examples demonstrate some basic uses of the [template language](ref:language).
For instance, to check if there are common labels (`.CommonLabels`) for all alerts in the notification, use `if`:
```go
{{ define "custom_message" -}}
{{ if .CommonLabels }}
Alerts have common labels
{{ else }}
There are no common labels
{{ end }}
{{ end }}
```
To iterate on the alerts in the notification and print a specific label, use `range` and `index`:
```go
{{ define "custom_message" -}}
{{ range .Alerts }}
The name of the alert is {{ index .Labels "alertname" }}
{{ end }}
{{ end }}
```
Alternatively, you can use the `.` notation to print the value of the key.
```go
{{ define "custom_message" -}}
{{ range .Alerts }}
The name of the alert is {{ .Labels.alertname }}
{{ end }}
{{ end }}
```
```template_output
The name of the alert is InstanceDown
The name of the alert is CpuOverload
```
## Print alerts with summary and description
Here's an example that displays the summary and description annotations for each alert in the notification.
```go
{{ define "custom.alerts" -}}
{{ len .Alerts }} alert(s)
{{ range .Alerts -}}
{{ template "alert.summary_and_description" . -}}
{{ end -}}
{{ end -}}
{{ define "alert.summary_and_description" }}
Summary: {{.Annotations.summary}}
Status: {{ .Status }}
Description: {{.Annotations.description}}
{{ end -}}
```
In this example:
- A template (`alert.summary_and_description`) is defined to print the `summary`, `status`, and `description` of one [alert](ref:reference-alert).
- The main template `custom.alerts` iterates the list of alerts (`.Alerts`) in [notification data](ref:reference-notification-data), executing the `alert.summary_and_description` template to print the details of each alert.
The notification message would look like this:
```template_output
2 alert(s)
Summary: The database server db1 has exceeded 75% of available disk space.
Status: firing
Description: This alert fires when a database server is at risk of running out of disk space. You should take measures to increase the maximum available disk space as soon as possible to avoid possible corruption.
Summary: The web server web1 has been responding to 5% of HTTP requests with 5xx errors for the last 5 minutes.
Status: resolved
Description: This alert fires when a web server responds with more 5xx errors than is expected. This could be an issue with the web server or a backend service.
```
## Print firing and resolved alerts
The following example is similar to the previous one, but it separates firing and resolved alerts.
```go
{{ define "custom.firing_and_resolved_alerts" -}}
{{ len .Alerts.Resolved }} resolved alert(s)
{{ range .Alerts.Resolved -}}
{{ template "alert.summary_and_description" . -}}
{{ end }}
{{ len .Alerts.Firing }} firing alert(s)
{{ range .Alerts.Firing -}}
{{ template "alert.summary_and_description" . -}}
{{ end -}}
{{ end -}}
{{ define "alert.summary_and_description" }}
Summary: {{.Annotations.summary}}
Status: {{ .Status }}
Description: {{.Annotations.description}}
{{ end -}}
```
Instead of `.Alerts`, the template accesses `.Alerts.Firing` and `.Alerts.Resolved` separately to print details for each alert.
The output might now look like this:
```template_output
1 resolved alert(s)
Summary: The database server db1 has exceeded 75% of available disk space.
Status: resolved
Description: This alert fires when a database server is at risk of running out of disk space. You should take measures to increase the maximum available disk space as soon as possible to avoid possible corruption.
1 firing alert(s)
Summary: The web server web1 has been responding to 5% of HTTP requests with 5xx errors for the last 5 minutes.
Status: firing
Description: This alert fires when a web server responds with more 5xx errors than is expected. This could be an issue with the web server or a backend service.
```
## Print common labels and annotations
This example displays only the labels and annotations that are common to all alerts in the notification.
```go
{{ define "custom.common_labels_and_annotations" -}}
{{ len .Alerts.Resolved }} resolved alert(s)
{{ len .Alerts.Firing }} firing alert(s)
Common labels: {{ len .CommonLabels.SortedPairs }}
{{ range .CommonLabels.SortedPairs -}}
- {{ .Name }} = {{ .Value }}
{{ end }}
Common annotations: {{ len .CommonAnnotations.SortedPairs }}
{{ range .CommonAnnotations.SortedPairs }}
- {{ .Name }} = {{ .Value }}
{{ end }}
{{ end -}}
```
Note that `.CommonAnnotations` and `.CommonLabels` are part of [notification data](ref:reference-notification-data).
```template_output
1 resolved alert(s)
1 firing alert(s)
Common labels: 2
- grafana_folder = server_alerts
- team = server_admin
Common annotations: 0
```
## Print individual labels and annotations
This example displays all labels and annotations for each [alert](ref:reference-alert) in the notification.
```go
{{ define "custom.alert_labels_and_annotations" -}}
{{ len .Alerts.Resolved }} resolved alert(s)
{{ range .Alerts.Resolved -}}
{{ template "alert.labels_and_annotations" . -}}
{{ end }}
{{ len .Alerts.Firing }} firing alert(s)
{{ range .Alerts.Firing -}}
{{ template "alert.labels_and_annotations" . -}}
{{ end -}}
{{ end -}}
{{ define "alert.labels_and_annotations" }}
Alert labels: {{ len .Labels.SortedPairs }}
{{ range .Labels.SortedPairs -}}
- {{ .Name }} = {{ .Value }}
{{ end -}}
Alert annotations: {{ len .Annotations.SortedPairs }}
{{ range .Annotations.SortedPairs -}}
- {{ .Name }} = {{ .Value }}
{{ end -}}
{{ end -}}
```
In this example:
- The `custom.alert_labels_and_annotations` template iterates over the list of resolved and firing alerts, similar to previous examples. It then executes `alert.labels_and_annotations` for each alert.
- The `alert.labels_and_annotations` template prints all the alert labels and annotations by accessing `.Labels.SortedPairs` and `.Annotations.SortedPairs`.
```template_output
1 resolved alert(s)
Alert labels: 4
- alertname = db_server_disk_space
- grafana_folder = server_alerts
- server = db1
- team = server_admin
Alert annotations: 2
- summary = The database server db1 has exceeded 75% of available disk space.
- description = This alert fires when a database server is at risk of running out of disk space. You should take measures to increase the maximum available disk space as soon as possible to avoid possible corruption.
1 firing alert(s)
Alert labels: 4
- alertname = web_server_http_errors
- grafana_folder = server_alerts
- server = web1
- team = server_admin
Alert annotations: 2
- summary = The web server web1 has been responding to 5% of HTTP requests with 5xx errors for the last 5 minutes.
- description = This alert fires when a web server responds with more 5xx errors than is expected. This could be an issue with the web server or a backend service.
```
## Print URLs for runbook and alert data in Grafana
Note that the following example works only for Grafana-managed alerts. It displays some [alert data](ref:reference-alert) such as `DashboardURL`, `PanelURL`, and `SilenceURL`, which are exclusive to Grafana-managed alerts.
```go
{{ define "custom.alert_additional_details" -}}
{{ len .Alerts.Resolved }} resolved alert(s)
{{ range .Alerts.Resolved -}}
{{ template "alert.additional_details" . -}}
{{ end }}
{{ len .Alerts.Firing }} firing alert(s)
{{ range .Alerts.Firing -}}
{{ template "alert.additional_details" . -}}
{{ end -}}
{{ end -}}
{{ define "alert.additional_details" }}
- Dashboard: {{ .DashboardURL }}
- Panel: {{ .PanelURL }}
- AlertGenerator: {{ .GeneratorURL }}
- Silence: {{ .SilenceURL }}
- RunbookURL: {{ .Annotations.runbook_url}}
{{ end -}}
```
The output of this template looks like this:
```template_output
1 resolved alert(s)
- Dashboard: https://example.com/d/
- Panel: https://example.com/d/
- AlertGenerator: ?orgId=1
- Silence: https://example.com/alerting/silence/new
- RunbookURL: https://example.com/on-call/db_server_disk_space
1 firing alert(s)
- Dashboard: https://example.com/d/
- Panel: https://example.com/d/
- AlertGenerator: ?orgId=1
- Silence: https://example.com/alerting/silence/new
- RunbookURL: https://example.com/on-call/web_server_http_errors
```
## Print a notification title or subject
A title or subject provides a one-line summary of the notification content.
Heres a basic example that displays the number of firing and resolved alerts in the notification.
```go
{{ define "custom_title" -}}
{{ if gt (.Alerts.Firing | len) 0 }}🚨 {{ .Alerts.Firing | len }} firing alerts. {{ end }}{{ if gt (.Alerts.Resolved | len) 0 }} {{ .Alerts.Resolved | len }} resolved alerts.{{ end }}
{{ end -}}
```
```template_output
🚨 1 firing alerts. ✅ 1 resolved alerts.
```
The next example is a copy of the default title/subject template used in Grafana.
```go
{{ define "copy_of_default_title" -}}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ if gt (.Alerts.Resolved | len) 0 }}, RESOLVED:{{ .Alerts.Resolved | len }}{{ end }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}
{{ end }}
```
This is a more advanced example:
- Prints the number of firing and resolved alerts in the notification.
- Outputs `.GroupLabels`, the labels used to [group multiple alerts in one notification](ref:group-alert-notifications).
- Prints `CommonLabels`, excluding labels in `.GroupLabels`.
```template_output
[FIRING:1, RESOLVED:1] api warning (sql_db)
```

Some files were not shown because too many files have changed in this diff Show More