Compare commits

...

35 Commits

Author SHA1 Message Date
Yuri Tseretyan
4236845ea8 register endpoint 2026-01-05 12:47:21 -05:00
Yuri Tseretyan
d4e94cef50 define a custom route for receiver testing 2026-01-05 12:47:21 -05:00
Yuri Tseretyan
c723526f4e integration testing svc 2026-01-05 12:47:21 -05:00
Yuri Tseretyan
e56fc80d93 create testintegration method 2026-01-05 12:47:20 -05:00
Yuri Tseretyan
dfaa5ec1d4 refactor: extract conversion to integration to ConvertReceiverIntegrationToIntegration 2026-01-05 12:46:26 -05:00
Yuri Tseretyan
4abd88ec95 refactor: consolidate all encrypt\decrypt functions 2026-01-05 12:46:26 -05:00
Yuri Tseretyan
405871d41d refactor: change GetReceiver to get by UID
to avoid conversions of name to uid back an forth
2026-01-05 12:46:25 -05:00
Will Browne
618316a2f7 Revert "App Plugins: Allow to define experimental pages" (#115841)
Revert "App Plugins: Allow to define experimental pages (#114232)"

This reverts commit e1a2f178e7.
2026-01-05 17:04:07 +00:00
vesalaakso-oura
a9c2117aa7 Transformers: Add smoothing transformer (#111077)
* Transformers: Add smoothing transformer

Added a smoothing transformer to help clean up noisy time series data.
It uses the ASAP algorithm to pick the most important data points while
keeping the overall shape and trends intact.

The transformer always keeps the first and last points so you get the
complete time range. I also added a test for it.

* Change category

Change category from Reformat to CalculateNewFields

* Remove first/last point preservation

* Fix operator recreation

* Simplify ASAP code

Include performance optimization as well

* Refactor interpolateFromSmoothedCurve

Break function into smaller focused functions and lift functions to the
top level

* Add isApplicable Check

Make sure the transformer is applicable for timeseries data

* Add tests for isApplicable check

* UI/UX improvements: Display effective resolution when limited by data points

Show "Effective: X" indicator when resolution is capped by the 2x data
points multiplier. Includes tooltip explaining the limit.

Memoizes calculation to prevent unnecessary recalculation on re-renders.

Example: With 72 data points and resolution set to 150, displays
"Effective: 144" since the limit is 72 x 2 = 144.

Plus added tests

* Improve discoverability by adding tags

* Preserve Original Data

Let's preserve original data as well, makes the UX so much better.
Changed from appending (smoothed) to frame names to use Smoothed frame name. This should match the pattern used by other transformers (e.g,. regression)
Updated tests accordingly
Updated tooltip note

* Add asap tests

Basic functionality:
* returns valid DataPoint objects
* Maintain x-axis ordering

Edge cases:
* Empty array
* single data point
* filter NaN values
* all NaN values
* sort unsorted data
* negative values

* Update dark and light images

* Clear state cache

* Add feature toggle

* Conditionally add new transformation to the registry

* chore: update and regenerate feature toggles

* chore: update yarn.lock

* chore: fix transformers and imports
2026-01-05 17:53:45 +01:00
renovate-sh-app[bot]
bc31a768f7 chore(deps): update dependency nodemailer to v7.0.11 [security] (#115182)
| datasource | package    | from  | to     |
| ---------- | ---------- | ----- | ------ |
| npm        | nodemailer | 7.0.7 | 7.0.11 |

Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
2026-01-05 16:40:56 +00:00
Isabella Siu
52c035defc Cloudwatch: fix aws authentication doc links (#115805) 2026-01-05 11:25:41 -05:00
Yuri Tseretyan
7ba2c559c4 Alerting: Add support for client certificate authentication and TLS options to External Alertmanager (#115716)
* add support for skip TLS verify

* extract constructor for ExternalAMcfg and tests

* extract constructor for AlertmanagerConfig and tests

* add support for client cert auth
2026-01-05 16:19:29 +00:00
Andreas Christou
c1f95a2713 Graphite: Fix series naming convention in backend mode (#115588)
Fix series naming convention
2026-01-05 16:04:17 +00:00
Stephanie Hingtgen
158fc09015 Zanzana: Reset on migration failures (#115806) 2026-01-05 09:55:26 -06:00
Stephanie Hingtgen
e9e507a887 Zanzana: Add reconcilation verbs (#115772) 2026-01-05 09:48:00 -06:00
Stephanie Hingtgen
dc992b62b6 Zanzana: Only increment reconciliation metric if successful across all namespaces (#115807) 2026-01-05 09:47:51 -06:00
Ashley Harrison
6adc45bf30 FS: Allow anonymous access to snapshot route (#115829)
allow anonymous access to snapshot route
2026-01-05 15:27:49 +00:00
Ashley Harrison
e310d5e8ee FS: Only attempt session rotation if expiration cookie exists (#115824)
don't attempt rotation if no expiration cookie exists
2026-01-05 15:27:35 +00:00
Adela Almasan
5698f2d039 Tooltips: Prevent dismissing with keyboard shortcuts (#115802) 2026-01-05 08:56:21 -06:00
Jesse David Peterson
d8cdee80f0 Canvas: Fix image loading when icon element SVG defined by field mappings (#115748)
* chore(gdev-dashboard): minimal repro of escalation #19939 bug report

* fix(canvas): add branching logic to handle field mapping to icons case

* test(canvas): validate integration of canvas icon mappings

* refactor(resource-dimension): defensive against JS `undefined` in paths
2026-01-05 10:48:16 -04:00
Deyan Halachliyski
e8e2f95637 Alerting: Add Alert activity card to alerting home page (#115822) 2026-01-05 15:42:56 +01:00
Haris Rozajac
ab4ccef319 Dashboard Conversion: Set panel level datasource when converting from v2 to v1 (#115777)
* set panel level ds when converting from v2 to v1

* remove comment

* lint

* always set ds in sqr

* improve

* Apply suggestions from code review

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>

---------

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2026-01-05 07:37:57 -07:00
Will Browne
99cabcb8be Plugins: Remove pkg/services/org and pkg/services/pluginsintegration/pluginerrs dependencies (#115820)
* remove deps from pkg/plugins

* fmt

* lint fix
2026-01-05 14:10:44 +00:00
Atharv Mudse
b4a65ac5ac Prometheus Dashboards: Use $__rate_interval instead of hardcoded value (#111899)
* Prometheus Dashboards: Use __rate_interval #110370 fix(prometheus): use  in stats dashboard

* Added required changes to F:\grafana\public\app\plugins\datasource\prometheus\dashboards\prometheus_2_stats.json file

* removed empty line

* removed all steps
2026-01-05 13:14:30 +00:00
Alexander Akhmetov
872ed5dc9d Alerting: Add plugins:hide backend rule search parameter (#113706)
Alerting: Add plugins filter to list rules API
2026-01-05 13:17:51 +01:00
Will Browne
70b1053ad1 Plugins: Remove pkg/infra/fs, pkg/infra/tracing and pkg/infra/process dependencies from pkg/plugins (#115798)
* remove dependency on packages

* update tests

* trigger
2026-01-05 11:12:31 +00:00
Josh Hunt
4e3039e4bd Chore: Bump qs (#115815)
Bumps qs package in transitive dependencies to version 6.14.1
2026-01-05 11:02:52 +00:00
Akshat Sinha
c05e1bd43a Auth: Cleanup duplicate isGroupMember methods from OAuth connectors (#115786)
Remove duplicate isGroupMember methods from OAuth connectors
2026-01-05 11:35:28 +01:00
Gabriel MABILLE
93566ce4ef Chore: Unify token exchange round trippers (#115609)
* Chore: Unify token exchange rount trippers

* Remove the conditional provider for now

* Remove unecessary strategy

* test cleanup

* Lint
2026-01-05 11:23:35 +01:00
Mariell Hoversholm
76a6db818e Frontend: Remove bootstrap (#115813) 2026-01-05 11:07:23 +01:00
Will Browne
1a0bc39ec3 Plugins: Remove some pkg/infra/* dependencies from pkg/plugins (#115795)
* tackle some /pkg/infra/* packages

* run make update-workspace

* add owner for slugify dep
2026-01-05 09:42:47 +00:00
Gareth
3b3e87ff89 OpenTSDB: Migrate frontend requests to data source backend (#115221)
* OpenTSDB: Migrate metadata queries to data source backend

* OpenTSDB: Migrate annotations to the data source backend

* return errors for failed unmarshal

* remove trailing / from metadata requests

* remove console logs
2026-01-05 18:35:19 +09:00
Stephanie Hingtgen
eb2a390425 Unistore: Prevent deadlock on startup errors (#115799) 2026-01-05 00:51:23 -07:00
Kristina Demeshchik
967ba3acaf Dashboard: Fix dashboardUID in conversion logs to use actual dashboard UID (#115797)
udpate loggers
2026-01-02 13:12:04 -05:00
Will Browne
105b407629 Plugins: Sync validator plugin.json schema copy edits back to source of truth (#115790)
sync validator copy edits back to source of truth
2026-01-02 15:52:10 +00:00
275 changed files with 8590 additions and 2543 deletions

View File

@@ -54,6 +54,7 @@ require (
github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect
github.com/BurntSushi/toml v1.5.0 // indirect
github.com/Machiel/slugify v1.0.1 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig/v3 v3.3.0 // indirect

View File

@@ -115,6 +115,8 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo=
github.com/IBM/pgxpoolprometheus v1.1.2 h1:sHJwxoL5Lw4R79Zt+H4Uj1zZ4iqXJLdk7XDE7TPs97U=
github.com/IBM/pgxpoolprometheus v1.1.2/go.mod h1:+vWzISN6S9ssgurhUNmm6AlXL9XLah3TdWJktquKTR8=
github.com/Machiel/slugify v1.0.1 h1:EfWSlRWstMadsgzmiV7d0yVd2IFlagWH68Q+DcYCm4E=
github.com/Machiel/slugify v1.0.1/go.mod h1:fTFGn5uWEynW4CUMG7sWkYXOf1UgDxyTM3DbR6Qfg3k=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=

View File

@@ -430,4 +430,100 @@ spec:
type: object
scope: Namespaced
name: v0alpha1
routes:
namespaced:
/testing/integration:
get:
operationId: getIntegrationTest
requestBody:
content:
application/json:
schema:
additionalProperties: false
properties:
alert:
$ref: '#/components/schemas/getIntegrationTestAlert'
integration:
$ref: '#/components/schemas/getIntegrationTestIntegration'
receiver_ref:
type: string
required:
- alert
- integration
type: object
required: true
responses:
default:
content:
application/json:
schema:
additionalProperties: false
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of
this representation of an object. Servers should convert
recognized schemas to the latest internal value, and may
reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
duration:
type: string
error:
type: string
kind:
description: 'Kind is a string value representing the REST
resource this object represents. Servers may infer this
from the endpoint the client submits requests to. Cannot
be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
timestamp:
format: date-time
type: string
required:
- timestamp
- duration
- apiVersion
- kind
type: object
description: Default OK response
schemas:
getIntegrationTestAlert:
additionalProperties: false
properties:
annotations:
additionalProperties:
type: string
type: object
labels:
additionalProperties:
type: string
type: object
required:
- labels
- annotations
type: object
getIntegrationTestIntegration:
additionalProperties: false
properties:
disableResolveMessage:
type: boolean
secureFields:
additionalProperties:
type: boolean
type: object
settings:
additionalProperties:
additionalProperties: {}
type: object
type: object
type:
type: string
uid:
type: string
version:
type: string
required:
- type
- version
- settings
type: object
served: true

View File

@@ -1,5 +1,19 @@
package kinds
import (
"time",
"github.com/grafana/grafana/apps/alerting/notifications/kinds/v0alpha1"
)
#Alert: {
labels: {
[string]: string
}
annotations: {
[string]: string
}
}
manifest: {
appName: "alerting-notifications"
groupOverride: "notifications.alerting.grafana.app"
@@ -14,7 +28,28 @@ manifest: {
routeTreev0alpha1,
templatev0alpha1,
timeIntervalv0alpha1,
]
],
routes: {
namespaced: {
"/testing/integration" : {
"GET": {
name: "getIntegrationTest"
request: {
body: {
alert: #Alert
receiver_ref?: string
integration: v0alpha1.#Integration
}
}
response: {
timestamp: time.Time
duration: string
error?: string
}
}
}
}
},
}
}
}

View File

@@ -0,0 +1,46 @@
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
package v0alpha1
type GetIntegrationTestRequestAlert struct {
Labels map[string]string `json:"labels"`
Annotations map[string]string `json:"annotations"`
}
// NewGetIntegrationTestRequestAlert creates a new GetIntegrationTestRequestAlert object.
func NewGetIntegrationTestRequestAlert() *GetIntegrationTestRequestAlert {
return &GetIntegrationTestRequestAlert{
Labels: map[string]string{},
Annotations: map[string]string{},
}
}
type GetIntegrationTestRequestIntegration struct {
Uid *string `json:"uid,omitempty"`
Type string `json:"type"`
Version string `json:"version"`
DisableResolveMessage *bool `json:"disableResolveMessage,omitempty"`
Settings map[string]any `json:"settings"`
SecureFields map[string]bool `json:"secureFields,omitempty"`
}
// NewGetIntegrationTestRequestIntegration creates a new GetIntegrationTestRequestIntegration object.
func NewGetIntegrationTestRequestIntegration() *GetIntegrationTestRequestIntegration {
return &GetIntegrationTestRequestIntegration{
Settings: map[string]any{},
}
}
type GetIntegrationTestRequestBody struct {
Alert GetIntegrationTestRequestAlert `json:"alert"`
ReceiverRef *string `json:"receiver_ref,omitempty"`
Integration GetIntegrationTestRequestIntegration `json:"integration"`
}
// NewGetIntegrationTestRequestBody creates a new GetIntegrationTestRequestBody object.
func NewGetIntegrationTestRequestBody() *GetIntegrationTestRequestBody {
return &GetIntegrationTestRequestBody{
Alert: *NewGetIntegrationTestRequestAlert(),
Integration: *NewGetIntegrationTestRequestIntegration(),
}
}

View File

@@ -0,0 +1,19 @@
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
package v0alpha1
import (
time "time"
)
// +k8s:openapi-gen=true
type GetIntegrationTestBody struct {
Timestamp time.Time `json:"timestamp"`
Duration string `json:"duration"`
Error *string `json:"error,omitempty"`
}
// NewGetIntegrationTestBody creates a new GetIntegrationTestBody object.
func NewGetIntegrationTestBody() *GetIntegrationTestBody {
return &GetIntegrationTestBody{}
}

View File

@@ -0,0 +1,37 @@
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
package v0alpha1
import (
"github.com/grafana/grafana-app-sdk/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
)
// +k8s:openapi-gen=true
type GetIntegrationTest struct {
metav1.TypeMeta `json:",inline"`
GetIntegrationTestBody `json:",inline"`
}
func NewGetIntegrationTest() *GetIntegrationTest {
return &GetIntegrationTest{}
}
func (t *GetIntegrationTestBody) DeepCopyInto(dst *GetIntegrationTestBody) {
_ = resource.CopyObjectInto(dst, t)
}
func (o *GetIntegrationTest) DeepCopyObject() runtime.Object {
dst := NewGetIntegrationTest()
o.DeepCopyInto(dst)
return dst
}
func (o *GetIntegrationTest) DeepCopyInto(dst *GetIntegrationTest) {
dst.TypeMeta.APIVersion = o.TypeMeta.APIVersion
dst.TypeMeta.Kind = o.TypeMeta.Kind
o.GetIntegrationTestBody.DeepCopyInto(&dst.GetIntegrationTestBody)
}
var _ runtime.Object = NewGetIntegrationTest()

View File

@@ -79,9 +79,206 @@ var appManifestData = app.ManifestData{
},
},
Routes: app.ManifestVersionRoutes{
Namespaced: map[string]spec3.PathProps{},
Cluster: map[string]spec3.PathProps{},
Schemas: map[string]spec.Schema{},
Namespaced: map[string]spec3.PathProps{
"/testing/integration": {
Get: &spec3.Operation{
OperationProps: spec3.OperationProps{
OperationId: "getIntegrationTest",
RequestBody: &spec3.RequestBody{
RequestBodyProps: spec3.RequestBodyProps{
Required: true,
Content: map[string]*spec3.MediaType{
"application/json": {
MediaTypeProps: spec3.MediaTypeProps{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
Properties: map[string]spec.Schema{
"alert": {
SchemaProps: spec.SchemaProps{
Ref: spec.MustCreateRef("#/components/schemas/getIntegrationTestAlert"),
},
},
"integration": {
SchemaProps: spec.SchemaProps{
Ref: spec.MustCreateRef("#/components/schemas/getIntegrationTestIntegration"),
},
},
"receiver_ref": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
},
Required: []string{
"alert",
"integration",
},
}},
}},
},
}},
Responses: &spec3.Responses{
ResponsesProps: spec3.ResponsesProps{
Default: &spec3.Response{
ResponseProps: spec3.ResponseProps{
Description: "Default OK response",
Content: map[string]*spec3.MediaType{
"application/json": {
MediaTypeProps: spec3.MediaTypeProps{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
Properties: map[string]spec.Schema{
"apiVersion": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
},
},
"duration": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
"error": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
"kind": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
},
},
"timestamp": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
Format: "date-time",
},
},
},
Required: []string{
"timestamp",
"duration",
"apiVersion",
"kind",
},
}},
}},
},
},
},
}},
},
},
},
},
Cluster: map[string]spec3.PathProps{},
Schemas: map[string]spec.Schema{
"getIntegrationTestAlert": {
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
Properties: map[string]spec.Schema{
"annotations": {
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
AdditionalProperties: &spec.SchemaOrBool{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
},
},
},
"labels": {
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
AdditionalProperties: &spec.SchemaOrBool{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
},
},
},
},
Required: []string{
"labels",
"annotations",
},
},
},
"getIntegrationTestIntegration": {
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
Properties: map[string]spec.Schema{
"disableResolveMessage": {
SchemaProps: spec.SchemaProps{
Type: []string{"boolean"},
},
},
"secureFields": {
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
AdditionalProperties: &spec.SchemaOrBool{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"boolean"},
},
},
},
},
},
"settings": {
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
AdditionalProperties: &spec.SchemaOrBool{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
AdditionalProperties: &spec.SchemaOrBool{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{},
},
},
},
},
},
},
},
"type": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
"uid": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
"version": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
},
},
},
Required: []string{
"type",
"version",
"settings",
},
},
},
},
},
},
},
@@ -109,7 +306,9 @@ func ManifestGoTypeAssociator(kind, version string) (goType resource.Kind, exist
return goType, exists
}
var customRouteToGoResponseType = map[string]any{}
var customRouteToGoResponseType = map[string]any{
"v0alpha1||<namespace>/testing/integration|GET": v0alpha1.GetIntegrationTest{},
}
// ManifestCustomRouteResponsesAssociator returns the associated response go type for a given kind, version, custom route path, and method, if one exists.
// kind may be empty for custom routes which are not kind subroutes. Leading slashes are removed from subroute paths.
@@ -133,7 +332,9 @@ func ManifestCustomRouteQueryAssociator(kind, version, path, verb string) (goTyp
return goType, exists
}
var customRouteToGoRequestBodyType = map[string]any{}
var customRouteToGoRequestBodyType = map[string]any{
"v0alpha1||<namespace>/testing/integration|GET": v0alpha1.GetIntegrationTestRequestBody{},
}
func ManifestCustomRouteRequestBodyAssociator(kind, version, path, verb string) (goType any, exists bool) {
if len(path) > 0 && path[0] == '/' {

View File

@@ -2,6 +2,8 @@ package app
import (
"context"
"errors"
"fmt"
"github.com/grafana/grafana-app-sdk/app"
"github.com/grafana/grafana-app-sdk/logging"
@@ -9,6 +11,7 @@ import (
"github.com/grafana/grafana-app-sdk/simple"
"github.com/grafana/grafana/apps/alerting/notifications/pkg/apis"
"github.com/grafana/grafana/apps/alerting/notifications/pkg/apis/alertingnotifications/v0alpha1"
)
func New(cfg app.Config) (app.App, error) {
@@ -19,6 +22,14 @@ func New(cfg app.Config) (app.App, error) {
}
}
customCfg, ok := cfg.SpecificConfig.(*Config)
if !ok {
return nil, errors.New("no configuration")
}
if err := customCfg.Validate(); err != nil {
return nil, fmt.Errorf("invalid configuration: %w", err)
}
c := simple.AppConfig{
Name: "alerting.notification",
KubeConfig: cfg.KubeConfig,
@@ -30,6 +41,15 @@ func New(cfg app.Config) (app.App, error) {
},
},
ManagedKinds: managedKinds,
VersionedCustomRoutes: map[string]simple.AppVersionRouteHandlers{
v0alpha1.APIVersion: {
simple.AppVersionRoute{
Namespaced: true,
Path: "testing/integration",
Method: "GET",
}: customCfg.ReceiverTestingHandler.HandleReceiverTestingRequest,
},
},
}
a, err := simple.NewApp(c)

View File

@@ -0,0 +1,23 @@
package app
import (
"context"
"errors"
"github.com/grafana/grafana-app-sdk/app"
)
type Config struct {
ReceiverTestingHandler ReceiverTestingHandler
}
func (c *Config) Validate() error {
if c.ReceiverTestingHandler == nil {
return errors.New("receiver testing handler is required")
}
return nil
}
type ReceiverTestingHandler interface {
HandleReceiverTestingRequest(context.Context, app.CustomRouteResponseWriter, *app.CustomRouteRequest) error
}

View File

@@ -85,20 +85,20 @@ func withConversionMetrics(sourceVersionAPI, targetVersionAPI string, conversion
// Only track schema versions for v0/v1 dashboards (v2+ info is redundant with API version)
switch source := a.(type) {
case *dashv0.Dashboard:
dashboardUID = string(source.UID)
dashboardUID = source.Name
if source.Spec.Object != nil {
sourceSchemaVersion = schemaversion.GetSchemaVersion(source.Spec.Object)
}
case *dashv1.Dashboard:
dashboardUID = string(source.UID)
dashboardUID = source.Name
if source.Spec.Object != nil {
sourceSchemaVersion = schemaversion.GetSchemaVersion(source.Spec.Object)
}
case *dashv2alpha1.Dashboard:
dashboardUID = string(source.UID)
dashboardUID = source.Name
// Don't track schema version for v2+ (redundant with API version)
case *dashv2beta1.Dashboard:
dashboardUID = string(source.UID)
dashboardUID = source.Name
// Don't track schema version for v2+ (redundant with API version)
}

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -93,6 +105,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -115,6 +131,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -93,6 +105,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -115,6 +131,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -50,6 +54,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -50,6 +54,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -65,6 +65,9 @@
"type": "row"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Versions running\nShows the versions reported by each running pod.\n\nThe rollout will fail if any pod is not running the expected version.\n\nPods in green are running the expected version, while pods running other versions are shown in orange.\n\n",
"fieldConfig": {
"defaults": {
@@ -185,6 +188,9 @@
"type": "barchart"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Deployment rollout progress\nShows the number of pods for each `Deployment` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `Deployment`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig": {
"defaults": {
@@ -286,6 +292,9 @@
"type": "barchart"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### StatefulSet rollout progress\nShows the number of pods for each `StatefulSet` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `StatefulSet`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig": {
"defaults": {
@@ -399,6 +408,9 @@
"type": "row"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Aggregator lag\nShows the consumption lag of each aggregator pod.\n\nThis panel may show no data if aggregators are not deployed to this cell.\n\nThe rollout will fail if any pod's consumption lag is both:\n* greater than 30s (red area on graph), and\n* trending upwards compared to 1 minute earlier\n\n",
"fieldConfig": {
"defaults": {
@@ -468,6 +480,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Unhealthy Deployment replicas\nShows the number of unavailable pods for each `Deployment`.\n\nThe rollout will fail if any `Deployment` has an unavailable pod.\n\nBoth this panel and the rollout check ignore any `Deployment`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`Deployment`s shown in green do not have any unavailable pods, while `Deployment`s shown in orange have one or more unavailable pods.\n\n",
"fieldConfig": {
"defaults": {
@@ -569,6 +584,9 @@
"type": "barchart"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Unhealthy StatefulSet replicas\nShows the number of pods for each `StatefulSet` that are not ready.\n\nThe rollout will fail if any `StatefulSet` has fewer ready pods than requested.\n\nBoth this panel and the rollout check ignore any `StatefulSets`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`StatefulSets`s shown in green do not have any pods that are not ready, while `StatefulSet`s shown in orange have one or more pods that are not ready.\n\n",
"fieldConfig": {
"defaults": {

View File

@@ -65,6 +65,9 @@
"type": "row"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Versions running\nShows the versions reported by each running pod.\n\nThe rollout will fail if any pod is not running the expected version.\n\nPods in green are running the expected version, while pods running other versions are shown in orange.\n\n",
"fieldConfig": {
"defaults": {
@@ -185,6 +188,9 @@
"type": "barchart"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Deployment rollout progress\nShows the number of pods for each `Deployment` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `Deployment`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig": {
"defaults": {
@@ -286,6 +292,9 @@
"type": "barchart"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### StatefulSet rollout progress\nShows the number of pods for each `StatefulSet` that match the desired configuration, as a proportion of the desired number of pods.\n\nThe rollout will fail if insufficient pods match the desired configuration for any `StatefulSet`.\n\nPods in green match the desired configuration, while pods that do not match the desired configuration are shown in orange.\n\n",
"fieldConfig": {
"defaults": {
@@ -399,6 +408,9 @@
"type": "row"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Aggregator lag\nShows the consumption lag of each aggregator pod.\n\nThis panel may show no data if aggregators are not deployed to this cell.\n\nThe rollout will fail if any pod's consumption lag is both:\n* greater than 30s (red area on graph), and\n* trending upwards compared to 1 minute earlier\n\n",
"fieldConfig": {
"defaults": {
@@ -468,6 +480,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Unhealthy Deployment replicas\nShows the number of unavailable pods for each `Deployment`.\n\nThe rollout will fail if any `Deployment` has an unavailable pod.\n\nBoth this panel and the rollout check ignore any `Deployment`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`Deployment`s shown in green do not have any unavailable pods, while `Deployment`s shown in orange have one or more unavailable pods.\n\n",
"fieldConfig": {
"defaults": {
@@ -569,6 +584,9 @@
"type": "barchart"
},
{
"datasource": {
"uid": "$datasource"
},
"description": "### Unhealthy StatefulSet replicas\nShows the number of pods for each `StatefulSet` that are not ready.\n\nThe rollout will fail if any `StatefulSet` has fewer ready pods than requested.\n\nBoth this panel and the rollout check ignore any `StatefulSets`s that require spot nodes, as these are expected to be unavailable from time to time.\n\n`StatefulSets`s shown in green do not have any pods that are not ready, while `StatefulSet`s shown in orange have one or more pods that are not ready.\n\n",
"fieldConfig": {
"defaults": {

View File

@@ -37,6 +37,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -59,6 +63,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -37,6 +37,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -59,6 +63,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -44,6 +44,9 @@
"liveNow": false,
"panels": [
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample metric showing connection count.",
"fieldConfig": {
"defaults": {
@@ -134,6 +137,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample counter metric.",
"fieldConfig": {
"defaults": {
@@ -224,6 +230,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample error metric.",
"fieldConfig": {
"defaults": {
@@ -314,6 +323,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample event rate metric.",
"fieldConfig": {
"defaults": {
@@ -404,6 +416,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample resource utilization metric.",
"fieldConfig": {
"defaults": {
@@ -493,6 +508,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample memory allocation metrics.",
"fieldConfig": {
"defaults": {
@@ -593,6 +611,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample utilization percentage.",
"fieldConfig": {
"defaults": {
@@ -662,6 +683,9 @@
"type": "row"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample latency metric for primary operations.",
"fieldConfig": {
"defaults": {
@@ -748,6 +772,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample latency metric for secondary operations.",
"fieldConfig": {
"defaults": {
@@ -834,6 +861,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample expansion events metric.",
"fieldConfig": {
"defaults": {

View File

@@ -44,6 +44,9 @@
"liveNow": false,
"panels": [
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample metric showing connection count.",
"fieldConfig": {
"defaults": {
@@ -134,6 +137,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample counter metric.",
"fieldConfig": {
"defaults": {
@@ -224,6 +230,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample error metric.",
"fieldConfig": {
"defaults": {
@@ -314,6 +323,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample event rate metric.",
"fieldConfig": {
"defaults": {
@@ -404,6 +416,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample resource utilization metric.",
"fieldConfig": {
"defaults": {
@@ -493,6 +508,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample memory allocation metrics.",
"fieldConfig": {
"defaults": {
@@ -593,6 +611,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample utilization percentage.",
"fieldConfig": {
"defaults": {
@@ -662,6 +683,9 @@
"type": "row"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample latency metric for primary operations.",
"fieldConfig": {
"defaults": {
@@ -748,6 +772,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample latency metric for secondary operations.",
"fieldConfig": {
"defaults": {
@@ -834,6 +861,9 @@
"type": "timeseries"
},
{
"datasource": {
"uid": "${example_datasource}"
},
"description": "Sample expansion events metric.",
"fieldConfig": {
"defaults": {

View File

@@ -39,6 +39,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 12,
@@ -61,6 +65,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 12,
@@ -151,6 +159,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -173,6 +185,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -195,6 +211,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -229,6 +249,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 16,
@@ -251,6 +275,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 8,
@@ -286,6 +314,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 24,

View File

@@ -39,6 +39,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 12,
@@ -61,6 +65,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 12,
@@ -151,6 +159,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -173,6 +185,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -195,6 +211,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -229,6 +249,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 16,
@@ -251,6 +275,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 8,
@@ -286,6 +314,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 24,

View File

@@ -41,6 +41,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 24,
@@ -78,6 +82,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -103,6 +111,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -128,6 +140,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"fieldConfig": {
"defaults": {
"thresholds": {
@@ -174,6 +190,10 @@
"type": "stat"
},
{
"datasource": {
"type": "loki",
"uid": "${loki}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -202,6 +222,10 @@
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${loki}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -230,6 +254,10 @@
"type": "logs"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -255,6 +283,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Number of concurrent processing threads available for handling operations",
"gridPos": {
"h": 7,
@@ -280,6 +312,10 @@
"type": "stat"
},
{
"datasource": {
"type": "tempo",
"uid": "${tempo}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -324,6 +360,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Histogram showing p99, p95, p50, and p10 percentiles for job processing duration based on number of resources changed",
"fieldConfig": {
"defaults": {
@@ -425,6 +465,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Histogram showing p99, p95, p50, and p10 percentiles for job processing duration based on number of resources changed",
"gridPos": {
"h": 7,
@@ -477,6 +521,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Total number of jobs waiting to be processed",
"gridPos": {
"h": 7,
@@ -502,6 +550,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"fieldConfig": {
"defaults": {
"unit": "s"
@@ -532,6 +584,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "How long a job is in the queue before being picked up",
"gridPos": {
"h": 7,
@@ -584,6 +640,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -609,6 +669,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -633,6 +697,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -675,6 +743,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"gridPos": {
"h": 7,
"w": 8,

View File

@@ -41,6 +41,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 24,
@@ -78,6 +82,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -103,6 +111,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -128,6 +140,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"fieldConfig": {
"defaults": {
"thresholds": {
@@ -174,6 +190,10 @@
"type": "stat"
},
{
"datasource": {
"type": "loki",
"uid": "${loki}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -202,6 +222,10 @@
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "${loki}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -230,6 +254,10 @@
"type": "logs"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -255,6 +283,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Number of concurrent processing threads available for handling operations",
"gridPos": {
"h": 7,
@@ -280,6 +312,10 @@
"type": "stat"
},
{
"datasource": {
"type": "tempo",
"uid": "${tempo}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -324,6 +360,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Histogram showing p99, p95, p50, and p10 percentiles for job processing duration based on number of resources changed",
"fieldConfig": {
"defaults": {
@@ -425,6 +465,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Histogram showing p99, p95, p50, and p10 percentiles for job processing duration based on number of resources changed",
"gridPos": {
"h": 7,
@@ -477,6 +521,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "Total number of jobs waiting to be processed",
"gridPos": {
"h": 7,
@@ -502,6 +550,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"fieldConfig": {
"defaults": {
"unit": "s"
@@ -532,6 +584,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"description": "How long a job is in the queue before being picked up",
"gridPos": {
"h": 7,
@@ -584,6 +640,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -609,6 +669,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -633,6 +697,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"gridPos": {
"h": 7,
"w": 8,
@@ -675,6 +743,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${prom}"
},
"gridPos": {
"h": 7,
"w": 8,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -71,6 +79,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,
@@ -93,6 +105,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 4,
@@ -115,6 +131,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -137,6 +157,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,
@@ -159,6 +183,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 24,
@@ -181,6 +209,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 24,
@@ -203,6 +235,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,
@@ -225,6 +261,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -71,6 +79,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,
@@ -93,6 +105,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 4,
@@ -115,6 +131,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 8,
@@ -137,6 +157,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,
@@ -159,6 +183,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 6,
"w": 24,
@@ -181,6 +209,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 24,
@@ -203,6 +235,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,
@@ -225,6 +261,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 4,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +75,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -98,6 +106,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -126,6 +138,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -160,6 +176,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +75,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -98,6 +106,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -126,6 +138,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -160,6 +176,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -55,6 +59,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -83,6 +91,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -111,6 +123,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -140,6 +156,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -168,6 +188,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -55,6 +59,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -83,6 +91,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -111,6 +123,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -140,6 +156,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -168,6 +188,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -50,6 +54,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -73,6 +81,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -95,6 +107,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -50,6 +54,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -73,6 +81,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -95,6 +107,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -62,6 +66,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -102,6 +110,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 24,
@@ -144,6 +156,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -186,6 +202,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -62,6 +66,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -102,6 +110,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 24,
@@ -144,6 +156,10 @@
"type": "gauge"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -186,6 +202,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -60,6 +64,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -97,6 +105,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -136,6 +148,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -165,6 +181,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -60,6 +64,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -97,6 +105,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -136,6 +148,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -165,6 +181,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests basic migration with default style pattern (/.*/) containing thresholds and colors. Should convert styles to fieldConfig.defaults with threshold steps.",
"gridPos": {
"h": 3,
@@ -57,6 +61,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests comprehensive migration including: default style with thresholds/colors/unit/decimals/align/colorMode, column overrides with exact name and regex patterns, date formatting, hidden columns, and links with tooltips.",
"gridPos": {
"h": 3,
@@ -80,6 +88,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of timeseries_aggregations transform to reduce transformation with column mappings (avg-\u003emean, max-\u003emax, min-\u003emin, total-\u003esum, current-\u003elastNotNull, count-\u003ecount).",
"gridPos": {
"h": 3,
@@ -103,6 +115,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of timeseries_to_rows transform to seriesToRows transformation.",
"gridPos": {
"h": 3,
@@ -126,6 +142,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of timeseries_to_columns transform to seriesToColumns transformation.",
"gridPos": {
"h": 3,
@@ -149,6 +169,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of table transform to merge transformation. Also tests auto alignment conversion to empty string.",
"gridPos": {
"h": 3,
@@ -172,6 +196,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests that existing transformations are preserved and new transformation from old format is appended to the list.",
"gridPos": {
"h": 3,
@@ -208,6 +236,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests handling of mixed numeric and string threshold values (int, string, float) with proper type conversion.",
"gridPos": {
"h": 3,
@@ -231,6 +263,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests all color mode mappings: cell-\u003ecolor-background, row-\u003ecolor-background, value-\u003ecolor-text.",
"gridPos": {
"h": 3,
@@ -254,6 +290,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests all alignment options: left, center, right, and auto (should convert to empty string).",
"gridPos": {
"h": 3,
@@ -277,6 +317,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests both field matcher types: byName for exact matches and byRegexp for regex patterns.",
"gridPos": {
"h": 3,
@@ -300,6 +344,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests various link configurations: with and without tooltip, with and without target blank.",
"gridPos": {
"h": 3,
@@ -323,6 +371,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests various date format patterns and aliases.",
"gridPos": {
"h": 3,
@@ -346,6 +398,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "React table (table2) should not be migrated. Properties should remain unchanged.",
"gridPos": {
"h": 3,
@@ -369,6 +425,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Angular table without styles property should not be migrated.",
"gridPos": {
"h": 3,
@@ -392,6 +452,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Non-table panels should remain completely unchanged.",
"gridPos": {
"h": 3,
@@ -415,6 +479,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Other panel types should not be affected by table migration.",
"gridPos": {
"h": 3,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests basic migration with default style pattern (/.*/) containing thresholds and colors. Should convert styles to fieldConfig.defaults with threshold steps.",
"gridPos": {
"h": 3,
@@ -57,6 +61,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests comprehensive migration including: default style with thresholds/colors/unit/decimals/align/colorMode, column overrides with exact name and regex patterns, date formatting, hidden columns, and links with tooltips.",
"gridPos": {
"h": 3,
@@ -80,6 +88,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of timeseries_aggregations transform to reduce transformation with column mappings (avg-\u003emean, max-\u003emax, min-\u003emin, total-\u003esum, current-\u003elastNotNull, count-\u003ecount).",
"gridPos": {
"h": 3,
@@ -103,6 +115,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of timeseries_to_rows transform to seriesToRows transformation.",
"gridPos": {
"h": 3,
@@ -126,6 +142,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of timeseries_to_columns transform to seriesToColumns transformation.",
"gridPos": {
"h": 3,
@@ -149,6 +169,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests migration of table transform to merge transformation. Also tests auto alignment conversion to empty string.",
"gridPos": {
"h": 3,
@@ -172,6 +196,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests that existing transformations are preserved and new transformation from old format is appended to the list.",
"gridPos": {
"h": 3,
@@ -208,6 +236,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests handling of mixed numeric and string threshold values (int, string, float) with proper type conversion.",
"gridPos": {
"h": 3,
@@ -231,6 +263,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests all color mode mappings: cell-\u003ecolor-background, row-\u003ecolor-background, value-\u003ecolor-text.",
"gridPos": {
"h": 3,
@@ -254,6 +290,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests all alignment options: left, center, right, and auto (should convert to empty string).",
"gridPos": {
"h": 3,
@@ -277,6 +317,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests both field matcher types: byName for exact matches and byRegexp for regex patterns.",
"gridPos": {
"h": 3,
@@ -300,6 +344,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests various link configurations: with and without tooltip, with and without target blank.",
"gridPos": {
"h": 3,
@@ -323,6 +371,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests various date format patterns and aliases.",
"gridPos": {
"h": 3,
@@ -346,6 +398,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "React table (table2) should not be migrated. Properties should remain unchanged.",
"gridPos": {
"h": 3,
@@ -369,6 +425,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Angular table without styles property should not be migrated.",
"gridPos": {
"h": 3,
@@ -392,6 +452,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Non-table panels should remain completely unchanged.",
"gridPos": {
"h": 3,
@@ -415,6 +479,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Other panel types should not be affected by table migration.",
"gridPos": {
"h": 3,

View File

@@ -33,6 +33,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -55,6 +59,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -33,6 +33,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -55,6 +59,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "text"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -56,6 +60,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -78,6 +86,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -107,6 +119,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -56,6 +60,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -78,6 +86,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -107,6 +119,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -56,6 +60,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -85,6 +93,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -107,6 +119,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -136,6 +152,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -159,6 +179,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 8,
"w": 8,
@@ -182,6 +206,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"mappings": [
@@ -249,6 +277,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 8,
"w": 8,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -56,6 +60,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -85,6 +93,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -107,6 +119,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -136,6 +152,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -159,6 +179,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 8,
"w": 8,
@@ -182,6 +206,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"mappings": [
@@ -249,6 +277,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 8,
"w": 8,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -93,6 +105,10 @@
"type": "barchart"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -93,6 +105,10 @@
"type": "barchart"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"mappings": [
@@ -125,6 +129,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -151,6 +159,10 @@
"type": "xychart"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -178,6 +190,10 @@
"type": "xychart2"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -204,6 +220,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"mappings": [
@@ -305,6 +325,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"unit": "bytes"
@@ -337,6 +361,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"overrides": [
{

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"mappings": [
@@ -125,6 +129,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -151,6 +159,10 @@
"type": "xychart"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -178,6 +190,10 @@
"type": "xychart2"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -204,6 +220,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"mappings": [
@@ -305,6 +325,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"unit": "bytes"
@@ -337,6 +361,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"overrides": [
{

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -59,6 +63,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -99,6 +107,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -149,6 +161,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -171,6 +187,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -259,6 +279,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -59,6 +63,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -99,6 +107,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -149,6 +161,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -171,6 +187,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -259,6 +279,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -33,6 +33,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +75,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -33,6 +33,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +75,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "loki",
"uid": "non-default-test-ds-uid"
},
"description": "Tests v33 migration behavior when panel datasource is explicitly null. Should remain null after migration (returnDefaultAsNull: true).",
"gridPos": {
"h": 3,
@@ -51,6 +55,10 @@
"type": "stat"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests v33 migration behavior when panel datasource is already a proper object reference. Should remain unchanged.",
"gridPos": {
"h": 3,
@@ -75,6 +83,10 @@
"type": "stat"
},
{
"datasource": {
"type": "loki",
"uid": "non-default-test-ds-uid"
},
"description": "Tests v33 migration when panel datasource is a string name. Should convert to proper object with uid, type, apiVersion.",
"gridPos": {
"h": 3,
@@ -98,6 +110,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests v33 migration when panel has datasource string but empty targets array. Panel datasource should still migrate.",
"gridPos": {
"h": 3,
@@ -283,6 +299,10 @@
"id": -1,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Nested panel with string datasource should migrate to proper object reference, proving row panel recursion works.",
"gridPos": {
"h": 3,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "loki",
"uid": "non-default-test-ds-uid"
},
"description": "Tests v33 migration behavior when panel datasource is explicitly null. Should remain null after migration (returnDefaultAsNull: true).",
"gridPos": {
"h": 3,
@@ -51,6 +55,10 @@
"type": "stat"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests v33 migration behavior when panel datasource is already a proper object reference. Should remain unchanged.",
"gridPos": {
"h": 3,
@@ -75,6 +83,10 @@
"type": "stat"
},
{
"datasource": {
"type": "loki",
"uid": "non-default-test-ds-uid"
},
"description": "Tests v33 migration when panel datasource is a string name. Should convert to proper object with uid, type, apiVersion.",
"gridPos": {
"h": 3,
@@ -98,6 +110,10 @@
"type": "table"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests v33 migration when panel has datasource string but empty targets array. Panel datasource should still migrate.",
"gridPos": {
"h": 3,
@@ -283,6 +299,10 @@
"id": -1,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Nested panel with string datasource should migrate to proper object reference, proving row panel recursion works.",
"gridPos": {
"h": 3,

View File

@@ -289,6 +289,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -355,6 +359,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -386,6 +394,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -492,6 +504,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -522,6 +538,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -626,6 +646,10 @@
"id": -1,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -689,6 +713,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -738,6 +766,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -769,6 +801,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -818,6 +854,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -849,6 +889,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -927,6 +971,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -1006,6 +1054,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -289,6 +289,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -355,6 +359,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -386,6 +394,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -492,6 +504,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -522,6 +538,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -626,6 +646,10 @@
"id": -1,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -689,6 +713,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -738,6 +766,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -769,6 +801,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -818,6 +854,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -849,6 +889,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -927,6 +971,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -1006,6 +1054,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -70,6 +74,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -125,6 +133,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -154,6 +166,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -183,6 +199,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -205,6 +225,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -227,6 +251,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"unit": "bytes"
@@ -254,6 +282,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -70,6 +74,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -125,6 +133,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -154,6 +166,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {
@@ -183,6 +199,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -205,6 +225,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -227,6 +251,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"unit": "bytes"
@@ -254,6 +282,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"fieldConfig": {
"defaults": {
"custom": {

View File

@@ -77,6 +77,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests null panel datasource migration with targets - should fallback to default",
"gridPos": {
"h": 3,
@@ -100,6 +104,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests null panel datasource with empty targets array - should create default target",
"gridPos": {
"h": 3,
@@ -123,6 +131,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests null panel datasource with missing targets - should create default target array",
"gridPos": {
"h": 3,
@@ -180,6 +192,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel with already migrated datasource object - should preserve existing refs",
"gridPos": {
"h": 3,
@@ -203,6 +219,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "unknown-target-datasource"
},
"description": "Tests panel with unknown datasource - should preserve as UID-only reference",
"gridPos": {
"h": 3,
@@ -260,6 +280,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel inheriting datasource from target when panel datasource was default",
"gridPos": {
"h": 3,
@@ -283,6 +307,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel with datasource referenced by name - should migrate to full object",
"gridPos": {
"h": 3,
@@ -306,6 +334,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel with datasource referenced by UID - should migrate to full object",
"gridPos": {
"h": 3,
@@ -345,6 +377,10 @@
"id": -1,
"panels": [
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Nested panel in collapsed row with default datasource",
"gridPos": {
"h": 3,
@@ -368,6 +404,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Nested panel in collapsed row with unknown datasource",
"gridPos": {
"h": 3,

View File

@@ -77,6 +77,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests null panel datasource migration with targets - should fallback to default",
"gridPos": {
"h": 3,
@@ -100,6 +104,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests null panel datasource with empty targets array - should create default target",
"gridPos": {
"h": 3,
@@ -123,6 +131,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"description": "Tests null panel datasource with missing targets - should create default target array",
"gridPos": {
"h": 3,
@@ -180,6 +192,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel with already migrated datasource object - should preserve existing refs",
"gridPos": {
"h": 3,
@@ -203,6 +219,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "unknown-target-datasource"
},
"description": "Tests panel with unknown datasource - should preserve as UID-only reference",
"gridPos": {
"h": 3,
@@ -260,6 +280,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel inheriting datasource from target when panel datasource was default",
"gridPos": {
"h": 3,
@@ -283,6 +307,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel with datasource referenced by name - should migrate to full object",
"gridPos": {
"h": 3,
@@ -306,6 +334,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Tests panel with datasource referenced by UID - should migrate to full object",
"gridPos": {
"h": 3,
@@ -345,6 +377,10 @@
"id": -1,
"panels": [
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Nested panel in collapsed row with default datasource",
"gridPos": {
"h": 3,
@@ -368,6 +404,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch",
"uid": "existing-target-uid"
},
"description": "Nested panel in collapsed row with unknown datasource",
"gridPos": {
"h": 3,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -49,6 +49,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -72,6 +76,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,

View File

@@ -49,6 +49,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,
@@ -72,6 +76,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 8,
"w": 12,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -27,6 +27,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -49,6 +53,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,
@@ -71,6 +79,10 @@
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "default-ds-uid"
},
"gridPos": {
"h": 3,
"w": 6,

View File

@@ -66,6 +66,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"description": "This panel demonstrates conditional rendering features",
"fieldConfig": {
"defaults": {

View File

@@ -66,6 +66,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"description": "This panel demonstrates conditional rendering features",
"fieldConfig": {
"defaults": {

View File

@@ -150,6 +150,9 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -245,6 +248,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -341,6 +348,9 @@
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -400,6 +410,10 @@
"type": "stat"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"fieldConfig": {
"defaults": {
"color": {

View File

@@ -150,6 +150,9 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -245,6 +248,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -341,6 +348,9 @@
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -400,6 +410,10 @@
"type": "stat"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"fieldConfig": {
"defaults": {
"color": {

View File

@@ -14,6 +14,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"fieldConfig": {
"defaults": {
"color": {

View File

@@ -14,6 +14,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"fieldConfig": {
"defaults": {
"color": {

View File

@@ -66,6 +66,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"description": "This panel demonstrates conditional rendering features",
"fieldConfig": {
"defaults": {

View File

@@ -66,6 +66,10 @@
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"description": "This panel demonstrates conditional rendering features",
"fieldConfig": {
"defaults": {

View File

@@ -80,6 +80,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"description": "This should resolve to the grafana-testdata-datasource datasource",
"fieldConfig": {
"defaults": {
@@ -170,6 +174,9 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch"
},
"description": "This should resolve to the first elasticsearch datasource",
"fieldConfig": {
"defaults": {

View File

@@ -80,6 +80,10 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"description": "This should resolve to the grafana-testdata-datasource datasource",
"fieldConfig": {
"defaults": {
@@ -170,6 +174,9 @@
"type": "timeseries"
},
{
"datasource": {
"type": "elasticsearch"
},
"description": "This should resolve to the first elasticsearch datasource",
"fieldConfig": {
"defaults": {

View File

@@ -150,6 +150,9 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -245,6 +248,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -341,6 +348,9 @@
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -400,6 +410,10 @@
"type": "stat"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"fieldConfig": {
"defaults": {
"color": {

View File

@@ -150,6 +150,9 @@
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -245,6 +248,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "gdev-prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -341,6 +348,9 @@
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -400,6 +410,10 @@
"type": "stat"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "gdev-testdata"
},
"fieldConfig": {
"defaults": {
"color": {

View File

@@ -67,6 +67,10 @@
"type": "row"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "defin43am9o1sd"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -219,6 +223,10 @@
"type": "row"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "defin43am9o1sd"
},
"fieldConfig": {
"defaults": {
"color": {
@@ -309,6 +317,10 @@
"type": "timeseries"
},
{
"datasource": {
"type": "grafana-testdata-datasource",
"uid": "defin43am9o1sd"
},
"fieldConfig": {
"defaults": {
"color": {

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