Compare commits

...

35 Commits

Author SHA1 Message Date
Will Browne
c3c5229986 undo go.mod change 2026-01-13 16:22:49 +00:00
Will Browne
7a2775b1a7 make update-workspace 2026-01-13 16:06:59 +00:00
Will Browne
d25a8f5e72 fix lint issues 2026-01-13 15:59:06 +00:00
Will Browne
48d032e5aa undo stale comment 2026-01-13 15:58:25 +00:00
Will Browne
ae06690681 move loading strategy into pkg/plugins 2026-01-13 15:46:34 +00:00
Haris Rozajac
f5aa39cc27 Dashboard Conversion: Add missing dev dashboards when comparing v1 to v2 conversion (#115967)
* descritpion and transformations

* add fieldMinMax to schema

* add nullValueMode to schema

* convert actions

* disabled prop in transformations

* update

* fix

* gauge

* remove index (deprecated) and decimals as strings

* gofmt

* codegen

* lint

* open api
2026-01-13 07:38:35 -07:00
Will Browne
aa9b587cc1 Plugins: Add module hash field to plugin model (#116119)
* add module hash field to plugin model

* fix tests

* fix lint issues
2026-01-13 14:35:45 +00:00
Will Assis
86652a6515 unified-storage: sql backend key_path backfill (#116142) 2026-01-13 09:35:02 -05:00
Misi
c9a14f1774 IAM: Target resource authorization for TeamBinding (#116117)
* wip

* Review VerbGet vs VerbGetPermissions

* Fix tests
2026-01-13 14:45:18 +01:00
Will Browne
d2b788eb53 Plugins: Remove angular details from meta API (#116194)
remove angular details from meta API
2026-01-13 13:41:40 +00:00
Ashley Harrison
dffae66fdc Storybook: Add workflow to deploy canary storybook (#116138)
* add first attempt at storybook deploy action for canary

* don't run on push to main yet!

* add CODEOWNER
2026-01-13 13:10:04 +00:00
alerting-team[bot]
5dbbe8164b Alerting: Update alerting module to 98a49ed9557fd9b5f33ecb77cbaa0748f13dc568 (#116197)
* [create-pull-request] automated change

* update prometheus-alertmanager

---------

Co-authored-by: titolins <8942194+titolins@users.noreply.github.com>
Co-authored-by: Tito Lins <tito.linsesilva@grafana.com>
2026-01-13 12:27:35 +00:00
Tobias Skarhed
d1064da4cd Scopes: Add RTK Query API client for caching (#115494)
* Scopes API client

* Initial RTK query commit

* Copy API client from generated enterprise folder

* Mock ScopesApiClient for integration tests

* Update e2e tests

* Handle group expansion for dashboard navigation

* Extract integration test mocks

* Move mock to only be for integration tests

* Update path for enterprise sync script

* Re-export mockData

* Disregard caching for search

* Leave name parameters empty

* Disable subscriptions for client requests

* Add functionality to reset cache between mocked requests

* Use grafana-test-utils for scopes integration tests

* Rollback mock setup

* Remove store form window object

* Remove cache helper

* Restore scopenode search functionality

* Improve request erro handling

* Clean up subscription in case subscription: false lies

* Fix logging security risk

* Rewrite tests to cover RTK query usage and improve error catching

* Update USE_LIVE_DATA to be consistent

* Remove unused timout parameter

* Fix error handling

* Make dashboard-navigation test pass
2026-01-13 13:09:08 +01:00
Tito Lins
b57b8d4359 fix: handle go mod issues (#116187) 2026-01-13 12:48:16 +01:00
Mustafa Sencer Özcan
5219ccddb6 fix: improve resilience for unified storage and search service grpc clients (#116122)
* fix: reliability

* fix: resilience

* fix: add connection backoff

* fix: reduce backoff
2026-01-13 11:42:21 +00:00
Ashley Harrison
c95e3da2d5 Theme: Convert themes to json and define schemas using zod (#116006)
* convert all theme files to json

* automatically discover extra themes in go backend

* use zod

* error tidy up

* error tidy up p2

* generate theme json schema from zod

* generate theme list at build time, don't do it at runtime

* make name and id required in the theme schema
2026-01-13 11:13:11 +00:00
Gareth
43d9fbc056 Tempo: Fix search streaming queries (#116136)
* Tempo: Fix search queries

* apply variables for metrics streaming queries
2026-01-13 19:47:44 +09:00
Konrad Lalik
7b80c44ac7 Alerting: Fix label value search not filtering results (#116133)
Fixes the issue where typing in the label value dropdown would display
all values instead of filtering them based on the search input.

The bug was in `createAsyncValuesLoader` which was ignoring the
`valueQuery` parameter and returning all combined values instead of
the filtered subset.

Changes:
- Rename `_inputValue` parameter to `valueQuery` to indicate it should be used
- Filter combined values based on case-insensitive search query
- Return only filtered values instead of all values

Tests:
- Add test to verify correct values are shown for each label key
- Add test to verify search filtering works correctly
- Improve test infrastructure with proper portal container and element mocking
  for virtualized dropdown rendering
2026-01-13 11:43:07 +01:00
Rafael Bortolon Paulovic
98f271f345 chore(unified): remove unifiedStorageSearchSprinkles feature toggle (#116139)
chore: remove unifiedStorageSearchSprinkles feature flag

The feature flag is no longer needed because:
- OSS: usageinsights code doesn't exist in OSS builds
- Enterprise On-Prem: uses local SQL storage when enable_search=true
- Cloud: explicitly configures sprinkles_api_server URL

The sprinkles functionality now works automatically based on:
- enable_search config (enforced true for unified storage mode 5)
- sprinkles_api_server config (empty = local storage, set = remote API)
2026-01-13 11:24:13 +01:00
Vardan Torosyan
60c4fab063 [Docs] Add Synthentic Monitoring app to the list of RBAC supported apps (#116167)
* [Docs] Add Synthentic Monitoring app to the list of RBAC supported apps

* Run prettier
2026-01-13 11:23:33 +01:00
Ihor Yeromin
ce8663ac24 SQL Expressions: Filter Dashboard datasource queries from schema fetching (#116129)
* fix(sql expression): sql schema frontend datasources filtering

* add one more test
2026-01-13 10:26:33 +01:00
Yulia Shanyrova
5dd9a14903 Plugins: Fix the flaky configuration tab on the plugin details page for cloud instances (#114922)
Fix flaky configuration tab for plugin details page at cloud instances
2026-01-13 09:55:52 +01:00
Roberto Jiménez Sánchez
68bf19d840 Provisioning: handle resource version conflicts in connection CRUDL test (#116184)
fix: handle resource version conflicts in connection CRUDL test

After updating a connection resource, the controller may update the
resource status, changing the resource version. This causes the delete
operation to fail with a resource version conflict.

Add retry logic to handle conflicts gracefully by retrying the delete
operation when encountering resource version conflicts.
2026-01-13 08:53:54 +00:00
Costa Alexoglou
220c29de89 fix: 401 in grafana live spam (#116140) 2026-01-13 09:46:06 +01:00
Oscar Kilhed
91ab753368 Dynamic Dashboards: Fix navigation to repeated panels and update outline when lazy items repeat (#116030)
Dashboard Outline: Fix navigation to repeated panels and lazy-loaded repeats

- Remove cursor: not-allowed styling from repeated panels in outline
- Add RepeatsUpdatedEvent to notify when panel repeats are populated
- Subscribe to RepeatsUpdatedEvent in DashboardEditPane to refresh outline
- Remove memoization from visibleChildren to ensure outline updates on re-render
2026-01-13 08:43:50 +01:00
Alex Khomenko
250ca7985f Provisioning: Add Connections page (#116060)
* Provisioning: Add connections page

* Provisioning: Add connections form

* Provisioning: Add connections form

* Update fields

* Fix generated name

* Update connection name

* Add edit page

* error handling

* Form validation

* Add Connections button

* Cleanup

* Extract ConnectionFormData type

* Add list test and separate empty states

* Add form test

* Update tests

* i18n

* Cleanup

* Use SecretTextArea from grafana-ui

* Fix breadcrumbs

* tweaks

* Add missing URL

* Switch to ShowConfirmModalEvent

* i18n

* redirect to list on success

* add timeout

* Fix tags invalidation
2026-01-13 08:25:40 +02:00
Hugo Häggmark
b57ed32484 chore: remove app/core/config barrel files (#116068) 2026-01-13 06:23:21 +01:00
Galen Kistler
d0217588a3 LogsDrilldown: Remove exploreLogsLimitedTimeRange flag (#116177)
chore: remove flag
2026-01-12 22:43:01 +00:00
Denis Vodopianov
ce9ab6a89a Add non-boolean feature flags support to the StaticProvider (#115085)
* initial commit

* add support of integerts

* finialise the static provider

* minor refactoring

* the rest

* revert:  the rest

* add new thiongs

* more tests added

* add ff parsing tests to check if types are handled correctly

* update tests according to recent changes

* address golint issues

* Update pkg/setting/setting_feature_toggles.go

Co-authored-by: Dave Henderson <dave.henderson@grafana.com>

* fix rebase issues

* addressing review comments

* add test cases for enterprise

* handle enterprise cases

* minor refactoring to make api a bit easier to debug

* make test names a bit more precise

* fix linter

* add openfeature sdk to goleak ignore in testutil

* Remove only boolean check in ff gen tests

* add non-boolean types top the doc in default.ini and doc string in FeatureFlag type

* apply remarks, add docs to sample.ini

* reflect changes in feature flags in the public grafana configuration doc

* fix doc formatting

* apply suggestions to the doc file

---------

Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
2026-01-12 22:53:23 +01:00
Will Assis
8c8efd2494 unified-storage: skip sqlkv/sqlbackend compatibility tests in sqlite (#116164) 2026-01-12 16:31:29 -05:00
Will Assis
69ccfd6bfc unified-storage: fix sharedwithme search not returning folders (#116089)
* unified-storage: fix dashboard sharedwithme search not returning folders shared with the user
2026-01-12 15:33:34 -05:00
Nick Richmond
53aa5e8f7f MetricsDrilldown: Remove exploreMetricsRelatedLogs feature toggle (#116090)
chore: remove unused exploreMetricsRelatedLogs feature toggle
2026-01-12 12:52:40 -05:00
Ida Štambuk
69bf3068b3 Dashboards: Never show scopes variables (#116132) 2026-01-12 18:52:23 +01:00
Will Assis
1263a3d364 unified-storage: HappyPath and notifier tests + couple of bugfixes (#116087)
* unified-storage: couple of bugfixes and enable HappyPath and notifier sqlkv tests
2026-01-12 12:17:41 -05:00
Daniele Stefano Ferru
e4b79e2fc8 Provisioning: Add Validation and Mutation for Connection resource (#115596)
* WIP: mutator added, start working on validator

* first validator iteration

* second validator iteration

* wip: working on integration tests

* re-working mutation and validation, using Connection interface

* fixing some rebase things

* fixing integration tests

* formatting

* fixing unit tests

* k8s codegen

* linting

* moving tests which are available only for enterprise

* addressing comments: using repo config for connections, updating tests

* addressing comments: adding some more info in the app and installation

* fixing app data

* addressing comments: updating connection implementation

* addressing comments

* formatting

* fixing tests
2026-01-12 17:52:00 +01:00
525 changed files with 14011 additions and 5199 deletions

1
.github/CODEOWNERS vendored
View File

@@ -1275,6 +1275,7 @@ embed.go @grafana/grafana-as-code
/.github/workflows/i18n-crowdin-download.yml @grafana/grafana-frontend-platform
/.github/workflows/i18n-crowdin-create-tasks.yml @grafana/grafana-frontend-platform
/.github/workflows/i18n-verify.yml @grafana/grafana-frontend-platform
/.github/workflows/deploy-storybook.yml @grafana/grafana-frontend-platform
/.github/workflows/deploy-storybook-preview.yml @grafana/grafana-frontend-platform
/.github/workflows/scripts/crowdin/create-tasks.ts @grafana/grafana-frontend-platform
/.github/workflows/scripts/publish-frontend-metrics.mts @grafana/grafana-frontend-platform

79
.github/workflows/deploy-storybook.yml vendored Normal file
View File

@@ -0,0 +1,79 @@
name: Deploy Storybook
on:
workflow_dispatch:
# push:
# branches:
# - main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
detect-changes:
# Only run in grafana/grafana
if: github.repository == 'grafana/grafana'
name: Detect whether code changed
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
changed-frontend-packages: ${{ steps.detect-changes.outputs.frontend-packages }}
steps:
- uses: actions/checkout@v5
with:
persist-credentials: true # required to get more history in the changed-files action
fetch-depth: 2
- name: Detect changes
id: detect-changes
uses: ./.github/actions/change-detection
with:
self: .github/workflows/deploy-storybook.yml
deploy-storybook:
name: Deploy Storybook
runs-on: ubuntu-latest
needs: detect-changes
# Only run in grafana/grafana
if: github.repository == 'grafana/grafana' && needs.detect-changes.outputs.changed-frontend-packages == 'true'
permissions:
contents: read
id-token: write
env:
BUCKET_NAME: grafana-storybook
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Install dependencies
run: yarn install --immutable
- name: Build storybook
run: yarn storybook:build
# Create the GCS folder name
# Right now, this just returns "canary"
# But we'll expand this to work for "latest" as well in the future
- name: Create deploy name
id: create-deploy-name
run: |
echo "deploy-name=canary" >> "$GITHUB_OUTPUT"
- name: Upload Storybook
uses: grafana/shared-workflows/actions/push-to-gcs@main
with:
environment: prod
bucket: ${{ env.BUCKET_NAME }}
bucket_path: ${{ steps.create-deploy-name.outputs.deploy-name }}
path: packages/grafana-ui/dist/storybook
service_account: github-gf-storybook-deploy@grafanalabs-workload-identity.iam.gserviceaccount.com
parent: false

View File

@@ -135,7 +135,7 @@ i18n-extract-enterprise:
@echo "Skipping i18n extract for Enterprise: not enabled"
else
i18n-extract-enterprise:
@echo "Extracting i18n strings for Enterprise"
@echo "Extracting i18n strings for Enterprise"
cd public/locales/enterprise && yarn run i18next-cli extract --sync-primary
endif
@@ -227,6 +227,10 @@ fix-cue:
gen-jsonnet:
go generate ./devenv/jsonnet
.PHONY: gen-themes
gen-themes:
go generate ./pkg/services/preference
.PHONY: update-workspace
update-workspace: gen-go
@echo "updating workspace"
@@ -244,6 +248,7 @@ build-go-fast: ## Build all Go binaries without updating workspace.
.PHONY: build-backend
build-backend: ## Build Grafana backend.
@echo "build backend"
$(MAKE) gen-themes
$(GO) run build.go $(GO_BUILD_FLAGS) build-backend
.PHONY: build-air

View File

@@ -4,7 +4,7 @@ go 1.25.5
require (
github.com/go-kit/log v0.2.1
github.com/grafana/alerting v0.0.0-20251231150637-b7821017d69f
github.com/grafana/alerting v0.0.0-20260112172717-98a49ed9557f
github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4
github.com/grafana/grafana-app-sdk v0.48.7
github.com/grafana/grafana-app-sdk/logging v0.48.7

View File

@@ -243,8 +243,8 @@ 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/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/grafana/alerting v0.0.0-20251231150637-b7821017d69f h1:Br4SaUL3dnVopKKNhDavCLgehw60jdtl/sIxdfzmVts=
github.com/grafana/alerting v0.0.0-20251231150637-b7821017d69f/go.mod h1:l7v67cgP7x72ajB9UPZlumdrHqNztpKoqQ52cU8T3LU=
github.com/grafana/alerting v0.0.0-20260112172717-98a49ed9557f h1:3bXOyht68qkfvD6Y8z8XoenFbytSSOIkr/s+AqRzj0o=
github.com/grafana/alerting v0.0.0-20260112172717-98a49ed9557f/go.mod h1:Ji0SfJChcwjgq8ljy6Y5CcYfHfAYKXjKYeysOoDS/6s=
github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4 h1:jSojuc7njleS3UOz223WDlXOinmuLAIPI0z2vtq8EgI=
github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4/go.mod h1:VahT+GtfQIM+o8ht2StR6J9g+Ef+C2Vokh5uuSmOD/4=
github.com/grafana/grafana-app-sdk v0.48.7 h1:9mF7nqkqP0QUYYDlznoOt+GIyjzj45wGfUHB32u2ZMo=

View File

@@ -254,8 +254,18 @@ FieldConfig: {
// custom is specified by the FieldConfig field
// in panel plugin schemas.
custom?: {...}
// Calculate min max per field
fieldMinMax?: bool
// How null values should be handled when calculating field stats
// "null" - Include null values, "connected" - Ignore nulls, "null as zero" - Treat nulls as zero
nullValueMode?: NullValueMode
}
// How null values should be handled
NullValueMode: "null" | "connected" | "null as zero"
DynamicConfigValue: {
id: string | *""
value?: _

View File

@@ -250,8 +250,18 @@ FieldConfig: {
// custom is specified by the FieldConfig field
// in panel plugin schemas.
custom?: {...}
// Calculate min max per field
fieldMinMax?: bool
// How null values should be handled when calculating field stats
// "null" - Include null values, "connected" - Ignore nulls, "null as zero" - Treat nulls as zero
nullValueMode?: NullValueMode
}
// How null values should be handled
NullValueMode: "null" | "connected" | "null as zero"
DynamicConfigValue: {
id: string | *""
value?: _

View File

@@ -258,8 +258,18 @@ FieldConfig: {
// custom is specified by the FieldConfig field
// in panel plugin schemas.
custom?: {...}
// Calculate min max per field
fieldMinMax?: bool
// How null values should be handled when calculating field stats
// "null" - Include null values, "connected" - Ignore nulls, "null as zero" - Treat nulls as zero
nullValueMode?: NullValueMode
}
// How null values should be handled
NullValueMode: "null" | "connected" | "null as zero"
DynamicConfigValue: {
id: string | *""
value?: _

View File

@@ -419,6 +419,11 @@ type DashboardFieldConfig struct {
// custom is specified by the FieldConfig field
// in panel plugin schemas.
Custom map[string]interface{} `json:"custom,omitempty"`
// Calculate min max per field
FieldMinMax *bool `json:"fieldMinMax,omitempty"`
// How null values should be handled when calculating field stats
// "null" - Include null values, "connected" - Ignore nulls, "null as zero" - Treat nulls as zero
NullValueMode *DashboardNullValueMode `json:"nullValueMode,omitempty"`
}
// NewDashboardFieldConfig creates a new DashboardFieldConfig object.
@@ -745,6 +750,16 @@ func NewDashboardActionVariable() *DashboardActionVariable {
// +k8s:openapi-gen=true
const DashboardActionVariableType = "string"
// How null values should be handled
// +k8s:openapi-gen=true
type DashboardNullValueMode string
const (
DashboardNullValueModeNull DashboardNullValueMode = "null"
DashboardNullValueModeConnected DashboardNullValueMode = "connected"
DashboardNullValueModeNullAsZero DashboardNullValueMode = "null as zero"
)
// +k8s:openapi-gen=true
type DashboardDynamicConfigValue struct {
Id string `json:"id"`

View File

@@ -2277,6 +2277,20 @@ func schema_pkg_apis_dashboard_v2alpha1_DashboardFieldConfig(ref common.Referenc
},
},
},
"fieldMinMax": {
SchemaProps: spec.SchemaProps{
Description: "Calculate min max per field",
Type: []string{"boolean"},
Format: "",
},
},
"nullValueMode": {
SchemaProps: spec.SchemaProps{
Description: "How null values should be handled when calculating field stats \"null\" - Include null values, \"connected\" - Ignore nulls, \"null as zero\" - Treat nulls as zero",
Type: []string{"string"},
Format: "",
},
},
},
},
},

View File

@@ -254,8 +254,18 @@ FieldConfig: {
// custom is specified by the FieldConfig field
// in panel plugin schemas.
custom?: {...}
// Calculate min max per field
fieldMinMax?: bool
// How null values should be handled when calculating field stats
// "null" - Include null values, "connected" - Ignore nulls, "null as zero" - Treat nulls as zero
nullValueMode?: NullValueMode
}
// How null values should be handled
NullValueMode: "null" | "connected" | "null as zero"
DynamicConfigValue: {
id: string | *""
value?: _

View File

@@ -423,6 +423,11 @@ type DashboardFieldConfig struct {
// custom is specified by the FieldConfig field
// in panel plugin schemas.
Custom map[string]interface{} `json:"custom,omitempty"`
// Calculate min max per field
FieldMinMax *bool `json:"fieldMinMax,omitempty"`
// How null values should be handled when calculating field stats
// "null" - Include null values, "connected" - Ignore nulls, "null as zero" - Treat nulls as zero
NullValueMode *DashboardNullValueMode `json:"nullValueMode,omitempty"`
}
// NewDashboardFieldConfig creates a new DashboardFieldConfig object.
@@ -749,6 +754,16 @@ func NewDashboardActionVariable() *DashboardActionVariable {
// +k8s:openapi-gen=true
const DashboardActionVariableType = "string"
// How null values should be handled
// +k8s:openapi-gen=true
type DashboardNullValueMode string
const (
DashboardNullValueModeNull DashboardNullValueMode = "null"
DashboardNullValueModeConnected DashboardNullValueMode = "connected"
DashboardNullValueModeNullAsZero DashboardNullValueMode = "null as zero"
)
// +k8s:openapi-gen=true
type DashboardDynamicConfigValue struct {
Id string `json:"id"`

View File

@@ -2284,6 +2284,20 @@ func schema_pkg_apis_dashboard_v2beta1_DashboardFieldConfig(ref common.Reference
},
},
},
"fieldMinMax": {
SchemaProps: spec.SchemaProps{
Description: "Calculate min max per field",
Type: []string{"boolean"},
Format: "",
},
},
"nullValueMode": {
SchemaProps: spec.SchemaProps{
Description: "How null values should be handled when calculating field stats \"null\" - Include null values, \"connected\" - Ignore nulls, \"null as zero\" - Treat nulls as zero",
Type: []string{"string"},
Format: "",
},
},
},
},
},

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,427 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations \u0026 Alerts",
"type": "dashboard"
},
{
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations \u0026 Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"enable": true,
"filter": {
"exclude": false,
"ids": [
1
]
},
"iconColor": "red",
"name": "Red, only panel 1",
"target": {
"lines": 4,
"refId": "Anno",
"scenarioId": "annotations"
}
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"enable": true,
"filter": {
"exclude": true,
"ids": [
1
]
},
"iconColor": "yellow",
"name": "Yellow - all except 1",
"target": {
"lines": 5,
"refId": "Anno",
"scenarioId": "annotations"
}
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"enable": true,
"filter": {
"exclude": false,
"ids": [
3,
4
]
},
"iconColor": "dark-purple",
"name": "Purple only panel 3+4",
"target": {
"lines": 6,
"refId": "Anno",
"scenarioId": "annotations"
}
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 119,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
},
"id": 1,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"title": "Panel one",
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"id": 2,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"title": "Panel two",
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 8
},
"id": 3,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"title": "Panel three",
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 8
},
"id": 4,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"title": "Panel four",
"type": "timeseries"
}
],
"refresh": "",
"schemaVersion": 42,
"tags": [
"gdev",
"annotations"
],
"templating": {
"list": []
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Annotation filtering",
"uid": "ed155665",
"weekStart": ""
}

View File

@@ -219,8 +219,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -312,8 +311,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -492,8 +490,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -584,8 +581,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -676,8 +672,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -791,8 +786,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -906,8 +900,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},
@@ -1022,8 +1015,7 @@
"value": 80
}
]
},
"unitScale": true
}
},
"overrides": []
},

View File

@@ -65,17 +65,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -136,17 +133,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -207,17 +201,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -271,7 +262,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [],
"max": 100,
"min": 0,
@@ -279,17 +269,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -342,7 +329,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [],
"max": 100,
"min": 0,
@@ -350,17 +336,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -414,7 +397,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [],
"max": 100,
"min": 0,
@@ -422,17 +404,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -485,7 +464,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [],
"max": 100,
"min": 0,
@@ -493,17 +471,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -668,7 +643,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [
{
"options": {
@@ -685,17 +659,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"color": "#e24d42",
"value": 90
}
]
@@ -750,7 +721,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [
{
"options": {
@@ -768,17 +738,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -833,7 +800,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [
{
"options": {
@@ -852,17 +818,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -917,7 +880,6 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "",
"mappings": [
{
"options": {
@@ -946,17 +908,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]
@@ -1038,7 +997,7 @@
"mode": "thresholds"
},
"custom": {},
"decimals": "2",
"decimals": 2,
"mappings": [],
"max": 100,
"min": 0,
@@ -1046,17 +1005,14 @@
"mode": "absolute",
"steps": [
{
"color": "#7EB26D",
"index": 0
"color": "#7EB26D"
},
{
"color": "#ef843c",
"index": 1,
"value": 75
},
{
"color": "#e24d42",
"index": 2,
"value": 90
}
]

Some files were not shown because too many files have changed in this diff Show More