Compare commits

..

5 Commits

Author SHA1 Message Date
primus-bot[bot]
0041db1b16 chore(release): bump to v0.119.0 2026-04-15 06:40:35 +00:00
swapnil-signoz
4f59cb0de3 chore: updating cloud integration agent version (#10933)
Some checks are pending
build-staging / prepare (push) Waiting to run
build-staging / js-build (push) Blocked by required conditions
build-staging / go-build (push) Blocked by required conditions
build-staging / staging (push) Blocked by required conditions
Release Drafter / update_release_draft (push) Waiting to run
2026-04-15 05:01:26 +00:00
Srikanth Chekuri
304c39e08c fix(route-policy): allow undefined variables for expression (#10934)
* fix(route-policy): allow undefined variables for expression

* chore: fix lint
2026-04-15 04:55:21 +00:00
swapnil-signoz
3df0da3a4e chore: removing underscore attribute based cloud integration dashboards (#10929)
Some checks failed
build-staging / js-build (push) Has been cancelled
build-staging / prepare (push) Has been cancelled
build-staging / go-build (push) Has been cancelled
build-staging / staging (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
2026-04-14 13:08:07 +00:00
Tushar Vats
381966adcd fix: flaky integration tests (#10927) 2026-04-14 10:52:16 +00:00
52 changed files with 1324 additions and 27873 deletions

View File

@@ -190,7 +190,7 @@ services:
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
signoz:
!!merge <<: *db-depend
image: signoz/signoz:v0.118.0
image: signoz/signoz:v0.119.0
ports:
- "8080:8080" # signoz port
# - "6060:6060" # pprof port

View File

@@ -117,7 +117,7 @@ services:
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
signoz:
!!merge <<: *db-depend
image: signoz/signoz:v0.118.0
image: signoz/signoz:v0.119.0
ports:
- "8080:8080" # signoz port
volumes:

View File

@@ -181,7 +181,7 @@ services:
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
signoz:
!!merge <<: *db-depend
image: signoz/signoz:${VERSION:-v0.118.0}
image: signoz/signoz:${VERSION:-v0.119.0}
container_name: signoz
ports:
- "8080:8080" # signoz port

View File

@@ -109,7 +109,7 @@ services:
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
signoz:
!!merge <<: *db-depend
image: signoz/signoz:${VERSION:-v0.118.0}
image: signoz/signoz:${VERSION:-v0.119.0}
container_name: signoz
ports:
- "8080:8080" # signoz port

View File

@@ -223,6 +223,8 @@ func (r *provider) Match(ctx context.Context, orgID string, ruleID string, set m
for _, route := range expressionRoutes {
evaluateExpr, err := r.evaluateExpr(ctx, route.Expression, set)
if err != nil {
//nolint:sloglint
r.settings.Logger().WarnContext(ctx, "failed to evaluate route policy expression", errors.Attr(err), slog.String("rule.id", ruleID))
continue
}
if evaluateExpr {
@@ -298,7 +300,7 @@ func (r *provider) convertLabelSetToEnv(ctx context.Context, labelSet model.Labe
func (r *provider) evaluateExpr(ctx context.Context, expression string, labelSet model.LabelSet) (bool, error) {
env := r.convertLabelSetToEnv(ctx, labelSet)
program, err := expr.Compile(expression, expr.Env(env))
program, err := expr.Compile(expression, expr.Env(env), expr.AllowUndefinedVariables())
if err != nil {
return false, errors.NewInternalf(errors.CodeInternal, "error compiling route policy %s: %v", expression, err)
}

View File

@@ -644,6 +644,22 @@ func TestProvider_EvaluateExpression(t *testing.T) {
},
expected: true,
},
{
name: "nonexistent key OR check",
expression: `threshold.name = 'warning' OR ruleId = 'rule1'`,
labelSet: model.LabelSet{
"threshold.name": "warning",
},
expected: true,
},
{
name: "nonexistent key && check",
expression: `threshold.name = 'warning' && nonexistent = 'auth'`,
labelSet: model.LabelSet{
"threshold.name": "warning",
},
expected: false,
},
}
for _, tt := range tests {

View File

@@ -22,7 +22,7 @@ func newConfig() factory.Config {
Agent: AgentConfig{
// we will maintain the latest version of cloud integration agent from here,
// till we automate it externally or figure out a way to validate it.
Version: "v0.0.8",
Version: "v0.0.9",
},
}
}

View File

@@ -99,7 +99,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_account_id') as cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApplicationELB_ConsumedLCUs_max'\nGROUP BY cloud_account_id",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApplicationELB_ConsumedLCUs_max'\nGROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -115,7 +115,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_region') as cloud_region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApplicationELB_ConsumedLCUs_max'\n and JSONExtractString(labels, 'cloud_account_id') IN {{.Account}}\nGROUP BY cloud_region\n",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_ApplicationELB_ConsumedLCUs_max'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -158,10 +158,10 @@
"id": "b282d9f1",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -171,10 +171,10 @@
"id": "71837c70",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -221,18 +221,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -364,10 +364,10 @@
"id": "448b551a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -377,10 +377,10 @@
"id": "a8821216",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -427,18 +427,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -570,10 +570,10 @@
"id": "702a8765",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -583,10 +583,10 @@
"id": "32985f2d",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -625,18 +625,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -776,10 +776,10 @@
"id": "5807a1e3",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -789,10 +789,10 @@
"id": "0dd63d0c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -826,18 +826,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -969,10 +969,10 @@
"id": "72c256c0",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -982,10 +982,10 @@
"id": "b433c2a1",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1019,18 +1019,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -1162,10 +1162,10 @@
"id": "9226a37c",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1175,10 +1175,10 @@
"id": "c3ff0c8f",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1221,18 +1221,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -1364,10 +1364,10 @@
"id": "20627274",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1377,10 +1377,10 @@
"id": "cd861e27",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1401,18 +1401,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -1544,10 +1544,10 @@
"id": "7d4a3494",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1557,10 +1557,10 @@
"id": "3c307858",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1594,18 +1594,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
@@ -1737,10 +1737,10 @@
"id": "a416e862",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1750,10 +1750,10 @@
"id": "ed7d0a39",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1774,18 +1774,18 @@
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],

View File

@@ -393,7 +393,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_account_id') as `cloud_account_id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like '%aws_ApiGateway%'\nGROUP BY `cloud_account_id`",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like '%aws_ApiGateway%'\nGROUP BY `cloud.account.id`\n\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -409,7 +409,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_region') as `cloud_region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like '%aws_ApiGateway%'\n and JSONExtractString(labels, 'cloud_account_id') IN {{.Account}}\nGROUP BY `cloud_region`",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like '%aws_ApiGateway%'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -471,10 +471,10 @@
"id": "81918ce2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -484,10 +484,10 @@
"id": "114c7ff4",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -522,6 +522,7 @@
"id": "rest-requests-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -577,10 +578,10 @@
"id": "3c67d1fc",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -590,10 +591,10 @@
"id": "e2a96f23",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -628,6 +629,7 @@
"id": "rest-latency-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -683,10 +685,10 @@
"id": "b3ebaf28",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -696,10 +698,10 @@
"id": "f2030d94",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -734,6 +736,7 @@
"id": "rest-5xx-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -789,10 +792,10 @@
"id": "5f2f2892",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -802,10 +805,10 @@
"id": "960ee6d2",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -840,6 +843,7 @@
"id": "rest-integ-latency-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -895,10 +899,10 @@
"id": "8ec09e30",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -908,10 +912,10 @@
"id": "d1622884",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -946,6 +950,7 @@
"id": "rest-cache-hit-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1001,10 +1006,10 @@
"id": "f02d484d",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1014,10 +1019,10 @@
"id": "4d8ddc75",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1052,6 +1057,7 @@
"id": "rest-cache-miss-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1113,10 +1119,10 @@
"id": "http2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1126,10 +1132,10 @@
"id": "http3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1164,6 +1170,7 @@
"id": "http-count-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1219,10 +1226,10 @@
"id": "http4xx2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1232,10 +1239,10 @@
"id": "http4xx3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1270,6 +1277,7 @@
"id": "http-4xx-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1325,10 +1333,10 @@
"id": "http5xx2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1338,10 +1346,10 @@
"id": "http5xx3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1376,6 +1384,7 @@
"id": "http-5xx-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1431,10 +1440,10 @@
"id": "httplat2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1444,10 +1453,10 @@
"id": "httplat3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1482,6 +1491,7 @@
"id": "http-latency-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1537,10 +1547,10 @@
"id": "httpdata2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1550,10 +1560,10 @@
"id": "httpdata3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1588,6 +1598,7 @@
"id": "http-data-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1649,10 +1660,10 @@
"id": "wscon2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1662,10 +1673,10 @@
"id": "wscon3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1700,6 +1711,7 @@
"id": "ws-connect-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1755,10 +1767,10 @@
"id": "wsmsg2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1768,10 +1780,10 @@
"id": "wsmsg3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1806,6 +1818,7 @@
"id": "ws-message-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1861,10 +1874,10 @@
"id": "wscli2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1874,10 +1887,10 @@
"id": "wscli3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1912,6 +1925,7 @@
"id": "ws-client-error-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -1967,10 +1981,10 @@
"id": "wsexec2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1980,10 +1994,10 @@
"id": "wsexec3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2018,6 +2032,7 @@
"id": "ws-exec-error-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -2073,10 +2088,10 @@
"id": "wsint2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2086,10 +2101,10 @@
"id": "wsint3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2124,6 +2139,7 @@
"id": "ws-integ-error-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
@@ -2185,10 +2201,10 @@
"id": "commonintlat2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2198,10 +2214,10 @@
"id": "commonintlat3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2257,6 +2273,7 @@
"id": "common-integ-latency-query",
"queryType": "builder"
},
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,

View File

@@ -153,7 +153,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_DynamoDB%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_DynamoDB%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -169,7 +169,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_DynamoDB%' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_DynamoDB%' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -184,7 +184,7 @@
"multiSelect": true,
"name": "Table",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TableName') AS table FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_DynamoDB%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}} and table != '' GROUP BY table\n",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TableName') AS table FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_DynamoDB%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} and table != '' GROUP BY table\n",
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
@@ -228,10 +228,10 @@
"id": "fc55895c",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -241,10 +241,10 @@
"id": "8b3f3e0b",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -384,10 +384,10 @@
"id": "f7b176f8",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -397,10 +397,10 @@
"id": "9a023ab7",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -540,10 +540,10 @@
"id": "ec5ebf95",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -553,10 +553,10 @@
"id": "5b2fb00e",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -696,10 +696,10 @@
"id": "3815cf09",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -709,10 +709,10 @@
"id": "a783bd91",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -852,10 +852,10 @@
"id": "edcbcb83",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -865,10 +865,10 @@
"id": "224766cb",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1008,10 +1008,10 @@
"id": "c237482a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1021,10 +1021,10 @@
"id": "e3a117d5",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1164,10 +1164,10 @@
"id": "b867513b",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1177,10 +1177,10 @@
"id": "9c10cbaa",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1344,10 +1344,10 @@
"id": "7e2aa806",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1357,10 +1357,10 @@
"id": "dd49e062",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1524,10 +1524,10 @@
"id": "b3e029fa",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1537,10 +1537,10 @@
"id": "e6764d50",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1680,10 +1680,10 @@
"id": "80ba9142",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1693,10 +1693,10 @@
"id": "9c802cf0",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1836,10 +1836,10 @@
"id": "db6edb77",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1849,10 +1849,10 @@
"id": "8b86de4a",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2016,10 +2016,10 @@
"id": "93bef7f0",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2029,10 +2029,10 @@
"id": "4a293ec8",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2196,10 +2196,10 @@
"id": "28fcd3cd",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2209,10 +2209,10 @@
"id": "619578e5",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2376,10 +2376,10 @@
"id": "5a060b5e",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2389,10 +2389,10 @@
"id": "3a1cb5ff",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2532,10 +2532,10 @@
"id": "58bc06b3",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2545,10 +2545,10 @@
"id": "d6d7a8fb",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2654,4 +2654,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -72,7 +72,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_account_id') as cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_EC2_CPUUtilization_sum'\nGROUP BY cloud_account_id",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_EC2_CPUUtilization_sum'\nGROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -87,7 +87,7 @@
"multiSelect": false,
"name": "Region",
"order": 0,
"queryValue": "\nSELECT JSONExtractString(labels, 'cloud_region') as cloud_region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_EC2_CPUUtilization_sum'\n and JSONExtractString(labels, 'cloud_account_id') IN {{.Account}}\nGROUP BY cloud_region",
"queryValue": "\nSELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_EC2_CPUUtilization_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -130,10 +130,10 @@
"id": "d302d50d",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -143,10 +143,10 @@
"id": "e6c54e87",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -156,10 +156,10 @@
"id": "7907211a",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -172,31 +172,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}}",
"legend": "{{service.instance.id}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -323,10 +323,10 @@
"id": "30ded0dc",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -336,10 +336,10 @@
"id": "c935f6ec",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -349,10 +349,10 @@
"id": "d092fef8",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -365,31 +365,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}}",
"legend": "{{service.instance.id}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -516,10 +516,10 @@
"id": "a5fbfa4a",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -529,10 +529,10 @@
"id": "87071f13",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -542,10 +542,10 @@
"id": "c84a88c4",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -558,31 +558,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}} - Reads",
"legend": "{{service.instance.id}} - Reads",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -610,10 +610,10 @@
"id": "4d10ca4b",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -623,10 +623,10 @@
"id": "fc2db932",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -636,10 +636,10 @@
"id": "a3fd74c0",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -652,31 +652,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}} - Writes",
"legend": "{{service.instance.id}} - Writes",
"limit": null,
"orderBy": [],
"queryName": "B",
@@ -803,10 +803,10 @@
"id": "85d84806",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -816,10 +816,10 @@
"id": "f2074606",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -829,10 +829,10 @@
"id": "134c7ca9",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -845,31 +845,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}} - Reads",
"legend": "{{service.instance.id}} - Reads",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -897,10 +897,10 @@
"id": "47e0c00f",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -910,10 +910,10 @@
"id": "0a157dfe",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -923,10 +923,10 @@
"id": "a7d1e8df",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -939,31 +939,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}} - Writes",
"legend": "{{service.instance.id}} - Writes",
"limit": null,
"orderBy": [],
"queryName": "B",
@@ -1090,10 +1090,10 @@
"id": "12d6748d",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -1103,10 +1103,10 @@
"id": "df3a8da1",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1116,10 +1116,10 @@
"id": "81ec53f4",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1132,31 +1132,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}}",
"legend": "{{service.instance.id}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -1283,10 +1283,10 @@
"id": "d301aaa7",
"key": {
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
"op": "!=",
@@ -1296,10 +1296,10 @@
"id": "e8afaa3b",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1309,10 +1309,10 @@
"id": "d67487ab",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1325,31 +1325,31 @@
"groupBy": [
{
"dataType": "string",
"id": "service_instance_id--string--tag--false",
"id": "service.instance.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "service_instance_id",
"key": "service.instance.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
}
],
"having": [],
"legend": "{{service_instance_id}}",
"legend": "{{service.instance.id}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -1443,4 +1443,4 @@
"yAxisUnit": "binBps"
}
]
}
}

View File

@@ -100,7 +100,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -116,7 +116,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -132,7 +132,7 @@
"multiSelect": false,
"name": "Cluster",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_ECS%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}}\nGROUP BY cluster",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_ECS%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY cluster",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -178,10 +178,10 @@
"id": "c002d3ea",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -191,10 +191,10 @@
"id": "d95dc93f",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -358,10 +358,10 @@
"id": "8ae50256",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -371,10 +371,10 @@
"id": "dada2be4",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -538,10 +538,10 @@
"id": "840f6a82",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -551,10 +551,10 @@
"id": "e494eace",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -711,10 +711,10 @@
"id": "98cf55a2",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -724,10 +724,10 @@
"id": "dc2591e8",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -880,10 +880,10 @@
"id": "6d3fb70d",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -893,10 +893,10 @@
"id": "763ec68f",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1049,10 +1049,10 @@
"id": "4cabe614",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1062,10 +1062,10 @@
"id": "077e09db",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1218,10 +1218,10 @@
"id": "8e15b10c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1231,10 +1231,10 @@
"id": "92d56544",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1411,10 +1411,10 @@
"id": "6a1059e5",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1424,10 +1424,10 @@
"id": "fe0d40de",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1604,10 +1604,10 @@
"id": "89f0e499",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1617,10 +1617,10 @@
"id": "91ce3091",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1805,10 +1805,10 @@
"id": "edef4331",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1818,10 +1818,10 @@
"id": "d6081c36",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1962,4 +1962,4 @@
"yAxisUnit": "Bps"
}
]
}
}

View File

@@ -121,7 +121,7 @@
"customValue": "",
"defaultValue": "",
"description": "",
"dynamicVariablesAttribute": "cloud_region",
"dynamicVariablesAttribute": "cloud.region",
"dynamicVariablesSource": "Metrics",
"id": "3e37f808-da29-4f42-b9fd-ed0c5a9f55af",
"key": "3e37f808-da29-4f42-b9fd-ed0c5a9f55af",
@@ -159,7 +159,7 @@
"customValue": "",
"defaultValue": "",
"description": "",
"dynamicVariablesAttribute": "cloud_account_id",
"dynamicVariablesAttribute": "cloud.account.id",
"dynamicVariablesSource": "Metrics",
"id": "ae760815-3966-421c-97ac-f7793e524779",
"key": "ae760815-3966-421c-97ac-f7793e524779",
@@ -232,7 +232,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [],
@@ -364,7 +364,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service"
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service"
},
"functions": [],
"groupBy": [],
@@ -496,7 +496,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [],
@@ -628,7 +628,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service"
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service"
},
"functions": [],
"groupBy": [],
@@ -760,7 +760,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [
@@ -901,7 +901,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [
@@ -1042,7 +1042,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [
@@ -1183,7 +1183,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [
@@ -1324,7 +1324,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [
@@ -1465,7 +1465,7 @@
"disabled": false,
"expression": "A",
"filter": {
"expression": "cloud_account_id = $Account AND cloud_region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
"expression": "cloud.account.id = $Account AND cloud.region = $Region AND ClusterName = $Cluster AND ServiceName = $Service AND TaskId in $TaskId AND TaskId != \"\""
},
"functions": [],
"groupBy": [
@@ -1572,5 +1572,5 @@
"yAxisUnit": "Bps"
}
],
"uuid": "019ada51-9b8a-75b8-aa67-8fd35114855c"
"uuid": "019add91-55bd-778b-8459-60e19b691b6e"
}

View File

@@ -54,7 +54,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -70,7 +70,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -86,7 +86,7 @@
"multiSelect": true,
"name": "Cluster",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}}\nGROUP BY cluster",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY cluster",
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
@@ -130,10 +130,10 @@
"id": "26ac617d",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -143,10 +143,10 @@
"id": "57172ed9",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -318,10 +318,10 @@
"id": "cd4b8848",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -331,10 +331,10 @@
"id": "aa5115c6",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -506,10 +506,10 @@
"id": "2c13c8ee",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -519,10 +519,10 @@
"id": "f489f6a8",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -694,10 +694,10 @@
"id": "758ba906",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -707,10 +707,10 @@
"id": "4ffe6bf7",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -848,4 +848,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -1,851 +0,0 @@
{
"description": "View key AWS ECS metrics with an out of the box dashboard.\n",
"image":"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20width%3D%2280px%22%20height%3D%2280px%22%20viewBox%3D%220%200%2080%2080%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3C!--%20Generator%3A%20Sketch%2064%20(93537)%20-%20https%3A%2F%2Fsketch.com%20--%3E%3Ctitle%3EIcon-Architecture%2F64%2FArch_Amazon-Elastic-Container-Service_64%3C%2Ftitle%3E%3Cdesc%3ECreated%20with%20Sketch.%3C%2Fdesc%3E%3Cdefs%3E%3ClinearGradient%20x1%3D%220%25%22%20y1%3D%22100%25%22%20x2%3D%22100%25%22%20y2%3D%220%25%22%20id%3D%22linearGradient-1%22%3E%3Cstop%20stop-color%3D%22%23C8511B%22%20offset%3D%220%25%22%3E%3C%2Fstop%3E%3Cstop%20stop-color%3D%22%23FF9900%22%20offset%3D%22100%25%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20id%3D%22Icon-Architecture%2F64%2FArch_Amazon-Elastic-Container-Service_64%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cg%20id%3D%22Icon-Architecture-BG%2F64%2FContainers%22%20fill%3D%22url(%23linearGradient-1)%22%3E%3Crect%20id%3D%22Rectangle%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2280%22%20height%3D%2280%22%3E%3C%2Frect%3E%3C%2Fg%3E%3Cpath%20d%3D%22M64%2C48.2340095%20L56%2C43.4330117%20L56%2C32.0000169%20C56%2C31.6440171%2055.812%2C31.3150172%2055.504%2C31.1360173%20L44%2C24.4260204%20L44%2C14.7520248%20L64%2C26.5710194%20L64%2C48.2340095%20Z%20M65.509%2C25.13902%20L43.509%2C12.139026%20C43.199%2C11.9560261%2042.818%2C11.9540261%2042.504%2C12.131026%20C42.193%2C12.3090259%2042%2C12.6410257%2042%2C13.0000256%20L42%2C25.0000201%20C42%2C25.3550199%2042.189%2C25.6840198%2042.496%2C25.8640197%20L54%2C32.5740166%20L54%2C44.0000114%20C54%2C44.3510113%2054.185%2C44.6770111%2054.486%2C44.857011%20L64.486%2C50.8570083%20C64.644%2C50.9520082%2064.822%2C51%2065%2C51%20C65.17%2C51%2065.34%2C50.9570082%2065.493%2C50.8700083%20C65.807%2C50.6930084%2066%2C50.3600085%2066%2C50%20L66%2C26.0000196%20C66%2C25.6460198%2065.814%2C25.31902%2065.509%2C25.13902%20L65.509%2C25.13902%20Z%20M40.445%2C66.863001%20L17%2C54.3990067%20L17%2C26.5710194%20L37%2C14.7520248%20L37%2C24.4510204%20L26.463%2C31.1560173%20C26.175%2C31.3400172%2026%2C31.6580171%2026%2C32.0000169%20L26%2C49.0000091%20C26%2C49.373009%2026.208%2C49.7150088%2026.538%2C49.8870087%20L39.991%2C56.8870055%20C40.28%2C57.0370055%2040.624%2C57.0380055%2040.912%2C56.8880055%20L53.964%2C50.1440086%20L61.996%2C54.9640064%20L40.445%2C66.863001%20Z%20M64.515%2C54.1420068%20L54.515%2C48.1420095%20C54.217%2C47.9640096%2053.849%2C47.9520096%2053.541%2C48.1120095%20L40.455%2C54.8730065%20L28%2C48.3930094%20L28%2C32.5490167%20L38.537%2C25.8440197%20C38.825%2C25.6600198%2039%2C25.3420199%2039%2C25.0000201%20L39%2C13.0000256%20C39%2C12.6410257%2038.808%2C12.3090259%2038.496%2C12.131026%20C38.184%2C11.9540261%2037.802%2C11.9560261%2037.491%2C12.139026%20L15.491%2C25.13902%20C15.187%2C25.31902%2015%2C25.6460198%2015%2C26.0000196%20L15%2C55%20C15%2C55.3690062%2015.204%2C55.7090061%2015.53%2C55.883006%20L39.984%2C68.8830001%20C40.131%2C68.961%2040.292%2C69%2040.453%2C69%20C40.62%2C69%2040.786%2C68.958%2040.937%2C68.8750001%20L64.484%2C55.875006%20C64.797%2C55.7020061%2064.993%2C55.3750062%2065.0001416%2C55.0180064%20C65.006%2C54.6600066%2064.821%2C54.3260067%2064.515%2C54.1420068%20L64.515%2C54.1420068%20Z%22%20id%3D%22Amazon-Elastic-Container-Service_Icon_64_Squid%22%20fill%3D%22%23FFFFFF%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E",
"layout": [
{
"h": 6,
"i": "f78becf8-0328-48b4-84b6-ff4dac325940",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 0
},
{
"h": 6,
"i": "2b4eac06-b426-4f78-b874-2e1734c4104b",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 0
},
{
"h": 6,
"i": "5bea2bc0-13a2-4937-bccb-60ffe8a43ad5",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 6
},
{
"h": 6,
"i": "6fac67b0-50ec-4b43-ac4b-320a303d0369",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 6
}
],
"panelMap": {},
"tags": [],
"title": "AWS ECS Overview",
"uploadedGrafana": false,
"variables": {
"51f4fa2b-89c7-47c2-9795-f32cffaab985": {
"allSelected": false,
"customValue": "",
"description": "AWS Account ID",
"id": "51f4fa2b-89c7-47c2-9795-f32cffaab985",
"key": "51f4fa2b-89c7-47c2-9795-f32cffaab985",
"modificationUUID": "7b814d17-8fff-4ed6-a4ea-90e3b1a97584",
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
"type": "QUERY"
},
"9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0": {
"allSelected": false,
"customValue": "",
"description": "Account Region",
"id": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0",
"key": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0",
"modificationUUID": "3b5f499b-22a3-4c8a-847c-8d3811c9e6b2",
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
"type": "QUERY"
},
"bfbdbcbe-a168-4d81-b108-36339e249116": {
"allSelected": true,
"customValue": "",
"description": "ECS Cluster Name",
"id": "bfbdbcbe-a168-4d81-b108-36339e249116",
"key": "bfbdbcbe-a168-4d81-b108-36339e249116",
"modificationUUID": "9fb0d63c-ac6c-497d-82b3-17d95944e245",
"multiSelect": true,
"name": "Cluster",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_ECS_MemoryUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY cluster",
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
"type": "QUERY"
}
},
"version": "v4",
"widgets": [
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "f78becf8-0328-48b4-84b6-ff4dac325940",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_ECS_MemoryUtilization_max--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_ECS_MemoryUtilization_max",
"type": "Gauge"
},
"aggregateOperator": "max",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "26ac617d",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "57172ed9",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
},
{
"id": "49b9f85e",
"key": {
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
},
"op": "in",
"value": [
"$Cluster"
]
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "ServiceName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ServiceName",
"type": "tag"
},
{
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
}
],
"having": [],
"legend": "{{ServiceName}} ({{ClusterName}})",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "max",
"stepInterval": 60,
"timeAggregation": "max"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "56068fdd-d523-4117-92fa-87c6518ad07c",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Maximum Memory Utilization",
"yAxisUnit": "none"
},
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "2b4eac06-b426-4f78-b874-2e1734c4104b",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_ECS_MemoryUtilization_min--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_ECS_MemoryUtilization_min",
"type": "Gauge"
},
"aggregateOperator": "min",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "cd4b8848",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "aa5115c6",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
},
{
"id": "f60677b6",
"key": {
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
},
"op": "in",
"value": [
"$Cluster"
]
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "ServiceName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ServiceName",
"type": "tag"
},
{
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
}
],
"having": [],
"legend": "{{ServiceName}} ({{ClusterName}})",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "min",
"stepInterval": 60,
"timeAggregation": "min"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "fb19342e-cbde-40d8-b12f-ad108698356b",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Minimum Memory Utilization",
"yAxisUnit": "none"
},
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "5bea2bc0-13a2-4937-bccb-60ffe8a43ad5",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_ECS_CPUUtilization_max--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_ECS_CPUUtilization_max",
"type": "Gauge"
},
"aggregateOperator": "max",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "2c13c8ee",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "f489f6a8",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
},
{
"id": "94012320",
"key": {
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
},
"op": "in",
"value": [
"$Cluster"
]
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "ServiceName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ServiceName",
"type": "tag"
},
{
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
}
],
"having": [],
"legend": "{{ServiceName}} ({{ClusterName}})",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "max",
"stepInterval": 60,
"timeAggregation": "max"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "273e0a76-c780-4b9a-9b03-2649d4227173",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Maximum CPU Utilization",
"yAxisUnit": "none"
},
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "6fac67b0-50ec-4b43-ac4b-320a303d0369",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_ECS_CPUUtilization_min--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_ECS_CPUUtilization_min",
"type": "Gauge"
},
"aggregateOperator": "min",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "758ba906",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "4ffe6bf7",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
},
{
"id": "53d98059",
"key": {
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
},
"op": "in",
"value": [
"$Cluster"
]
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "ServiceName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ServiceName",
"type": "tag"
},
{
"dataType": "string",
"id": "ClusterName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "ClusterName",
"type": "tag"
}
],
"having": [],
"legend": "{{ServiceName}} ({{ClusterName}})",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "min",
"stepInterval": 60,
"timeAggregation": "min"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "c89482b3-5a98-4e2c-be0d-ef036d7dac05",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Minimum CPU Utilization",
"yAxisUnit": "none"
}
]
}

View File

@@ -99,7 +99,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_ContainerInsights%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_ContainerInsights%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -115,7 +115,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_ContainerInsights%' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_ContainerInsights%' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -130,7 +130,7 @@
"multiSelect": true,
"name": "Namespace",
"order": 3,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'Namespace') AS namespace FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_ContainerInsights%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}} AND JSONExtractString(labels, 'ClusterName') IN {{.Cluster}} and namespace != '' GROUP BY namespace\n",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'Namespace') AS namespace FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_ContainerInsights%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} AND JSONExtractString(labels, 'ClusterName') IN {{.Cluster}} and namespace != '' GROUP BY namespace\n",
"showALLOption": true,
"sort": "DISABLED",
"textboxValue": "",
@@ -146,7 +146,7 @@
"multiSelect": false,
"name": "Cluster",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS table FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_ContainerInsights%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}} and table != '' GROUP BY table\n",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS table FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_ContainerInsights%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} and table != '' GROUP BY table\n",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -190,10 +190,10 @@
"id": "3c9d3220",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -203,10 +203,10 @@
"id": "c7ec3ea4",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -406,10 +406,10 @@
"id": "84a456ab",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -419,10 +419,10 @@
"id": "4317ebfb",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -622,10 +622,10 @@
"id": "a93d165c",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -635,10 +635,10 @@
"id": "99c79a76",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -815,10 +815,10 @@
"id": "afed4306",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -828,10 +828,10 @@
"id": "92ab51e8",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -880,7 +880,7 @@
}
],
"having": [],
"legend": " {{NodeName}} ",
"legend": "{{NodeName}}",
"limit": null,
"orderBy": [],
"queryName": "A",
@@ -1008,10 +1008,10 @@
"id": "1020db2d",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1021,10 +1021,10 @@
"id": "c74e1d9c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1101,10 +1101,10 @@
"id": "6e9e1a4a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1114,10 +1114,10 @@
"id": "4f6ba883",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1317,10 +1317,10 @@
"id": "09854d1f",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1330,10 +1330,10 @@
"id": "2d14e3fa",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1410,10 +1410,10 @@
"id": "02e9e011",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1423,10 +1423,10 @@
"id": "690694fd",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1626,10 +1626,10 @@
"id": "a8e7b55b",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1639,10 +1639,10 @@
"id": "6e34744c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1817,10 +1817,10 @@
"id": "76fe4793",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1830,10 +1830,10 @@
"id": "b39cec30",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2033,10 +2033,10 @@
"id": "b00a5918",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2046,10 +2046,10 @@
"id": "e2ad047a",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2179,4 +2179,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -64,7 +64,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_EKS%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_EKS%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -80,7 +80,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_EKS%' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name like '%aws_EKS%' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -94,7 +94,7 @@
"multiSelect": false,
"name": "Cluster",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS table FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_EKS%' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}} and table != '' GROUP BY table\n",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'ClusterName') AS cluster_name FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name like '%aws_EKS%' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} and cluster_name != '' GROUP BY cluster_name\n",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -139,10 +139,10 @@
"id": "cd48d097",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -152,10 +152,10 @@
"id": "e15d2193",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -319,10 +319,10 @@
"id": "ceb37a7e",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -332,10 +332,10 @@
"id": "43d6f274",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -399,10 +399,10 @@
"id": "ba6a48c6",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -412,10 +412,10 @@
"id": "fe1a0cd2",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -579,10 +579,10 @@
"id": "fd1d1922",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -592,10 +592,10 @@
"id": "d7eb2ac6",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -659,10 +659,10 @@
"id": "f1d20f31",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -672,10 +672,10 @@
"id": "ce660d67",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -739,10 +739,10 @@
"id": "cd6566ff",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -752,10 +752,10 @@
"id": "e582ca67",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -919,10 +919,10 @@
"id": "cdd3d571",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -932,10 +932,10 @@
"id": "badba5d2",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -999,10 +999,10 @@
"id": "07af73bd",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1012,10 +1012,10 @@
"id": "a5792c41",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1179,10 +1179,10 @@
"id": "9272ad56",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1192,10 +1192,10 @@
"id": "1b6292ad",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1259,10 +1259,10 @@
"id": "37b6b2c2",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1272,10 +1272,10 @@
"id": "904415fa",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1339,10 +1339,10 @@
"id": "3c7ff964",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1352,10 +1352,10 @@
"id": "945a29cd",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1519,10 +1519,10 @@
"id": "506f5d0b",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1532,10 +1532,10 @@
"id": "1ea4e5ea",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1599,10 +1599,10 @@
"id": "42761bd5",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1612,10 +1612,10 @@
"id": "80d9d3ff",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1745,4 +1745,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -143,7 +143,7 @@
"multiSelect": true,
"name": "Cluster",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'CacheClusterId') AS cluster FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}} AND cluster != '' GROUP BY cluster",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'CacheClusterId') AS cluster FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}} AND cluster != '' GROUP BY cluster",
"showALLOption": true,
"sort": "DISABLED",
"textboxValue": "",
@@ -159,7 +159,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -175,7 +175,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id` FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'aws_ElastiCache_CPUUtilization_max' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -234,10 +234,10 @@
"id": "a2e662bc",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -247,10 +247,10 @@
"id": "b7391c4e",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -414,10 +414,10 @@
"id": "0c3a5e7a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -427,10 +427,10 @@
"id": "de00d7b3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -594,10 +594,10 @@
"id": "7087d8df",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -607,10 +607,10 @@
"id": "26bd4c51",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -774,10 +774,10 @@
"id": "63918715",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -787,10 +787,10 @@
"id": "647e4dbe",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -954,10 +954,10 @@
"id": "72e562a1",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -967,10 +967,10 @@
"id": "26891e8d",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1134,10 +1134,10 @@
"id": "c6612aef",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1147,10 +1147,10 @@
"id": "b863daa8",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1314,10 +1314,10 @@
"id": "05806d0e",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1327,10 +1327,10 @@
"id": "edfe2e2c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1494,10 +1494,10 @@
"id": "088c9b4a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1507,10 +1507,10 @@
"id": "1a86c392",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1672,10 +1672,10 @@
"id": "10a254a8",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1685,10 +1685,10 @@
"id": "310ce219",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1852,10 +1852,10 @@
"id": "a3ab9c6c",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1865,10 +1865,10 @@
"id": "cfd6d4ee",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2032,10 +2032,10 @@
"id": "0e7a0149",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2045,10 +2045,10 @@
"id": "1440550c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2197,10 +2197,10 @@
"id": "43ef42eb",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2225,10 +2225,10 @@
"id": "4cc11182",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2377,10 +2377,10 @@
"id": "87b3e146",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2405,10 +2405,10 @@
"id": "07a5a0d1",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2557,10 +2557,10 @@
"id": "6764e117",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -2585,10 +2585,10 @@
"id": "a1c90d55",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -2703,4 +2703,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -81,7 +81,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_account_id') as cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_Lambda_Invocations_sum'\nGROUP BY cloud_account_id\n\n",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_Lambda_Invocations_sum'\nGROUP BY `cloud.account.id`\n\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -96,7 +96,7 @@
"multiSelect": false,
"name": "Region",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_region') as cloud_region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_Lambda_Invocations_sum'\n and JSONExtractString(labels, 'cloud_account_id') IN {{.Account}}\nGROUP BY cloud_region\n",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_Lambda_Invocations_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -139,10 +139,10 @@
"id": "49d33567",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -152,10 +152,10 @@
"id": "b9dfa1c9",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -190,18 +190,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -240,7 +240,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region\"=\"us-east-2\"}"
}
],
"queryType": "builder"
@@ -341,10 +341,10 @@
"id": "af05252d",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -354,10 +354,10 @@
"id": "983efea5",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -396,18 +396,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -446,7 +446,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\", \"cloud.region\"=\"us-east-2\"}"
}
],
"queryType": "builder"
@@ -547,10 +547,10 @@
"id": "c67262c9",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -560,10 +560,10 @@
"id": "c5ccbbf4",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -602,18 +602,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -652,7 +652,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\", \"cloud.region\"=\"us-east-2\"}"
}
],
"queryType": "builder"
@@ -753,10 +753,10 @@
"id": "6c956b7d",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -766,10 +766,10 @@
"id": "5fef840b",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -808,18 +808,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -858,7 +858,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region\"=\"us-east-2\"}"
}
],
"queryType": "builder"
@@ -959,10 +959,10 @@
"id": "f4c6246b",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -972,10 +972,10 @@
"id": "5b7a75a1",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1014,18 +1014,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1064,7 +1064,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region=\"us-east-2\"}"
}
],
"queryType": "builder"
@@ -1165,10 +1165,10 @@
"id": "1aee3626",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1178,10 +1178,10 @@
"id": "11631fda",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1220,18 +1220,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1270,7 +1270,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region=\"us-east-2\"}"
}
],
"queryType": "builder"
@@ -1371,10 +1371,10 @@
"id": "a8c65389",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1384,10 +1384,10 @@
"id": "2ab205c8",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1426,18 +1426,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1476,7 +1476,7 @@
"disabled": false,
"legend": "",
"name": "A",
"query": "aws_Lambda_Invocations_sum{cloud_region=\"us-east-2\"}"
"query": "{\"aws_Lambda_Invocations_sum\",\"cloud.region\"=\"us-east-2\"}"
}
],
"queryType": "builder"

View File

@@ -72,7 +72,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_Kafka_KafkaDataLogsDiskUsed_max' GROUP BY cloud_account_id\n",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_Kafka_KafkaDataLogsDiskUsed_max' GROUP BY `cloud.account.id`\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -87,7 +87,7 @@
"multiSelect": false,
"name": "Region",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_Kafka_KafkaDataLogsDiskUsed_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region\n",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_Kafka_KafkaDataLogsDiskUsed_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region\n",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -143,10 +143,10 @@
"id": "8b658843",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -156,10 +156,10 @@
"id": "9cbc21ee",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -328,10 +328,10 @@
"id": "754c3c99",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -341,10 +341,10 @@
"id": "09ad3a79",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -513,10 +513,10 @@
"id": "3e5db1d7",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -526,10 +526,10 @@
"id": "9e9bf94c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -698,10 +698,10 @@
"id": "2233f9a5",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -711,10 +711,10 @@
"id": "52bd69d4",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -870,10 +870,10 @@
"id": "a00425be",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -896,10 +896,10 @@
"id": "02adea69",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1055,10 +1055,10 @@
"id": "0626eebd",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1068,10 +1068,10 @@
"id": "b633d867",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1186,4 +1186,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -90,7 +90,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_account_id') as cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_RDS_CPUUtilization_sum'\nGROUP BY cloud_account_id",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.account.id') as `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_RDS_CPUUtilization_sum'\nGROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -106,7 +106,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT JSONExtractString(labels, 'cloud_region') as cloud_region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_RDS_CPUUtilization_sum'\n and JSONExtractString(labels, 'cloud_account_id') IN {{.Account}}\nGROUP BY cloud_region",
"queryValue": "SELECT JSONExtractString(labels, 'cloud.region') as `cloud.region`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE \n metric_name like 'aws_RDS_CPUUtilization_sum'\n and JSONExtractString(labels, 'cloud.account.id') IN {{.Account}}\nGROUP BY `cloud.region`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -149,10 +149,10 @@
"id": "f8e72efc",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -162,10 +162,10 @@
"id": "4e68256a",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -191,18 +191,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -342,10 +342,10 @@
"id": "723ba84a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -355,10 +355,10 @@
"id": "f8227b55",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -384,18 +384,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -535,10 +535,10 @@
"id": "31191f74",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -548,10 +548,10 @@
"id": "aa644bbf",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -577,18 +577,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -728,10 +728,10 @@
"id": "83f232af",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -741,10 +741,10 @@
"id": "2677873f",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -770,18 +770,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -822,10 +822,10 @@
"id": "e2df7981",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -835,10 +835,10 @@
"id": "6daad748",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -864,18 +864,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1015,10 +1015,10 @@
"id": "17142c3d",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1028,10 +1028,10 @@
"id": "27fcc87d",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1057,18 +1057,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1109,10 +1109,10 @@
"id": "a050e23a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1122,10 +1122,10 @@
"id": "6df80990",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1151,18 +1151,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1302,10 +1302,10 @@
"id": "a298d4bd",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1315,10 +1315,10 @@
"id": "810c0586",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1344,18 +1344,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1396,10 +1396,10 @@
"id": "d46f3f53",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1409,10 +1409,10 @@
"id": "4ec47a19",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1438,18 +1438,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1589,10 +1589,10 @@
"id": "f64f0096",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1602,10 +1602,10 @@
"id": "18ad7c1e",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1631,18 +1631,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1782,10 +1782,10 @@
"id": "7786e529",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1795,10 +1795,10 @@
"id": "f27b4616",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1824,18 +1824,18 @@
"groupBy": [
{
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
{
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
{
@@ -1942,4 +1942,4 @@
"yAxisUnit": "bytes"
}
]
}
}

View File

@@ -54,7 +54,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -70,7 +70,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -85,7 +85,7 @@
"multiSelect": true,
"name": "Topic",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TopicName') AS topic\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} AND JSONExtractString(labels, 'cloud_region') IN {{.Region}}\nGROUP BY topic",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TopicName') AS topic\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY topic",
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
@@ -144,10 +144,10 @@
"id": "b18187c3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -157,10 +157,10 @@
"id": "eebe4578",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -324,10 +324,10 @@
"id": "62255cff",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -337,10 +337,10 @@
"id": "17c7153e",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -504,10 +504,10 @@
"id": "8ca86829",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -517,10 +517,10 @@
"id": "8a444f66",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -684,10 +684,10 @@
"id": "e2084931",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -697,10 +697,10 @@
"id": "0b05209a",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -815,4 +815,4 @@
"yAxisUnit": "none"
}
]
}
}

View File

@@ -1,818 +0,0 @@
{
"description": "View key AWS SNS metrics with an out of the box dashboard.",
"image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iODBweCIgaGVpZ2h0PSI4MHB4IiB2aWV3Qm94PSIwIDAgODAgODAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDY0ICg5MzUzNykgLSBodHRwczovL3NrZXRjaC5jb20gLS0+CiAgICA8dGl0bGU+SWNvbi1BcmNoaXRlY3R1cmUvNjQvQXJjaF9BV1MtU2ltcGxlLU5vdGlmaWNhdGlvbi1TZXJ2aWNlXzY0PC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiIGlkPSJsaW5lYXJHcmFkaWVudC0xIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0IwMDg0RCIgb2Zmc2V0PSIwJSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkY0RjhCIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLzY0L0FyY2hfQVdTLVNpbXBsZS1Ob3RpZmljYXRpb24tU2VydmljZV82NCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Ikljb24tQXJjaGl0ZWN0dXJlLUJHLzY0L0FwcGxpY2F0aW9uLUludGVncmF0aW9uIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTEpIj4KICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIj48L3JlY3Q+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIGQ9Ik0xNywzOCBDMTguMTAzLDM4IDE5LDM4Ljg5NyAxOSw0MCBDMTksNDEuMTAzIDE4LjEwMyw0MiAxNyw0MiBDMTUuODk3LDQyIDE1LDQxLjEwMyAxNSw0MCBDMTUsMzguODk3IDE1Ljg5NywzOCAxNywzOCBMMTcsMzggWiBNNDEsNjQgQzI5LjMxNCw2NCAxOS4yODksNTUuNDY2IDE3LjE5NCw0My45OCBDMTguOTY1LDQzLjg5NCAyMC40MjcsNDIuNjU5IDIwLjg1Nyw0MSBMMjcsNDEgTDI3LDM5IEwyMC44NTcsMzkgQzIwLjQyNywzNy4zNDIgMTguOTY2LDM2LjEwNyAxNy4xOTUsMzYuMDIgQzE5LjI4NSwyNC43MSAyOS41MTEsMTYgNDEsMTYgQzQ1LjMxMywxNiA0OS44MzIsMTcuNjIyIDU0LjQyOSwyMC44MjEgTDU1LjU3MSwxOS4xNzkgQzUwLjYzMywxNS43NDMgNDUuNzMsMTQgNDEsMTQgQzI4LjI3LDE0IDE2Ljk0OSwyMy44NjUgMTUuMDYzLDM2LjUyMSBDMTMuODM5LDM3LjIwNyAxMywzOC41IDEzLDQwIEMxMyw0MS41IDEzLjgzOSw0Mi43OTMgMTUuMDYzLDQzLjQ3OCBDMTYuOTcsNTYuMzQxIDI4LjA1Niw2NiA0MSw2NiBDNDYuNDA3LDY2IDUxLjk0Miw2NC4xNTcgNTYuNTg1LDYwLjgxMSBMNTUuNDE1LDU5LjE4OSBDNTEuMTEsNjIuMjkyIDQ1Ljk5MSw2NCA0MSw2NCBMNDEsNjQgWiBNMzAuMTAxLDM2LjQ0MiBDMzEuOTU1LDM2Ljg5NSAzNC4yNzUsMzcgMzYsMzcgQzM3LjY0MiwzNyAzOS44MjMsMzYuOTA1IDQxLjYyOSwzNi41MDYgTDM3LjEwNSw0NS41NTMgQzM3LjAzNiw0NS42OTEgMzcsNDUuODQ1IDM3LDQ2IEwzNyw1MC40NTMgQzM2LjE5OSw1MC45NjQgMzQuODMzLDUxLjgxMiAzNCw1MS45ODYgTDM0LDQ2IEMzNCw0NS44NjggMzMuOTc0LDQ1LjczNyAzMy45MjMsNDUuNjE1IEwzMC4xMDEsMzYuNDQyIFogTTM2LDMzIEM0MC4wMjUsMzMgNDIuMTc0LDMzLjYwNCA0Mi44NDEsMzQgQzQyLjE3NCwzNC4zOTYgNDAuMDI1LDM1IDM2LDM1IEMzMS45NzUsMzUgMjkuODI2LDM0LjM5NiAyOS4xNTksMzQgQzI5LjgyNiwzMy42MDQgMzEuOTc1LDMzIDM2LDMzIEwzNiwzMyBaIE0zMyw1NCBMMzQsNTQgQzM0LjA0Myw1NCAzNC4wODYsNTMuOTk3IDM0LjEyOCw1My45OTIgQzM1LjM1Miw1My44MzMgMzYuOTA5LDUyLjg4NyAzOC4yNzIsNTIuMDEzIEwzOC41MzUsNTEuODQ1IEMzOC44MjQsNTEuNjYxIDM5LDUxLjM0MiAzOSw1MSBMMzksNDYuMjM2IEw0NC41NTksMzUuMTIgQzQ0LjgzMywzNC44MDEgNDUsMzQuNDM0IDQ1LDM0IEM0NSwzMS4zOSAzOS4zNjEsMzEgMzYsMzEgQzMyLjYzOSwzMSAyNywzMS4zOSAyNywzNCBDMjcsMzQuMzY2IDI3LjEyLDM0LjY4NCAyNy4zMiwzNC45NjcgTDMyLDQ2LjIgTDMyLDUzIEMzMiw1My41NTIgMzIuNDQ3LDU0IDMzLDU0IEwzMyw1NCBaIE02Miw1MyBDNjMuMTAzLDUzIDY0LDUzLjg5NyA2NCw1NSBDNjQsNTYuMTAzIDYzLjEwMyw1NyA2Miw1NyBDNjAuODk3LDU3IDYwLDU2LjEwMyA2MCw1NSBDNjAsNTMuODk3IDYwLjg5Nyw1MyA2Miw1MyBMNjIsNTMgWiBNNjIsMjMgQzYzLjEwMywyMyA2NCwyMy44OTcgNjQsMjUgQzY0LDI2LjEwMyA2My4xMDMsMjcgNjIsMjcgQzYwLjg5NywyNyA2MCwyNi4xMDMgNjAsMjUgQzYwLDIzLjg5NyA2MC44OTcsMjMgNjIsMjMgTDYyLDIzIFogTTY0LDM4IEM2NS4xMDMsMzggNjYsMzguODk3IDY2LDQwIEM2Niw0MS4xMDMgNjUuMTAzLDQyIDY0LDQyIEM2Mi44OTcsNDIgNjIsNDEuMTAzIDYyLDQwIEM2MiwzOC44OTcgNjIuODk3LDM4IDY0LDM4IEw2NCwzOCBaIE01NCw0MSBMNjAuMTQzLDQxIEM2MC41ODksNDIuNzIgNjIuMTQyLDQ0IDY0LDQ0IEM2Ni4yMDYsNDQgNjgsNDIuMjA2IDY4LDQwIEM2OCwzNy43OTQgNjYuMjA2LDM2IDY0LDM2IEM2Mi4xNDIsMzYgNjAuNTg5LDM3LjI4IDYwLjE0MywzOSBMNTQsMzkgTDU0LDI2IEw1OC4xNDMsMjYgQzU4LjU4OSwyNy43MiA2MC4xNDIsMjkgNjIsMjkgQzY0LjIwNiwyOSA2NiwyNy4yMDYgNjYsMjUgQzY2LDIyLjc5NCA2NC4yMDYsMjEgNjIsMjEgQzYwLjE0MiwyMSA1OC41ODksMjIuMjggNTguMTQzLDI0IEw1MywyNCBDNTIuNDQ3LDI0IDUyLDI0LjQ0OCA1MiwyNSBMNTIsMzkgTDQ1LDM5IEw0NSw0MSBMNTIsNDEgTDUyLDU1IEM1Miw1NS41NTIgNTIuNDQ3LDU2IDUzLDU2IEw1OC4xNDMsNTYgQzU4LjU4OSw1Ny43MiA2MC4xNDIsNTkgNjIsNTkgQzY0LjIwNiw1OSA2Niw1Ny4yMDYgNjYsNTUgQzY2LDUyLjc5NCA2NC4yMDYsNTEgNjIsNTEgQzYwLjE0Miw1MSA1OC41ODksNTIuMjggNTguMTQzLDU0IEw1NCw1NCBMNTQsNDEgWiIgaWQ9IkFXUy1TaW1wbGUtTm90aWZpY2F0aW9uLVNlcnZpY2VfSWNvbl82NF9TcXVpZCIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=",
"layout": [
{
"h": 6,
"i": "4eb87f89-0213-4773-9b06-6aecc6701898",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 0
},
{
"h": 6,
"i": "7a010b4e-ea7c-4a45-a9eb-93af650c45b4",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 0
},
{
"h": 6,
"i": "2299d4e3-6c40-4bf2-a550-c7bb8a7acd38",
"moved": false,
"static": false,
"w": 6,
"x": 0,
"y": 6
},
{
"h": 6,
"i": "16eec8b7-de1a-4039-b180-24c7a6704b6e",
"moved": false,
"static": false,
"w": 6,
"x": 6,
"y": 6
}
],
"panelMap": {},
"tags": [],
"title": "SNS Overview",
"uploadedGrafana": false,
"variables": {
"51f4fa2b-89c7-47c2-9795-f32cffaab985": {
"allSelected": false,
"customValue": "",
"description": "AWS Account ID",
"id": "51f4fa2b-89c7-47c2-9795-f32cffaab985",
"key": "51f4fa2b-89c7-47c2-9795-f32cffaab985",
"modificationUUID": "b7a6b06b-fa1f-4fb8-b70e-6bd9b350f29e",
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
"type": "QUERY"
},
"9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0": {
"allSelected": false,
"customValue": "",
"description": "Account Region",
"id": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0",
"key": "9faf0f4b-b245-4b3c-83a3-60cfa76dfeb0",
"modificationUUID": "8428a5de-bfd1-4a69-9601-63e3041cd556",
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
"type": "QUERY"
},
"bfbdbcbe-a168-4d81-b108-36339e249116": {
"allSelected": true,
"customValue": "",
"description": "SNS Topic Name",
"id": "bfbdbcbe-a168-4d81-b108-36339e249116",
"modificationUUID": "dfed7272-16dc-4eb6-99bf-7c82fc8e04f0",
"multiSelect": true,
"name": "Topic",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'TopicName') AS topic\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SNS_PublishSize_count' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} AND JSONExtractString(labels, 'cloud.region') IN {{.Region}}\nGROUP BY topic",
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
"type": "QUERY"
}
},
"version": "v4",
"widgets": [
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "4eb87f89-0213-4773-9b06-6aecc6701898",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_SNS_NumberOfMessagesPublished_max--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_SNS_NumberOfMessagesPublished_max",
"type": "Gauge"
},
"aggregateOperator": "max",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "8fd51b53",
"key": {
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
},
"op": "in",
"value": [
"$Topic"
]
},
{
"id": "b18187c3",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "eebe4578",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
}
],
"having": [],
"legend": "{{TopicName}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "max",
"stepInterval": 60,
"timeAggregation": "max"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "9c67615a-55f7-42da-835c-86922f2ff8bb",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Number of Messages Published",
"yAxisUnit": "none"
},
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "7a010b4e-ea7c-4a45-a9eb-93af650c45b4",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_SNS_PublishSize_max--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_SNS_PublishSize_max",
"type": "Gauge"
},
"aggregateOperator": "max",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "1aa0d1a9",
"key": {
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
},
"op": "in",
"value": [
"$Topic"
]
},
{
"id": "62255cff",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "17c7153e",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
}
],
"having": [],
"legend": "{{TopicName}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "max",
"stepInterval": 60,
"timeAggregation": "max"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "a635a15b-dfe6-4617-a82e-29d93e27deaf",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Published Message Size",
"yAxisUnit": "decbytes"
},
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "2299d4e3-6c40-4bf2-a550-c7bb8a7acd38",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_SNS_NumberOfNotificationsDelivered_max--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_SNS_NumberOfNotificationsDelivered_max",
"type": "Gauge"
},
"aggregateOperator": "max",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "c96a4ac0",
"key": {
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
},
"op": "in",
"value": [
"$Topic"
]
},
{
"id": "8ca86829",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "8a444f66",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
}
],
"having": [],
"legend": "{{TopicName}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "max",
"stepInterval": 60,
"timeAggregation": "max"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "0d2fc26c-9b21-4dfc-b631-64b7c8d3bd71",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Number of Notifications Delivered",
"yAxisUnit": "none"
},
{
"bucketCount": 30,
"bucketWidth": 0,
"columnUnits": {},
"description": "",
"fillSpans": false,
"id": "16eec8b7-de1a-4039-b180-24c7a6704b6e",
"isLogScale": false,
"isStacked": false,
"mergeAllActiveQueries": false,
"nullZeroValues": "zero",
"opacity": "1",
"panelTypes": "graph",
"query": {
"builder": {
"queryData": [
{
"aggregateAttribute": {
"dataType": "float64",
"id": "aws_SNS_NumberOfNotificationsFailed_max--float64--Gauge--true",
"isColumn": true,
"isJSON": false,
"key": "aws_SNS_NumberOfNotificationsFailed_max",
"type": "Gauge"
},
"aggregateOperator": "max",
"dataSource": "metrics",
"disabled": false,
"expression": "A",
"filters": {
"items": [
{
"id": "6175f3d5",
"key": {
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
},
"op": "in",
"value": [
"$Topic"
]
},
{
"id": "e2084931",
"key": {
"dataType": "string",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.region",
"type": "tag"
},
"op": "=",
"value": "$Region"
},
{
"id": "0b05209a",
"key": {
"dataType": "string",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
"value": "$Account"
}
],
"op": "AND"
},
"functions": [],
"groupBy": [
{
"dataType": "string",
"id": "TopicName--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "TopicName",
"type": "tag"
}
],
"having": [],
"legend": "{{TopicName}}",
"limit": null,
"orderBy": [],
"queryName": "A",
"reduceTo": "avg",
"spaceAggregation": "max",
"stepInterval": 60,
"timeAggregation": "max"
}
],
"queryFormulas": []
},
"clickhouse_sql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"id": "526247af-6ac9-42ff-83e9-cce0e32a9e63",
"promql": [
{
"disabled": false,
"legend": "",
"name": "A",
"query": ""
}
],
"queryType": "builder"
},
"selectedLogFields": [
{
"dataType": "string",
"name": "body",
"type": ""
},
{
"dataType": "string",
"name": "timestamp",
"type": ""
}
],
"selectedTracesFields": [
{
"dataType": "string",
"id": "serviceName--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "serviceName",
"type": "tag"
},
{
"dataType": "string",
"id": "name--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "name",
"type": "tag"
},
{
"dataType": "float64",
"id": "durationNano--float64--tag--true",
"isColumn": true,
"isJSON": false,
"key": "durationNano",
"type": "tag"
},
{
"dataType": "string",
"id": "httpMethod--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "httpMethod",
"type": "tag"
},
{
"dataType": "string",
"id": "responseStatusCode--string--tag--true",
"isColumn": true,
"isJSON": false,
"key": "responseStatusCode",
"type": "tag"
}
],
"softMax": 0,
"softMin": 0,
"stackedBarChart": false,
"thresholds": [],
"timePreferance": "GLOBAL_TIME",
"title": "Number of Notifications Failed",
"yAxisUnit": "none"
}
]
}

View File

@@ -96,7 +96,7 @@
"multiSelect": true,
"name": "Queue",
"order": 2,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'QueueName') AS queue\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' \nAND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} \nAND JSONExtractString(labels, 'cloud_region') IN {{.Region}} \nGROUP BY queue",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'QueueName') AS queue\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' \nAND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} \nAND JSONExtractString(labels, 'cloud.region') IN {{.Region}} \nGROUP BY queue",
"showALLOption": true,
"sort": "ASC",
"textboxValue": "",
@@ -112,7 +112,7 @@
"multiSelect": false,
"name": "Region",
"order": 1,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' AND JSONExtractString(labels, 'cloud_account_id') IN {{.Account}} GROUP BY region",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.region') AS region\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' AND JSONExtractString(labels, 'cloud.account.id') IN {{.Account}} GROUP BY region",
"showALLOption": false,
"sort": "DISABLED",
"textboxValue": "",
@@ -128,7 +128,7 @@
"multiSelect": false,
"name": "Account",
"order": 0,
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud_account_id') AS cloud_account_id\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' GROUP BY cloud_account_id",
"queryValue": "SELECT DISTINCT JSONExtractString(labels, 'cloud.account.id') AS `cloud.account.id`\nFROM signoz_metrics.distributed_time_series_v4_1day\nWHERE metric_name = 'aws_SQS_ApproximateAgeOfOldestMessage_max' GROUP BY `cloud.account.id`",
"showALLOption": false,
"sort": "ASC",
"textboxValue": "",
@@ -172,10 +172,10 @@
"id": "f3faf3d7",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -185,10 +185,10 @@
"id": "e9f94e6c",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -352,10 +352,10 @@
"id": "bcad72b1",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -365,10 +365,10 @@
"id": "7e9fbca3",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -532,10 +532,10 @@
"id": "d20d64d4",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -545,10 +545,10 @@
"id": "072f1e3f",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -712,10 +712,10 @@
"id": "20a35c55",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -725,10 +725,10 @@
"id": "4d702aca",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -892,10 +892,10 @@
"id": "d6acfbea",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -905,10 +905,10 @@
"id": "c8f19331",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1072,10 +1072,10 @@
"id": "0fe5e8bd",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1085,10 +1085,10 @@
"id": "6702e7e6",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1252,10 +1252,10 @@
"id": "52cf9dd8",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1265,10 +1265,10 @@
"id": "35ebf39a",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1432,10 +1432,10 @@
"id": "b8f487f1",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1445,10 +1445,10 @@
"id": "e89032c8",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1612,10 +1612,10 @@
"id": "0711b803",
"key": {
"dataType": "string",
"id": "cloud_account_id--string--tag--false",
"id": "cloud.account.id--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_account_id",
"key": "cloud.account.id",
"type": "tag"
},
"op": "=",
@@ -1625,10 +1625,10 @@
"id": "15f30a54",
"key": {
"dataType": "string",
"id": "cloud_region--string--tag--false",
"id": "cloud.region--string--tag--false",
"isColumn": false,
"isJSON": false,
"key": "cloud_region",
"key": "cloud.region",
"type": "tag"
},
"op": "=",
@@ -1758,4 +1758,4 @@
"yAxisUnit": "decbytes"
}
]
}
}

View File

@@ -207,16 +207,23 @@ func AdjustKey(key *telemetrytypes.TelemetryFieldKey, keys map[string][]*telemet
indexes := []telemetrytypes.JSONDataTypeIndex{}
fieldContextsSeen := map[telemetrytypes.FieldContext]bool{}
dataTypesSeen := map[telemetrytypes.FieldDataType]bool{}
jsonTypesSeen := map[string]*telemetrytypes.JSONDataType{}
for _, matchingKey := range matchingKeys {
materialized = materialized && matchingKey.Materialized
fieldContextsSeen[matchingKey.FieldContext] = true
dataTypesSeen[matchingKey.FieldDataType] = true
if matchingKey.JSONDataType != nil {
jsonTypesSeen[matchingKey.JSONDataType.StringValue()] = matchingKey.JSONDataType
}
indexes = append(indexes, matchingKey.Indexes...)
}
for _, matchingKey := range contextPrefixedMatchingKeys {
materialized = materialized && matchingKey.Materialized
fieldContextsSeen[matchingKey.FieldContext] = true
dataTypesSeen[matchingKey.FieldDataType] = true
if matchingKey.JSONDataType != nil {
jsonTypesSeen[matchingKey.JSONDataType.StringValue()] = matchingKey.JSONDataType
}
indexes = append(indexes, matchingKey.Indexes...)
}
key.Materialized = materialized
@@ -241,6 +248,15 @@ func AdjustKey(key *telemetrytypes.TelemetryFieldKey, keys map[string][]*telemet
break
}
}
if len(jsonTypesSeen) == 1 && key.JSONDataType == nil {
// all matching keys have same JSON data type, use it
for _, jt := range jsonTypesSeen {
actions = append(actions, fmt.Sprintf("Adjusting key %s to have JSON data type %s", key, jt.StringValue()))
key.JSONDataType = jt
break
}
}
}
return actions

View File

@@ -276,12 +276,11 @@ func (m *fieldMapper) FieldFor(ctx context.Context, tsStart, tsEnd uint64, key *
continue
}
if key.FieldDataType == telemetrytypes.FieldDataTypeUnspecified {
if key.JSONDataType == nil {
return "", qbtypes.ErrColumnNotFound
}
jdt := key.GetJSONDataType()
if key.KeyNameContainsArray() && !jdt.IsArray {
if key.KeyNameContainsArray() && !key.JSONDataType.IsArray {
return "", errors.NewInvalidInputf(errors.CodeInvalidInput, "FieldFor not supported for nested fields; only supported for flat paths (e.g. body.status.detail) and paths of Array type: %s(%s)", key.Name, key.FieldDataType)
}

View File

@@ -220,7 +220,7 @@ func TestJSONStmtBuilder_PrimitivePaths(t *testing.T) {
expected: TestExpected{
WhereClause: "(((LOWER(toString(dynamicElement(body_v2.`user.age`, 'Int64'))) LIKE LOWER(?)) AND has(JSONAllPaths(body_v2), 'user.age')) OR ((LOWER(dynamicElement(body_v2.`user.age`, 'String')) LIKE LOWER(?)) AND has(JSONAllPaths(body_v2), 'user.age')))",
Args: []any{uint64(1747945619), uint64(1747983448), "%25%", "%25%", "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `user.age` is ambiguous, found 2 different combinations of field context / data type: [name=user.age,context=body,datatype=int64 name=user.age,context=body,datatype=string]."},
Warnings: []string{"Key `user.age` is ambiguous, found 2 different combinations of field context / data type: [name=user.age,context=body,datatype=int64,jsondatatype=Int64 name=user.age,context=body,datatype=string,jsondatatype=String]."},
},
},
{
@@ -414,7 +414,7 @@ func TestStatementBuilderListQueryBodyPromoted(t *testing.T) {
},
expected: TestExpected{
Args: []any{uint64(1747945619), uint64(1747983448), "%1.65%", 1.65, "%1.65%", 1.65, "%1.65%", 1.65, "%1.65%", 1.65, "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,materialized=true name=education[].parameters,context=body,datatype=[]dynamic,materialized=true]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,materialized=true,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,materialized=true,jsondatatype=Array(Dynamic)]."},
},
expectedErr: nil,
},
@@ -441,7 +441,7 @@ func TestStatementBuilderListQueryBodyPromoted(t *testing.T) {
},
expected: TestExpected{
Args: []any{uint64(1747945619), uint64(1747983448), "%true%", true, "%true%", true, "%true%", true, "%true%", true, "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,materialized=true name=education[].parameters,context=body,datatype=[]dynamic,materialized=true]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,materialized=true,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,materialized=true,jsondatatype=Array(Dynamic)]."},
},
expectedErr: nil,
},
@@ -455,7 +455,7 @@ func TestStatementBuilderListQueryBodyPromoted(t *testing.T) {
},
expected: TestExpected{
Args: []any{uint64(1747945619), uint64(1747983448), "%passed%", "passed", "%passed%", "passed", "%passed%", "passed", "%passed%", "passed", "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,materialized=true name=education[].parameters,context=body,datatype=[]dynamic,materialized=true]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,materialized=true,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,materialized=true,jsondatatype=Array(Dynamic)]."},
},
expectedErr: nil,
},
@@ -549,7 +549,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "((NOT arrayExists(`body_v2.education`-> toFloat64OrNull(dynamicElement(`body_v2.education`.`type`, 'String')) = ?, dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND (NOT arrayExists(`body_v2.education`-> dynamicElement(`body_v2.education`.`type`, 'Int64') = ?, dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))))",
Args: []any{uint64(1747945619), uint64(1747983448), int64(10001), int64(10001), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].type` is ambiguous, found 2 different combinations of field context / data type: [name=education[].type,context=body,datatype=string name=education[].type,context=body,datatype=int64]."},
Warnings: []string{"Key `education[].type` is ambiguous, found 2 different combinations of field context / data type: [name=education[].type,context=body,datatype=string,jsondatatype=String name=education[].type,context=body,datatype=int64,jsondatatype=Int64]."},
},
},
{
@@ -576,7 +576,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "(((arrayExists(`body_v2.education`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))')) OR arrayExists(x -> toFloat64(x) = ?, dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))'))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')) OR ((arrayExists(`body_v2.education`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)'))) OR arrayExists(x -> accurateCastOrNull(x, 'Float64') = ?, arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)')))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')))",
Args: []any{uint64(1747945619), uint64(1747983448), "%1.65%", 1.65, "%1.65%", 1.65, "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64 name=education[].parameters,context=body,datatype=[]dynamic]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,jsondatatype=Array(Dynamic)]."},
},
},
{
@@ -585,7 +585,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "(((arrayExists(`body_v2.education`-> arrayExists(x -> toString(x) = ?, dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))')), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')) OR ((arrayExists(`body_v2.education`-> arrayExists(x -> toString(x) = ?, arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)'))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')))",
Args: []any{uint64(1747945619), uint64(1747983448), "passed", "passed", "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64 name=education[].parameters,context=body,datatype=[]dynamic]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,jsondatatype=Array(Dynamic)]."},
},
},
{
@@ -594,7 +594,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "(((arrayExists(`body_v2.education`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))')) OR arrayExists(x -> toString(x) = ?, dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))'))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')) OR ((arrayExists(`body_v2.education`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)'))) OR arrayExists(x -> toString(x) = ?, arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)')))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')))",
Args: []any{uint64(1747945619), uint64(1747983448), "%passed%", "passed", "%passed%", "passed", "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64 name=education[].parameters,context=body,datatype=[]dynamic]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,jsondatatype=Array(Dynamic)]."},
},
},
{
@@ -603,7 +603,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "(((arrayExists(`body_v2.education`-> arrayExists(x -> toFloat64(x) IN (?, ?), dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))')), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')) OR ((arrayExists(`body_v2.education`-> arrayExists(x -> toString(x) IN (?, ?), arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)'))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'education')))",
Args: []any{uint64(1747945619), uint64(1747983448), 1.65, 1.99, "1.65", "1.99", "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64 name=education[].parameters,context=body,datatype=[]dynamic]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,jsondatatype=Array(Dynamic)]."},
},
},
{
@@ -612,7 +612,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "((NOT arrayExists(`body_v2.education`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))')) OR arrayExists(x -> toFloat64(x) = ?, dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))'))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND (NOT arrayExists(`body_v2.education`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)'))) OR arrayExists(x -> accurateCastOrNull(x, 'Float64') = ?, arrayFilter(x->(dynamicType(x) IN ('String', 'Int64', 'Float64', 'Bool')), dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)')))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))))",
Args: []any{uint64(1747945619), uint64(1747983448), "%1.65%", float64(1.65), "%1.65%", float64(1.65), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64 name=education[].parameters,context=body,datatype=[]dynamic]."},
Warnings: []string{"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,jsondatatype=Array(Dynamic)]."},
},
},
{
@@ -622,7 +622,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
WhereClause: "(has(arrayFlatten(arrayConcat(arrayMap(`body_v2.education`->dynamicElement(`body_v2.education`.`parameters`, 'Array(Nullable(Float64))'), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))')))), ?) OR has(arrayFlatten(arrayConcat(arrayMap(`body_v2.education`->dynamicElement(`body_v2.education`.`parameters`, 'Array(Dynamic)'), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))')))), ?))",
Args: []any{uint64(1747945619), uint64(1747983448), 1.65, 1.65, "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{
"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64 name=education[].parameters,context=body,datatype=[]dynamic].",
"Key `education[].parameters` is ambiguous, found 2 different combinations of field context / data type: [name=education[].parameters,context=body,datatype=[]float64,jsondatatype=Array(Nullable(Float64)) name=education[].parameters,context=body,datatype=[]dynamic,jsondatatype=Array(Dynamic)].",
},
},
},
@@ -702,7 +702,7 @@ func TestJSONStmtBuilder_ArrayPaths(t *testing.T) {
expected: TestExpected{
WhereClause: "(((arrayExists(`body_v2.interests`-> arrayExists(`body_v2.interests[].entities`-> arrayExists(`body_v2.interests[].entities[].reviews`-> arrayExists(`body_v2.interests[].entities[].reviews[].entries`-> arrayExists(`body_v2.interests[].entities[].reviews[].entries[].metadata`-> arrayExists(`body_v2.interests[].entities[].reviews[].entries[].metadata[].positions`-> (arrayExists(x -> LOWER(toString(x)) LIKE LOWER(?), dynamicElement(`body_v2.interests[].entities[].reviews[].entries[].metadata[].positions`.`ratings`, 'Array(Nullable(Int64))')) OR arrayExists(x -> toFloat64(x) = ?, dynamicElement(`body_v2.interests[].entities[].reviews[].entries[].metadata[].positions`.`ratings`, 'Array(Nullable(Int64))'))), dynamicElement(`body_v2.interests[].entities[].reviews[].entries[].metadata`.`positions`, 'Array(JSON(max_dynamic_types=0, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests[].entities[].reviews[].entries`.`metadata`, 'Array(JSON(max_dynamic_types=1, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests[].entities[].reviews`.`entries`, 'Array(JSON(max_dynamic_types=2, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests[].entities`.`reviews`, 'Array(JSON(max_dynamic_types=4, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests`.`entities`, 'Array(JSON(max_dynamic_types=8, max_dynamic_paths=0))')), dynamicElement(body_v2.`interests`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'interests')) OR ((arrayExists(`body_v2.interests`-> arrayExists(`body_v2.interests[].entities`-> arrayExists(`body_v2.interests[].entities[].reviews`-> arrayExists(`body_v2.interests[].entities[].reviews[].entries`-> arrayExists(`body_v2.interests[].entities[].reviews[].entries[].metadata`-> arrayExists(`body_v2.interests[].entities[].reviews[].entries[].metadata[].positions`-> (arrayExists(x -> LOWER(x) LIKE LOWER(?), dynamicElement(`body_v2.interests[].entities[].reviews[].entries[].metadata[].positions`.`ratings`, 'Array(Nullable(String))')) OR arrayExists(x -> toFloat64OrNull(x) = ?, dynamicElement(`body_v2.interests[].entities[].reviews[].entries[].metadata[].positions`.`ratings`, 'Array(Nullable(String))'))), dynamicElement(`body_v2.interests[].entities[].reviews[].entries[].metadata`.`positions`, 'Array(JSON(max_dynamic_types=0, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests[].entities[].reviews[].entries`.`metadata`, 'Array(JSON(max_dynamic_types=1, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests[].entities[].reviews`.`entries`, 'Array(JSON(max_dynamic_types=2, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests[].entities`.`reviews`, 'Array(JSON(max_dynamic_types=4, max_dynamic_paths=0))')), dynamicElement(`body_v2.interests`.`entities`, 'Array(JSON(max_dynamic_types=8, max_dynamic_paths=0))')), dynamicElement(body_v2.`interests`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))'))) AND has(JSONAllPaths(body_v2), 'interests')))",
Args: []any{uint64(1747945619), uint64(1747983448), "%4%", float64(4), "%4%", float64(4), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
Warnings: []string{"Key `interests[].entities[].reviews[].entries[].metadata[].positions[].ratings` is ambiguous, found 2 different combinations of field context / data type: [name=interests[].entities[].reviews[].entries[].metadata[].positions[].ratings,context=body,datatype=[]int64 name=interests[].entities[].reviews[].entries[].metadata[].positions[].ratings,context=body,datatype=[]string]."},
Warnings: []string{"Key `interests[].entities[].reviews[].entries[].metadata[].positions[].ratings` is ambiguous, found 2 different combinations of field context / data type: [name=interests[].entities[].reviews[].entries[].metadata[].positions[].ratings,context=body,datatype=[]int64,jsondatatype=Array(Nullable(Int64)) name=interests[].entities[].reviews[].entries[].metadata[].positions[].ratings,context=body,datatype=[]string,jsondatatype=Array(Nullable(String))]."},
},
},
{
@@ -942,171 +942,20 @@ func TestJSONStmtBuilder_IndexedPaths(t *testing.T) {
})
}
}
func TestJSONStmtBuilder_SelectField(t *testing.T) {
enable, disable := jsonQueryTestUtil(t)
enable()
defer disable()
statementBuilder := buildJSONTestStatementBuilder(t, false)
cases := []struct {
name string
requestType qbtypes.RequestType
query qbtypes.QueryBuilderQuery[qbtypes.LogAggregation]
expected qbtypes.Statement
expectedErrContains string
}{
{
name: "select_x_education[].awards[].participated[].members",
requestType: qbtypes.RequestTypeRaw,
query: qbtypes.QueryBuilderQuery[qbtypes.LogAggregation]{
Signal: telemetrytypes.SignalLogs,
StepInterval: qbtypes.Step{Duration: 30 * time.Second},
Limit: 10,
SelectFields: []telemetrytypes.TelemetryFieldKey{
{
Name: "education[].awards[].participated[].members",
},
},
Filter: &qbtypes.Filter{
Expression: "user.name exists",
},
},
expected: qbtypes.Statement{
Query: "WITH __resource_filter AS (SELECT fingerprint FROM signoz_logs.distributed_logs_v2_resource WHERE true AND seen_at_ts_bucket_start >= ? AND seen_at_ts_bucket_start <= ?) SELECT timestamp, id, arrayFlatten(arrayConcat(arrayMap(`body_v2.education`->arrayConcat(arrayMap(`body_v2.education[].awards`->arrayConcat(arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(JSON(max_dynamic_types=4, max_dynamic_paths=0))')), arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), arrayMap(x->assumeNotNull(dynamicElement(x, 'JSON')), arrayFilter(x->(dynamicType(x) = 'JSON'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(Dynamic)'))))), dynamicElement(`body_v2.education`.`awards`, 'Array(JSON(max_dynamic_types=8, max_dynamic_paths=0))')), arrayMap(`body_v2.education[].awards`->arrayConcat(arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=256))')), arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), arrayMap(x->assumeNotNull(dynamicElement(x, 'JSON')), arrayFilter(x->(dynamicType(x) = 'JSON'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(Dynamic)'))))), arrayMap(x->assumeNotNull(dynamicElement(x, 'JSON')), arrayFilter(x->(dynamicType(x) = 'JSON'), dynamicElement(`body_v2.education`.`awards`, 'Array(Dynamic)'))))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))')))) AS `education[].awards[].participated[].members` FROM signoz_logs.distributed_logs_v2 WHERE resource_fingerprint GLOBAL IN (SELECT fingerprint FROM __resource_filter) AND (dynamicElement(body_v2.`user.name`, 'String') IS NOT NULL) AND timestamp >= ? AND ts_bucket_start >= ? AND timestamp < ? AND ts_bucket_start <= ? LIMIT ?",
Args: []any{uint64(1747945619), uint64(1747983448), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
},
},
{
name: "select_x_user.name",
requestType: qbtypes.RequestTypeRaw,
query: qbtypes.QueryBuilderQuery[qbtypes.LogAggregation]{
Signal: telemetrytypes.SignalLogs,
StepInterval: qbtypes.Step{Duration: 30 * time.Second},
Limit: 10,
SelectFields: []telemetrytypes.TelemetryFieldKey{
{
Name: "user.name",
},
},
},
expected: qbtypes.Statement{
Query: "WITH __resource_filter AS (SELECT fingerprint FROM signoz_logs.distributed_logs_v2_resource WHERE seen_at_ts_bucket_start >= ? AND seen_at_ts_bucket_start <= ?) SELECT timestamp, id, dynamicElement(body_v2.`user.name`, 'String') AS `user.name` FROM signoz_logs.distributed_logs_v2 WHERE resource_fingerprint GLOBAL IN (SELECT fingerprint FROM __resource_filter) AND timestamp >= ? AND ts_bucket_start >= ? AND timestamp < ? AND ts_bucket_start <= ? LIMIT ?",
Args: []any{uint64(1747945619), uint64(1747983448), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
},
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
q, err := statementBuilder.Build(context.Background(), 1747947419000, 1747983448000, c.requestType, c.query, nil)
if c.expectedErrContains != "" {
require.Error(t, err)
require.Contains(t, err.Error(), c.expectedErrContains)
} else {
require.NoError(t, err)
require.Equal(t, c.expected.Query, q.Query)
require.Equal(t, c.expected.Args, q.Args)
require.Equal(t, c.expected.Warnings, q.Warnings)
}
})
}
}
func TestJSONStmtBuilder_OrderBy(t *testing.T) {
enable, disable := jsonQueryTestUtil(t)
enable()
defer disable()
statementBuilder := buildJSONTestStatementBuilder(t, false)
cases := []struct {
name string
requestType qbtypes.RequestType
query qbtypes.QueryBuilderQuery[qbtypes.LogAggregation]
expected qbtypes.Statement
expectedErrContains string
}{
{
name: "order_by_education[].awards[].participated[].members",
requestType: qbtypes.RequestTypeRaw,
query: qbtypes.QueryBuilderQuery[qbtypes.LogAggregation]{
Signal: telemetrytypes.SignalLogs,
StepInterval: qbtypes.Step{Duration: 30 * time.Second},
Limit: 10,
Order: []qbtypes.OrderBy{
{
Key: qbtypes.OrderByKey{
TelemetryFieldKey: telemetrytypes.TelemetryFieldKey{
Name: "education[].awards[].participated[].members",
},
},
Direction: qbtypes.OrderDirectionAsc,
},
},
Filter: &qbtypes.Filter{
Expression: "user.name exists",
},
},
expected: qbtypes.Statement{
Query: "WITH __resource_filter AS (SELECT fingerprint FROM signoz_logs.distributed_logs_v2_resource WHERE true AND seen_at_ts_bucket_start >= ? AND seen_at_ts_bucket_start <= ?) SELECT timestamp, id, trace_id, span_id, trace_flags, severity_text, severity_number, scope_name, scope_version, body_v2 as body, attributes_string, attributes_number, attributes_bool, resources_string, scope_string FROM signoz_logs.distributed_logs_v2 WHERE resource_fingerprint GLOBAL IN (SELECT fingerprint FROM __resource_filter) AND (dynamicElement(body_v2.`user.name`, 'String') IS NOT NULL) AND timestamp >= ? AND ts_bucket_start >= ? AND timestamp < ? AND ts_bucket_start <= ? ORDER BY arrayFlatten(arrayConcat(arrayMap(`body_v2.education`->arrayConcat(arrayMap(`body_v2.education[].awards`->arrayConcat(arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(JSON(max_dynamic_types=4, max_dynamic_paths=0))')), arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), arrayMap(x->assumeNotNull(dynamicElement(x, 'JSON')), arrayFilter(x->(dynamicType(x) = 'JSON'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(Dynamic)'))))), dynamicElement(`body_v2.education`.`awards`, 'Array(JSON(max_dynamic_types=8, max_dynamic_paths=0))')), arrayMap(`body_v2.education[].awards`->arrayConcat(arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=256))')), arrayMap(`body_v2.education[].awards[].participated`->dynamicElement(`body_v2.education[].awards[].participated`.`members`, 'Array(Nullable(String))'), arrayMap(x->assumeNotNull(dynamicElement(x, 'JSON')), arrayFilter(x->(dynamicType(x) = 'JSON'), dynamicElement(`body_v2.education[].awards`.`participated`, 'Array(Dynamic)'))))), arrayMap(x->assumeNotNull(dynamicElement(x, 'JSON')), arrayFilter(x->(dynamicType(x) = 'JSON'), dynamicElement(`body_v2.education`.`awards`, 'Array(Dynamic)'))))), dynamicElement(body_v2.`education`, 'Array(JSON(max_dynamic_types=16, max_dynamic_paths=0))')))) AS `education[].awards[].participated[].members` asc LIMIT ?",
Args: []any{uint64(1747945619), uint64(1747983448), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
},
},
{
name: "order_by_user.name",
requestType: qbtypes.RequestTypeRaw,
query: qbtypes.QueryBuilderQuery[qbtypes.LogAggregation]{
Signal: telemetrytypes.SignalLogs,
StepInterval: qbtypes.Step{Duration: 30 * time.Second},
Limit: 10,
Order: []qbtypes.OrderBy{
{
Key: qbtypes.OrderByKey{
TelemetryFieldKey: telemetrytypes.TelemetryFieldKey{
Name: "user.name",
},
},
Direction: qbtypes.OrderDirectionAsc,
},
},
},
expected: qbtypes.Statement{
Query: "WITH __resource_filter AS (SELECT fingerprint FROM signoz_logs.distributed_logs_v2_resource WHERE seen_at_ts_bucket_start >= ? AND seen_at_ts_bucket_start <= ?) SELECT timestamp, id, trace_id, span_id, trace_flags, severity_text, severity_number, scope_name, scope_version, body_v2 as body, attributes_string, attributes_number, attributes_bool, resources_string, scope_string FROM signoz_logs.distributed_logs_v2 WHERE resource_fingerprint GLOBAL IN (SELECT fingerprint FROM __resource_filter) AND timestamp >= ? AND ts_bucket_start >= ? AND timestamp < ? AND ts_bucket_start <= ? ORDER BY dynamicElement(body_v2.`user.name`, 'String') AS `user.name` asc LIMIT ?",
Args: []any{uint64(1747945619), uint64(1747983448), "1747947419000000000", uint64(1747945619), "1747983448000000000", uint64(1747983448), 10},
},
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
q, err := statementBuilder.Build(context.Background(), 1747947419000, 1747983448000, c.requestType, c.query, nil)
if c.expectedErrContains != "" {
require.Error(t, err)
require.Contains(t, err.Error(), c.expectedErrContains)
} else {
require.NoError(t, err)
require.Equal(t, c.expected.Query, q.Query)
require.Equal(t, c.expected.Args, q.Args)
require.Equal(t, c.expected.Warnings, q.Warnings)
}
})
}
}
func buildTestTelemetryMetadataStore(t *testing.T, addIndexes bool) *telemetrytypestest.MockMetadataStore {
mockMetadataStore := telemetrytypestest.NewMockMetadataStore()
mockMetadataStore.SetStaticFields(IntrinsicFields)
types, _ := telemetrytypes.TestJSONTypeSet()
for path, fieldDataTypes := range types {
for _, fdt := range fieldDataTypes {
for path, jsonTypes := range types {
for _, jsonType := range jsonTypes {
key := &telemetrytypes.TelemetryFieldKey{
Name: path,
Signal: telemetrytypes.SignalLogs,
FieldContext: telemetrytypes.FieldContextBody,
FieldDataType: fdt,
FieldDataType: telemetrytypes.MappingJSONDataTypeToFieldDataType[jsonType],
JSONDataType: &jsonType,
}
if addIndexes {
jsonType := telemetrytypes.MappingFieldDataTypeToJSONDataType[fdt]
idx := slices.IndexFunc(telemetrytypes.TestIndexedPaths, func(entry telemetrytypes.TestIndexedPathEntry) bool {
return entry.Path == path && entry.Type == jsonType
})

View File

@@ -875,6 +875,7 @@ func TestAdjustKey(t *testing.T) {
require.Equal(t, c.expectedKey.FieldContext, key.FieldContext, "field context should match")
require.Equal(t, c.expectedKey.FieldDataType, key.FieldDataType, "field data type should match")
require.Equal(t, c.expectedKey.Materialized, key.Materialized, "materialized should match")
require.Equal(t, c.expectedKey.JSONDataType, key.JSONDataType, "json data type should match")
require.Equal(t, c.expectedKey.Indexes, key.Indexes, "json exists should match")
})
}

View File

@@ -21,72 +21,133 @@ import (
)
var (
defaultPathLimit = 100 // Default limit to prevent full table scans
CodeUnknownJSONDataType = errors.MustNewCode("unknown_json_data_type")
CodeFailLoadPromotedPaths = errors.MustNewCode("fail_load_promoted_paths")
CodeFailCheckPathPromoted = errors.MustNewCode("fail_check_path_promoted")
CodeFailIterateBodyJSONKeys = errors.MustNewCode("fail_iterate_body_json_keys")
CodeFailExtractBodyJSONKeys = errors.MustNewCode("fail_extract_body_json_keys")
CodeFailLoadLogsJSONIndexes = errors.MustNewCode("fail_load_logs_json_indexes")
CodeFailListJSONValues = errors.MustNewCode("fail_list_json_values")
CodeFailScanJSONValue = errors.MustNewCode("fail_scan_json_value")
CodeFailScanVariant = errors.MustNewCode("fail_scan_variant")
CodeFailBuildJSONPathsQuery = errors.MustNewCode("fail_build_json_paths_query")
CodeNoPathsToQueryIndexes = errors.MustNewCode("no_paths_to_query_indexes_provided")
CodeFailedToPrepareBatch = errors.MustNewCode("failed_to_prepare_batch_promoted_paths")
CodeFailedToSendBatch = errors.MustNewCode("failed_to_send_batch_promoted_paths")
CodeFailedToAppendPath = errors.MustNewCode("failed_to_append_path_promoted_paths")
)
// enrichBodyKeys enriches body-context keys with promoted path info, indexes,
// and JSON access plans.
// parentTypeCache contains parent array types (ArrayJSON/ArrayDynamic) pre-fetched in the main UNION query.
func (t *telemetryMetaStore) enrichBodyKeys(ctx context.Context, keys []*telemetrytypes.TelemetryFieldKey, parentTypeCache map[string][]telemetrytypes.FieldDataType) error {
if len(keys) == 0 {
return nil
}
// fetchBodyJSONPaths extracts body JSON paths from the path_types table
// This function can be used by both JSONQueryBuilder and metadata extraction
// uniquePathLimit: 0 for no limit, >0 for maximum number of unique paths to return
// - For startup load: set to 10000 to get top 10k unique paths
// - For lookup: set to 0 (no limit needed for single path)
// - For metadata API: set to desired pagination limit
//
// searchOperator: LIKE for pattern matching, EQUAL for exact match.
func (t *telemetryMetaStore) fetchBodyJSONPaths(ctx context.Context,
fieldKeySelectors []*telemetrytypes.FieldKeySelector) ([]*telemetrytypes.TelemetryFieldKey, []string, bool, error) {
ctx = ctxtypes.NewContextWithCommentVals(ctx, map[string]string{
instrumentationtypes.TelemetrySignal: telemetrytypes.SignalLogs.StringValue(),
instrumentationtypes.CodeNamespace: "metadata",
instrumentationtypes.CodeFunctionName: "fetchBodyJSONPaths",
})
var filteredKeys []*telemetrytypes.TelemetryFieldKey
for _, key := range keys {
if key.FieldContext == telemetrytypes.FieldContextBody {
filteredKeys = append(filteredKeys, key)
query, args, limit := buildGetBodyJSONPathsQuery(fieldKeySelectors)
rows, err := t.telemetrystore.ClickhouseDB().Query(ctx, query, args...)
if err != nil {
return nil, nil, false, errors.WrapInternalf(err, CodeFailExtractBodyJSONKeys, "failed to extract body JSON keys")
}
defer rows.Close()
fieldKeys := []*telemetrytypes.TelemetryFieldKey{}
paths := []string{}
rowCount := 0
for rows.Next() {
var path string
var typesArray []string // ClickHouse returns array as []string
var lastSeen uint64
err = rows.Scan(&path, &typesArray, &lastSeen)
if err != nil {
return nil, nil, false, errors.WrapInternalf(err, CodeFailExtractBodyJSONKeys, "failed to scan body JSON key row")
}
for _, typ := range typesArray {
mapping, found := telemetrytypes.MappingStringToJSONDataType[typ]
if !found {
t.logger.ErrorContext(ctx, "failed to map type string to JSON data type", slog.String("type", typ), slog.String("path", path))
continue
}
fieldKeys = append(fieldKeys, &telemetrytypes.TelemetryFieldKey{
Name: path,
Signal: telemetrytypes.SignalLogs,
FieldContext: telemetrytypes.FieldContextBody,
FieldDataType: telemetrytypes.MappingJSONDataTypeToFieldDataType[mapping],
JSONDataType: &mapping,
})
}
paths = append(paths, path)
rowCount++
}
if rows.Err() != nil {
return nil, nil, false, errors.WrapInternalf(rows.Err(), CodeFailIterateBodyJSONKeys, "error iterating body JSON keys")
}
// collect paths for batch queries
paths := make([]string, 0, len(filteredKeys))
for _, key := range filteredKeys {
paths = append(paths, key.Name)
}
// fetch promoted paths
promoted, err := t.GetPromotedPaths(ctx, paths...)
if err != nil {
return err
}
// fetch JSON path indexes
indexes, err := t.getJSONPathIndexes(ctx, paths...)
if err != nil {
return err
}
// apply promoted/index metadata to keys
for _, key := range filteredKeys {
promotedKey := strings.Split(key.Name, telemetrytypes.ArraySep)[0]
key.Materialized = promoted[promotedKey]
key.Indexes = indexes[key.Name]
}
// build JSON access plans using the pre-fetched parent type cache
return t.buildJSONPlans(ctx, filteredKeys, parentTypeCache)
return fieldKeys, paths, rowCount <= limit, nil
}
// buildJSONPlans builds JSON access plans for the given keys
// using the provided parent type cache (pre-fetched in the main UNION query).
func (t *telemetryMetaStore) buildJSONPlans(_ context.Context, keys []*telemetrytypes.TelemetryFieldKey, typeCache map[string][]telemetrytypes.FieldDataType) error {
if len(keys) == 0 {
return nil
func (t *telemetryMetaStore) buildBodyJSONPaths(ctx context.Context,
fieldKeySelectors []*telemetrytypes.FieldKeySelector) ([]*telemetrytypes.TelemetryFieldKey, bool, error) {
fieldKeys, paths, finished, err := t.fetchBodyJSONPaths(ctx, fieldKeySelectors)
if err != nil {
return nil, false, err
}
columnMeta := t.jsonColumnMetadata[telemetrytypes.SignalLogs][telemetrytypes.FieldContextBody]
promoted, err := t.GetPromotedPaths(ctx, paths...)
if err != nil {
return nil, false, err
}
indexes, err := t.getJSONPathIndexes(ctx, paths...)
if err != nil {
return nil, false, err
}
for _, fieldKey := range fieldKeys {
promotedKey := strings.Split(fieldKey.Name, telemetrytypes.ArraySep)[0]
fieldKey.Materialized = promoted[promotedKey]
fieldKey.Indexes = indexes[fieldKey.Name]
}
return fieldKeys, finished, t.buildJSONPlans(ctx, fieldKeys)
}
func (t *telemetryMetaStore) buildJSONPlans(ctx context.Context, keys []*telemetrytypes.TelemetryFieldKey) error {
parentSelectors := make([]*telemetrytypes.FieldKeySelector, 0, len(keys))
for _, key := range keys {
if err := key.SetJSONAccessPlan(columnMeta, typeCache); err != nil {
parentSelectors = append(parentSelectors, key.ArrayParentSelectors()...)
}
parentKeys, _, _, err := t.fetchBodyJSONPaths(ctx, parentSelectors)
if err != nil {
return err
}
typeCache := make(map[string][]telemetrytypes.JSONDataType)
for _, key := range parentKeys {
typeCache[key.Name] = append(typeCache[key.Name], *key.JSONDataType)
}
// build plans for keys now
for _, key := range keys {
err = key.SetJSONAccessPlan(t.jsonColumnMetadata[telemetrytypes.SignalLogs][telemetrytypes.FieldContextBody], typeCache)
if err != nil {
return err
}
}
@@ -94,6 +155,51 @@ func (t *telemetryMetaStore) buildJSONPlans(_ context.Context, keys []*telemetry
return nil
}
func buildGetBodyJSONPathsQuery(fieldKeySelectors []*telemetrytypes.FieldKeySelector) (string, []any, int) {
if len(fieldKeySelectors) == 0 {
return "", nil, defaultPathLimit
}
from := fmt.Sprintf("%s.%s", DBName, PathTypesTableName)
// Build a better query using GROUP BY to deduplicate at database level
// This aggregates all types per path and gets the max last_seen, then applies LIMIT
sb := sqlbuilder.Select(
"path",
"groupArray(DISTINCT type) AS types",
"max(last_seen) AS last_seen",
).From(from)
limit := 0
// Add search filter if provided
orClauses := []string{}
for _, fieldKeySelector := range fieldKeySelectors {
// replace [*] with []
fieldKeySelector.Name = strings.ReplaceAll(fieldKeySelector.Name, telemetrytypes.ArrayAnyIndex, telemetrytypes.ArraySep)
// Extract search text for body JSON keys
keyName := CleanPathPrefixes(fieldKeySelector.Name)
if fieldKeySelector.SelectorMatchType == telemetrytypes.FieldSelectorMatchTypeExact {
orClauses = append(orClauses, sb.Equal("path", keyName))
} else {
// Pattern matching for metadata API (defaults to LIKE behavior for other operators)
orClauses = append(orClauses, sb.ILike("path", fmt.Sprintf("%%%s%%", querybuilder.FormatValueForContains(keyName))))
}
limit += fieldKeySelector.Limit
}
sb.Where(sb.Or(orClauses...))
// Group by path to get unique paths with aggregated types
sb.GroupBy("path")
// Order by max last_seen to get most recent paths first
sb.OrderBy("last_seen DESC")
if limit == 0 {
limit = defaultPathLimit
}
sb.Limit(limit)
query, args := sb.BuildWithFlavor(sqlbuilder.ClickHouse)
return query, args, limit
}
func (t *telemetryMetaStore) getJSONPathIndexes(ctx context.Context, paths ...string) (map[string][]telemetrytypes.JSONDataTypeIndex, error) {
filteredPaths := []string{}
for _, path := range paths {

View File

@@ -7,9 +7,99 @@ import (
"github.com/SigNoz/signoz-otel-collector/constants"
"github.com/SigNoz/signoz/pkg/querybuilder"
"github.com/SigNoz/signoz/pkg/telemetrylogs"
"github.com/SigNoz/signoz/pkg/types/telemetrytypes"
"github.com/stretchr/testify/require"
)
func TestBuildGetBodyJSONPathsQuery(t *testing.T) {
testCases := []struct {
name string
fieldKeySelectors []*telemetrytypes.FieldKeySelector
expectedSQL string
expectedArgs []any
expectedLimit int
}{
{
name: "Single search text with EQUAL operator",
fieldKeySelectors: []*telemetrytypes.FieldKeySelector{
{
Name: "user.name",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeExact,
},
},
expectedSQL: "SELECT path, groupArray(DISTINCT type) AS types, max(last_seen) AS last_seen FROM signoz_metadata.distributed_field_keys WHERE (path = ?) GROUP BY path ORDER BY last_seen DESC LIMIT ?",
expectedArgs: []any{"user.name", defaultPathLimit},
expectedLimit: defaultPathLimit,
},
{
name: "Single search text with LIKE operator",
fieldKeySelectors: []*telemetrytypes.FieldKeySelector{
{
Name: "user",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeFuzzy,
},
},
expectedSQL: "SELECT path, groupArray(DISTINCT type) AS types, max(last_seen) AS last_seen FROM signoz_metadata.distributed_field_keys WHERE (LOWER(path) LIKE LOWER(?)) GROUP BY path ORDER BY last_seen DESC LIMIT ?",
expectedArgs: []any{"%user%", 100},
expectedLimit: 100,
},
{
name: "Multiple search texts with EQUAL operator",
fieldKeySelectors: []*telemetrytypes.FieldKeySelector{
{
Name: "user.name",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeExact,
},
{
Name: "user.age",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeExact,
},
},
expectedSQL: "SELECT path, groupArray(DISTINCT type) AS types, max(last_seen) AS last_seen FROM signoz_metadata.distributed_field_keys WHERE (path = ? OR path = ?) GROUP BY path ORDER BY last_seen DESC LIMIT ?",
expectedArgs: []any{"user.name", "user.age", defaultPathLimit},
expectedLimit: defaultPathLimit,
},
{
name: "Multiple search texts with LIKE operator",
fieldKeySelectors: []*telemetrytypes.FieldKeySelector{
{
Name: "user",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeFuzzy,
},
{
Name: "admin",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeFuzzy,
},
},
expectedSQL: "SELECT path, groupArray(DISTINCT type) AS types, max(last_seen) AS last_seen FROM signoz_metadata.distributed_field_keys WHERE (LOWER(path) LIKE LOWER(?) OR LOWER(path) LIKE LOWER(?)) GROUP BY path ORDER BY last_seen DESC LIMIT ?",
expectedArgs: []any{"%user%", "%admin%", defaultPathLimit},
expectedLimit: defaultPathLimit,
},
{
name: "Search with Contains operator (should default to LIKE)",
fieldKeySelectors: []*telemetrytypes.FieldKeySelector{
{
Name: "test",
SelectorMatchType: telemetrytypes.FieldSelectorMatchTypeFuzzy,
},
},
expectedSQL: "SELECT path, groupArray(DISTINCT type) AS types, max(last_seen) AS last_seen FROM signoz_metadata.distributed_field_keys WHERE (LOWER(path) LIKE LOWER(?)) GROUP BY path ORDER BY last_seen DESC LIMIT ?",
expectedArgs: []any{"%test%", defaultPathLimit},
expectedLimit: defaultPathLimit,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
query, args, limit := buildGetBodyJSONPathsQuery(tc.fieldKeySelectors)
require.Equal(t, tc.expectedSQL, query)
require.Equal(t, tc.expectedArgs, args)
require.Equal(t, tc.expectedLimit, limit)
})
}
}
func TestBuildListLogsJSONIndexesQuery(t *testing.T) {
testCases := []struct {
name string

View File

@@ -368,20 +368,6 @@ func (t *telemetryMetaStore) logsTblStatementToFieldKeys(ctx context.Context) ([
return materialisedKeys, nil
}
// logKeysUnionArm declares one arm of the UNION ALL in getLogsKeys.
// All per-table variance is captured here so the loop body can stay uniform.
type logKeysUnionArm struct {
shouldQuery bool
fieldContext telemetrytypes.FieldContext
table string
nameColumn string // column holding the field/key name (e.g., "name" or "field_name")
dataTypeColumn string // column used in WHERE/GROUP BY
dataTypeSelectExpr string // expression used in SELECT (may wrap with lower())
addBaseFilters func(sb *sqlbuilder.SelectBuilder) // mandatory WHERE filters (e.g., signal, field_context)
encodeDataType func(telemetrytypes.FieldDataType) string // how to render a FieldDataType in WHERE values
extraOrBranch func(sb *sqlbuilder.SelectBuilder) string // optional extra OR branch (e.g., body parent-types)
}
// getLogsKeys returns the keys from the spans that match the field selection criteria.
func (t *telemetryMetaStore) getLogsKeys(ctx context.Context, fieldKeySelectors []*telemetrytypes.FieldKeySelector) ([]*telemetrytypes.TelemetryFieldKey, bool, error) {
ctx = ctxtypes.NewContextWithCommentVals(ctx, map[string]string{
@@ -411,152 +397,90 @@ func (t *telemetryMetaStore) getLogsKeys(ctx context.Context, fieldKeySelectors
// tables to query based on field selectors
queryAttributeTable := false
queryResourceTable := false
queryBodyTable := false
for _, selector := range fieldKeySelectors {
if selector.FieldContext == telemetrytypes.FieldContextUnspecified {
// unspecified context, query all tables
// unspecified context, query both tables
queryAttributeTable = true
queryResourceTable = true
queryBodyTable = true
break
} else if selector.FieldContext == telemetrytypes.FieldContextAttribute {
queryAttributeTable = true
} else if selector.FieldContext == telemetrytypes.FieldContextResource {
queryResourceTable = true
} else if selector.FieldContext == telemetrytypes.FieldContextBody && querybuilder.BodyJSONQueryEnabled {
queryBodyTable = true
}
}
// body keys are gated behind the feature flag
queryBodyTable = queryBodyTable && querybuilder.BodyJSONQueryEnabled
// pre-compute parent array path names from body selectors for JSON plan building;
// these will be fetched as a separate UNION arm filtered to ArrayJSON/ArrayDynamic only
parentPaths := make(map[string]bool)
if queryBodyTable {
for _, sel := range fieldKeySelectors {
if sel.FieldContext != telemetrytypes.FieldContextBody &&
sel.FieldContext != telemetrytypes.FieldContextUnspecified {
continue
}
if !strings.Contains(sel.Name, telemetrytypes.ArraySep) {
continue
}
key := &telemetrytypes.TelemetryFieldKey{
Name: sel.Name,
Signal: telemetrytypes.SignalLogs,
FieldContext: telemetrytypes.FieldContextBody,
}
for _, ps := range key.ArrayParentSelectors() {
parentPaths[ps.Name] = true
}
}
tablesToQuery := []struct {
fieldContext telemetrytypes.FieldContext
shouldQuery bool
}{
{telemetrytypes.FieldContextAttribute, queryAttributeTable},
{telemetrytypes.FieldContextResource, queryResourceTable},
}
// Each UNION arm differs only in: table, data-type column name and SELECT
// expression (lower-wrapped for historical mixed-case in attr/resource),
// base WHERE filters, the per-selector data-type encoding, and (for body)
// an extra OR branch that fetches parent array types for JSON plan building.
// All other logic is shared by the loop below.
tablesToQuery := []logKeysUnionArm{
{
shouldQuery: queryAttributeTable,
fieldContext: telemetrytypes.FieldContextAttribute,
table: t.logsDBName + "." + t.logAttributeKeysTblName,
nameColumn: "name",
dataTypeColumn: "datatype",
dataTypeSelectExpr: "lower(datatype)",
addBaseFilters: func(*sqlbuilder.SelectBuilder) {},
encodeDataType: func(ft telemetrytypes.FieldDataType) string { return ft.TagDataType() },
extraOrBranch: func(*sqlbuilder.SelectBuilder) string { return "" },
},
{
shouldQuery: queryResourceTable,
fieldContext: telemetrytypes.FieldContextResource,
table: t.logsDBName + "." + t.logResourceKeysTblName,
nameColumn: "name",
dataTypeColumn: "datatype",
dataTypeSelectExpr: "lower(datatype)",
addBaseFilters: func(*sqlbuilder.SelectBuilder) {},
encodeDataType: func(ft telemetrytypes.FieldDataType) string { return ft.TagDataType() },
extraOrBranch: func(*sqlbuilder.SelectBuilder) string { return "" },
},
{
shouldQuery: queryBodyTable,
fieldContext: telemetrytypes.FieldContextBody,
table: fmt.Sprintf("%s.%s", DBName, FieldKeysTable),
nameColumn: "field_name",
dataTypeColumn: "field_data_type",
dataTypeSelectExpr: "field_data_type",
addBaseFilters: func(sb *sqlbuilder.SelectBuilder) {
sb.Where(sb.E("signal", telemetrytypes.SignalLogs.StringValue()))
sb.Where(sb.E("field_context", telemetrytypes.FieldContextBody.StringValue()))
},
encodeDataType: func(ft telemetrytypes.FieldDataType) string { return ft.StringValue() },
extraOrBranch: func(sb *sqlbuilder.SelectBuilder) string {
if len(parentPaths) == 0 {
return ""
}
names := make([]any, 0, len(parentPaths))
for n := range parentPaths {
names = append(names, n)
}
return sb.And(
sb.In("field_name", names...),
sb.In("field_data_type",
telemetrytypes.FieldDataTypeArrayDynamic.StringValue(),
telemetrytypes.FieldDataTypeArrayJSON.StringValue(),
),
)
},
},
}
for _, arm := range tablesToQuery {
if !arm.shouldQuery {
for _, table := range tablesToQuery {
if !table.shouldQuery {
continue
}
fieldContext := table.fieldContext
// table name based on field context
var tblName string
if fieldContext == telemetrytypes.FieldContextAttribute {
tblName = t.logsDBName + "." + t.logAttributeKeysTblName
} else {
tblName = t.logsDBName + "." + t.logResourceKeysTblName
}
sb := sqlbuilder.Select(
arm.nameColumn+" AS tag_key",
fmt.Sprintf("'%s' AS tag_type", arm.fieldContext.TagType()),
arm.dataTypeSelectExpr+" AS tag_data_type",
fmt.Sprintf("%d AS priority", getPriorityForContext(arm.fieldContext)),
).From(arm.table)
"name AS tag_key",
fmt.Sprintf("'%s' AS tag_type", fieldContext.TagType()),
"lower(datatype) AS tag_data_type", // in logs, we had some historical data with capital and small case
fmt.Sprintf(`%d AS priority`, getPriorityForContext(fieldContext)),
).From(tblName)
arm.addBaseFilters(sb)
var limit int
conds := []string{}
branches := []string{}
for _, sel := range fieldKeySelectors {
if sel.FieldContext != telemetrytypes.FieldContextUnspecified && sel.FieldContext != arm.fieldContext {
for _, fieldKeySelector := range fieldKeySelectors {
// Include this selector if:
// 1. It has unspecified context (matches all tables)
// 2. Its context matches the current table's context
if fieldKeySelector.FieldContext != telemetrytypes.FieldContextUnspecified &&
fieldKeySelector.FieldContext != fieldContext {
continue
}
parts := []string{}
if sel.SelectorMatchType == telemetrytypes.FieldSelectorMatchTypeExact {
parts = append(parts, sb.E(arm.nameColumn, sel.Name))
// key part of the selector
fieldKeyConds := []string{}
if fieldKeySelector.SelectorMatchType == telemetrytypes.FieldSelectorMatchTypeExact {
fieldKeyConds = append(fieldKeyConds, sb.E("name", fieldKeySelector.Name))
} else {
parts = append(parts, sb.ILike(arm.nameColumn, "%"+escapeForLike(sel.Name)+"%"))
fieldKeyConds = append(fieldKeyConds, sb.ILike("name", "%"+escapeForLike(fieldKeySelector.Name)+"%"))
}
if sel.FieldDataType != telemetrytypes.FieldDataTypeUnspecified {
parts = append(parts, sb.E(arm.dataTypeColumn, arm.encodeDataType(sel.FieldDataType)))
// now look at the field data type
if fieldKeySelector.FieldDataType != telemetrytypes.FieldDataTypeUnspecified {
fieldKeyConds = append(fieldKeyConds, sb.E("datatype", fieldKeySelector.FieldDataType.TagDataType()))
}
if len(parts) > 0 {
branches = append(branches, sb.And(parts...))
if len(fieldKeyConds) > 0 {
conds = append(conds, sb.And(fieldKeyConds...))
}
limit += fieldKeySelector.Limit
}
if extra := arm.extraOrBranch(sb); extra != "" {
branches = append(branches, extra)
if len(conds) > 0 {
sb.Where(sb.Or(conds...))
}
if len(branches) > 0 {
sb.Where(sb.Or(branches...))
sb.GroupBy("name", "datatype")
if limit == 0 {
limit = 1000
}
sb.GroupBy(arm.nameColumn, arm.dataTypeColumn)
query, args := sb.BuildWithFlavor(sqlbuilder.ClickHouse)
queries = append(queries, query)
allArgs = append(allArgs, args...)
@@ -593,7 +517,6 @@ func (t *telemetryMetaStore) getLogsKeys(ctx context.Context, fieldKeySelectors
defer rows.Close()
keys := []*telemetrytypes.TelemetryFieldKey{}
parentTypeCache := make(map[string][]telemetrytypes.FieldDataType)
rowCount := 0
searchTexts := []string{}
@@ -617,17 +540,6 @@ func (t *telemetryMetaStore) getLogsKeys(ctx context.Context, fieldKeySelectors
if err != nil {
return nil, false, errors.Wrap(err, errors.TypeInternal, errors.CodeInternal, ErrFailedToGetLogsKeys.Error())
}
// body keys with ArrayJSON/ArrayDynamic types are internal container types
// used only for JSON access plan building; route to parentTypeCache, not to results
switch fieldDataType {
case telemetrytypes.FieldDataTypeArrayJSON, telemetrytypes.FieldDataTypeArrayDynamic:
if fieldContext == telemetrytypes.FieldContextBody && parentPaths[name] {
parentTypeCache[name] = append(parentTypeCache[name], fieldDataType)
continue
}
}
key, ok := mapOfKeys[name+";"+fieldContext.StringValue()+";"+fieldDataType.StringValue()]
// if there is no materialised column, create a key with the field context and data type
@@ -681,11 +593,13 @@ func (t *telemetryMetaStore) getLogsKeys(ctx context.Context, fieldKeySelectors
}
}
// enrich body keys with promoted paths, indexes, and JSON access plans
if querybuilder.BodyJSONQueryEnabled {
if err := t.enrichBodyKeys(ctx, keys, parentTypeCache); err != nil {
return nil, false, err
bodyJSONPaths, finished, err := t.buildBodyJSONPaths(ctx, fieldKeySelectors) // LIKE for pattern matching
if err != nil {
t.logger.ErrorContext(ctx, "failed to extract body JSON paths", errors.Attr(err))
}
keys = append(keys, bodyJSONPaths...)
complete = complete && finished
}
if _, err := t.updateColumnEvolutionMetadataForKeys(ctx, keys); err != nil {

View File

@@ -1,13 +1,13 @@
package telemetrymetadata
import otelconst "github.com/SigNoz/signoz-otel-collector/constants"
import otelcollectorconst "github.com/SigNoz/signoz-otel-collector/constants"
const (
DBName = "signoz_metadata"
AttributesMetadataTableName = "distributed_attributes_metadata"
AttributesMetadataLocalTableName = "attributes_metadata"
ColumnEvolutionMetadataTableName = "distributed_column_evolution_metadata"
FieldKeysTable = otelconst.DistributedFieldKeysTable
PathTypesTableName = otelcollectorconst.DistributedFieldKeysTable
// Column Evolution table stores promoted paths as (signal, column_name, field_context, field_name); see signoz-otel-collector metadata_migrations.
PromotedPathsTableName = "distributed_column_evolution_metadata"
SkipIndexTableName = "system.data_skipping_indices"

View File

@@ -37,6 +37,7 @@ type TelemetryFieldKey struct {
FieldContext FieldContext `json:"fieldContext,omitzero"`
FieldDataType FieldDataType `json:"fieldDataType,omitzero"`
JSONDataType *JSONDataType `json:"-"`
JSONPlan JSONAccessPlan `json:"-"`
Indexes []JSONDataTypeIndex `json:"-"`
Materialized bool `json:"-"` // refers to promoted in case of body.... fields
@@ -79,11 +80,6 @@ func (f *TelemetryFieldKey) ArrayParentSelectors() []*FieldKeySelector {
return selectors
}
// GetJSONDataType derives the JSONDataType from FieldDataType.
func (f *TelemetryFieldKey) GetJSONDataType() JSONDataType {
return MappingFieldDataTypeToJSONDataType[f.FieldDataType]
}
func (f TelemetryFieldKey) String() string {
var sb strings.Builder
fmt.Fprintf(&sb, "name=%s", f.Name)
@@ -96,6 +92,9 @@ func (f TelemetryFieldKey) String() string {
if f.Materialized {
sb.WriteString(",materialized=true")
}
if f.JSONDataType != nil {
fmt.Fprintf(&sb, ",jsondatatype=%s", f.JSONDataType.StringValue())
}
if len(f.Indexes) > 0 {
sb.WriteString(",indexes=[")
for i, index := range f.Indexes {
@@ -118,6 +117,7 @@ func (f TelemetryFieldKey) Text() string {
func (f *TelemetryFieldKey) OverrideMetadataFrom(src *TelemetryFieldKey) {
f.FieldContext = src.FieldContext
f.FieldDataType = src.FieldDataType
f.JSONDataType = src.JSONDataType
f.Indexes = src.Indexes
f.Materialized = src.Materialized
f.JSONPlan = src.JSONPlan

View File

@@ -31,7 +31,7 @@ var (
FieldDataTypeArrayInt64 = FieldDataType{valuer.NewString("[]int64")}
FieldDataTypeArrayNumber = FieldDataType{valuer.NewString("[]number")}
FieldDataTypeArrayJSON = FieldDataType{valuer.NewString("[]json")}
FieldDataTypeArrayObject = FieldDataType{valuer.NewString("[]object")}
FieldDataTypeArrayDynamic = FieldDataType{valuer.NewString("[]dynamic")}
// Map string representations to FieldDataType values
@@ -72,8 +72,6 @@ var (
"[]float64": FieldDataTypeArrayFloat64,
"[]number": FieldDataTypeArrayNumber,
"[]bool": FieldDataTypeArrayBool,
"[]json": FieldDataTypeArrayJSON,
"[]dynamic": FieldDataTypeArrayDynamic,
// c-style array types
"string[]": FieldDataTypeArrayString,
@@ -81,8 +79,6 @@ var (
"float64[]": FieldDataTypeArrayFloat64,
"number[]": FieldDataTypeArrayNumber,
"bool[]": FieldDataTypeArrayBool,
"json[]": FieldDataTypeArrayJSON,
"dynamic[]": FieldDataTypeArrayDynamic,
}
fieldDataTypeToCHDataType = map[FieldDataType]string{

View File

@@ -19,8 +19,7 @@ var (
BranchJSON = JSONAccessBranchType{valuer.NewString("json")}
BranchDynamic = JSONAccessBranchType{valuer.NewString("dynamic")}
CodePlanIndexOutOfBounds = errors.MustNewCode("plan_index_out_of_bounds")
CodePlanFieldDataTypeMissing = errors.MustNewCode("field_data_type_missing")
CodePlanIndexOutOfBounds = errors.MustNewCode("plan_index_out_of_bounds")
)
type JSONColumnMetadata struct {
@@ -44,7 +43,7 @@ type JSONAccessNode struct {
isRoot bool // marked true for only body_v2 and body_promoted
// Precomputed type information (single source of truth)
AvailableTypes []FieldDataType
AvailableTypes []JSONDataType
// Array type branches (Array(JSON) vs Array(Dynamic))
Branches map[JSONAccessBranchType]*JSONAccessNode
@@ -107,7 +106,7 @@ type planBuilder struct {
paths []string // cumulative paths for type cache lookups
segments []string // individual path segments for node names
isPromoted bool
typeCache map[string][]FieldDataType
typeCache map[string][]JSONDataType
}
// buildPlan recursively builds the path plan tree.
@@ -156,22 +155,14 @@ func (pb *planBuilder) buildPlan(index int, parent *JSONAccessNode, isDynArrChil
MaxDynamicPaths: maxPaths,
}
hasJSON := slices.Contains(node.AvailableTypes, FieldDataTypeArrayJSON)
hasDynamic := slices.Contains(node.AvailableTypes, FieldDataTypeArrayDynamic)
if !hasJSON && !hasDynamic {
return nil, errors.NewInternalf(CodePlanFieldDataTypeMissing, "array data types missing for path %s", pathSoFar)
}
hasJSON := slices.Contains(node.AvailableTypes, ArrayJSON)
hasDynamic := slices.Contains(node.AvailableTypes, ArrayDynamic)
// Configure terminal if this is the last part
if isTerminal {
// fielddatatype must not be unspecified else expression can not be generated
if pb.key.FieldDataType == FieldDataTypeUnspecified {
return nil, errors.NewInternalf(CodePlanFieldDataTypeMissing, "field data type is missing for path %s", pathSoFar)
}
node.TerminalConfig = &TerminalConfig{
Key: pb.key,
ElemType: pb.key.GetJSONDataType(),
ElemType: *pb.key.JSONDataType,
}
} else {
var err error
@@ -194,7 +185,7 @@ func (pb *planBuilder) buildPlan(index int, parent *JSONAccessNode, isDynArrChil
// buildJSONAccessPlan builds a tree structure representing the complete JSON path traversal
// that precomputes all possible branches and their types.
func (key *TelemetryFieldKey) SetJSONAccessPlan(columnInfo JSONColumnMetadata, typeCache map[string][]FieldDataType,
func (key *TelemetryFieldKey) SetJSONAccessPlan(columnInfo JSONColumnMetadata, typeCache map[string][]JSONDataType,
) error {
// if path is empty, return nil
if key.Name == "" {

View File

@@ -19,11 +19,11 @@ const (
// ============================================================================
// makeKey creates a TelemetryFieldKey for testing.
func makeKey(name string, dataType FieldDataType, materialized bool) *TelemetryFieldKey {
func makeKey(name string, dataType JSONDataType, materialized bool) *TelemetryFieldKey {
return &TelemetryFieldKey{
Name: name,
FieldDataType: dataType,
Materialized: materialized,
Name: name,
JSONDataType: &dataType,
Materialized: materialized,
}
}
@@ -242,12 +242,12 @@ func TestPlanJSON_BasicStructure(t *testing.T) {
}{
{
name: "Simple path not promoted",
key: makeKey("user.name", FieldDataTypeString, false),
key: makeKey("user.name", String, false),
expectedYAML: fmt.Sprintf(`
- name: user.name
column: %s
availableTypes:
- string
- String
maxDynamicTypes: 16
isTerminal: true
elemType: String
@@ -255,19 +255,19 @@ func TestPlanJSON_BasicStructure(t *testing.T) {
},
{
name: "Simple path promoted",
key: makeKey("user.name", FieldDataTypeString, true),
key: makeKey("user.name", String, true),
expectedYAML: fmt.Sprintf(`
- name: user.name
column: %s
availableTypes:
- string
- String
maxDynamicTypes: 16
isTerminal: true
elemType: String
- name: user.name
column: %s
availableTypes:
- string
- String
maxDynamicTypes: 16
maxDynamicPaths: 256
isTerminal: true
@@ -276,7 +276,7 @@ func TestPlanJSON_BasicStructure(t *testing.T) {
},
{
name: "Empty path returns error",
key: makeKey("", FieldDataTypeString, false),
key: makeKey("", String, false),
expectErr: true,
expectedYAML: "",
},
@@ -315,13 +315,13 @@ func TestPlanJSON_ArrayPaths(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: name
availableTypes:
- string
- String
maxDynamicTypes: 8
isTerminal: true
elemType: String
@@ -334,27 +334,27 @@ func TestPlanJSON_ArrayPaths(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: awards
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 8
branches:
json:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 4
isTerminal: true
elemType: String
dynamic:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 16
maxDynamicPaths: 256
isTerminal: true
@@ -368,42 +368,42 @@ func TestPlanJSON_ArrayPaths(t *testing.T) {
- name: interests
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: entities
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 8
branches:
json:
name: reviews
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 4
branches:
json:
name: entries
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 2
branches:
json:
name: metadata
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 1
branches:
json:
name: positions
availableTypes:
- "[]json"
- Array(JSON)
branches:
json:
name: name
availableTypes:
- string
- String
isTerminal: true
elemType: String
`, bodyV2Column),
@@ -415,13 +415,13 @@ func TestPlanJSON_ArrayPaths(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: name
availableTypes:
- string
- String
maxDynamicTypes: 8
isTerminal: true
elemType: String
@@ -431,7 +431,7 @@ func TestPlanJSON_ArrayPaths(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
key := makeKey(tt.path, FieldDataTypeString, false)
key := makeKey(tt.path, String, false)
err := key.SetJSONAccessPlan(JSONColumnMetadata{
BaseColumn: bodyV2Column,
PromotedColumn: bodyPromotedColumn,
@@ -450,7 +450,7 @@ func TestPlanJSON_PromotedVsNonPromoted(t *testing.T) {
path := "education[].awards[].type"
t.Run("Non-promoted plan", func(t *testing.T) {
key := makeKey(path, FieldDataTypeString, false)
key := makeKey(path, String, false)
err := key.SetJSONAccessPlan(JSONColumnMetadata{
BaseColumn: bodyV2Column,
PromotedColumn: bodyPromotedColumn,
@@ -462,27 +462,27 @@ func TestPlanJSON_PromotedVsNonPromoted(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: awards
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 8
branches:
json:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 4
isTerminal: true
elemType: String
dynamic:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 16
maxDynamicPaths: 256
isTerminal: true
@@ -493,7 +493,7 @@ func TestPlanJSON_PromotedVsNonPromoted(t *testing.T) {
})
t.Run("Promoted plan", func(t *testing.T) {
key := makeKey(path, FieldDataTypeString, true)
key := makeKey(path, String, true)
err := key.SetJSONAccessPlan(JSONColumnMetadata{
BaseColumn: bodyV2Column,
PromotedColumn: bodyPromotedColumn,
@@ -505,27 +505,27 @@ func TestPlanJSON_PromotedVsNonPromoted(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: awards
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 8
branches:
json:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 4
isTerminal: true
elemType: String
dynamic:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 16
maxDynamicPaths: 256
isTerminal: true
@@ -533,22 +533,22 @@ func TestPlanJSON_PromotedVsNonPromoted(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
maxDynamicPaths: 256
branches:
json:
name: awards
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 8
maxDynamicPaths: 64
branches:
json:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 4
maxDynamicPaths: 16
isTerminal: true
@@ -556,7 +556,7 @@ func TestPlanJSON_PromotedVsNonPromoted(t *testing.T) {
dynamic:
name: type
availableTypes:
- string
- String
maxDynamicTypes: 16
maxDynamicPaths: 256
isTerminal: true
@@ -588,42 +588,42 @@ func TestPlanJSON_EdgeCases(t *testing.T) {
- name: interests
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: entities
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 8
branches:
json:
name: reviews
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 4
branches:
json:
name: entries
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 2
branches:
json:
name: metadata
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 1
branches:
json:
name: positions
availableTypes:
- "[]json"
- Array(JSON)
branches:
json:
name: name
availableTypes:
- string
- String
isTerminal: true
elemType: String
`, bodyV2Column),
@@ -635,14 +635,14 @@ func TestPlanJSON_EdgeCases(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: type
availableTypes:
- string
- int64
- String
- Int64
maxDynamicTypes: 8
isTerminal: true
elemType: String
@@ -655,7 +655,7 @@ func TestPlanJSON_EdgeCases(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
isTerminal: true
elemType: Array(JSON)
@@ -666,12 +666,12 @@ func TestPlanJSON_EdgeCases(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Choose key type based on path; operator does not affect the tree shape asserted here.
keyType := FieldDataTypeString
keyType := String
switch tt.path {
case "education":
keyType = FieldDataTypeArrayJSON
keyType = ArrayJSON
case "education[].type":
keyType = FieldDataTypeString
keyType = String
}
key := makeKey(tt.path, keyType, false)
err := key.SetJSONAccessPlan(JSONColumnMetadata{
@@ -692,7 +692,7 @@ func TestPlanJSON_EdgeCases(t *testing.T) {
func TestPlanJSON_TreeStructure(t *testing.T) {
types, _ := TestJSONTypeSet()
path := "education[].awards[].participated[].team[].branch"
key := makeKey(path, FieldDataTypeString, false)
key := makeKey(path, String, false)
err := key.SetJSONAccessPlan(JSONColumnMetadata{
BaseColumn: bodyV2Column,
PromotedColumn: bodyPromotedColumn,
@@ -704,47 +704,47 @@ func TestPlanJSON_TreeStructure(t *testing.T) {
- name: education
column: %s
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
branches:
json:
name: awards
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 8
branches:
json:
name: participated
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 4
branches:
json:
name: team
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 2
branches:
json:
name: branch
availableTypes:
- string
- String
maxDynamicTypes: 1
isTerminal: true
elemType: String
dynamic:
name: team
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
maxDynamicPaths: 256
branches:
json:
name: branch
availableTypes:
- string
- String
maxDynamicTypes: 8
maxDynamicPaths: 64
isTerminal: true
@@ -752,22 +752,22 @@ func TestPlanJSON_TreeStructure(t *testing.T) {
dynamic:
name: participated
availableTypes:
- "[]dynamic"
- "[]json"
- Array(Dynamic)
- Array(JSON)
maxDynamicTypes: 16
maxDynamicPaths: 256
branches:
json:
name: team
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 8
maxDynamicPaths: 64
branches:
json:
name: branch
availableTypes:
- string
- String
maxDynamicTypes: 4
maxDynamicPaths: 16
isTerminal: true
@@ -775,14 +775,14 @@ func TestPlanJSON_TreeStructure(t *testing.T) {
dynamic:
name: team
availableTypes:
- "[]json"
- Array(JSON)
maxDynamicTypes: 16
maxDynamicPaths: 256
branches:
json:
name: branch
availableTypes:
- string
- String
maxDynamicTypes: 8
maxDynamicPaths: 64
isTerminal: true

View File

@@ -46,6 +46,14 @@ var MappingStringToJSONDataType = map[string]JSONDataType{
"Array(JSON)": ArrayJSON,
}
var ScalerTypeToArrayType = map[JSONDataType]JSONDataType{
String: ArrayString,
Int64: ArrayInt64,
Float64: ArrayFloat64,
Bool: ArrayBool,
Dynamic: ArrayDynamic,
}
var MappingFieldDataTypeToJSONDataType = map[FieldDataType]JSONDataType{
FieldDataTypeString: String,
FieldDataTypeInt64: Int64,
@@ -55,8 +63,18 @@ var MappingFieldDataTypeToJSONDataType = map[FieldDataType]JSONDataType{
FieldDataTypeArrayString: ArrayString,
FieldDataTypeArrayInt64: ArrayInt64,
FieldDataTypeArrayFloat64: ArrayFloat64,
FieldDataTypeArrayNumber: ArrayFloat64,
FieldDataTypeArrayBool: ArrayBool,
FieldDataTypeArrayDynamic: ArrayDynamic,
FieldDataTypeArrayJSON: ArrayJSON,
}
var MappingJSONDataTypeToFieldDataType = map[JSONDataType]FieldDataType{
String: FieldDataTypeString,
Int64: FieldDataTypeInt64,
Float64: FieldDataTypeFloat64,
Bool: FieldDataTypeBool,
ArrayString: FieldDataTypeArrayString,
ArrayInt64: FieldDataTypeArrayInt64,
ArrayFloat64: FieldDataTypeArrayFloat64,
ArrayBool: FieldDataTypeArrayBool,
ArrayDynamic: FieldDataTypeArrayDynamic,
ArrayJSON: FieldDataTypeArrayObject,
}

View File

@@ -4,69 +4,69 @@ package telemetrytypes
// Test JSON Type Set Data Setup
// ============================================================================
// TestJSONTypeSet returns a map of path->field data types for testing.
// TestJSONTypeSet returns a map of path->types for testing.
// This represents the type information available in the test JSON structure.
func TestJSONTypeSet() (map[string][]FieldDataType, MetadataStore) {
types := map[string][]FieldDataType{
func TestJSONTypeSet() (map[string][]JSONDataType, MetadataStore) {
types := map[string][]JSONDataType{
// ── user (primitives) ─────────────────────────────────────────────
"user.name": {FieldDataTypeString},
"user.permissions": {FieldDataTypeArrayString},
"user.age": {FieldDataTypeInt64, FieldDataTypeString}, // Int64/String ambiguity
"user.height": {FieldDataTypeFloat64},
"user.active": {FieldDataTypeBool}, // Bool — not IndexSupported
"user.name": {String},
"user.permissions": {ArrayString},
"user.age": {Int64, String}, // Int64/String ambiguity
"user.height": {Float64},
"user.active": {Bool}, // Bool — not IndexSupported
// Deeper non-array nesting (a.b.c — no array hops)
"user.address.zip": {FieldDataTypeInt64},
"user.address.zip": {Int64},
// ── education[] ───────────────────────────────────────────────────
// Pattern: x[].y
"education": {FieldDataTypeArrayJSON},
"education[].name": {FieldDataTypeString},
"education[].type": {FieldDataTypeString, FieldDataTypeInt64},
"education[].year": {FieldDataTypeInt64},
"education[].scores": {FieldDataTypeArrayInt64},
"education[].parameters": {FieldDataTypeArrayFloat64, FieldDataTypeArrayDynamic},
"education": {ArrayJSON},
"education[].name": {String},
"education[].type": {String, Int64},
"education[].year": {Int64},
"education[].scores": {ArrayInt64},
"education[].parameters": {ArrayFloat64, ArrayDynamic},
// Pattern: x[].y[]
"education[].awards": {FieldDataTypeArrayDynamic, FieldDataTypeArrayJSON},
"education[].awards": {ArrayDynamic, ArrayJSON},
// Pattern: x[].y[].z
"education[].awards[].name": {FieldDataTypeString},
"education[].awards[].type": {FieldDataTypeString},
"education[].awards[].semester": {FieldDataTypeInt64},
"education[].awards[].name": {String},
"education[].awards[].type": {String},
"education[].awards[].semester": {Int64},
// Pattern: x[].y[].z[]
"education[].awards[].participated": {FieldDataTypeArrayDynamic, FieldDataTypeArrayJSON},
"education[].awards[].participated": {ArrayDynamic, ArrayJSON},
// Pattern: x[].y[].z[].w
"education[].awards[].participated[].members": {FieldDataTypeArrayString},
"education[].awards[].participated[].members": {ArrayString},
// Pattern: x[].y[].z[].w[]
"education[].awards[].participated[].team": {FieldDataTypeArrayJSON},
"education[].awards[].participated[].team": {ArrayJSON},
// Pattern: x[].y[].z[].w[].v
"education[].awards[].participated[].team[].branch": {FieldDataTypeString},
"education[].awards[].participated[].team[].branch": {String},
// ── interests[] ───────────────────────────────────────────────────
"interests": {FieldDataTypeArrayJSON},
"interests[].entities": {FieldDataTypeArrayJSON},
"interests[].entities[].reviews": {FieldDataTypeArrayJSON},
"interests[].entities[].reviews[].entries": {FieldDataTypeArrayJSON},
"interests[].entities[].reviews[].entries[].metadata": {FieldDataTypeArrayJSON},
"interests[].entities[].reviews[].entries[].metadata[].positions": {FieldDataTypeArrayJSON},
"interests[].entities[].reviews[].entries[].metadata[].positions[].name": {FieldDataTypeString},
"interests[].entities[].reviews[].entries[].metadata[].positions[].ratings": {FieldDataTypeArrayInt64, FieldDataTypeArrayString},
"http-events": {FieldDataTypeArrayJSON},
"http-events[].request-info.host": {FieldDataTypeString},
"ids": {FieldDataTypeArrayDynamic},
"interests": {ArrayJSON},
"interests[].entities": {ArrayJSON},
"interests[].entities[].reviews": {ArrayJSON},
"interests[].entities[].reviews[].entries": {ArrayJSON},
"interests[].entities[].reviews[].entries[].metadata": {ArrayJSON},
"interests[].entities[].reviews[].entries[].metadata[].positions": {ArrayJSON},
"interests[].entities[].reviews[].entries[].metadata[].positions[].name": {String},
"interests[].entities[].reviews[].entries[].metadata[].positions[].ratings": {ArrayInt64, ArrayString},
"http-events": {ArrayJSON},
"http-events[].request-info.host": {String},
"ids": {ArrayDynamic},
// ── top-level primitives ──────────────────────────────────────────
"message": {FieldDataTypeString},
"http-status": {FieldDataTypeInt64, FieldDataTypeString}, // hyphen in root key, ambiguous
"message": {String},
"http-status": {Int64, String}, // hyphen in root key, ambiguous
// ── top-level nested objects (no array hops) ───────────────────────
"response.time-taken": {FieldDataTypeFloat64}, // hyphen inside nested key
"response.time-taken": {Float64}, // hyphen inside nested key
}
return types, nil

View File

@@ -390,12 +390,12 @@ def test_logs_list_query_timestamp_expectations(
token = get_token(USER_ADMIN_EMAIL, USER_ADMIN_PASSWORD)
# Query Logs for the last 1 minute and check if the logs are returned in the correct order
# Query Logs for the last 10 minute and check if the logs are returned in the correct order
response = make_query_request(
signoz,
token,
start_ms=int(
(datetime.now(tz=timezone.utc) - timedelta(minutes=1)).timestamp() * 1000
(datetime.now(tz=timezone.utc) - timedelta(minutes=10)).timestamp() * 1000
),
end_ms=int(datetime.now(tz=timezone.utc).timestamp() * 1000),
request_type="raw",
@@ -721,7 +721,7 @@ def test_logs_list_query_trace_id_expectations(
token = get_token(USER_ADMIN_EMAIL, USER_ADMIN_PASSWORD)
# Query Logs for the last 1 minute and check if the logs are returned in the correct order
# Query Logs for the last 10 minute and check if the logs are returned in the correct order
response = make_query_request(
signoz,
token,