From 37ee649675894edf6675018b0fc296a21284de40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Pa=C3=9F?= <22845248+mpass99@users.noreply.github.com> Date: Wed, 9 Nov 2022 22:28:54 +0000 Subject: [PATCH] Refactor environment mapping to be not duplicated 12 times. --- deploy/codeocean-terraform | 2 +- .../panels/availability_row.py | 6 +++--- deploy/grafana-dashboard/panels/general_row.py | 8 ++++---- .../panels/runner_insights_row.py | 10 +++++----- .../queries/environment-mapping.flux | 14 ++++++++++++++ .../queries/execution-duration-hist.flux | 15 --------------- .../queries/execution-duration.flux | 15 --------------- .../queries/executions-per-minute-time.flux | 15 --------------- .../queries/executions-per-minute.flux | 17 +---------------- .../queries/executions-per-runner-hist.flux | 15 --------------- .../queries/executions-per-runner.flux | 15 --------------- .../grafana-dashboard/queries/idle-runner.flux | 15 --------------- .../queries/number-of-executions.flux | 15 --------------- .../queries/prewarming-pool-size.flux | 15 --------------- .../queries/request-body-size.flux | 15 --------------- .../queries/runner-per-minute.flux | 15 --------------- .../queries/runner-startup-duration.flux | 15 --------------- deploy/grafana-dashboard/utils/utils.py | 9 ++++++--- 18 files changed, 34 insertions(+), 197 deletions(-) create mode 100644 deploy/grafana-dashboard/queries/environment-mapping.flux diff --git a/deploy/codeocean-terraform b/deploy/codeocean-terraform index dff6619..52adffb 160000 --- a/deploy/codeocean-terraform +++ b/deploy/codeocean-terraform @@ -1 +1 @@ -Subproject commit dff66192714480ae592a4e5e4a525c3c2579f4b3 +Subproject commit 52adffb1b5d73a27e7d40294559863d7b2dfb882 diff --git a/deploy/grafana-dashboard/panels/availability_row.py b/deploy/grafana-dashboard/panels/availability_row.py index 65dd527..c1eb69f 100644 --- a/deploy/grafana-dashboard/panels/availability_row.py +++ b/deploy/grafana-dashboard/panels/availability_row.py @@ -7,7 +7,7 @@ from utils.utils import read_query prewarming_pool_size = BarGauge( title="Prewarming Pool Size", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("prewarming-pool-size"))], + targets=[InfluxDBTarget(query=read_query("prewarming-pool-size", "environment-mapping"))], gridPos=GridPos(h=10, w=11, x=0, y=1), allValues=True, orientation=ORIENTATION_VERTICAL, @@ -18,7 +18,7 @@ prewarming_pool_size = BarGauge( idle_runner = TimeSeries( title="Idle Runner", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("idle-runner"))], + targets=[InfluxDBTarget(query=read_query("idle-runner", "environment-mapping"))], gridPos=GridPos(h=10, w=13, x=11, y=1), lineInterpolation="stepAfter", maxDataPoints=None, @@ -27,7 +27,7 @@ idle_runner = TimeSeries( runner_startup_duration = TimeSeries( title="Runner startup duration", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("runner-startup-duration"))], + targets=[InfluxDBTarget(query=read_query("runner-startup-duration", "environment-mapping"))], gridPos=GridPos(h=10, w=12, x=0, y=11), unit="ns", maxDataPoints=None, diff --git a/deploy/grafana-dashboard/panels/general_row.py b/deploy/grafana-dashboard/panels/general_row.py index 143be34..e52fada 100644 --- a/deploy/grafana-dashboard/panels/general_row.py +++ b/deploy/grafana-dashboard/panels/general_row.py @@ -61,7 +61,7 @@ currently_used_runners = Stat( number_of_executions = BarGauge( title="Number of Executions", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("number-of-executions"))], + targets=[InfluxDBTarget(query=read_query("number-of-executions", "environment-mapping"))], gridPos=GridPos(h=6, w=8, x=16, y=31), allValues=True, orientation=ORIENTATION_VERTICAL, @@ -72,7 +72,7 @@ number_of_executions = BarGauge( execution_duration = BarGauge( title="Execution duration", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("execution-duration"))], + targets=[InfluxDBTarget(query=read_query("execution-duration", "environment-mapping"))], gridPos=GridPos(h=11, w=8, x=0, y=37), allValues=True, displayMode=GAUGE_DISPLAY_MODE_GRADIENT, @@ -84,7 +84,7 @@ execution_duration = BarGauge( executions_per_runner = BarGauge( title="Executions per runner", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("executions-per-runner"))], + targets=[InfluxDBTarget(query=read_query("executions-per-runner", "environment-mapping"))], gridPos=GridPos(h=11, w=8, x=8, y=37), allValues=True, displayMode=GAUGE_DISPLAY_MODE_GRADIENT, @@ -95,7 +95,7 @@ executions_per_runner = BarGauge( executions_per_minute = BarGauge( title="Executions per minute", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("executions-per-minute"))], + targets=[InfluxDBTarget(query=read_query("executions-per-minute", "environment-mapping"))], gridPos=GridPos(h=11, w=8, x=16, y=37), allValues=True, displayMode=GAUGE_DISPLAY_MODE_GRADIENT, diff --git a/deploy/grafana-dashboard/panels/runner_insights_row.py b/deploy/grafana-dashboard/panels/runner_insights_row.py index 1eeee7d..acf52e7 100644 --- a/deploy/grafana-dashboard/panels/runner_insights_row.py +++ b/deploy/grafana-dashboard/panels/runner_insights_row.py @@ -13,7 +13,7 @@ execution_duration_extra_json = { execution_duration = Histogram( title="Execution duration", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("execution-duration-hist"))], + targets=[InfluxDBTarget(query=read_query("execution-duration-hist", "environment-mapping"))], gridPos=GridPos(h=8, w=24, x=0, y=49), bucketSize=100000000, colorMode="palette-classic", @@ -26,7 +26,7 @@ execution_duration = Histogram( executions_per_runner = Histogram( title="Executions per runner", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("executions-per-runner-hist"))], + targets=[InfluxDBTarget(query=read_query("executions-per-runner-hist", "environment-mapping"))], gridPos=GridPos(h=10, w=11, x=0, y=57), bucketSize=1, colorMode="palette-classic", @@ -38,7 +38,7 @@ executions_per_runner = Histogram( executions_per_minute = TimeSeries( title="Executions per minute", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("executions-per-minute-time"))], + targets=[InfluxDBTarget(query=read_query("executions-per-minute-time", "environment-mapping"))], gridPos=GridPos(h=10, w=13, x=11, y=57), maxDataPoints=None, lineInterpolation="smooth", @@ -47,7 +47,7 @@ executions_per_minute = TimeSeries( request_body_size = TimeSeries( title="Request Body Size", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("request-body-size"))], + targets=[InfluxDBTarget(query=read_query("request-body-size", "environment-mapping"))], gridPos=GridPos(h=10, w=11, x=0, y=67), scaleDistributionType="log", unit="bytes", @@ -58,7 +58,7 @@ request_body_size = TimeSeries( runner_per_minute = TimeSeries( title="Runner per minute", dataSource="Poseidon", - targets=[InfluxDBTarget(query=read_query("runner-per-minute"))], + targets=[InfluxDBTarget(query=read_query("runner-per-minute", "environment-mapping"))], gridPos=GridPos(h=10, w=13, x=11, y=67), maxDataPoints=None, lineInterpolation="smooth", diff --git a/deploy/grafana-dashboard/queries/environment-mapping.flux b/deploy/grafana-dashboard/queries/environment-mapping.flux new file mode 100644 index 0000000..52f72a7 --- /dev/null +++ b/deploy/grafana-dashboard/queries/environment-mapping.flux @@ -0,0 +1,14 @@ +envMapping = from(bucket: "poseidon/autogen") + |> range(start: -1y) + |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") + |> filter(fn: (r) => r["event_type"] == "creation") + |> group(columns: ["id", "stage"], mode:"by") + |> last() + |> keep(columns: ["id", "image", "stage"]) + |> rename(columns: {id: "environment_id"}) + |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) + +join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") + |> keep(columns: ["_value", "image", "_time"]) + |> group(columns: ["image"], mode: "by") + |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/execution-duration-hist.flux b/deploy/grafana-dashboard/queries/execution-duration-hist.flux index aec0429..b75466e 100644 --- a/deploy/grafana-dashboard/queries/execution-duration-hist.flux +++ b/deploy/grafana-dashboard/queries/execution-duration-hist.flux @@ -10,18 +10,3 @@ result = from(bucket: "poseidon/autogen") |> keep(columns: ["_time", "_value", "environment_id", "stage"]) |> aggregateWindow(every: v.windowPeriod, fn: mean) |> map(fn: (r) => ({r with _value: r._value * 3.0})) // Each execution has three requests - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/execution-duration.flux b/deploy/grafana-dashboard/queries/execution-duration.flux index 4377f50..e925214 100644 --- a/deploy/grafana-dashboard/queries/execution-duration.flux +++ b/deploy/grafana-dashboard/queries/execution-duration.flux @@ -11,18 +11,3 @@ result = from(bucket: "poseidon/autogen") |> group(columns: ["environment_id", "stage"]) |> mean() |> map(fn: (r) => ({r with _value: r._value * 3.0})) // Each execution has three requests - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/executions-per-minute-time.flux b/deploy/grafana-dashboard/queries/executions-per-minute-time.flux index 5125056..059f454 100644 --- a/deploy/grafana-dashboard/queries/executions-per-minute-time.flux +++ b/deploy/grafana-dashboard/queries/executions-per-minute-time.flux @@ -10,18 +10,3 @@ result = from(bucket: "poseidon/autogen") |> group(columns: ["environment_id", "stage"], mode:"by") |> aggregateWindow(every: 1m, fn: count, createEmpty: true) |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 5), fn: mean, createEmpty: true) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/executions-per-minute.flux b/deploy/grafana-dashboard/queries/executions-per-minute.flux index 616dac2..13c7c1a 100644 --- a/deploy/grafana-dashboard/queries/executions-per-minute.flux +++ b/deploy/grafana-dashboard/queries/executions-per-minute.flux @@ -1,7 +1,7 @@ import "date" import "strings" -data = from(bucket: "poseidon/autogen") +result = from(bucket: "poseidon/autogen") |> range(start: date.truncate(t: v.timeRangeStart, unit: 1m), stop: date.truncate(t: v.timeRangeStop, unit: 1m)) |> filter(fn: (r) => r["_measurement"] == "poseidon_aws_executions" or r["_measurement"] == "poseidon_nomad_executions") |> filter(fn: (r) => contains(value: r["environment_id"], set: ${environment_ids:json})) @@ -11,18 +11,3 @@ data = from(bucket: "poseidon/autogen") |> aggregateWindow(every: 1m, fn: count, createEmpty: true) |> keep(columns: ["_value", "environment_id", "stage"]) |> mean() - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: data, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/executions-per-runner-hist.flux b/deploy/grafana-dashboard/queries/executions-per-runner-hist.flux index feb00e0..cade4b1 100644 --- a/deploy/grafana-dashboard/queries/executions-per-runner-hist.flux +++ b/deploy/grafana-dashboard/queries/executions-per-runner-hist.flux @@ -20,18 +20,3 @@ executions = data result = join(tables: {key1: executions, key2: runner_deletions}, on: ["runner_id"], method: "inner") |> keep(columns: ["_value", "_time", "environment_id", "stage"]) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/executions-per-runner.flux b/deploy/grafana-dashboard/queries/executions-per-runner.flux index 507a558..d1d8108 100644 --- a/deploy/grafana-dashboard/queries/executions-per-runner.flux +++ b/deploy/grafana-dashboard/queries/executions-per-runner.flux @@ -20,18 +20,3 @@ executions = data result = join(tables: {key1: executions, key2: runner_deletions}, on: ["runner_id"], method: "inner") |> keep(columns: ["_value", "environment_id", "stage"]) |> mean() - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/idle-runner.flux b/deploy/grafana-dashboard/queries/idle-runner.flux index da05412..e42a7ef 100644 --- a/deploy/grafana-dashboard/queries/idle-runner.flux +++ b/deploy/grafana-dashboard/queries/idle-runner.flux @@ -8,18 +8,3 @@ result = from(bucket: "poseidon/autogen") |> filter(fn: (r) => (not exists r.stage) or contains(value: r["stage"], set: ${stages:json})) |> keep(columns: ["_value", "_time", "environment_id", "stage"]) |> aggregateWindow(every: myWindowPeriod, fn: min, createEmpty: false) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/number-of-executions.flux b/deploy/grafana-dashboard/queries/number-of-executions.flux index c2d75f0..cfd5752 100644 --- a/deploy/grafana-dashboard/queries/number-of-executions.flux +++ b/deploy/grafana-dashboard/queries/number-of-executions.flux @@ -9,18 +9,3 @@ result = from(bucket: "poseidon/autogen") |> group(columns: ["environment_id", "stage"], mode:"by") |> count() |> keep(columns: ["_value", "environment_id", "stage"]) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["isDeletion"] == "false") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/prewarming-pool-size.flux b/deploy/grafana-dashboard/queries/prewarming-pool-size.flux index 17fe472..8187ce1 100644 --- a/deploy/grafana-dashboard/queries/prewarming-pool-size.flux +++ b/deploy/grafana-dashboard/queries/prewarming-pool-size.flux @@ -8,18 +8,3 @@ result = from(bucket: "poseidon/autogen") |> group(columns: ["environment_id", "stage"], mode:"by") |> last() |> keep(columns: ["_value", "environment_id", "stage"]) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/request-body-size.flux b/deploy/grafana-dashboard/queries/request-body-size.flux index 811a90f..4edfcbd 100644 --- a/deploy/grafana-dashboard/queries/request-body-size.flux +++ b/deploy/grafana-dashboard/queries/request-body-size.flux @@ -8,18 +8,3 @@ result = from(bucket: "poseidon/autogen") |> filter(fn: (r) => (not exists r.stage) or contains(value: r["stage"], set: ${stages:json})) |> keep(columns: ["_time", "_value", "environment_id", "stage"]) |> aggregateWindow(every: myWindowPeriod, fn: mean, createEmpty: false) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/runner-per-minute.flux b/deploy/grafana-dashboard/queries/runner-per-minute.flux index 149dd61..1797a44 100644 --- a/deploy/grafana-dashboard/queries/runner-per-minute.flux +++ b/deploy/grafana-dashboard/queries/runner-per-minute.flux @@ -12,18 +12,3 @@ result = from(bucket: "poseidon/autogen") |> aggregateWindow(every: 1m, fn: count, createEmpty: true) |> keep(columns: ["_value", "_time", "environment_id", "stage"]) |> aggregateWindow(every: myWindowPeriod, fn: mean, createEmpty: true) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/queries/runner-startup-duration.flux b/deploy/grafana-dashboard/queries/runner-startup-duration.flux index ce155fa..eb578e7 100644 --- a/deploy/grafana-dashboard/queries/runner-startup-duration.flux +++ b/deploy/grafana-dashboard/queries/runner-startup-duration.flux @@ -8,18 +8,3 @@ result = from(bucket: "poseidon/autogen") |> filter(fn: (r) => (not exists r.stage) or contains(value: r["stage"], set: ${stages:json})) |> keep(columns: ["_value", "_time", "environment_id", "stage"]) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) - -envMapping = from(bucket: "poseidon/autogen") - |> range(start: -1y) - |> filter(fn: (r) => r["_measurement"] == "poseidon_environments") - |> filter(fn: (r) => r["event_type"] == "creation") - |> group(columns: ["id", "stage"], mode:"by") - |> last() - |> keep(columns: ["id", "image", "stage"]) - |> rename(columns: {id: "environment_id"}) - |> map(fn: (r) => ({ r with image: strings.substring(v: r.stage, start: 0, end: 1) + r.environment_id + "/" + strings.trimPrefix(v: r.image, prefix: "openhpi/co_execenv_")})) - -join(tables: {key1: result, key2: envMapping}, on: ["environment_id", "stage"], method: "inner") - |> keep(columns: ["_value", "image", "_time"]) - |> group(columns: ["image"], mode: "by") - |> rename(columns: {_value: ""}) diff --git a/deploy/grafana-dashboard/utils/utils.py b/deploy/grafana-dashboard/utils/utils.py index 66daf0d..9101051 100644 --- a/deploy/grafana-dashboard/utils/utils.py +++ b/deploy/grafana-dashboard/utils/utils.py @@ -1,3 +1,6 @@ -def read_query(name): - with open("queries/" + name + ".flux", "r") as file: - return file.read() +def read_query(*names): + result = "" + for name in names: + with open("queries/" + name + ".flux", "r") as file: + result += file.read() + return result