Files
poseidon/deploy/grafana-dashboard/main.json

1746 lines
52 KiB
JSON

{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 13,
"iteration": 1660256037912,
"links": [],
"liveNow": false,
"panels": [
{
"collapsed": false,
"datasource": {
"type": "influxdb",
"uid": "w2iPT7fGz"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 25,
"panels": [],
"title": "General",
"type": "row"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"log": 2,
"type": "log"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "all"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "#4c4b5a",
"mode": "fixed"
}
}
]
}
]
},
"gridPos": {
"h": 9,
"w": 8,
"x": 0,
"y": 1
},
"id": 2,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "import \"date\"\n\ndata = from(bucket: \"poseidon/autogen\")\n |> range(start: date.truncate(t: v.timeRangeStart, unit: 1m), stop: date.truncate(t: v.timeRangeStop, unit: 1m))\n |> filter(fn: (r) => r._field == \"duration\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> keep(columns: [\"_time\", \"_value\", \"status\"])\n\nall = data |> set(key: \"status\", value: \"all\")\n\nresult = union(tables: [data, all])\n |> aggregateWindow(every: 1m, fn: count, createEmpty: true)\n\nif int(v: v.windowPeriod) > int(v: 1m) \n then result |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 20), fn: mean, createEmpty: true)\n else result |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 5), fn: mean, createEmpty: false)\n",
"refId": "A"
}
],
"title": "Requests per minute",
"type": "timeseries"
},
{
"cards": {},
"color": {
"cardColor": "#b4ff00",
"colorScale": "sqrt",
"colorScheme": "interpolateOranges",
"exponent": 0.5,
"mode": "spectrum"
},
"dataFormat": "timeseries",
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"gridPos": {
"h": 9,
"w": 8,
"x": 8,
"y": 1
},
"heatmap": {},
"hideZeroBuckets": false,
"highlightCards": true,
"id": 28,
"legend": {
"show": false
},
"pluginVersion": "8.4.6",
"reverseYBuckets": false,
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> keep(columns: [\"_time\", \"_value\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean)\n",
"refId": "A"
}
],
"title": "Request Latency",
"tooltip": {
"show": true,
"showHistogram": false
},
"type": "heatmap",
"xAxis": {
"show": true
},
"yAxis": {
"decimals": 1,
"format": "ns",
"logBase": 1,
"show": true
},
"yBucketBound": "auto"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"log": 10,
"type": "log"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "ns"
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 8,
"x": 16,
"y": 1
},
"id": 27,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> keep(columns: [\"_time\", \"_value\", \"_measurement\"])\n |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 10), fn: (tables=<-, column) => tables |> quantile(q: 0.999))\n",
"refId": "A"
}
],
"title": "Service time (99.9%)",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "fixed"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 8,
"x": 0,
"y": 10
},
"id": 41,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"showThresholdLabels": false,
"showThresholdMarkers": false
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "import \"date\"\n\n// The need for the date truncation is caused by Poseidon sending all influx events at the same time when starting up. This way not the last but a random value is displayed.\n// Since in this startup process the highes value is the correct one, we choose the highest value of the last events.\n\ndata = from(bucket: \"poseidon/autogen\")\n |> range(start: -1y)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_environments\")\n |> group(columns: [\"stage\"], mode:\"by\")\n |> map(fn: (r) => ({ r with _time: date.truncate(t: r._time, unit: 1m) }))\n\ndeploy_times = data\n |> last()\n |> keep(columns: [\"stage\", \"_time\"])\n\njoin(tables: {key1: data, key2: deploy_times}, on: [\"stage\", \"_time\"], method: \"inner\")\n |> max()\n |> keep(columns: [\"stage\", \"_value\"])\n |> rename(columns: {_value: \"\"})\n",
"refId": "A"
}
],
"title": "Current environment count",
"type": "gauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "fixed"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 8,
"x": 8,
"y": 10
},
"id": 42,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_used_runners\")\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\n |> group(columns: [\"stage\"], mode:\"by\")\n |> last()\n |> keep(columns: [\"_value\", \"stage\"])\n |> rename(columns: {_value: \"\"})\n",
"refId": "A"
}
],
"title": "Currently used runners",
"type": "gauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-GrYlRd"
},
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 8,
"x": 16,
"y": 10
},
"id": 37,
"options": {
"displayMode": "gradient",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"showUnfilled": true
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_aws_executions\" or r[\"_measurement\"] == \"poseidon_nomad_executions\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> filter(fn: (r) => not bool(v: r[\"isDeletion\"]))\n |> group(columns: [\"environment_id\", \"stage\"], mode:\"by\")\n |> count()\n |> keep(columns: [\"_value\", \"environment_id\"])\n |> rename(columns: {_value: \"env\"})\n",
"refId": "A"
}
],
"title": "Number of Executions",
"type": "bargauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "super-light-green",
"value": null
},
{
"color": "green",
"value": 1000000000
},
{
"color": "yellow",
"value": 2000000000
},
{
"color": "#EF843C",
"value": 3000000000
},
{
"color": "light-red",
"value": 4000000000
},
{
"color": "dark-red",
"value": 5000000000
},
{
"color": "dark-purple",
"value": 10000000000
},
{
"color": "#000000",
"value": 20000000000
}
]
},
"unit": "ns"
},
"overrides": []
},
"gridPos": {
"h": 11,
"w": 8,
"x": 0,
"y": 16
},
"id": 20,
"options": {
"displayMode": "gradient",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"showUnfilled": true
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_/execute\" or r[\"_measurement\"] == \"poseidon_/files\" or r[\"_measurement\"] == \"poseidon_/websocket\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> filter(fn: (r) => exists r.environment_id)\n |> drop(columns: [\"_field\", \"environment_type\", \"status\", \"_measurement\"])\n |> group(columns: [\"environment_id\", \"runner_id\"])\n |> mean()\n |> group(columns: [\"environment_id\"])\n |> mean()\n |> map(fn: (r) => ({r with _value: r._value * 3.0})) // Each execution has three requests\n |> rename(columns: {_value: \"env\"})\n",
"refId": "A"
}
],
"title": "Execution duration",
"type": "bargauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-RdYlGr"
},
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "super-light-green",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 11,
"w": 8,
"x": 8,
"y": 16
},
"id": 32,
"options": {
"displayMode": "gradient",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"showUnfilled": true
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "data = from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n\nrunner_deletions = data\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_used_runners\")\n |> filter(fn: (r) => bool(v: r[\"isDeletion\"]))\n |> keep(columns: [\"id\"])\n |> rename(columns: {id: \"runner_id\"})\n\nexecutions = data\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_nomad_executions\" or r[\"_measurement\"] == \"poseidon_aws_executions\")\n |> filter(fn: (r) => not bool(v: r[\"isDeletion\"]))\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> keep(columns: [\"_value\", \"environment_id\", \"runner_id\"])\n |> count()\n\njoin(tables: {key1: executions, key2: runner_deletions}, on: [\"runner_id\"], method: \"inner\")\n |> keep(columns: [\"_value\", \"environment_id\"])\n |> mean()\n |> rename(columns: {_value: \"env\"})\n",
"refId": "A"
}
],
"title": "Executions per runner",
"type": "bargauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-GrYlRd"
},
"decimals": 2,
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "super-light-green",
"value": null
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 11,
"w": 8,
"x": 16,
"y": 16
},
"id": 26,
"options": {
"displayMode": "gradient",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"showUnfilled": true
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "import \"date\"\n\nfrom(bucket: \"poseidon/autogen\")\n |> range(start: date.truncate(t: v.timeRangeStart, unit: 1m), stop: date.truncate(t: v.timeRangeStop, unit: 1m))\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_aws_executions\" or r[\"_measurement\"] == \"poseidon_nomad_executions\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> filter(fn: (r) => not bool(v: r[\"isDeletion\"]))\n |> group(columns: [\"environment_id\", \"stage\"], mode:\"by\")\n |> aggregateWindow(every: 1m, fn: count, createEmpty: true)\n |> keep(columns: [\"_value\", \"environment_id\"])\n |> mean()\n |> rename(columns: {_value: \"env\"})\n",
"refId": "A"
}
],
"title": "Executions per minute",
"type": "bargauge"
},
{
"collapsed": false,
"datasource": {
"type": "influxdb",
"uid": "w2iPT7fGz"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 27
},
"id": 23,
"panels": [],
"title": "Runner Insights",
"type": "row"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"fillOpacity": 48,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineWidth": 1
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "ns"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "32"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "red",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "10"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "green",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "14"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "yellow",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "29"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "orange",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "28"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "blue",
"mode": "fixed"
}
}
]
},
{
"__systemRef": "hideSeriesFrom",
"matcher": {
"id": "byNames",
"options": {
"mode": "exclude",
"names": [
"10"
],
"prefix": "All except:",
"readOnly": true
}
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": false,
"tooltip": false,
"viz": true
}
}
]
}
]
},
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 28
},
"id": 29,
"options": {
"bucketOffset": 0,
"bucketSize": 100000000,
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_/execute\" or r[\"_measurement\"] == \"poseidon_/files\" or r[\"_measurement\"] == \"poseidon_/websocket\")\n |> filter(fn: (r) => exists r.environment_id)\n |> keep(columns: [\"_time\", \"_value\", \"environment_id\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean)\n |> map(fn: (r) => ({r with _value: r._value * 3.0})) // Each execution has three requests\n",
"refId": "A"
}
],
"title": "Execution duration",
"type": "histogram"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"fillOpacity": 80,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineWidth": 1
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "32"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "red",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "10"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "green",
"mode": "fixed"
}
}
]
},
{
"__systemRef": "hideSeriesFrom",
"matcher": {
"id": "byNames",
"options": {
"mode": "exclude",
"names": [
"14"
],
"prefix": "All except:",
"readOnly": true
}
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": false,
"tooltip": false,
"viz": true
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "14"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "yellow",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "29"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "orange",
"mode": "fixed"
}
}
]
}
]
},
"gridPos": {
"h": 10,
"w": 11,
"x": 0,
"y": 36
},
"id": 33,
"options": {
"bucketOffset": 0,
"bucketSize": 1,
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "data = from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n\nrunner_deletions = data\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_used_runners\")\n |> filter(fn: (r) => bool(v: r[\"isDeletion\"]))\n |> keep(columns: [\"_time\", \"id\"])\n |> rename(columns: {id: \"runner_id\"})\n\nexecutions = data\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_nomad_executions\" or r[\"_measurement\"] == \"poseidon_aws_executions\")\n |> filter(fn: (r) => not bool(v: r[\"isDeletion\"]))\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> keep(columns: [\"_value\", \"environment_id\", \"runner_id\"])\n |> count()\n\njoin(tables: {key1: executions, key2: runner_deletions}, on: [\"runner_id\"], method: \"inner\")\n |> keep(columns: [\"_value\", \"_time\", \"environment_id\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n",
"refId": "A"
}
],
"title": "Executions per runner",
"type": "histogram"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "smooth",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 13,
"x": 11,
"y": 36
},
"id": 21,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "import \"date\"\n\nfrom(bucket: \"poseidon/autogen\")\n |> range(start: date.truncate(t: v.timeRangeStart, unit: 1m), stop: date.truncate(t: v.timeRangeStop, unit: 1m))\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_/websocket\")\n |> keep(columns: [\"_time\", \"_value\", \"environment_id\"])\n |> aggregateWindow(every: 1m, fn: count, createEmpty: true)\n |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 10), fn: mean, createEmpty: true)\n",
"refId": "A"
}
],
"title": "Executions per minute",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"log": 2,
"type": "log"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "bytes"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 11,
"x": 0,
"y": 46
},
"id": 38,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "result = from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"request_size\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => contains(value: r[\"status\"], set: ${status_codes:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> keep(columns: [\"_time\", \"_value\", \"environment_id\"])\n\nif int(v: v.windowPeriod) > int(v: 1m) \n then result |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 10), fn: mean, createEmpty: true)\n else result |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 5), fn: mean, createEmpty: false)\n",
"refId": "A"
}
],
"title": "Request Body Size",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 13,
"x": 11,
"y": 46
},
"id": 30,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "import \"date\"\n\nresult = from(bucket: \"poseidon/autogen\")\n |> range(start: date.truncate(t: v.timeRangeStart, unit: 1m), stop: date.truncate(t: v.timeRangeStop, unit: 1m))\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_used_runners\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> filter(fn: (r) => not bool(v: r[\"isDeletion\"]))\n |> group(columns: [\"environment_id\", \"stage\"], mode:\"by\")\n |> aggregateWindow(every: 1m, fn: count, createEmpty: true)\n |> keep(columns: [\"_value\", \"_time\", \"environment_id\"])\n\nif int(v: v.windowPeriod) > int(v: 2m) \n then result |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 30), fn: mean, createEmpty: true)\n else result |> aggregateWindow(every: duration(v: int(v: v.windowPeriod) * 15), fn: mean, createEmpty: true)\n",
"refId": "A"
}
],
"title": "Runner per minute",
"type": "timeseries"
},
{
"collapsed": false,
"datasource": {
"type": "influxdb",
"uid": "w2iPT7fGz"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 56
},
"id": 36,
"panels": [],
"title": "Availability",
"type": "row"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-GrYlRd"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 9,
"x": 0,
"y": 57
},
"id": 34,
"options": {
"displayMode": "basic",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "vertical",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"showUnfilled": true
},
"pluginVersion": "8.5.5",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: -1y)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_poolsize\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> group(columns: [\"environment_id\", \"stage\"], mode:\"by\")\n |> last()\n |> keep(columns: [\"_value\", \"environment_id\"])\n |> rename(columns: {_value: \"env\"})\n",
"refId": "A"
}
],
"title": "Prewarming Pool Size",
"type": "bargauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 15,
"x": 9,
"y": 57
},
"id": 39,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_nomad_idle_runners\" and r[\"_field\"] == \"count\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> keep(columns: [\"_value\", \"_time\", \"environment_id\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n",
"refId": "A"
}
],
"title": "Idle Runner",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "ns"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 12,
"x": 0,
"y": 67
},
"id": 44,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_nomad_idle_runners\")\n |> filter(fn: (r) => r[\"_field\"] == \"startup_duration\")\n |> filter(fn: (r) => contains(value: r[\"environment_id\"], set: ${environment_ids:json}))\n |> filter(fn: (r) => (not exists r.stage) or contains(value: r[\"stage\"], set: ${stages:json}))\n |> keep(columns: [\"_value\", \"_time\", \"environment_id\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)",
"refId": "A"
}
],
"title": "Runner startup duration",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 12,
"x": 12,
"y": 67
},
"id": 43,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "8.4.6",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"poseidon_used_runners\")\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\n |> group(columns: [\"stage\"], mode:\"by\")\n |> keep(columns: [\"_value\", \"_time\", \"stage\"])\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)",
"refId": "A"
}
],
"title": "Used Runner",
"type": "timeseries"
}
],
"refresh": "10s",
"schemaVersion": 36,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"current": {
"selected": true,
"text": [
"production"
],
"value": [
"production"
]
},
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"definition": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> keep(columns: [\"stage\"])\n |> distinct(column: \"stage\")\n |> keep(columns: [\"_value\"])\n",
"description": "The stage of the Poseidon instance.",
"hide": 0,
"includeAll": true,
"label": "Stage",
"multi": true,
"name": "stages",
"options": [],
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> keep(columns: [\"stage\"])\n |> distinct(column: \"stage\")\n |> keep(columns: [\"_value\"])\n",
"refresh": 2,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"type": "query"
},
{
"current": {
"selected": true,
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"definition": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> keep(columns: [\"environment_id\"])\n |> distinct(column: \"environment_id\")\n |> keep(columns: [\"_value\"])\n",
"description": "All environments currently tracked by Poseidon",
"hide": 0,
"includeAll": true,
"label": "Environment IDs",
"multi": true,
"name": "environment_ids",
"options": [],
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> keep(columns: [\"environment_id\"])\n |> distinct(column: \"environment_id\")\n |> keep(columns: [\"_value\"])\n",
"refresh": 2,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"type": "query"
},
{
"current": {
"selected": true,
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": {
"type": "influxdb",
"uid": "cMBTRmQnz"
},
"definition": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> keep(columns: [\"status\"])\n |> distinct(column: \"status\")\n |> keep(columns: [\"_value\"])\n",
"description": "The http status code of the Poseidon response.",
"hide": 0,
"includeAll": true,
"label": "Status Code",
"multi": true,
"name": "status_codes",
"options": [],
"query": "from(bucket: \"poseidon/autogen\")\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_field\"] == \"duration\")\n |> keep(columns: [\"status\"])\n |> distinct(column: \"status\")\n |> keep(columns: [\"_value\"])\n",
"refresh": 2,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"type": "query"
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Poseidon",
"uid": "hQRzR1Qnz",
"version": 46,
"weekStart": ""
}