diff --git a/.run/NussknackerApp-postgres.run.xml b/.run/NussknackerApp-postgres.run.xml
index cffec0c3546..e32b1c3aba8 100644
--- a/.run/NussknackerApp-postgres.run.xml
+++ b/.run/NussknackerApp-postgres.run.xml
@@ -17,10 +17,10 @@
-
+
-
-
+
+
diff --git a/.run/RunEnvForLocalDesigner.run.xml b/.run/RunEnvForLocalDesigner.run.xml
new file mode 100644
index 00000000000..8cb48532e92
--- /dev/null
+++ b/.run/RunEnvForLocalDesigner.run.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a9295a460b6..9a470c38599 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -130,8 +130,18 @@ Changing the version of the Scala is done by setting `NUSSKNACKER_SCALA_VERSION`
#### Running using integration environment
-- Clone [nussknacker-quickstart](https://github.com/TouK/nussknacker-quickstart/tree/old-quickstart)
-- Run `docker-compose -f docker-compose-env.yml -f docker-compose-custom.yml up -d` inside it
+Use one of the following method:
+1. run using SBT: `sbt designer/test:"runMain pl.touk.nussknacker.dev.RunEnvForLocalDesigner"`
+2. run using Intellij configuration: `RunEnvForLocalDesigner`
+3. run Docker Compose: `docker compose -f examples/dev/local-testing.docker-compose.yml -f examples/dev/nu-scala213.override.yml up -d`
+
+You can also customize the setup by adding your changes in separate yaml file:
+* like this: `sbt designer/test:"runMain pl.touk.nussknacker.dev.RunEnvForLocalDesigner --customizeYaml=/tmp/my.override.yml"`
+* or this: `docker compose -f examples/dev/local-testing.docker-compose.yml -f examples/dev/nu-scala213.override.yml -f /tmp/my.override.yml up -d`
+
+By default, an environment for Scala 2.13 is prepared. To run one for Scala 2.12:
+* run: `sbt designer/test:"runMain pl.touk.nussknacker.dev.RunEnvForLocalDesigner --scalaV scala212"`
+* or run: `docker compose -f examples/dev/local-testing.docker-compose.yml up -d`
#### Running Designer with model classes on the same classes as designer
diff --git a/build.sbt b/build.sbt
index b5a89adfb63..be3a5da5788 100644
--- a/build.sbt
+++ b/build.sbt
@@ -2006,6 +2006,7 @@ lazy val designer = (project in file("designer/server"))
"org.apache.flink" % "flink-metrics-dropwizard" % flinkV % Test,
"com.github.tomakehurst" % "wiremock-jre8" % wireMockV % Test,
"io.circe" %% "circe-yaml" % circeYamlV % Test,
+ "com.github.scopt" %% "scopt" % "4.1.0" % Test,
"org.questdb" % "questdb" % "7.4.2",
) ++ forScalaVersion(scalaVersion.value) {
case (2, 13) =>
diff --git a/designer/server/src/test/scala/pl/touk/nussknacker/dev/RunEnvForLocalDesigner.scala b/designer/server/src/test/scala/pl/touk/nussknacker/dev/RunEnvForLocalDesigner.scala
new file mode 100644
index 00000000000..0c4ba252489
--- /dev/null
+++ b/designer/server/src/test/scala/pl/touk/nussknacker/dev/RunEnvForLocalDesigner.scala
@@ -0,0 +1,99 @@
+package pl.touk.nussknacker.dev
+
+import cats.effect.{ExitCode, IO, IOApp}
+import com.dimafeng.testcontainers.{DockerComposeContainer, WaitingForService}
+import com.typesafe.scalalogging.LazyLogging
+import org.testcontainers.containers.wait.strategy.ShellStrategy
+import pl.touk.nussknacker.dev.RunEnvForLocalDesigner.Config.ScalaV
+import scopt.{OParser, Read}
+
+import java.io.{File => JFile}
+
+// You can use it for a development purposes. It runs docker compose defined in `examples/dev` folder.
+// After running this class you can run Nu Designer locally that can connect to the exposed services.
+object RunEnvForLocalDesigner extends IOApp with LazyLogging {
+
+ override def run(args: List[String]): IO[ExitCode] = for {
+ config <- readConfig(args)
+ _ <- log(s"Starting docker compose-based stack (for ${config.scalaV}) to be used with locally run Nu Designer...")
+ _ <- createDockerEnv(config)
+ _ <- log("You can run designer now...")
+ _ <- IO.never[Unit]
+ } yield ExitCode.Success
+
+ private def readConfig(args: List[String]) = IO.delay {
+ OParser
+ .parse(Config.parser, args, Config())
+ .getOrElse(throw new Exception("Invalid arguments"))
+ }
+
+ private def createDockerEnv(config: Config) = IO.delay {
+ val scalaVOverrideYmlFile = config.scalaV match {
+ case ScalaV.Scala212 => None
+ case ScalaV.Scala213 => Some(new JFile("examples/dev/nu-scala213.override.yml"))
+ }
+ val env = new LocalTestingEnvDockerCompose(
+ dockerComposeTweakFiles = scalaVOverrideYmlFile.toList ::: config.customizeYaml.toList
+ )
+ env.start()
+ env
+ }
+
+ private def log(message: => String) = IO.delay(logger.info(message))
+
+ final case class Config(scalaV: ScalaV = ScalaV.Scala213, customizeYaml: Option[JFile] = None)
+
+ object Config {
+
+ sealed trait ScalaV
+
+ object ScalaV {
+ case object Scala212 extends ScalaV
+ case object Scala213 extends ScalaV
+
+ implicit val scalaVRead: Read[ScalaV] =
+ scopt.Read.reads(_.toLowerCase).map {
+ case "scala212" => ScalaV.Scala212
+ case "scala213" => ScalaV.Scala213
+ }
+
+ }
+
+ private val builder = OParser.builder[Config]
+
+ import builder._
+
+ lazy val parser: OParser[Unit, Config] = OParser.sequence(
+ head("Env for local development of Nu Designer"),
+ programName("sbt designer/test:runMain pl.touk.nussknacker.dev.RunEnvForLocalDesigner"),
+ opt[ScalaV]('s', "scalaV")
+ .optional()
+ .action((scalaV, c) => c.copy(scalaV = scalaV))
+ .text("Scala version. Available options: scala212, scala213"),
+ opt[JFile]('c', "customizeYaml")
+ .optional()
+ .valueName("")
+ .validate { file =>
+ if (!file.exists()) Left(s"'$file' does NOT exist")
+ else if (!file.isFile) Left(s"'$file' is NOT a file")
+ else if (!file.canRead) Left(s"CANNOT read the file '$file'")
+ else Right(())
+ }
+ .action((customizeYaml, c) => c.copy(customizeYaml = Some(customizeYaml)))
+ .text("Yaml file for docker compose override"),
+ )
+
+ }
+
+ class LocalTestingEnvDockerCompose(dockerComposeTweakFiles: Iterable[JFile])
+ extends DockerComposeContainer(
+ composeFiles = new JFile("examples/dev/local-testing.docker-compose.yml") ::
+ dockerComposeTweakFiles.toList,
+ waitingFor = Some(
+ WaitingForService("wait-for-all", new ShellStrategy().withCommand("pwd")),
+ ),
+ // Change to 'true' to enable logging
+ tailChildContainers = false
+ )
+
+}
diff --git a/e2e-tests/src/test/scala/pl/touk/nussknacker/BaseE2eSpec.scala b/e2e-tests/src/test/scala/pl/touk/nussknacker/BaseE2ESpec.scala
similarity index 88%
rename from e2e-tests/src/test/scala/pl/touk/nussknacker/BaseE2eSpec.scala
rename to e2e-tests/src/test/scala/pl/touk/nussknacker/BaseE2ESpec.scala
index d4e1490639c..414e00e520a 100644
--- a/e2e-tests/src/test/scala/pl/touk/nussknacker/BaseE2eSpec.scala
+++ b/e2e-tests/src/test/scala/pl/touk/nussknacker/BaseE2ESpec.scala
@@ -14,14 +14,14 @@ import java.io.{File => JFile}
// Before running tests in this module, a fresh docker image should be built from sources and placed in the local
// registry. If you run tests based on this trait in Intellij Idea and the images is not built, you can do it manually:
// `bash -c "export NUSSKNACKER_SCALA_VERSION=2.12 && sbt dist/Docker/publishLocal"`
-trait BaseE2eSpec extends BeforeAndAfterAll with BeforeAndAfterEach with LazyLogging {
+trait BaseE2ESpec extends BeforeAndAfterAll with BeforeAndAfterEach with LazyLogging {
this: Suite =>
val client: DockerBasedInstallationExampleClient =
- BaseE2eSpec.dockerBasedInstallationExampleNuEnvironmentSingleton.client
+ BaseE2ESpec.dockerBasedInstallationExampleNuEnvironmentSingleton.client
}
-object BaseE2eSpec extends LazyLogging {
+object BaseE2ESpec extends LazyLogging {
val dockerBasedInstallationExampleNuEnvironmentSingleton =
new DockerBasedInstallationExampleNuEnvironment(
diff --git a/e2e-tests/src/test/scala/pl/touk/nussknacker/BatchDataGenerationSpec.scala b/e2e-tests/src/test/scala/pl/touk/nussknacker/BatchDataGenerationSpec.scala
index 4a04ecc3dc9..c074924bd48 100644
--- a/e2e-tests/src/test/scala/pl/touk/nussknacker/BatchDataGenerationSpec.scala
+++ b/e2e-tests/src/test/scala/pl/touk/nussknacker/BatchDataGenerationSpec.scala
@@ -13,7 +13,7 @@ import pl.touk.nussknacker.ui.process.marshall.CanonicalProcessConverter.toScena
class BatchDataGenerationSpec
extends AnyFreeSpecLike
- with BaseE2eSpec
+ with BaseE2ESpec
with Matchers
with VeryPatientScalaFutures
with NuRestAssureExtensions
diff --git a/e2e-tests/src/test/scala/pl/touk/nussknacker/DetectLargeTransactionSpec.scala b/e2e-tests/src/test/scala/pl/touk/nussknacker/DetectLargeTransactionSpec.scala
index e0758e4ddcc..bb0f99de4eb 100644
--- a/e2e-tests/src/test/scala/pl/touk/nussknacker/DetectLargeTransactionSpec.scala
+++ b/e2e-tests/src/test/scala/pl/touk/nussknacker/DetectLargeTransactionSpec.scala
@@ -4,7 +4,7 @@ import org.scalatest.freespec.AnyFreeSpecLike
import org.scalatest.matchers.should.Matchers
import pl.touk.nussknacker.test.VeryPatientScalaFutures
-class DetectLargeTransactionSpec extends AnyFreeSpecLike with BaseE2eSpec with Matchers with VeryPatientScalaFutures {
+class DetectLargeTransactionSpec extends AnyFreeSpecLike with BaseE2ESpec with Matchers with VeryPatientScalaFutures {
"Large transactions should be properly detected" in {
val smallAmountTransactions = List(
diff --git a/e2e-tests/src/test/scala/pl/touk/nussknacker/DetermineOfferedPlanSpec.scala b/e2e-tests/src/test/scala/pl/touk/nussknacker/DetermineOfferedPlanSpec.scala
index 2d5f0ce92ab..4b7a4f16fea 100644
--- a/e2e-tests/src/test/scala/pl/touk/nussknacker/DetermineOfferedPlanSpec.scala
+++ b/e2e-tests/src/test/scala/pl/touk/nussknacker/DetermineOfferedPlanSpec.scala
@@ -4,7 +4,7 @@ import org.scalatest.freespec.AnyFreeSpecLike
import org.scalatest.matchers.should.Matchers
import pl.touk.nussknacker.test.VeryPatientScalaFutures
-class DetermineOfferedPlanSpec extends AnyFreeSpecLike with BaseE2eSpec with Matchers with VeryPatientScalaFutures {
+class DetermineOfferedPlanSpec extends AnyFreeSpecLike with BaseE2ESpec with Matchers with VeryPatientScalaFutures {
"Properly determine offers for customers" in {
val customers = List(
diff --git a/engine/common/components/src/main/scala/pl/touk/nussknacker/engine/common/components/DecisionTable.scala b/engine/common/components/src/main/scala/pl/touk/nussknacker/engine/common/components/DecisionTable.scala
index 4cc5ac3f79b..d407eae53eb 100644
--- a/engine/common/components/src/main/scala/pl/touk/nussknacker/engine/common/components/DecisionTable.scala
+++ b/engine/common/components/src/main/scala/pl/touk/nussknacker/engine/common/components/DecisionTable.scala
@@ -9,7 +9,7 @@ import pl.touk.nussknacker.engine.api.generics.ExpressionParseError.TabularDataD
import pl.touk.nussknacker.engine.api.parameter.ParameterName
import pl.touk.nussknacker.engine.api.process.ComponentUseCase
import pl.touk.nussknacker.engine.api.test.InvocationCollectors
-import pl.touk.nussknacker.engine.api.typed.typing.{Typed, TypedObjectTypingResult, TypingResult, Unknown}
+import pl.touk.nussknacker.engine.api.typed.typing.{Typed, TypingResult, Unknown}
import pl.touk.nussknacker.engine.graph.expression.TabularTypedData
import pl.touk.nussknacker.engine.graph.expression.TabularTypedData.Column
diff --git a/examples/dev/flink/Dockerfile b/examples/dev/flink/Dockerfile
new file mode 100644
index 00000000000..e6d7cda9d72
--- /dev/null
+++ b/examples/dev/flink/Dockerfile
@@ -0,0 +1,17 @@
+ARG FLINK_VERSION
+
+FROM flink:${FLINK_VERSION}
+
+USER root
+RUN echo '#!/bin/sh' > /ex-docker-entrypoint.sh && \
+ echo 'export FLINK_PROPERTIES=$(cat /opt/flink/conf/flink-properties.yml) && /docker-entrypoint.sh "$@"' >> /ex-docker-entrypoint.sh && \
+ chmod +x /ex-docker-entrypoint.sh
+
+USER flink
+COPY flink-properties.yml /opt/flink/conf/
+RUN mkdir -p /opt/flink/data && \
+ chmod -R 777 /opt/flink/data
+
+VOLUME /opt/flink/data
+
+ENTRYPOINT [ "/ex-docker-entrypoint.sh" ]
diff --git a/examples/dev/flink/flink-properties.yml b/examples/dev/flink/flink-properties.yml
new file mode 100644
index 00000000000..12f45da9518
--- /dev/null
+++ b/examples/dev/flink/flink-properties.yml
@@ -0,0 +1,28 @@
+taskmanager.numberOfTaskSlots: 8
+
+state.backend: filesystem
+state.checkpoints.dir: file:///opt/flink/data/checkpoints
+state.savepoints.dir: file:///opt/flink/data/savepoints
+
+#Below are base settings for rocksdb metrics, that can be used for grafana dashboards
+state.backend.rocksdb.metrics.estimate-num-keys: true
+state.backend.rocksdb.metrics.estimate-live-data-size: true
+state.backend.rocksdb.metrics.cur-size-all-mem-tables: true
+state.backend.rocksdb.metrics.size-all-mem-tables: true
+# We can have many jobs per cluster, in such setting managed memory is not easy to tune
+state.backend.rocksdb.memory.managed: false
+# For frequent writes increase the value as needed. Currently RocksDB settings can only be changed per Flink cluster
+state.backend.rocksdb.writebuffer.size: 256m
+
+metrics.reporters: influxdb_reporter
+metrics.reporter.influxdb_reporter.factory.class: org.apache.flink.metrics.influxdb.InfluxdbReporterFactory
+metrics.reporter.influxdb_reporter.host: telegraf
+metrics.reporter.influxdb_reporter.port: 8087
+metrics.reporter.influxdb_reporter.db: nussknacker_metrics
+metrics.reporter.influxdb_reporter.scope.variables.excludes: tm_id;job_id;task_id;task_attempt_id;operator_id;task_attempt_num;task_name
+metrics.scope.jm: local..jobmanagerGlobal
+metrics.scope.jm.job: local..jobmanagerJob.
+metrics.scope.tm: local..taskmanagerGlobal.
+metrics.scope.tm.job: local..taskmanagerJob..
+metrics.scope.task: local..taskmanagerTask....
+metrics.scope.operator: local..taskmanagerTask....
diff --git a/examples/dev/grafana/dashboards/dashboards.yml b/examples/dev/grafana/dashboards/dashboards.yml
new file mode 100644
index 00000000000..58732b943fa
--- /dev/null
+++ b/examples/dev/grafana/dashboards/dashboards.yml
@@ -0,0 +1,13 @@
+apiVersion: 1
+providers:
+- name: default
+ orgId: 1
+ folder: ''
+ folderUid: ''
+ type: file
+ disableDeletion: true
+ editable: true
+ updateIntervalSeconds: 10
+ allowUiUpdates: true
+ options:
+ path: /var/lib/grafana/dashboards
diff --git a/examples/dev/grafana/dashboards/nussknacker-lite-scenario.json b/examples/dev/grafana/dashboards/nussknacker-lite-scenario.json
new file mode 100644
index 00000000000..af0deb70893
--- /dev/null
+++ b/examples/dev/grafana/dashboards/nussknacker-lite-scenario.json
@@ -0,0 +1,2320 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 1,
+ "id": 1,
+ "iteration": 1638475135627,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "datasource": null,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 26,
+ "panels": [],
+ "title": "Basics",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 1
+ },
+ "hiddenSeries": false,
+ "id": 2,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"source.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Source throughput",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 3,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "hide": false,
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"end.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Events that passed whole scenario /s",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 5,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "hide": false,
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"dead_end.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Rejected events /s",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 4,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"error.instantRateByNode.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Errors",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "description": "IMPORTANT. \nThis metric does NOT show the overall lag on Kafka source; a largest lag among all the source partitions is shown.",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 9,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_taskId]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "taskId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ }
+ ],
+ "measurement": "records-lag-max",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Max lag among Kafka source partitions (events)",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 0,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 8,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "min"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "min"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Delay since event occurrence - minimum",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 6,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 6,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Delay since event occurrence - median",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 12,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 7,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "max"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Delay since event occurrence - maximum",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 18,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 13,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay.minimalDelay",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "min"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time from latest event",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "collapsed": true,
+ "datasource": null,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 29
+ },
+ "id": 24,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 10,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - median OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 11,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - 99th percentile OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 12,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]]",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(mean)\nFROM (\n SELECT mean(value)\n FROM \"service.OK.instantRate\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, serviceName, instanceId\n)\nGROUP BY time($__interval), scenario, serviceName",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - throughput OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 15,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - median FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 16,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - 99th percentile FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 17,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "$tag_scenario - $tag_serviceName",
+ "dsType": "influxdb",
+ "hide": false,
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(mean)\nFROM (\n SELECT mean(value)\n FROM \"service.FAIL.instantRate\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, serviceName, instanceId\n)\nGROUP BY time($__interval), scenario, serviceName",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - throughput FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "External services",
+ "type": "row"
+ }
+ ],
+ "refresh": "30s",
+ "schemaVersion": 30,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allFormat": "regex wildcard",
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "influx",
+ "definition": "",
+ "description": null,
+ "error": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "multiFormat": "pipe",
+ "name": "scenarioName",
+ "options": [],
+ "query": "SHOW TAG VALUES FROM \"source.instantRate\" WITH KEY = \"scenario\"",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": false,
+ "text": "local",
+ "value": "local"
+ },
+ "datasource": "influx",
+ "definition": "",
+ "description": null,
+ "error": null,
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "env",
+ "options": [],
+ "query": "SHOW TAG VALUES FROM \"source.instantRate\" WITH KEY = \"env\"",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "auto": false,
+ "auto_count": 30,
+ "auto_min": "10s",
+ "current": {
+ "selected": false,
+ "text": "30s",
+ "value": "30s"
+ },
+ "description": null,
+ "error": null,
+ "hide": 0,
+ "label": null,
+ "name": "interval",
+ "options": [
+ {
+ "selected": false,
+ "text": "10s",
+ "value": "10s"
+ },
+ {
+ "selected": true,
+ "text": "30s",
+ "value": "30s"
+ },
+ {
+ "selected": false,
+ "text": "1m",
+ "value": "1m"
+ },
+ {
+ "selected": false,
+ "text": "3m",
+ "value": "3m"
+ },
+ {
+ "selected": false,
+ "text": "10m",
+ "value": "10m"
+ },
+ {
+ "selected": false,
+ "text": "30m",
+ "value": "30m"
+ },
+ {
+ "selected": false,
+ "text": "1h",
+ "value": "1h"
+ },
+ {
+ "selected": false,
+ "text": "6h",
+ "value": "6h"
+ },
+ {
+ "selected": false,
+ "text": "12h",
+ "value": "12h"
+ },
+ {
+ "selected": false,
+ "text": "1d",
+ "value": "1d"
+ },
+ {
+ "selected": false,
+ "text": "7d",
+ "value": "7d"
+ },
+ {
+ "selected": false,
+ "text": "14d",
+ "value": "14d"
+ },
+ {
+ "selected": false,
+ "text": "30d",
+ "value": "30d"
+ }
+ ],
+ "query": "10s,30s,1m,3m, 10m,30m,1h,6h,12h,1d,7d,14d,30d",
+ "refresh": 2,
+ "skipUrlSync": false,
+ "type": "interval"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-30m",
+ "to": "now"
+ },
+ "timepicker": {
+ "now": true,
+ "refresh_intervals": [
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Lite scenario",
+ "uid": "nussknacker-lite-scenario",
+ "version": 101
+}
diff --git a/examples/dev/grafana/dashboards/nussknacker-request-response-scenario.json b/examples/dev/grafana/dashboards/nussknacker-request-response-scenario.json
new file mode 100644
index 00000000000..0755bc06301
--- /dev/null
+++ b/examples/dev/grafana/dashboards/nussknacker-request-response-scenario.json
@@ -0,0 +1,2346 @@
+{
+ "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": 1,
+ "links": [],
+ "liveNow": false,
+ "panels": [
+ {
+ "collapsed": false,
+ "datasource": "influx",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 26,
+ "panels": [],
+ "targets": [
+ {
+ "datasource": "influx",
+ "refId": "A"
+ }
+ ],
+ "title": "Basics",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 1
+ },
+ "hiddenSeries": false,
+ "id": 2,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"invocation.success.histogram\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 2xx - throughput",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 3,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "hide": false,
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"end.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"dead_end.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Outputs/s",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 4,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"error.instantRateByNode.count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, instanceId\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Errors",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 27,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - (all)",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT max(\"p50\") FROM \"invocation.success.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\" fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT max(\"p50\") FROM \"invocation.success.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\", \"instanceId\" fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 2xx - median",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 28,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - (all)",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT max(\"p99\") FROM \"invocation.success.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\" fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT max(\"p99\") FROM \"invocation.success.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\", \"instanceId\" fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 2xx - median - 99th percentile",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 31,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - (all)",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT max(\"max\") FROM \"invocation.success.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\" fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT max(\"max\") FROM \"invocation.success.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\", \"instanceId\" fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 2xx - max",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 29,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - (all)",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT max(\"p50\") FROM \"invocation.failure.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\" fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT max(\"p50\") FROM \"invocation.failure.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\", \"instanceId\" fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 4/5xx - median",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 30,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - (all)",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT max(\"p99\") FROM \"invocation.failure.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\" fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT max(\"p99\") FROM \"invocation.failure.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\", \"instanceId\" fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 4/5xx - 99th percentile",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 32,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - (all)",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT max(\"max\") FROM \"invocation.failure.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\" fill(null)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ },
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "hide": false,
+ "query": "SELECT max(\"max\") FROM \"invocation.failure.histogram\" WHERE (\"env\" =~ /^$env$/ AND \"scenario\" =~ /^$scenarioName$/) AND $timeFilter GROUP BY time($interval), \"scenario\", \"serviceName\", \"instanceId\" fill(null)",
+ "rawQuery": true,
+ "refId": "B",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Response 4/5xx - max",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "collapsed": false,
+ "datasource": "influx",
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 29
+ },
+ "id": 24,
+ "panels": [],
+ "targets": [
+ {
+ "datasource": "influx",
+ "refId": "A"
+ }
+ ],
+ "title": "External services",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 10,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Services - median OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 11,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.OK.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Services - 99th percentile OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 12,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]]",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(mean)\nFROM (\n SELECT mean(value)\n FROM \"service.OK.instantRate\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, serviceName, instanceId\n)\nGROUP BY time($__interval), scenario, serviceName",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Services - throughput OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 15,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Services - median FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 16,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (instanceId [[tag_instanceId]])",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "instanceId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service.FAIL.histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Services - 99th percentile FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 17,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.0.5",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "$tag_scenario - $tag_serviceName",
+ "datasource": "influx",
+ "dsType": "influxdb",
+ "hide": false,
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(mean)\nFROM (\n SELECT mean(value)\n FROM \"service.FAIL.instantRate\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, serviceName, instanceId\n)\nGROUP BY time($__interval), scenario, serviceName",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Services - throughput FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ }
+ ],
+ "refresh": "30s",
+ "schemaVersion": 36,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allFormat": "regex wildcard",
+ "current": {
+ "selected": true,
+ "text": [
+ "test proxy process for rr"
+ ],
+ "value": [
+ "test proxy process for rr"
+ ]
+ },
+ "datasource": "influx",
+ "definition": "SHOW TAG VALUES FROM \"invocation.success.histogram\" WITH KEY = \"scenario\"",
+ "hide": 0,
+ "includeAll": true,
+ "multi": true,
+ "multiFormat": "pipe",
+ "name": "scenarioName",
+ "options": [],
+ "query": "SHOW TAG VALUES FROM \"invocation.success.histogram\" WITH KEY = \"scenario\"",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "current": {
+ "selected": false,
+ "text": "default",
+ "value": "default"
+ },
+ "datasource": "influx",
+ "definition": "SHOW TAG VALUES FROM \"invocation.success.histogram\" WITH KEY = \"env\"",
+ "hide": 0,
+ "includeAll": false,
+ "multi": false,
+ "name": "env",
+ "options": [],
+ "query": "SHOW TAG VALUES FROM \"invocation.success.histogram\" WITH KEY = \"env\"",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "auto": false,
+ "auto_count": 30,
+ "auto_min": "10s",
+ "current": {
+ "selected": false,
+ "text": "30s",
+ "value": "30s"
+ },
+ "hide": 0,
+ "name": "interval",
+ "options": [
+ {
+ "selected": false,
+ "text": "10s",
+ "value": "10s"
+ },
+ {
+ "selected": true,
+ "text": "30s",
+ "value": "30s"
+ },
+ {
+ "selected": false,
+ "text": "1m",
+ "value": "1m"
+ },
+ {
+ "selected": false,
+ "text": "3m",
+ "value": "3m"
+ },
+ {
+ "selected": false,
+ "text": "10m",
+ "value": "10m"
+ },
+ {
+ "selected": false,
+ "text": "30m",
+ "value": "30m"
+ },
+ {
+ "selected": false,
+ "text": "1h",
+ "value": "1h"
+ },
+ {
+ "selected": false,
+ "text": "6h",
+ "value": "6h"
+ },
+ {
+ "selected": false,
+ "text": "12h",
+ "value": "12h"
+ },
+ {
+ "selected": false,
+ "text": "1d",
+ "value": "1d"
+ },
+ {
+ "selected": false,
+ "text": "7d",
+ "value": "7d"
+ },
+ {
+ "selected": false,
+ "text": "14d",
+ "value": "14d"
+ },
+ {
+ "selected": false,
+ "text": "30d",
+ "value": "30d"
+ }
+ ],
+ "query": "10s,30s,1m,3m, 10m,30m,1h,6h,12h,1d,7d,14d,30d",
+ "refresh": 2,
+ "skipUrlSync": false,
+ "type": "interval"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-30m",
+ "to": "now"
+ },
+ "timepicker": {
+ "now": true,
+ "refresh_intervals": [
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "RequestResponse scenario",
+ "uid": "nussknacker-request-response-scenario",
+ "version": 1,
+ "weekStart": ""
+}
diff --git a/examples/dev/grafana/dashboards/nussknacker-scenario.json b/examples/dev/grafana/dashboards/nussknacker-scenario.json
new file mode 100644
index 00000000000..7dd01964649
--- /dev/null
+++ b/examples/dev/grafana/dashboards/nussknacker-scenario.json
@@ -0,0 +1,3467 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 1,
+ "id": 1,
+ "iteration": 1638475135627,
+ "links": [],
+ "panels": [
+ {
+ "collapsed": false,
+ "datasource": null,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "id": 26,
+ "panels": [],
+ "title": "Basics",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 1
+ },
+ "hiddenSeries": false,
+ "id": 2,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"source_count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, slot\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Source throughput",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 3,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "hide": false,
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"end_count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, slot\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Events that passed whole scenario /s",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 8
+ },
+ "hiddenSeries": false,
+ "id": 5,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "hide": false,
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"dead_end_count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, slot\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Rejected events /s",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 4,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]]",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"count\"), 1s) AS value\n FROM \"error_instantRateByNode_count\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, nodeId, slot\n)\nGROUP BY time($__interval), scenario, nodeId\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Errors",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "description": "IMPORTANT. \nThis metric does NOT show the overall lag on Kafka source; a largest lag among all the source partitions is shown.",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 15
+ },
+ "hiddenSeries": false,
+ "id": 9,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_operator_name]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "operator_name"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ }
+ ],
+ "measurement": "records-lag-max",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Max lag among Kafka source partitions (events)",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 0,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 8,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "min"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "min"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Delay since event occurrence - minimum",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 6,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 6,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Delay since event occurrence - median",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 12,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 7,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "max"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Delay since event occurrence - maximum",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "grid": {},
+ "gridPos": {
+ "h": 7,
+ "w": 6,
+ "x": 18,
+ "y": 22
+ },
+ "hiddenSeries": false,
+ "id": 13,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 2,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_nodeId]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "nodeId"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "eventtimedelay_minimalDelay",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "min"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Time from latest event",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "cumulative"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ms",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "collapsed": true,
+ "datasource": null,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 29
+ },
+ "id": 24,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 10,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service_OK_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - median OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 11,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service_OK_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - 99th percentile OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 30
+ },
+ "hiddenSeries": false,
+ "id": 12,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]]",
+ "dsType": "influxdb",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(mean)\nFROM (\n SELECT mean(value)\n FROM \"service_OK_instantRate\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, serviceName, slot\n)\nGROUP BY time($__interval), scenario, serviceName",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - throughput OK",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 0,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 15,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service_FAIL_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p50"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - median FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 8,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 16,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_serviceName]] (slot [[tag_slot]])",
+ "dsType": "influxdb",
+ "groupBy": [
+ {
+ "params": [
+ "$interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "scenario"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "serviceName"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "service_FAIL_histogram",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "rawQuery": false,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "p99"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "max"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - 99th percentile FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ns",
+ "label": "",
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "influx",
+ "editable": true,
+ "error": false,
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 7,
+ "w": 8,
+ "x": 16,
+ "y": 37
+ },
+ "hiddenSeries": false,
+ "id": 17,
+ "interval": "$interval",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "$tag_scenario - $tag_serviceName",
+ "dsType": "influxdb",
+ "hide": false,
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(mean)\nFROM (\n SELECT mean(value)\n FROM \"service_FAIL_instantRate\"\n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), scenario, serviceName, slot\n)\nGROUP BY time($__interval), scenario, serviceName",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series"
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Services - throughput FAIL",
+ "tooltip": {
+ "msResolution": false,
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "rps",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "External services",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": null,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 30
+ },
+ "id": 22,
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Estimates of RocksDB state size. Aggregates (such as session windows) can have many internal states, which are reported separately. ",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 45
+ },
+ "hiddenSeries": false,
+ "id": 19,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_operator_name]] ($0)",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "operator_name"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "linear"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "/^.*.cur-size-all-mem-tables/",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "\nSELECT sum(\"value\")\nFROM (\n SELECT mean(\"value\") AS \"value\"\n FROM /^.*.cur-size-all-mem-tables/ \n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter \n GROUP BY time($__interval), \"scenario\", \"operator_name\", \"slot\"\n) GROUP BY time($__interval), \"scenario\", \"operator_name\" fill(linear)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "RocksDB cur-size-all-mem-tables",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Estimates of RocksDB state size. Aggregates (such as session windows) can have many internal states, which are reported separately. ",
+ "fieldConfig": {
+ "defaults": {
+ "links": []
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 45
+ },
+ "hiddenSeries": false,
+ "id": 39,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_operator_name]] ($0)",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "operator_name"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "linear"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "/^.*.cur-size-all-mem-tables/",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(\"value\")\nFROM (\n SELECT mean(\"value\") AS \"value\"\n FROM /^.*.estimate-live-data-size/ \n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter\n GROUP BY time($__interval), \"scenario\", \"operator_name\", \"slot\"\n) GROUP BY time($__interval), \"scenario\", \"operator_name\" fill(linear)\n",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "RocksDB estimate-live-data-size",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": null,
+ "description": "Estimates on number of keys in RocksDB state. Aggregates (e.g. session windows) can have many internal states. Please remember that this is only estimate, based on internal RocksDB metrics",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 45
+ },
+ "hiddenSeries": false,
+ "id": 20,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "8.0.6",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "[[tag_scenario]] - [[tag_operator_name]] ($0)",
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "operator_name"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "slot"
+ ],
+ "type": "tag"
+ },
+ {
+ "params": [
+ "linear"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "/^.*.estimate-num-keys/",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT sum(\"value\")\nFROM (\n SELECT mean(\"value\") AS \"value\"\n FROM /^.*.estimate-num-keys/ \n WHERE scenario =~ /^$scenarioName$/ AND env = '$env' AND $timeFilter \n GROUP BY time($__interval), \"scenario\", \"operator_name\", \"slot\"\n) GROUP BY time($__interval), \"scenario\", \"operator_name\" fill(linear)",
+ "rawQuery": true,
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": []
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "RocksDB estimate-num-keys",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "decimals": null,
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ }
+ ],
+ "title": "RocksDB state",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": null,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 31
+ },
+ "id": 28,
+ "panels": [
+ {
+ "datasource": null,
+ "fieldConfig": {
+ "defaults": {
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 12,
+ "x": 0,
+ "y": 32
+ },
+ "id": 30,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "8.0.6",
+ "targets": [
+ {
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "jobmanager_job_uptime",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Uptime",
+ "type": "stat"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": null,
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "#299c46",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 1
+ },
+ {
+ "color": "#d44a3a",
+ "value": 5
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 12,
+ "x": 12,
+ "y": 32
+ },
+ "id": 32,
+ "interval": null,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "sum"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "8.0.6",
+ "targets": [
+ {
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "jobmanager_job_fullRestarts",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "last"
+ },
+ {
+ "params": [],
+ "type": "non_negative_difference"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Number of restarts",
+ "type": "stat"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": null,
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 0,
+ "y": 37
+ },
+ "id": 37,
+ "interval": null,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "8.0.6",
+ "targets": [
+ {
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "linear"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "jobmanager_job_lastCheckpointDuration",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Last checkpoint duration",
+ "type": "stat"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": null,
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "decbytes"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 6,
+ "y": 37
+ },
+ "id": 38,
+ "interval": null,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "8.0.6",
+ "targets": [
+ {
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "linear"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "jobmanager_job_lastCheckpointSize",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "mean"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Last checkpoint size",
+ "type": "stat"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": null,
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "#d44a3a",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 1
+ },
+ {
+ "color": "#299c46",
+ "value": 5
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 12,
+ "y": 37
+ },
+ "id": 35,
+ "interval": null,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "sum"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "8.0.6",
+ "targets": [
+ {
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "jobmanager_job_numberOfCompletedCheckpoints",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "last"
+ },
+ {
+ "params": [],
+ "type": "non_negative_difference"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Completed checkpoints",
+ "type": "stat"
+ },
+ {
+ "cacheTimeout": null,
+ "datasource": null,
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "#299c46",
+ "value": null
+ },
+ {
+ "color": "rgba(237, 129, 40, 0.89)",
+ "value": 1
+ },
+ {
+ "color": "#d44a3a",
+ "value": 5
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 18,
+ "y": 37
+ },
+ "id": 34,
+ "interval": null,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "sum"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "8.0.6",
+ "targets": [
+ {
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "jobmanager_job_numberOfFailedCheckpoints",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "field"
+ },
+ {
+ "params": [],
+ "type": "last"
+ },
+ {
+ "params": [],
+ "type": "non_negative_difference"
+ }
+ ]
+ ],
+ "tags": [
+ {
+ "key": "env",
+ "operator": "=~",
+ "value": "/^$env$/"
+ },
+ {
+ "condition": "AND",
+ "key": "scenario",
+ "operator": "=~",
+ "value": "/^$scenarioName$/"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Failed checkpoints",
+ "type": "stat"
+ }
+ ],
+ "title": "Scenario health",
+ "type": "row"
+ }
+ ],
+ "refresh": "30s",
+ "schemaVersion": 30,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allFormat": "regex wildcard",
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
+ },
+ "datasource": "influx",
+ "definition": "",
+ "description": null,
+ "error": null,
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "multiFormat": "pipe",
+ "name": "scenarioName",
+ "options": [],
+ "query": "SHOW TAG VALUES FROM \"source_instantRate\" WITH KEY = \"scenario\"",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "allValue": null,
+ "current": {
+ "selected": false,
+ "text": "local",
+ "value": "local"
+ },
+ "datasource": "influx",
+ "definition": "",
+ "description": null,
+ "error": null,
+ "hide": 0,
+ "includeAll": false,
+ "label": null,
+ "multi": false,
+ "name": "env",
+ "options": [],
+ "query": "SHOW TAG VALUES FROM \"source_instantRate\" WITH KEY = \"env\"",
+ "refresh": 1,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "tagValuesQuery": "",
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ },
+ {
+ "auto": false,
+ "auto_count": 30,
+ "auto_min": "10s",
+ "current": {
+ "selected": false,
+ "text": "30s",
+ "value": "30s"
+ },
+ "description": null,
+ "error": null,
+ "hide": 0,
+ "label": null,
+ "name": "interval",
+ "options": [
+ {
+ "selected": false,
+ "text": "10s",
+ "value": "10s"
+ },
+ {
+ "selected": true,
+ "text": "30s",
+ "value": "30s"
+ },
+ {
+ "selected": false,
+ "text": "1m",
+ "value": "1m"
+ },
+ {
+ "selected": false,
+ "text": "3m",
+ "value": "3m"
+ },
+ {
+ "selected": false,
+ "text": "10m",
+ "value": "10m"
+ },
+ {
+ "selected": false,
+ "text": "30m",
+ "value": "30m"
+ },
+ {
+ "selected": false,
+ "text": "1h",
+ "value": "1h"
+ },
+ {
+ "selected": false,
+ "text": "6h",
+ "value": "6h"
+ },
+ {
+ "selected": false,
+ "text": "12h",
+ "value": "12h"
+ },
+ {
+ "selected": false,
+ "text": "1d",
+ "value": "1d"
+ },
+ {
+ "selected": false,
+ "text": "7d",
+ "value": "7d"
+ },
+ {
+ "selected": false,
+ "text": "14d",
+ "value": "14d"
+ },
+ {
+ "selected": false,
+ "text": "30d",
+ "value": "30d"
+ }
+ ],
+ "query": "10s,30s,1m,3m, 10m,30m,1h,6h,12h,1d,7d,14d,30d",
+ "refresh": 2,
+ "skipUrlSync": false,
+ "type": "interval"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-30m",
+ "to": "now"
+ },
+ "timepicker": {
+ "now": true,
+ "refresh_intervals": [
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "browser",
+ "title": "Scenario",
+ "uid": "nussknacker-scenario",
+ "version": 101
+}
\ No newline at end of file
diff --git a/examples/dev/grafana/datasources/datasources.yml b/examples/dev/grafana/datasources/datasources.yml
new file mode 100644
index 00000000000..c48289b0720
--- /dev/null
+++ b/examples/dev/grafana/datasources/datasources.yml
@@ -0,0 +1,13 @@
+apiVersion: 1
+datasources:
+- name: influx
+ type: influxdb
+ access: proxy
+ orgId: 1
+ url: http://influxdb:8086
+ database: nussknacker_metrics
+ basicAuth: false
+ withCredentials: false
+ isDefault: true
+ version: 1
+ editable: false
diff --git a/examples/dev/local-testing.docker-compose.yml b/examples/dev/local-testing.docker-compose.yml
new file mode 100644
index 00000000000..4e6a0b23eb0
--- /dev/null
+++ b/examples/dev/local-testing.docker-compose.yml
@@ -0,0 +1,222 @@
+name: nussknacker-dev
+
+services:
+
+ ### Wait for other images
+
+ wait-for-all:
+ image: busybox:1.36.1
+ entrypoint: /bin/sh -c "tail -f /dev/null"
+ depends_on:
+ postgres:
+ condition: service_healthy
+ grafana:
+ condition: service_healthy
+ influxdb:
+ condition: service_healthy
+ kafka:
+ condition: service_healthy
+ schema-registry:
+ condition: service_healthy
+ akhq:
+ condition: service_healthy
+ flink-jobmanager:
+ condition: service_healthy
+ telegraf:
+ condition: service_healthy
+
+ postgres:
+ image: postgres:13
+ restart: unless-stopped
+ ports:
+ - 5432:5432
+ environment:
+ POSTGRES_DB: "nu-db"
+ POSTGRES_USER: "nu"
+ POSTGRES_PASSWORD: "nupassword"
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -d nu-db -U nu"]
+ interval: 10s
+ retries: 10
+ volumes:
+ - nussknacker_designer_data:/var/lib/postgresql/data
+ deploy:
+ resources:
+ limits:
+ memory: 256M
+
+ ### Nussknacker metrics-related services:
+
+ grafana:
+ image: grafana/grafana:10.1.10
+ restart: unless-stopped
+ ports:
+ - 8081:3000
+ environment:
+ GF_AUTH_ANONYMOUS_ENABLED: "true"
+ GF_SERVER_ROOT_URL: "%(protocol)s://%(domain)s:/grafana"
+ GF_SECURITY_ALLOW_EMBEDDING: "true"
+ depends_on:
+ influxdb:
+ condition: service_healthy
+ healthcheck:
+ test: ["CMD-SHELL", "nc -z localhost 3000"]
+ interval: 10s
+ retries: 10
+ volumes:
+ - ./grafana:/etc/grafana/provisioning
+ - ./grafana/dashboards:/var/lib/grafana/dashboards
+ deploy:
+ resources:
+ limits:
+ memory: 256M
+
+ influxdb:
+ image: influxdb:1.8.10
+ restart: unless-stopped
+ ports:
+ - 3086:8086
+ environment:
+ INFLUXDB_DB: "nussknacker_metrics"
+ healthcheck:
+ test: [ "CMD-SHELL", "influx -execute 'SHOW DATABASES'" ]
+ interval: 10s
+ retries: 10
+ deploy:
+ resources:
+ limits:
+ memory: 128M
+
+ ### KAFKA-related services:
+
+ kafka:
+ image: bitnami/kafka:3.7.0
+ restart: unless-stopped
+ hostname: nu-kafka
+ ports:
+ - 3032:9092
+ environment:
+ KAFKA_CFG_NODE_ID: 0
+ KAFKA_CFG_PROCESS_ROLES: "controller,broker"
+ KAFKA_CFG_LISTENERS: "PLAINTEXT://:9092,CONTROLLER://:9093"
+ KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT"
+ KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: "0@kafka:9093"
+ KAFKA_CFG_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
+ healthcheck:
+ test: [ "CMD-SHELL", "kafka-topics.sh --bootstrap-server localhost:9092 --list" ]
+ interval: 10s
+ retries: 10
+ deploy:
+ resources:
+ limits:
+ memory: 512M
+
+ schema-registry:
+ image: bitnami/schema-registry:7.6.1
+ restart: unless-stopped
+ ports:
+ - 3082:8081
+ environment:
+ SCHEMA_REGISTRY_LISTENERS: "http://0.0.0.0:8081"
+ SCHEMA_REGISTRY_KAFKA_BROKERS: "PLAINTEXT://kafka:9092"
+ depends_on:
+ kafka:
+ condition: service_healthy
+ healthcheck:
+ test: ["CMD-SHELL", 'echo -e "GET /subjects HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n" | nc localhost 8081 | grep -q "HTTP/1.1 200 OK" | exit 0']
+ interval: 10s
+ retries: 10
+ deploy:
+ resources:
+ limits:
+ memory: 384M
+
+ akhq:
+ image: tchiotludo/akhq:0.24.0
+ restart: unless-stopped
+ ports:
+ - 18080:8080
+ environment:
+ AKHQ_CONFIGURATION: |
+ micronaut:
+ server:
+ context-path: /akhq
+ akhq:
+ connections:
+ nussknacker-kafka:
+ properties:
+ bootstrap.servers: "kafka:9092"
+ schema-registry:
+ url: "http://schema-registry:8081"
+ depends_on:
+ kafka:
+ condition: service_healthy
+ healthcheck:
+ test: [ "CMD-SHELL", "curl -f http://localhost:8080" ]
+ interval: 10s
+ retries: 10
+ deploy:
+ resources:
+ limits:
+ memory: 256M
+
+ ### FLINK-related services
+
+ flink-jobmanager:
+ build:
+ context: flink/
+ args:
+ FLINK_VERSION: "1.18.1-scala_2.12-java11"
+ restart: unless-stopped
+ command: jobmanager
+ ports:
+ - 3031:8081
+ environment:
+ JOB_MANAGER_RPC_ADDRESS: "flink-jobmanager"
+ healthcheck:
+ test: [ "CMD-SHELL", "curl -f http://localhost:8081/jobs/overview" ]
+ interval: 10s
+ retries: 10
+ volumes:
+ - nussknacker_flink_data:/opt/flink/data
+
+ flink-taskmanager:
+ build:
+ context: flink/
+ args:
+ FLINK_VERSION: "1.18.1-scala_2.12-java11"
+ restart: unless-stopped
+ command: taskmanager
+ environment:
+ JOB_MANAGER_RPC_ADDRESS: "flink-jobmanager"
+ depends_on:
+ flink-jobmanager:
+ condition: service_healthy
+ telegraf:
+ condition: service_healthy
+ volumes_from:
+ - flink-jobmanager
+ deploy:
+ resources:
+ limits:
+ memory: 1024M
+
+ telegraf:
+ image: telegraf:1.30.2
+ restart: unless-stopped
+ healthcheck:
+ test: [ "CMD-SHELL", "curl -f http://localhost:8087/write" ]
+ interval: 10s
+ retries: 10
+ volumes:
+ - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf
+ deploy:
+ resources:
+ limits:
+ memory: 256M
+
+volumes:
+ nussknacker_designer_data:
+ name: nussknacker_designer_data
+ nussknacker_flink_data:
+ name: nussknacker_flink_data
diff --git a/examples/dev/nu-scala213.override.yml b/examples/dev/nu-scala213.override.yml
new file mode 100644
index 00000000000..77fc9137fca
--- /dev/null
+++ b/examples/dev/nu-scala213.override.yml
@@ -0,0 +1,27 @@
+x-flink-service-common: &common-flink
+ depends_on:
+ flink-scala213-downloader:
+ condition: service_completed_successfully
+ volumes:
+ - /tmp/flink-scala-2-13_2.13-1.1.1-assembly.jar:/opt/flink/lib/flink-scala-2-13_2.13-1.1.1-assembly.jar
+ entrypoint: [
+ "sh", "-c",
+ "rm -f /opt/flink/lib/flink-scala_2.12* && chown flink /opt/flink/lib/flink-scala-2-13_2.13-1.1.1-assembly.jar && /ex-docker-entrypoint.sh \"$@\"", "--"
+ ]
+
+services:
+
+ flink-jobmanager:
+ <<: *common-flink
+
+ flink-taskmanager:
+ <<: *common-flink
+
+ flink-scala213-downloader:
+ image: curlimages/curl:7.85.0
+ volumes:
+ - /tmp:/data
+ entrypoint: [
+ "sh", "-c",
+ "curl -o /data/flink-scala-2-13_2.13-1.1.1-assembly.jar https://repo1.maven.org/maven2/pl/touk/flink-scala-2-13_2.13/1.1.1/flink-scala-2-13_2.13-1.1.1-assembly.jar"
+ ]
diff --git a/examples/dev/telegraf/telegraf.conf b/examples/dev/telegraf/telegraf.conf
new file mode 100644
index 00000000000..8a440d107b6
--- /dev/null
+++ b/examples/dev/telegraf/telegraf.conf
@@ -0,0 +1,52 @@
+# Flink reporter for InfluxDB is somewhat limited:
+# - no possibility of adding own tags
+# - metric name has all tags encoded inside
+
+[global_tags]
+ env = "local"
+
+[[inputs.influxdb_listener]]
+ service_address = "0.0.0.0:8087"
+ read_timeout = "7s"
+ write_timeout = "7s"
+
+[[processors.rename]]
+
+ [[processors.rename.replace]]
+ tag = "job_name"
+ dest = "scenario"
+
+ [[processors.rename.replace]]
+ tag = "subtask_index"
+ dest = "slot"
+
+[[processors.strings]]
+ [[processors.strings.replace]]
+ measurement = "*"
+ old = "taskmanager_job_task_operator_"
+ new = ""
+
+ [[processors.strings.replace]]
+ measurement = "*"
+ old = "nodeId_"
+ new = ""
+
+ [[processors.strings.replace]]
+ measurement = "*"
+ old = "serviceName_"
+ new = ""
+
+[[outputs.influxdb]]
+ urls = ["http://influxdb:8086"]
+ skip_database_creation = true
+ database = "nussknacker_metrics"
+
+# Use for debugging
+##[[outputs.file]]
+# files = ["stdout"]
+
+[agent]
+ metric_batch_size = 10000
+ metric_buffer_limit = 100000
+ interval = "10s"
+ flush_interval = "10s"
diff --git a/examples/installation/.env b/examples/installation/.env
new file mode 100644
index 00000000000..09d817b8eb0
--- /dev/null
+++ b/examples/installation/.env
@@ -0,0 +1 @@
+NUSSKNACKER_VERSION=latest
diff --git a/utils/default-helpers/src/main/scala/pl/touk/nussknacker/engine/util/functions/numeric.scala b/utils/default-helpers/src/main/scala/pl/touk/nussknacker/engine/util/functions/numeric.scala
index cf3f7b1a2eb..2233d31fd93 100644
--- a/utils/default-helpers/src/main/scala/pl/touk/nussknacker/engine/util/functions/numeric.scala
+++ b/utils/default-helpers/src/main/scala/pl/touk/nussknacker/engine/util/functions/numeric.scala
@@ -62,7 +62,6 @@ trait NumericUtils extends MathUtils with HideToString {
def toNumber(@ParamName("stringOrNumber") stringOrNumber: Any): java.lang.Number = stringOrNumber match {
case s: CharSequence =>
val ss = s.toString
-
// we pick the narrowest type as possible to reduce the amount of memory and computations overheads
val tries: List[Try[java.lang.Number]] = List(
Try(java.lang.Integer.parseInt(ss)),
diff --git a/utils/test-utils/src/main/scala/pl/touk/nussknacker/test/installationexample/DockerBasedNuInstallationExampleEnvironment.scala b/utils/test-utils/src/main/scala/pl/touk/nussknacker/test/installationexample/DockerBasedNuInstallationExampleEnvironment.scala
index 53a694e4841..de4ea4870bd 100644
--- a/utils/test-utils/src/main/scala/pl/touk/nussknacker/test/installationexample/DockerBasedNuInstallationExampleEnvironment.scala
+++ b/utils/test-utils/src/main/scala/pl/touk/nussknacker/test/installationexample/DockerBasedNuInstallationExampleEnvironment.scala
@@ -3,6 +3,7 @@ package pl.touk.nussknacker.test.installationexample
import com.dimafeng.testcontainers.{DockerComposeContainer, ServiceLogConsumer, WaitingForService}
import com.typesafe.scalalogging.LazyLogging
import org.slf4j.Logger
+import org.testcontainers.DockerClientFactory
import org.testcontainers.containers.output.Slf4jLogConsumer
import org.testcontainers.containers.wait.strategy.DockerHealthcheckWaitStrategy
import pl.touk.nussknacker.test.containers.ContainerExt.toContainerExt
@@ -29,7 +30,10 @@ class DockerBasedInstallationExampleNuEnvironment(
ServiceLogConsumer("bootstrap-setup", new Slf4jLogConsumer(slf4jLogger))
),
waitingFor = Some(
- WaitingForService("bootstrap-setup", new DockerHealthcheckWaitStrategy().withStartupTimeout(Duration.ofSeconds(120)))
+ WaitingForService(
+ "bootstrap-setup",
+ new DockerHealthcheckWaitStrategy().withStartupTimeout(Duration.ofSeconds(120))
+ )
),
// Change to 'true' to enable logging
tailChildContainers = false