mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Azure: AzureMonitorMetrics - change response to be dataplane compliant (#69308)
* Azure: AzureMonitorMetrics - change response to be dataplane compliant can be disabled via toggle azureMonitorDataplane Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
This commit is contained in:
parent
c280f884f0
commit
ee60d8c82d
@ -41,6 +41,7 @@ Some features are enabled by default. You can disable these feature by setting t
|
|||||||
| `alertingNotificationsPoliciesMatchingInstances` | Enables the preview of matching instances for notification policies | Yes |
|
| `alertingNotificationsPoliciesMatchingInstances` | Enables the preview of matching instances for notification policies | Yes |
|
||||||
| `useCachingService` | When turned on, the new query and resource caching implementation using a wire service inject will be used in place of the previous middleware implementation | |
|
| `useCachingService` | When turned on, the new query and resource caching implementation using a wire service inject will be used in place of the previous middleware implementation | |
|
||||||
| `advancedDataSourcePicker` | Enable a new data source picker with contextual information, recently used order and advanced mode | Yes |
|
| `advancedDataSourcePicker` | Enable a new data source picker with contextual information, recently used order and advanced mode | Yes |
|
||||||
|
| `azureMonitorDataplane` | Adds dataplane compliant frame metadata in the Azure Monitor datasource | Yes |
|
||||||
|
|
||||||
## Preview feature toggles
|
## Preview feature toggles
|
||||||
|
|
||||||
|
@ -116,4 +116,5 @@ export interface FeatureToggles {
|
|||||||
featureToggleAdminPage?: boolean;
|
featureToggleAdminPage?: boolean;
|
||||||
awsAsyncQueryCaching?: boolean;
|
awsAsyncQueryCaching?: boolean;
|
||||||
splitScopes?: boolean;
|
splitScopes?: boolean;
|
||||||
|
azureMonitorDataplane?: boolean;
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ func TestIntegrationPluginManager(t *testing.T) {
|
|||||||
features := featuremgmt.WithFeatures()
|
features := featuremgmt.WithFeatures()
|
||||||
|
|
||||||
hcp := httpclient.NewProvider()
|
hcp := httpclient.NewProvider()
|
||||||
am := azuremonitor.ProvideService(cfg, hcp, tracer)
|
am := azuremonitor.ProvideService(cfg, hcp, features, tracer)
|
||||||
cw := cloudwatch.ProvideService(cfg, hcp, features)
|
cw := cloudwatch.ProvideService(cfg, hcp, features)
|
||||||
cm := cloudmonitoring.ProvideService(hcp, tracer)
|
cm := cloudmonitoring.ProvideService(hcp, tracer)
|
||||||
es := elasticsearch.ProvideService(hcp)
|
es := elasticsearch.ProvideService(hcp)
|
||||||
|
@ -22,7 +22,7 @@ const (
|
|||||||
hostedGrafanaTeam codeowner = "@grafana/hosted-grafana-team"
|
hostedGrafanaTeam codeowner = "@grafana/hosted-grafana-team"
|
||||||
awsDatasourcesSquad codeowner = "@grafana/aws-datasources"
|
awsDatasourcesSquad codeowner = "@grafana/aws-datasources"
|
||||||
appO11ySquad codeowner = "@grafana/app-o11y"
|
appO11ySquad codeowner = "@grafana/app-o11y"
|
||||||
grafanaPartnerPluginsSquad codeowner = "@grafana/partner-plugins"
|
grafanaPartnerPluginsSquad codeowner = "@grafana/partner-datasources"
|
||||||
grafanaOperatorExperienceSquad codeowner = "@grafana/grafana-operator-experience-squad"
|
grafanaOperatorExperienceSquad codeowner = "@grafana/grafana-operator-experience-squad"
|
||||||
enterpriseDatasourcesSquad codeowner = "@grafana/enterprise-datasources"
|
enterpriseDatasourcesSquad codeowner = "@grafana/enterprise-datasources"
|
||||||
)
|
)
|
||||||
|
@ -669,5 +669,12 @@ var (
|
|||||||
Owner: grafanaAuthnzSquad,
|
Owner: grafanaAuthnzSquad,
|
||||||
RequiresRestart: true,
|
RequiresRestart: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "azureMonitorDataplane",
|
||||||
|
Description: "Adds dataplane compliant frame metadata in the Azure Monitor datasource",
|
||||||
|
Stage: FeatureStageGeneralAvailability,
|
||||||
|
Owner: grafanaPartnerPluginsSquad,
|
||||||
|
Expression: "true", // on by default
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -97,3 +97,4 @@ grafanaAPIServer,experimental,@grafana/grafana-app-platform-squad,false,false,fa
|
|||||||
featureToggleAdminPage,experimental,@grafana/grafana-operator-experience-squad,false,false,true,false
|
featureToggleAdminPage,experimental,@grafana/grafana-operator-experience-squad,false,false,true,false
|
||||||
awsAsyncQueryCaching,experimental,@grafana/aws-datasources,false,false,false,false
|
awsAsyncQueryCaching,experimental,@grafana/aws-datasources,false,false,false,false
|
||||||
splitScopes,preview,@grafana/grafana-authnz-team,false,false,true,false
|
splitScopes,preview,@grafana/grafana-authnz-team,false,false,true,false
|
||||||
|
azureMonitorDataplane,GA,@grafana/partner-datasources,false,false,false,false
|
||||||
|
|
@ -398,4 +398,8 @@ const (
|
|||||||
// FlagSplitScopes
|
// FlagSplitScopes
|
||||||
// Support faster dashboard and folder search by splitting permission scopes into parts
|
// Support faster dashboard and folder search by splitting permission scopes into parts
|
||||||
FlagSplitScopes = "splitScopes"
|
FlagSplitScopes = "splitScopes"
|
||||||
|
|
||||||
|
// FlagAzureMonitorDataplane
|
||||||
|
// Adds dataplane compliant frame metadata in the Azure Monitor datasource
|
||||||
|
FlagAzureMonitorDataplane = "azureMonitorDataplane"
|
||||||
)
|
)
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||||
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics"
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/metrics"
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/metrics"
|
||||||
@ -28,10 +29,10 @@ import (
|
|||||||
|
|
||||||
var logger = log.New("tsdb.azuremonitor")
|
var logger = log.New("tsdb.azuremonitor")
|
||||||
|
|
||||||
func ProvideService(cfg *setting.Cfg, httpClientProvider *httpclient.Provider, tracer tracing.Tracer) *Service {
|
func ProvideService(cfg *setting.Cfg, httpClientProvider *httpclient.Provider, features featuremgmt.FeatureToggles, tracer tracing.Tracer) *Service {
|
||||||
proxy := &httpServiceProxy{}
|
proxy := &httpServiceProxy{}
|
||||||
executors := map[string]azDatasourceExecutor{
|
executors := map[string]azDatasourceExecutor{
|
||||||
azureMonitor: &metrics.AzureMonitorDatasource{Proxy: proxy},
|
azureMonitor: &metrics.AzureMonitorDatasource{Proxy: proxy, Features: features},
|
||||||
azureLogAnalytics: &loganalytics.AzureLogAnalyticsDatasource{Proxy: proxy},
|
azureLogAnalytics: &loganalytics.AzureLogAnalyticsDatasource{Proxy: proxy},
|
||||||
azureResourceGraph: &resourcegraph.AzureResourceGraphDatasource{Proxy: proxy},
|
azureResourceGraph: &resourcegraph.AzureResourceGraphDatasource{Proxy: proxy},
|
||||||
azureTraces: &loganalytics.AzureLogAnalyticsDatasource{Proxy: proxy},
|
azureTraces: &loganalytics.AzureLogAnalyticsDatasource{Proxy: proxy},
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||||
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery"
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery"
|
||||||
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics"
|
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics"
|
||||||
@ -28,7 +29,8 @@ import (
|
|||||||
|
|
||||||
// AzureMonitorDatasource calls the Azure Monitor API - one of the four API's supported
|
// AzureMonitorDatasource calls the Azure Monitor API - one of the four API's supported
|
||||||
type AzureMonitorDatasource struct {
|
type AzureMonitorDatasource struct {
|
||||||
Proxy types.ServiceProxy
|
Proxy types.ServiceProxy
|
||||||
|
Features featuremgmt.FeatureToggles
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -396,6 +398,9 @@ func (e *AzureMonitorDatasource) parseResponse(amr types.AzureMonitorResponse, q
|
|||||||
}
|
}
|
||||||
|
|
||||||
frame := data.NewFrameOfFieldTypes("", len(series.Data), data.FieldTypeTime, data.FieldTypeNullableFloat64)
|
frame := data.NewFrameOfFieldTypes("", len(series.Data), data.FieldTypeTime, data.FieldTypeNullableFloat64)
|
||||||
|
if e.Features.IsEnabled(featuremgmt.FlagAzureMonitorDataplane) {
|
||||||
|
frame.Meta = &data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti, TypeVersion: data.FrameTypeVersion{0, 1}}
|
||||||
|
}
|
||||||
frame.RefID = query.RefID
|
frame.RefID = query.RefID
|
||||||
timeField := frame.Fields[0]
|
timeField := frame.Fields[0]
|
||||||
timeField.Name = data.TimeSeriesTimeFieldName
|
timeField.Name = data.TimeSeriesTimeFieldName
|
||||||
|
@ -366,11 +366,20 @@ func TestCustomNamespace(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fakeFeatureToggles struct {
|
||||||
|
flags map[string]bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFeatureToggles) IsEnabled(feature string) bool {
|
||||||
|
return f.flags[feature]
|
||||||
|
}
|
||||||
|
|
||||||
func TestAzureMonitorParseResponse(t *testing.T) {
|
func TestAzureMonitorParseResponse(t *testing.T) {
|
||||||
resources := map[string]dataquery.AzureMonitorResource{}
|
resources := map[string]dataquery.AzureMonitorResource{}
|
||||||
resources["/subscriptions/12345678-aaaa-bbbb-cccc-123456789abc/resourceGroups/grafanastaging/providers/Microsoft.Compute/virtualMachines/grafana"] =
|
resources["/subscriptions/12345678-aaaa-bbbb-cccc-123456789abc/resourceGroups/grafanastaging/providers/Microsoft.Compute/virtualMachines/grafana"] =
|
||||||
dataquery.AzureMonitorResource{ResourceGroup: strPtr("grafanastaging"), ResourceName: strPtr("grafana")}
|
dataquery.AzureMonitorResource{ResourceGroup: strPtr("grafanastaging"), ResourceName: strPtr("grafana")}
|
||||||
subscription := "12345678-aaaa-bbbb-cccc-123456789abc"
|
subscription := "12345678-aaaa-bbbb-cccc-123456789abc"
|
||||||
|
datasource := &AzureMonitorDatasource{Features: &fakeFeatureToggles{flags: map[string]bool{"azureMonitorDataplane": true}}}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@ -378,6 +387,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
mockQuery *types.AzureMonitorQuery
|
mockQuery *types.AzureMonitorQuery
|
||||||
expectedFrames data.Frames
|
expectedFrames data.Frames
|
||||||
queryIntervalMS int64
|
queryIntervalMS int64
|
||||||
|
datasource *AzureMonitorDatasource
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "average aggregate time series response",
|
name: "average aggregate time series response",
|
||||||
@ -390,6 +400,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "total aggregate time series response",
|
name: "total aggregate time series response",
|
||||||
@ -402,6 +413,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "maximum aggregate time series response",
|
name: "maximum aggregate time series response",
|
||||||
@ -414,6 +426,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "minimum aggregate time series response",
|
name: "minimum aggregate time series response",
|
||||||
@ -426,6 +439,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "count aggregate time series response",
|
name: "count aggregate time series response",
|
||||||
@ -438,6 +452,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "single dimension time series response",
|
name: "single dimension time series response",
|
||||||
@ -450,6 +465,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "with alias patterns in the query",
|
name: "with alias patterns in the query",
|
||||||
@ -463,6 +479,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "single dimension with alias",
|
name: "single dimension with alias",
|
||||||
@ -476,6 +493,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "multiple dimension time series response with label alias",
|
name: "multiple dimension time series response with label alias",
|
||||||
@ -489,6 +507,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: map[string]dataquery.AzureMonitorResource{"/subscriptions/12345678-aaaa-bbbb-cccc-123456789abc/resourceGroups/grafanatest/providers/Microsoft.Storage/storageAccounts/testblobaccount/blobServices/default/providers/Microsoft.Insights/metrics": {ResourceGroup: strPtr("grafanatest"), ResourceName: strPtr("testblobaccount")}},
|
Resources: map[string]dataquery.AzureMonitorResource{"/subscriptions/12345678-aaaa-bbbb-cccc-123456789abc/resourceGroups/grafanatest/providers/Microsoft.Storage/storageAccounts/testblobaccount/blobServices/default/providers/Microsoft.Insights/metrics": {ResourceGroup: strPtr("grafanatest"), ResourceName: strPtr("testblobaccount")}},
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "unspecified unit with alias should not panic",
|
name: "unspecified unit with alias should not panic",
|
||||||
@ -502,6 +521,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "with legacy azure monitor query properties and without a resource uri",
|
name: "with legacy azure monitor query properties and without a resource uri",
|
||||||
@ -515,6 +535,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "with legacy azure monitor query properties and with a resource uri it should use the resource uri",
|
name: "with legacy azure monitor query properties and with a resource uri it should use the resource uri",
|
||||||
@ -528,6 +549,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "multiple time series response",
|
name: "multiple time series response",
|
||||||
@ -540,6 +562,7 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "multiple time series response with multiple dimensions",
|
name: "multiple time series response with multiple dimensions",
|
||||||
@ -552,14 +575,27 @@ func TestAzureMonitorParseResponse(t *testing.T) {
|
|||||||
Resources: resources,
|
Resources: resources,
|
||||||
Subscription: subscription,
|
Subscription: subscription,
|
||||||
},
|
},
|
||||||
|
datasource: datasource,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "non-dataplane compliant response",
|
||||||
|
responseFile: "azuremonitor/11-azure-monitor-non-dataplane-response.json",
|
||||||
|
mockQuery: &types.AzureMonitorQuery{
|
||||||
|
URL: "/subscriptions/12345678-aaaa-bbbb-cccc-123456789abc/resourceGroups/grafanastaging/providers/Microsoft.Compute/virtualMachines/grafana/providers/microsoft.insights/metrics",
|
||||||
|
Params: url.Values{
|
||||||
|
"aggregation": {"Average"},
|
||||||
|
},
|
||||||
|
Resources: resources,
|
||||||
|
Subscription: subscription,
|
||||||
|
},
|
||||||
|
datasource: &AzureMonitorDatasource{Features: &fakeFeatureToggles{flags: map[string]bool{"azureMonitorDataplane": false}}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
datasource := &AzureMonitorDatasource{}
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
azData := loadTestFile(t, tt.responseFile)
|
azData := loadTestFile(t, tt.responseFile)
|
||||||
dframes, err := datasource.parseResponse(azData, tt.mockQuery, "http://ds", "")
|
dframes, err := tt.datasource.parseResponse(azData, tt.mockQuery, "http://ds", "")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, dframes)
|
require.NotNil(t, dframes)
|
||||||
|
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+------------------------------------------------------+
|
// +-------------------------------+------------------------------------------------------+
|
||||||
@ -17,7 +23,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[1]
|
// Frame[1] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+------------------------------------------------------+
|
// +-------------------------------+------------------------------------------------------+
|
||||||
@ -34,7 +46,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[2]
|
// Frame[2] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+--------------------------------------------------------+
|
// +-------------------------------+--------------------------------------------------------+
|
||||||
@ -51,7 +69,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[3]
|
// Frame[3] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+--------------------------------------------------------+
|
// +-------------------------------+--------------------------------------------------------+
|
||||||
@ -73,6 +97,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -135,6 +166,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -197,6 +235,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -259,6 +304,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
47
pkg/tsdb/azuremonitor/testdata/azuremonitor/11-azure-monitor-non-dataplane-response.json
vendored
Normal file
47
pkg/tsdb/azuremonitor/testdata/azuremonitor/11-azure-monitor-non-dataplane-response.json
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"cost": 0,
|
||||||
|
"timespan": "2019-02-08T10:13:50Z\/2019-02-08T16:13:50Z",
|
||||||
|
"interval": "PT1M",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"id": "\/subscriptions\/xxx\/resourceGroups\/grafanastaging\/providers\/Microsoft.Compute\/virtualMachines\/grafana\/providers\/Microsoft.Insights\/metrics\/Percentage CPU",
|
||||||
|
"type": "Microsoft.Insights\/metrics",
|
||||||
|
"name": {
|
||||||
|
"value": "Percentage CPU",
|
||||||
|
"localizedValue": "Percentage CPU"
|
||||||
|
},
|
||||||
|
"unit": "Percent",
|
||||||
|
"timeseries": [
|
||||||
|
{
|
||||||
|
"metadatavalues": [
|
||||||
|
|
||||||
|
],
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"timeStamp": "2019-02-08T10:13:00Z",
|
||||||
|
"average": 2.0875
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timeStamp": "2019-02-08T10:14:00Z",
|
||||||
|
"average": 2.1525
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timeStamp": "2019-02-08T10:15:00Z",
|
||||||
|
"average": 2.155
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timeStamp": "2019-02-08T10:16:00Z",
|
||||||
|
"average": 3.6925
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"timeStamp": "2019-02-08T10:17:00Z",
|
||||||
|
"average": 2.44
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"namespace": "Microsoft.Compute\/virtualMachines",
|
||||||
|
"resourceregion": "westeurope"
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
|
//
|
||||||
|
// Frame[0]
|
||||||
|
// Name:
|
||||||
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
|
// +-------------------------------+----------------------+
|
||||||
|
// | Name: Time | Name: Percentage CPU |
|
||||||
|
// | Labels: | Labels: |
|
||||||
|
// | Type: []time.Time | Type: []*float64 |
|
||||||
|
// +-------------------------------+----------------------+
|
||||||
|
// | 2019-02-08 10:13:00 +0000 UTC | 2.0875 |
|
||||||
|
// | 2019-02-08 10:14:00 +0000 UTC | 2.1525 |
|
||||||
|
// | 2019-02-08 10:15:00 +0000 UTC | 2.155 |
|
||||||
|
// | 2019-02-08 10:16:00 +0000 UTC | 3.6925 |
|
||||||
|
// | 2019-02-08 10:17:00 +0000 UTC | 2.44 |
|
||||||
|
// +-------------------------------+----------------------+
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
|
{
|
||||||
|
"status": 200,
|
||||||
|
"frames": [
|
||||||
|
{
|
||||||
|
"schema": {
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "Time",
|
||||||
|
"type": "time",
|
||||||
|
"typeInfo": {
|
||||||
|
"frame": "time.Time"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"title": "View in Azure Portal",
|
||||||
|
"targetBlank": true,
|
||||||
|
"url": "http://ds/#blade/Microsoft_Azure_MonitoringMetrics/Metrics.ReactView/Referer/MetricsExplorer/TimeContext/%7B%22absolute%22%3A%7B%22startTime%22%3A%220001-01-01T00%3A00%3A00Z%22%2C%22endTime%22%3A%220001-01-01T00%3A00%3A00Z%22%7D%7D/ChartDefinition/%7B%22v2charts%22%3A%5B%7B%22metrics%22%3A%5B%7B%22resourceMetadata%22%3A%7B%22id%22%3A%22%2Fsubscriptions%2F12345678-aaaa-bbbb-cccc-123456789abc%2FresourceGroups%2Fgrafanastaging%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2Fgrafana%22%7D%2C%22name%22%3A%22%22%2C%22aggregationType%22%3A4%2C%22namespace%22%3A%22%22%2C%22metricVisualization%22%3A%7B%22displayName%22%3A%22%22%2C%22resourceDisplayName%22%3A%22grafana%22%7D%7D%5D%7D%5D%7D"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Percentage CPU",
|
||||||
|
"type": "number",
|
||||||
|
"typeInfo": {
|
||||||
|
"frame": "float64",
|
||||||
|
"nullable": true
|
||||||
|
},
|
||||||
|
"labels": {},
|
||||||
|
"config": {
|
||||||
|
"unit": "percent",
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"title": "View in Azure Portal",
|
||||||
|
"targetBlank": true,
|
||||||
|
"url": "http://ds/#blade/Microsoft_Azure_MonitoringMetrics/Metrics.ReactView/Referer/MetricsExplorer/TimeContext/%7B%22absolute%22%3A%7B%22startTime%22%3A%220001-01-01T00%3A00%3A00Z%22%2C%22endTime%22%3A%220001-01-01T00%3A00%3A00Z%22%7D%7D/ChartDefinition/%7B%22v2charts%22%3A%5B%7B%22metrics%22%3A%5B%7B%22resourceMetadata%22%3A%7B%22id%22%3A%22%2Fsubscriptions%2F12345678-aaaa-bbbb-cccc-123456789abc%2FresourceGroups%2Fgrafanastaging%2Fproviders%2FMicrosoft.Compute%2FvirtualMachines%2Fgrafana%22%7D%2C%22name%22%3A%22%22%2C%22aggregationType%22%3A4%2C%22namespace%22%3A%22%22%2C%22metricVisualization%22%3A%7B%22displayName%22%3A%22%22%2C%22resourceDisplayName%22%3A%22grafana%22%7D%7D%5D%7D%5D%7D"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"data": {
|
||||||
|
"values": [
|
||||||
|
[
|
||||||
|
1549620780000,
|
||||||
|
1549620840000,
|
||||||
|
1549620900000,
|
||||||
|
1549620960000,
|
||||||
|
1549621020000
|
||||||
|
],
|
||||||
|
[
|
||||||
|
2.0875,
|
||||||
|
2.1525,
|
||||||
|
2.155,
|
||||||
|
3.6925,
|
||||||
|
2.44
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 6 Rows
|
// Dimensions: 2 Fields by 6 Rows
|
||||||
// +-------------------------------+---------------------------+
|
// +-------------------------------+---------------------------+
|
||||||
@ -18,7 +24,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[1]
|
// Frame[1] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 6 Rows
|
// Dimensions: 2 Fields by 6 Rows
|
||||||
// +-------------------------------+----------------------------+
|
// +-------------------------------+----------------------------+
|
||||||
@ -36,7 +48,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[2]
|
// Frame[2] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 6 Rows
|
// Dimensions: 2 Fields by 6 Rows
|
||||||
// +-------------------------------+------------------------------------------+
|
// +-------------------------------+------------------------------------------+
|
||||||
@ -59,6 +77,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -122,6 +147,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -185,6 +217,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 6 Rows
|
// Dimensions: 2 Fields by 6 Rows
|
||||||
// +-------------------------------+---------------------------+
|
// +-------------------------------+---------------------------+
|
||||||
@ -18,7 +24,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[1]
|
// Frame[1] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 6 Rows
|
// Dimensions: 2 Fields by 6 Rows
|
||||||
// +-------------------------------+----------------------------+
|
// +-------------------------------+----------------------------+
|
||||||
@ -36,7 +48,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[2]
|
// Frame[2] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 6 Rows
|
// Dimensions: 2 Fields by 6 Rows
|
||||||
// +-------------------------------+------------------------------------------+
|
// +-------------------------------+------------------------------------------+
|
||||||
@ -59,6 +77,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -123,6 +148,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -187,6 +219,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+------------------------------------------+
|
// +-------------------------------+------------------------------------------+
|
||||||
@ -15,7 +21,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[1]
|
// Frame[1] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+--------------------------------------+
|
// +-------------------------------+--------------------------------------+
|
||||||
@ -30,7 +42,13 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Frame[2]
|
// Frame[2] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 3 Rows
|
// Dimensions: 2 Fields by 3 Rows
|
||||||
// +-------------------------------+-----------------------------------------------------+
|
// +-------------------------------+-----------------------------------------------------+
|
||||||
@ -50,6 +68,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -109,6 +134,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
@ -168,6 +200,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 1 Rows
|
// Dimensions: 2 Fields by 1 Rows
|
||||||
// +-------------------------------+----------------------+
|
// +-------------------------------+----------------------+
|
||||||
@ -18,6 +24,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
// 🌟 This was machine generated. Do not edit. 🌟
|
// 🌟 This was machine generated. Do not edit. 🌟
|
||||||
//
|
//
|
||||||
// Frame[0]
|
// Frame[0] {
|
||||||
|
// "type": "timeseries-multi",
|
||||||
|
// "typeVersion": [
|
||||||
|
// 0,
|
||||||
|
// 1
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
// Name:
|
// Name:
|
||||||
// Dimensions: 2 Fields by 5 Rows
|
// Dimensions: 2 Fields by 5 Rows
|
||||||
// +-------------------------------+------------------------------+
|
// +-------------------------------+------------------------------+
|
||||||
@ -22,6 +28,13 @@
|
|||||||
"frames": [
|
"frames": [
|
||||||
{
|
{
|
||||||
"schema": {
|
"schema": {
|
||||||
|
"meta": {
|
||||||
|
"type": "timeseries-multi",
|
||||||
|
"typeVersion": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"name": "Time",
|
"name": "Time",
|
||||||
|
Loading…
Reference in New Issue
Block a user