From b02747774f8ac2fda0b364f5c830d3eb5b6c5c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 23 Apr 2024 09:06:08 +0200 Subject: [PATCH 1/3] Added handling of additional classpath modules --- src/templates/_helpers.tpl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/templates/_helpers.tpl b/src/templates/_helpers.tpl index 9b5104f..28b0489 100644 --- a/src/templates/_helpers.tpl +++ b/src/templates/_helpers.tpl @@ -179,15 +179,24 @@ nussknacker-lite-scenario {{- end -}} {{- end -}} +{{- define "nussknacker.additionalClassPathModules" -}} +{{- $list := .Values.nussknacker.additionalClassPathModules -}} +{{- if gt (len $list) 0 -}} +{{- printf ",%s" (join $list ",") -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} + {{- define "nussknacker.streaming.modelClassPath" -}} {{- if .Values.nussknacker.streaming.modelClassPath -}} {{ tpl ( mustToJson .Values.nussknacker.streaming.modelClassPath) . }} {{- else if eq .Values.nussknacker.mode "flink" -}} -["model/defaultModel.jar", "model/flinkExecutor.jar", "components/flink", "components/common"] +["model/defaultModel.jar", "model/flinkExecutor.jar", "components/flink", "components/common"{{ include "nussknacker.additionalClassPathModules" . }} ] {{- else if eq .Values.nussknacker.mode "ververica" -}} -["model/defaultModel.jar", "model/flinkExecutor.jar", "components/flink", "components/common", "compatibility-provider/nussknacker-ververica-compatibility-provider.jar"] +["model/defaultModel.jar", "model/flinkExecutor.jar", "components/flink", "components/common", "compatibility-provider/nussknacker-ververica-compatibility-provider.jar"{{ include "nussknacker.additionalClassPathModules" . }}] {{- else if eq .Values.nussknacker.mode "lite-k8s" -}} -["model/defaultModel.jar", "components/lite/liteBase.jar", "components/lite/liteKafka.jar", "components/common"] +["model/defaultModel.jar", "components/lite/liteBase.jar", "components/lite/liteKafka.jar", "components/common"{{ include "nussknacker.additionalClassPathModules" . }}] {{- else -}} {{- fail "Value for .Values.nussknacker.mode is not supported. Supported modes are: flink, ververica and lite-k8s" }} {{- end -}} @@ -199,7 +208,7 @@ nussknacker-lite-scenario {{- else if or (eq .Values.nussknacker.mode "flink") (eq .Values.nussknacker.mode "ververica") -}} [] {{- else if eq .Values.nussknacker.mode "lite-k8s" -}} -["model/defaultModel.jar", "components/lite/liteBase.jar", "components/lite/liteRequestResponse.jar", "components/common"] +["model/defaultModel.jar", "components/lite/liteBase.jar", "components/lite/liteRequestResponse.jar", "components/common"{{ include "nussknacker.additionalClassPathModules" . }}] {{- else -}} {{- fail "Value for .Values.nussknacker.mode is not supported. Supported modes are: flink, ververica and lite-k8s" }} {{- end -}} From 8ed29dfcd7d022fd877a1b43017c5a82bf35820a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 23 Apr 2024 09:26:16 +0200 Subject: [PATCH 2/3] fixes --- out | 11209 +++++++++++++++++++++++++++++++++++ src/templates/_helpers.tpl | 6 +- 2 files changed, 11212 insertions(+), 3 deletions(-) create mode 100644 out diff --git a/out b/out new file mode 100644 index 0000000..51c42d1 --- /dev/null +++ b/out @@ -0,0 +1,11209 @@ +--- +# Source: nussknacker/charts/telegraf/templates/pdb.yaml +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: release-name-telegraf + labels: + helm.sh/chart: telegraf-1.8.37 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +spec: + minAvailable: 1 + selector: + matchLabels: + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/charts/apicurio-registry/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-apicurio-registry + labels: + helm.sh/chart: apicurio-registry-0.1.5 + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.2.5.Final" + app.kubernetes.io/managed-by: Helm +--- +# Source: nussknacker/charts/flink/templates/serviceaccounts.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-flink-jobmanager + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm +--- +# Source: nussknacker/charts/flink/templates/serviceaccounts.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-flink-taskmanager + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm +--- +# Source: nussknacker/charts/grafana/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 +--- +# Source: nussknacker/charts/influxdb/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-influxdb + labels: + helm.sh/chart: influxdb-4.12.5 + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.10" + app.kubernetes.io/managed-by: Helm +--- +# Source: nussknacker/charts/kafka/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-kafka + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: kafka + helm.sh/chart: kafka-22.1.6 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: kafka + annotations: +automountServiceAccountToken: true +--- +# Source: nussknacker/charts/telegraf/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-telegraf + labels: + helm.sh/chart: telegraf-1.8.37 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-nussknacker + labels: + + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm +--- +# Source: nussknacker/charts/grafana/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + admin-user: "YWRtaW4=" + admin-password: "YWRtaW4=" + ldap-toml: "" +--- +# Source: nussknacker/charts/influxdb/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: release-name-influxdb-auth + labels: + helm.sh/chart: influxdb-4.12.5 + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.10" + app.kubernetes.io/managed-by: Helm +data: + influxdb-password: "Y2hhbmdlbWU=" + influxdb-user: "bnVzc2tuYWNrZXI=" +--- +# Source: nussknacker/charts/postgresql/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: release-name-postgresql + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-12.1.15 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + postgres-password: "WWhMczJzOWRrSQ==" + # We don't auto-generate LDAP password when it's not provided as we do for other passwords +--- +# Source: nussknacker/charts/flink/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-flink-config + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm +data: + flink-conf.yaml: |+ + taskmanager.numberOfTaskSlots: 4 + blob.server.port: 6124 + taskmanager.rpc.port: 6122 + jobmanager.heap.size: 1g + taskmanager.memory.process.size: 1g + metrics.reporters: prom + metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter + metrics.reporter.prom.port: 9999 + jobmanager.rpc.address: release-name-flink-jobmanager + jobmanager.rpc.port: 6123 + metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory + flink-conf-taskmanager.yaml: |+ + taskmanager.numberOfTaskSlots: 4 + blob.server.port: 6124 + taskmanager.rpc.port: 6122 + jobmanager.heap.size: 1g + taskmanager.memory.process.size: 1g + metrics.reporters: prom + metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter + metrics.reporter.prom.port: 9999 + jobmanager.rpc.address: release-name-flink-jobmanager + jobmanager.rpc.port: 6123 + metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory + log4j.properties: |+ + # This affects logging for both user code and Flink + rootLogger.level = INFO + rootLogger.appenderRef.console.ref = ConsoleAppender + rootLogger.appenderRef.rolling.ref = RollingFileAppender + + # Uncomment this if you want to _only_ change Flink's logging + #logger.flink.name = org.apache.flink + #logger.flink.level = INFO + + # The following lines keep the log level of common libraries/connectors on + # log level INFO. The root logger does not override this. You have to manually + # change the log levels here. + logger.akka.name = akka + logger.akka.level = INFO + logger.kafka.name= org.apache.kafka + logger.kafka.level = INFO + logger.hadoop.name = org.apache.hadoop + logger.hadoop.level = INFO + logger.zookeeper.name = org.apache.zookeeper + logger.zookeeper.level = INFO + + # Log all infos to the console + appender.console.name = ConsoleAppender + appender.console.type = CONSOLE + appender.console.layout.type = PatternLayout + appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n + + # Log all infos in the given rolling file + appender.rolling.name = RollingFileAppender + appender.rolling.type = RollingFile + appender.rolling.append = false + appender.rolling.fileName = ${sys:log.file} + appender.rolling.filePattern = ${sys:log.file}.%i + appender.rolling.layout.type = PatternLayout + appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n + appender.rolling.policies.type = Policies + appender.rolling.policies.size.type = SizeBasedTriggeringPolicy + appender.rolling.policies.size.size=100MB + appender.rolling.strategy.type = DefaultRolloverStrategy + appender.rolling.strategy.max = 10 + + # Suppress the irrelevant (wrong) warnings from the Netty channel handler + logger.netty.name = org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline + logger.netty.level = OFF + + + security.properties: + # The java-level namelookup cache policy for successful lookups + networkaddress.cache.ttl=30 +--- +# Source: nussknacker/charts/grafana/templates/configmap-dashboard-provider.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm + name: release-name-grafana-config-dashboards + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 +data: + provider.yaml: |- + apiVersion: 1 + providers: + - name: 'sidecarProvider' + orgId: 1 + folder: '' + type: file + disableDeletion: false + allowUiUpdates: false + updateIntervalSeconds: 30 + options: + foldersFromFilesStructure: false + path: /tmp/dashboards +--- +# Source: nussknacker/charts/grafana/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +data: + grafana.ini: | + [analytics] + check_for_updates = true + [auth.anonymous] + enabled = true + [grafana_net] + url = https://grafana.net + [log] + mode = console + [paths] + data = /var/lib/grafana/ + logs = /var/log/grafana + plugins = /var/lib/grafana/plugins + provisioning = /etc/grafana/provisioning + [security] + allow_embedding = true + [server] + domain = '' + root_url = %(protocol)s://%(domain)s/grafana + serve_from_sub_path = true +--- +# Source: nussknacker/charts/influxdb/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-influxdb + labels: + helm.sh/chart: influxdb-4.12.5 + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.10" + app.kubernetes.io/managed-by: Helm +data: + influxdb.conf: |+ + reporting-disabled = false + bind-address = ":8088" + + [meta] + dir = "/var/lib/influxdb/meta" + + [data] + dir = "/var/lib/influxdb/data" + wal-dir = "/var/lib/influxdb/wal" + + [coordinator] + + [retention] + + [shard-precreation] + + [monitor] + + [subscriber] + + [http] + auth-enabled = true + bind-address = ":8086" + enabled = true + flux-enabled = true + + # TODO: allow multiple graphite listeners + + [[graphite]] + + # TODO: allow multiple collectd listeners with templates + + [[collectd]] + + # TODO: allow multiple opentsdb listeners with templates + + [[opentsdb]] + + # TODO: allow multiple udp listeners with templates + + [[udp]] + + [continuous_queries] + + [logging] +--- +# Source: nussknacker/charts/kafka/templates/scripts-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-kafka-scripts + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: kafka + helm.sh/chart: kafka-22.1.6 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm +data: + setup.sh: |- + #!/bin/bash + + ID="${MY_POD_NAME#"release-name-kafka-"}" + # If process.roles is not set at all, it is assumed to be in ZooKeeper mode. + # https://kafka.apache.org/documentation/#kraft_role + + if [[ -f "/bitnami/kafka/data/meta.properties" ]]; then + if [[ $KAFKA_CFG_PROCESS_ROLES == "" ]]; then + export KAFKA_CFG_BROKER_ID="$(grep "broker.id" "/bitnami/kafka/data/meta.properties" | awk -F '=' '{print $2}')" + else + export KAFKA_CFG_NODE_ID="$(grep "node.id" "/bitnami/kafka/data/meta.properties" | awk -F '=' '{print $2}')" + fi + else + if [[ $KAFKA_CFG_PROCESS_ROLES == "" ]]; then + export KAFKA_CFG_BROKER_ID="$((ID + 0))" + else + export KAFKA_CFG_NODE_ID="$((ID + 0))" + fi + fi + + if [[ $KAFKA_CFG_PROCESS_ROLES == *"controller"* && -z $KAFKA_CFG_CONTROLLER_QUORUM_VOTERS ]]; then + node_id=0 + pod_id=0 + while : + do + VOTERS="${VOTERS}$node_id@release-name-kafka-$pod_id.release-name-kafka-headless.tenant-f882867c-112a-4e60-8b62-496f62cb6441.svc.cluster.local:9093" + node_id=$(( $node_id + 1 )) + pod_id=$(( $pod_id + 1 )) + if [[ $pod_id -ge 1 ]]; then + break + else + VOTERS="$VOTERS," + fi + done + export KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=$VOTERS + fi + + # Configure zookeeper client + + exec /entrypoint.sh /run.sh +--- +# Source: nussknacker/charts/telegraf/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-telegraf + labels: + helm.sh/chart: telegraf-1.8.37 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +data: + telegraf.conf: |+ + + [agent] + collection_jitter = "0s" + debug = false + flush_interval = "10s" + flush_jitter = "0s" + hostname = "$HOSTNAME" + interval = "10s" + logfile = "" + metric_batch_size = 1000 + metric_buffer_limit = 10000 + omit_hostname = false + precision = "" + quiet = false + round_interval = true + [[processors.enum]] + [[processors.enum.mapping]] + dest = "status_code" + field = "status" + [processors.enum.mapping.value_mappings] + critical = 3 + healthy = 1 + problem = 2 + + + + [[inputs.statsd]] + allowed_pending_messages = 10000 + metric_separator = "_" + percentile_limit = 1000 + percentiles = [ + 50.0, + 95.0, + 99.0 + ] + service_address = ":8125" + + [[inputs.internal]] + collect_memstats = false +--- +# Source: nussknacker/charts/zookeeper/templates/scripts-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-zookeeper-scripts + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + app.kubernetes.io/name: zookeeper + helm.sh/chart: zookeeper-11.0.3 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: zookeeper +data: + init-certs.sh: |- + #!/bin/bash + setup.sh: |- + #!/bin/bash + + # Execute entrypoint as usual after obtaining ZOO_SERVER_ID + # check ZOO_SERVER_ID in persistent volume via myid + # if not present, set based on POD hostname + if [[ -f "/bitnami/zookeeper/data/myid" ]]; then + export ZOO_SERVER_ID="$(cat /bitnami/zookeeper/data/myid)" + else + HOSTNAME="$(hostname -s)" + if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then + ORD=${BASH_REMATCH[2]} + export ZOO_SERVER_ID="$((ORD + 1 ))" + else + echo "Failed to get index from hostname $HOST" + exit 1 + fi + fi + exec /entrypoint.sh /run.sh +--- +# Source: nussknacker/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-nussknacker + labels: + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm +data: + application.conf: |- + db: {"driver":"org.postgresql.Driver","schema":"public","url":"jdbc:postgresql://release-name-postgresql/","user":"postgres"} + db.password: ${?DB_PASSWORD} + + scenarioTypes { + "streaming": { + category: "Default" + deploymentConfig: { + type: "flinkStreaming" + restUrl: "http://release-name-flink-jobmanager-rest:8081" + } {"jobManagerTimeout":"1m"} + + modelConfig: { + classPath: ["model/defaultModel.jar", "model/flinkExecutor.jar", "components/flink", "components/common",huj ] + components.kafka.config { + kafkaProperties { + "bootstrap.servers": "release-name-kafka:9092" + "schema.registry.url": "http://release-name-apicurio-registry:80/apis/ccompat/v6/" + } + } + rocksDB { + enable: true + } + }{"components":{"openAPI":{"url":"https://app.swaggerhub.com/apiproxy/registry/TKJ/CurrencyConverter/FINAL"}},"namespace":"release-name"} + } + } + countsSettings: { + "user": ${INFLUXDB_USER} + "password": ${INFLUXDB_PASSWORD} + "influxUrl": "http://release-name-influxdb:8086/query" + "database": "nussknacker" + metricsConfig: { "countField": "gauge"}} + metricsSettings: { + url: "/grafana/d/$dashboard?theme=dark&var-scenarioName=$scenarioName&var-env="${environment} + defaultDashboard: "" + scenarioTypeToDashboard: { + "streaming": "nussknacker-scenario" + } + } + + tabs: ${tabs}[] + + usageStatisticsReports { + enabled:false + fingerprint: "" + source: "helmchart" + } + environment: "default" + environmentAlert: {"color":"indicator-green","content":"default"} +--- +# Source: nussknacker/templates/grafana-dashboard.yml +apiVersion: v1 +kind: ConfigMap +metadata: + name: "release-name-nussknacker-grafana-dashboard" + labels: + grafana_dashboard: "nussknacker" +data: + dashboard.json: | + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 4, + "links": [], + "liveNow": false, + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 26, + "panels": [], + "title": "Basics", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "influxdb" + }, + "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": "10.1.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "[[tag_scenario]] - [[tag_nodeId]]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "scenario" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "source.instantRate", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"gauge\"), 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", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/$env$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Source 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, + "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": "10.1.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "[[tag_scenario]] - [[tag_nodeId]]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "scenario" + ], + "type": "tag" + }, + { + "params": [ + "nodeId" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "end.instantRate", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"gauge\"), 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", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$env$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Events that passed whole scenario /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, + "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": "10.1.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "[[tag_scenario]] - [[tag_nodeId]]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "scenario" + ], + "type": "tag" + }, + { + "params": [ + "nodeId" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "dead_end.instantRate", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"gauge\"), 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", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$env$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Rejected events /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, + "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": "10.1.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "[[tag_scenario]] - [[tag_nodeId]]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "scenario" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "error.instantRateByNode.count.count", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT sum(value)\nFROM (\n SELECT non_negative_derivative(last(\"gauge\"), 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", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$env$/" + } + ] + } + ], + "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, + "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": "10.1.5", + "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", + "query": "SELECT max(\"gauge\") FROM \"records_lag_max\" WHERE \"host\" =~ /$hosts$/ AND \"scenario\" =~ /$scenarioName$/ AND $timeFilter GROUP BY time($interval), \"scenario\" fill(none)", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "max" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Max lag among Kafka source partitions (events)", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": "10.1.5", + "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", + "query": "SELECT min(\"min\") FROM \"eventtimedelay_histogram\" WHERE \"host\" =~ /$hosts$/ AND \"scenario\" =~ /$scenarioName$/ AND $timeFilter GROUP BY time($interval), \"scenario\" fill(null)", + "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": [], + "timeRegions": [], + "title": "Delay since event occurrence - minimum", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": "10.1.5", + "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", + "query": "SELECT mean(\"0.5\") FROM \"eventtimedelay_histogram\" WHERE \"host\" =~ /$hosts$/ AND \"scenario\" =~ /$scenarioName$/ AND $timeFilter GROUP BY time($interval), \"scenario\" fill(null)", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "0.5" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Delay since event occurrence - median", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": "10.1.5", + "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", + "query": "SELECT max(\"max\") FROM \"eventtimedelay_histogram\" WHERE \"host\" =~ /$hosts$/ AND \"scenario\" =~ /$scenarioName$/ AND $timeFilter GROUP BY time($interval), \"scenario\" fill(null)", + "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": [], + "timeRegions": [], + "title": "Delay since event occurrence - maximum", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": "10.1.5", + "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", + "query": "SELECT min(\"gauge\") FROM \"eventtimedelay_histogram\" WHERE \"host\" =~ /$hosts$/ AND \"scenario\" =~ /$scenarioName$/ AND $timeFilter GROUP BY time($interval), \"scenario\" fill(null)", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "min" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/$scenarioName$/" + } + ] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Time from latest event", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 29 + }, + "id": 24, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": "10.1.5", + "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", + "query": "SELECT max(\"0.5\") FROM \"service_OK_histogram\" WHERE \"scenario\" =~ /$scenarioName$/ AND \"env\" =~ /^$env$/ AND $timeFilter GROUP BY time($__interval), \"scenario\", \"serviceName\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "0.5" + ], + "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, + "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": "10.1.5", + "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", + "query": "SELECT max(\"0.99\") FROM \"service_OK_histogram\" WHERE \"scenario\" =~ /$scenarioName$/ AND \"env\" =~ /^$env$/ AND $timeFilter GROUP BY time($__interval), \"scenario\", \"serviceName\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "0.99" + ], + "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, + "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": "10.1.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "[[tag_scenario]] - [[tag_serviceName]]", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "scenario" + ], + "type": "tag" + }, + { + "params": [ + "action" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "serviceInstant.OK", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT sum(mean)\nFROM (\n SELECT mean(gauge)\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", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$env$/" + } + ] + } + ], + "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, + "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": "10.1.5", + "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", + "query": "SELECT max(\"0.5\") FROM \"service_FAIL_histogram\" WHERE \"scenario\" =~ /$scenarioName$/ AND \"env\" =~ /^$env$/ AND $timeFilter GROUP BY time($__interval), \"scenario\", \"serviceName\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "0.5" + ], + "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, + "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": "10.1.5", + "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", + "query": "SELECT max(\"0.99\") FROM \"service_FAIL_histogram\" WHERE \"scenario\" =~ /$scenarioName$/ AND \"env\" =~ /^$env$/ AND $timeFilter GROUP BY time($__interval), \"scenario\", \"serviceName\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "0.99" + ], + "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, + "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": "10.1.5", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_scenario - $tag_serviceName", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "scenario" + ], + "type": "tag" + }, + { + "params": [ + "action" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "serviceInstant.FAIL", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT sum(mean)\nFROM (\n SELECT mean(gauge)\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", + "select": [ + [ + { + "params": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], + "tags": [ + { + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + }, + { + "condition": "AND", + "key": "env", + "operator": "=~", + "value": "/^$env$/" + } + ] + } + ], + "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 + } + } + ], + "targets": [ + { + "refId": "A" + } + ], + "title": "External services", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 22, + "panels": [], + "targets": [ + { + "refId": "A" + } + ], + "title": "RocksDB state", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": 31 + }, + "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": "10.1.5", + "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(\"gauge\") 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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "RocksDB cur-size-all-mem-tables", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": 31 + }, + "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": "10.1.5", + "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(\"gauge\") 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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "RocksDB estimate-live-data-size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "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": 31 + }, + "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": "10.1.5", + "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(\"gauge\") 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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeRegions": [], + "title": "RocksDB estimate-num-keys", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 28, + "panels": [], + "targets": [ + { + "refId": "A" + } + ], + "title": "Scenario health", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 40 + }, + "id": 30, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "10.1.5", + "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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + } + ] + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "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": 40 + }, + "id": 32, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "10.1.5", + "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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [], + "type": "non_negative_difference" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + } + ] + } + ], + "title": "Number of restarts", + "type": "stat" + }, + { + "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": 45 + }, + "id": 37, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "10.1.5", + "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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + } + ] + } + ], + "title": "Last checkpoint duration", + "type": "stat" + }, + { + "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": 45 + }, + "id": 38, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "10.1.5", + "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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + } + ] + } + ], + "title": "Last checkpoint size", + "type": "stat" + }, + { + "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": 45 + }, + "id": 35, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "10.1.5", + "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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [], + "type": "non_negative_difference" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + } + ] + } + ], + "title": "Completed checkpoints", + "type": "stat" + }, + { + "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": 45 + }, + "id": 34, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "10.1.5", + "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": [ + "gauge" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [], + "type": "non_negative_difference" + } + ] + ], + "tags": [ + { + "key": "env", + "operator": "=~", + "value": "/^$env$/" + }, + { + "condition": "AND", + "key": "scenario", + "operator": "=~", + "value": "/^$scenarioName$/" + } + ] + } + ], + "title": "Failed checkpoints", + "type": "stat" + } + ], + "refresh": "30s", + "schemaVersion": 38, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allFormat": "regex wildcard", + "current": { + "selected": true, + "text": [ + "DetectLargeTransactions" + ], + "value": [ + "DetectLargeTransactions" + ] + }, + "definition": "", + "hide": 0, + "includeAll": true, + "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 + }, + { + "current": { + "selected": false, + "text": "sandbox", + "value": "sandbox" + }, + "definition": "", + "hide": 0, + "includeAll": false, + "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" + }, + "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": "Scenario", + "uid": "nussknacker-scenario", + "version": 5, + "weekStart": "" + } + nussknacker-lite-scenario.json: | + { + "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 + } + nussknacker-request-response-scenario.json: | + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 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": "" + } +--- +# Source: nussknacker/templates/grafana-datasource.yml +apiVersion: v1 +kind: ConfigMap +metadata: + name: "release-name-influx-grafana-datasource" + labels: + grafana_datasource: "influx" +data: + datasource.yaml: |- + apiVersion: 1 + datasources: + - name: influx + type: influxdb + access: proxy + orgId: 1 + url: http://release-name-influxdb:8086 + database: nussknacker + basicAuth: true + isDefault: true + version: 1 + editable: false + basicAuthUser: ${influxdb-user} + secureJsonData: + basicAuthPassword: ${influxdb-password} +--- +# Source: nussknacker/templates/logging-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-nussknacker-logging-conf + labels: + nussknacker.io/resourceType: "logging-conf" + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm +data: +--- +# Source: nussknacker/templates/telegraf-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: telegraf-nussknacker + labels: + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm +data: + nussknacker.conf: |- + # Flink reporters for Prometheus or InfluxDB are somewhat limited: + # - no possibility of adding own tags + # - no possitility of removing Flink internal tags (like job_id, task_id, etc.) + # - metric name has all tags encoded inside + # NOTE: Prometheus has different field names than e.g. InfluxDB reporter, (count -> gauge, different percentile names, etc.) + + [global_tags] + env = "default" + + #FIXME: handle case where Flink is disabled but telegraf *is* enabled + [[inputs.prometheus]] + urls=[ + "http://release-name-flink-jobmanager-headless:9999/metrics", + "http://release-name-flink-taskmanager:9999/metrics" + ] + + [[processors.rename]] + [[processors.rename.replace]] + dest = "scenario" + tag = "job_name" + [[processors.rename.replace]] + dest = "slot" + tag = "subtask_index" + [[processors.rename.replace]] + dest = "process" + tag = "originalProcessName" + + [[processors.strings]] + [[processors.strings.replace]] + measurement = "*" + new = "" + old = "taskmanager_job_task_operator_" + [[processors.strings.replace]] + measurement = "*" + new = "" + old = "flink_" + [[processors.strings.replace]] + measurement = "*" + new = "" + old = "nodeId_" + [[processors.strings.replace]] + measurement = "*" + new = "" + old = "serviceName_" + [[processors.strings.replace]] + measurement = "*" + new = "" + old = "namespace_" + [[processors.strings.replace]] + measurement = "*" + new = "" + old = "originalProcessName_" + + + + [[outputs.influxdb]] + urls = ["http://release-name-influxdb:8086"] + skip_database_creation = true + database = "nussknacker" +--- +# Source: nussknacker/templates/tests/test-scripts.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-nussknacker-test-scripts +data: + main-wrapper.sh: |- + #!/bin/sh + ($*) & + MAIN_PID=$! + echo $MAIN_PID > /var/run/sidecars/main.pid + wait $MAIN_PID + sidecar-wrapper.sh: |- + #!/bin/sh + ($*) & + MAIN_PID=$(until cat /var/run/sidecars/main.pid; do sleep 1; done) + tail --pid $MAIN_PID -f /dev/null +--- +# Source: nussknacker/templates/tests/test-suites.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-nussknacker-test-suites +data: + kafka-only.bats: | + #!/usr/bin/env bats + + : "${NUSSKNACKER_URL:?required environment value not set}" + : "${AUTHORIZATION:?required environment value not set}" + : "${KAFKA_BOOTSTRAP_SERVER:?required environment value not set}" + : "${SCHEMA_REGISTRY_URL:?required environment value not set}" + : "${STREAMING_SCENARIO_TYPE:?required environment value not set}" + + function curl() { + /usr/bin/curl -f -k -v -H "Content-type: application/json" -H "Authorization: ${AUTHORIZATION}" "$@" + } + export -f curl + + # timeout command has different syntax in Ubuntu and BusyBox + if [[ $(realpath $(which timeout)) =~ "busybox" ]]; then + function timeout() { + $(which timeout) -t "$@" + } + fi + + function given_a_topic() { + local TOPIC_FULL_NAME="${1:?required}" + local SCHEMA="${2:?required}" + + kafka-topics --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --describe --topic "${TOPIC_FULL_NAME}" || + kafka-topics --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --create --topic "${TOPIC_FULL_NAME}" \ + --partitions 10 --replication-factor 1 + + kafka-consumer-groups --bootstrap-server ${KAFKA_BOOTSTRAP_SERVER} \ + --topic "${TOPIC_FULL_NAME}" \ + --group helm_test --reset-offsets --to-latest --execute + + cat << _END | curl -d @- "${SCHEMA_REGISTRY_URL%/}/subjects/${TOPIC_FULL_NAME}-value/versions" + { "schema": "$(echo $SCHEMA | sed -e 's/"/\\"/g')" } + _END + } + + function given_a_proxy_process() { + local PROCESS_NAME="${1:?required}" + local PROCESS_OBJECT="${2:?required}" + local PROCESSES_URL="${NUSSKNACKER_URL%/}/api/processes" + local PROCESS_URL=$(echo ${NUSSKNACKER_URL%/}/api/processes/${PROCESS_NAME} | sed -e 's/ /%20/g') + local PROCESS_DEPLOY_URL=$(echo ${NUSSKNACKER_URL%/}/api/processManagement/deploy/${PROCESS_NAME} | sed -e 's/ /%20/g') + local PROCESS_CANCEL_URL=$(echo ${NUSSKNACKER_URL%/}/api/processManagement/cancel/${PROCESS_NAME} | sed -e 's/ /%20/g') + local PROCESS_IMPORT_URL=$(echo ${NUSSKNACKER_URL%/}/api/processes/import/${PROCESS_NAME} | sed -e 's/ /%20/g') + + curl ${PROCESS_URL} || echo "{ \"name\": \"$PROCESS_NAME\", \"processingMode\": \"Unbounded-Stream\", \"isFragment\": false }" | curl -X POST ${PROCESSES_URL} -d @- + echo ${PROCESS_OBJECT} | /usr/bin/curl -f -k -v -H "Authorization: ${AUTHORIZATION}" ${PROCESS_IMPORT_URL} -F process=@- | jq .scenarioGraph | (echo '{ "comment": "created by a bats test", "scenarioGraph": '; cat; echo '}') | curl -X PUT ${PROCESS_URL} -d @- + + [[ $(curl ${PROCESS_URL%/}/status | jq -r .status.name) == "RUNNING" ]] && curl -X POST ${PROCESS_CANCEL_URL} + curl -X POST ${PROCESS_DEPLOY_URL} + #on smaller ci envs deployment may last some time... + timeout 60 /bin/sh -c "until [[ `curl ${PROCESS_URL%/}/status | jq -r .status.name` == \"RUNNING\" ]]; do sleep 1 && echo -n .; done;" || true + echo "Checking after waiting for status..." + local STATUS_RESPONSE=$(curl ${PROCESS_URL%/}/status) + echo "Status is: $STATUS_RESPONSE" + [[ `echo $STATUS_RESPONSE | jq -r .status.name` == "RUNNING" ]] + } + + function when_a_message_has_been_posted_on_the_topic() { + local TOPIC_FULL_NAME="${1:?required}" + local ID=${2:?required} + + local SCHEMA_ID=$(curl "${SCHEMA_REGISTRY_URL%/}/subjects/${TOPIC_FULL_NAME}-value/versions/latest" | jq '.id') + + cat << _END | kafka-avro-console-producer \ + --bootstrap-server $KAFKA_BOOTSTRAP_SERVER \ + --topic "${TOPIC_FULL_NAME}" \ + --property "schema.registry.url=${SCHEMA_REGISTRY_URL}" \ + --property "value.schema.id=${SCHEMA_ID}" + { "id": "$ID", "content": "a content", "tags": [] } + _END + } + + function then_the_message_can_be_consumed_from_the_topic() { + local TOPIC_FULL_NAME="${1:?required}" + local ID=${2:?required} + + kafka-avro-console-consumer \ + --bootstrap-server $KAFKA_BOOTSTRAP_SERVER \ + --topic "${TOPIC_FULL_NAME}" \ + --group helm_test \ + --property "schema.registry.url=${SCHEMA_REGISTRY_URL}" \ + --timeout-ms 60000 \ + | (while : ; do + read MSG; + echo $MSG + if [[ -z $MSG ]]; then exit 1; fi; + if echo $MSG | jq -e ".id == \"${ID}\""; then break; fi; + done) + } + + function setup() { + export GROUP=testgroup + export INPUT_TOPIC=inputKafkaOnly + export OUTPUT_TOPIC=outputKafkaOnly + local SCHEMA=$(cat << _END + { + "namespace": "\${GROUP}", + "name": "\${TOPIC}", + "type": "record", + "doc": "This is a sample schema definition", + "fields": [ + { "name": "id", "type": "string", "doc": "Message id" }, + { "name": "content", "type": "string", "doc": "Message content" }, + { "name": "tags", "type": { "type": "array", "items": "string" }, "doc": "Message tags" } + ] + } + _END + ) + local -x PROCESS_NAME="test proxy process for kafka only" + + given_a_topic "${KAFKA_NAMESPACE}_${GROUP}.$INPUT_TOPIC" "$(echo $SCHEMA | TOPIC=${INPUT_TOPIC} envsubst)" + given_a_topic "${KAFKA_NAMESPACE}_${GROUP}.$OUTPUT_TOPIC" "$(echo $SCHEMA | TOPIC=${OUTPUT_TOPIC} envsubst)" + given_a_proxy_process "${PROCESS_NAME}" "$(cat ${BATS_TEST_DIRNAME%/}/testprocess.json | envsubst)" + } + + @test "message should pass through the kafka only proxy process" { + local ID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) + when_a_message_has_been_posted_on_the_topic "${KAFKA_NAMESPACE}_${GROUP}.$INPUT_TOPIC" ${ID} + then_the_message_can_be_consumed_from_the_topic "${KAFKA_NAMESPACE}_${GROUP}.$OUTPUT_TOPIC" ${ID} + } + rr-only.bats: | + #!/usr/bin/env bats + + : "${NUSSKNACKER_URL:?required environment value not set}" + : "${AUTHORIZATION:?required environment value not set}" + + function curl() { + /usr/bin/curl -f -k -v -H "Content-type: application/json" -H "Authorization: ${AUTHORIZATION}" "$@" + } + export -f curl + + # timeout command has different syntax in Ubuntu and BusyBox + if [[ $(realpath $(which timeout)) =~ "busybox" ]]; then + function timeout() { + $(which timeout) -t "$@" + } + fi + + function cancel_process() { + local PROCESS_NAME="${1:?required}" + local PROCESS_CANCEL_URL=$(echo ${NUSSKNACKER_URL%/}/api/processManagement/cancel/${PROCESS_NAME} | sed -e 's/ /%20/g') + curl -X POST ${PROCESS_CANCEL_URL} + } + + function wait_for_status() { + local PROCESS_NAME="${1:?required}" + local STATUS="${2:?required}" + local PROCESS_URL=$(echo ${NUSSKNACKER_URL%/}/api/processes/${PROCESS_NAME} | sed -e 's/ /%20/g') + timeout 60 /bin/sh -c "until [[ `curl ${PROCESS_URL%/}/status | jq -r .status.name` == \"$STATUS\" ]]; do sleep 1 && echo -n .; done;" || true + } + + function given_a_proxy_process() { + local PROCESS_NAME="${1:?required}" + local PROCESSES_URL="${NUSSKNACKER_URL%/}/api/processes" + local PROCESS_URL=$(echo ${NUSSKNACKER_URL%/}/api/processes/${PROCESS_NAME} | sed -e 's/ /%20/g') + local PROCESS_DEPLOY_URL=$(echo ${NUSSKNACKER_URL%/}/api/processManagement/deploy/${PROCESS_NAME} | sed -e 's/ /%20/g') + local PROCESS_IMPORT_URL=$( echo ${NUSSKNACKER_URL%/}/api/processes/import/${PROCESS_NAME} | sed -e 's/ /%20/g') + + curl ${PROCESS_URL} || echo "{ \"name\": \"$PROCESS_NAME\", \"processingMode\": \"Request-Response\", \"isFragment\": false }" | curl -X POST ${PROCESSES_URL} -d @- + export PROCESS_NAME GROUP INPUT_TOPIC OUTPUT_TOPIC + cat ${BATS_TEST_DIRNAME}/rr-testprocess.json | envsubst | /usr/bin/curl -f -k -v -H "Authorization: ${AUTHORIZATION}" ${PROCESS_IMPORT_URL} -F process=@- | jq .scenarioGraph | (echo '{ "comment": "created by a bats test", "scenarioGraph": '; cat; echo '}') | curl -X PUT ${PROCESS_URL} -d @- + + [[ $(curl ${PROCESS_URL%/}/status | jq -r .status.name) = RUNNING ]] && cancel_process "$PROCESS_NAME" + curl -X POST ${PROCESS_DEPLOY_URL} + #on smaller ci envs deployment may last some time... + wait_for_status "$PROCESS_NAME" "RUNNING" + echo "Checking after waiting for status..." + local STATUS_RESPONSE=$(curl ${PROCESS_URL%/}/status) + echo "Status is: $STATUS_RESPONSE" + [[ `echo $STATUS_RESPONSE | jq -r .status.name` == "RUNNING" ]] + } + + function setup() { + given_a_proxy_process "test proxy process for rr" + } + + @test "message should pass through the rr proxy process" { + local PROCESS_NAME="test proxy process for rr" + INPUT_MESSAGE='{"productId":10}' + EXPECTED_OUTPUT_MESSAGE='{"productId":20}' + + if [[ $(curl $RR_SCENARIO_INPUT_URL -d $INPUT_MESSAGE) == $EXPECTED_OUTPUT_MESSAGE ]]; then echo ok; else exit 1; fi + + cancel_process "$PROCESS_NAME" + wait_for_status "$PROCESS_NAME" "CANCELED" + } + rr-testprocess.json: | + { + "metaData" : { + "id" : "test-scenario-for-rr-only", + "additionalFields" : { + "description" : null, + "properties" : { + "slug" : "test-scenario-for-rr-only", + "inputSchema" : "{\n \"title\": \"Product\",\n \"description\": \"A product from Acme's catalog\",\n \"type\": \"object\",\n \"properties\": {\n \"productId\": {\n \"description\": \"The unique identifier for a product\",\n \"type\": \"integer\"\n }\n },\n \"required\": [ \"productId\" ]\n}", + "outputSchema" : "{\n \"title\": \"Product\",\n \"description\": \"A product from Acme's catalog\",\n \"type\": \"object\",\n \"properties\": {\n \"productId\": {\n \"description\": \"The unique identifier for a product\",\n \"type\": \"integer\"\n }\n },\n \"required\": [ \"productId\" ]\n}" + }, + "metaDataType": "RequestResponseMetaData" + } + }, + "nodes" : [ + { + "id" : "request", + "ref" : { + "typ" : "request", + "parameters" : [ + ] + }, + "additionalFields" : { + "description" : null, + "layoutData" : { + "x" : 0, + "y" : 0 + } + }, + "type" : "Source" + }, + { + "id" : "response", + "ref" : { + "typ" : "response", + "parameters" : [ + { + "name" : "productId", + "expression" : { + "language" : "spel", + "expression" : "#input.productId * 2" + } + } + ] + }, + "endResult" : null, + "isDisabled" : null, + "additionalFields" : { + "description" : null, + "layoutData" : { + "x" : 1, + "y" : 180 + } + }, + "type" : "Sink" + } + ], + "additionalBranches" : [ + ] + } + testprocess.json: | + { + "metaData": { + "id": "${PROCESS_NAME}", + "additionalFields": { + "description": null, + "properties": { + "parallelism": "1" + }, + "metaDataType": "${STREAMING_SCENARIO_TYPE}" + } + }, + "nodes": [ + { + "id": "kafka-source", + "ref": { + "typ": "kafka", + "parameters": [ + { + "name": "Topic", + "expression": { + "language": "spel", + "expression": "'${GROUP}.${INPUT_TOPIC}'" + } + }, + { + "name": "Schema version", + "expression": { + "language": "spel", + "expression": "'latest'" + } + } + ] + }, + "additionalFields": { + "description": null, + "layoutData": { + "x": -3, + "y": -90 + } + }, + "type": "Source" + }, + { + "id": "kafka-sink", + "ref": { + "typ": "kafka", + "parameters": [ + { + "name": "Topic", + "expression": { + "language": "spel", + "expression": "'${GROUP}.${OUTPUT_TOPIC}'" + } + }, + { + "name": "Schema version", + "expression": { + "language": "spel", + "expression": "'latest'" + } + }, + { + "name" : "Key", + "expression" : { + "language" : "spel", + "expression" : "" + } + }, + { + "name" : "Raw editor", + "expression" : { + "language" : "spel", + "expression" : "true" + } + }, + { + "name" : "Value validation mode", + "expression" : { + "language" : "spel", + "expression" : "'strict'" + } + }, + { + "name": "Value", + "expression": { + "language": "spel", + "expression": "#input" + } + } + ] + }, + "endResult": null, + "isDisabled": null, + "additionalFields": { + "description": null, + "layoutData": { + "x": 0, + "y": 135 + } + }, + "type": "Sink" + } + ], + "additionalBranches": [ + ] + } +--- +# Source: nussknacker/charts/grafana/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +rules: + - apiGroups: [""] # "" indicates the core API group + resources: ["configmaps", "secrets"] + verbs: ["get", "watch", "list"] +--- +# Source: nussknacker/templates/role.yml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: release-name-nussknacker + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 +rules: +- apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete", "deletecollection"] +- apiGroups: ["apps"] + resources: ["deployments"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete", "deletecollection"] +- apiGroups: [""] + resources: ["services"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete", "deletecollection"] +- apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete", "deletecollection"] +- apiGroups: ["networking.k8s.io"] + resources: ["ingresses"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete", "deletecollection"] +- apiGroups: [""] + resources: ["resourcequotas"] + verbs: ["get", "list"] +- apiGroups: [""] + resources: ["pods"] + verbs: ["get", "list"] +--- +# Source: nussknacker/charts/grafana/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: release-name-grafana +subjects: +- kind: ServiceAccount + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 +--- +# Source: nussknacker/templates/rolebinding.yml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: release-name-nussknacker + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm +subjects: +- kind: ServiceAccount + name: release-name-nussknacker +roleRef: + kind: Role + apiGroup: rbac.authorization.k8s.io + name: release-name-nussknacker +--- +# Source: nussknacker/charts/apicurio-registry/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-apicurio-registry + labels: + helm.sh/chart: apicurio-registry-0.1.5 + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.2.5.Final" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/charts/flink/templates/jobmanager-headless-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-flink-jobmanager-headless + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm + component: jobmanager +spec: + clusterIP: None + ports: + - port: 6124 + targetPort: blob + protocol: TCP + name: blob + - port: 6123 + targetPort: rpc + protocol: TCP + name: rpc + - port: 8081 + targetPort: ui + protocol: TCP + name: ui + - port: 9999 + targetPort: metrics + protocol: TCP + name: metrics + selector: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: jobmanager +--- +# Source: nussknacker/charts/flink/templates/jobmanager-rest-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-flink-jobmanager-rest + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm + component: jobmanager +spec: + type: ClusterIP + ports: + - port: 8081 + targetPort: 8081 + protocol: TCP + name: ui + selector: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: jobmanager +--- +# Source: nussknacker/charts/flink/templates/jobmanager-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-flink-jobmanager + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm + component: jobmanager +spec: + type: ClusterIP + ports: + - port: 6124 + targetPort: blob + protocol: TCP + name: blob + - port: 6123 + targetPort: rpc + protocol: TCP + name: rpc + - port: 8081 + targetPort: ui + protocol: TCP + name: ui + - port: 9999 + targetPort: metrics + protocol: TCP + name: metrics + selector: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: jobmanager +--- +# Source: nussknacker/charts/flink/templates/taskmanager-service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-flink-taskmanager + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm + component: taskmanager +spec: + type: ClusterIP + ports: + - port: 6122 + targetPort: rpc + protocol: TCP + name: rpc + - port: 9999 + targetPort: metrics + protocol: TCP + name: metrics + selector: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: taskmanager +--- +# Source: nussknacker/charts/grafana/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: service + port: 80 + protocol: TCP + targetPort: 3000 + selector: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/charts/influxdb/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-influxdb + labels: + helm.sh/chart: influxdb-4.12.5 + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.10" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: api + port: 8086 + targetPort: api + - name: rpc + port: 8088 + targetPort: rpc + selector: + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/charts/kafka/templates/svc-headless.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-kafka-headless + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: kafka + helm.sh/chart: kafka-22.1.6 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: kafka +spec: + type: ClusterIP + clusterIP: None + publishNotReadyAddresses: false + ports: + - name: tcp-client + port: 9092 + protocol: TCP + targetPort: kafka-client + - name: tcp-internal + port: 9094 + protocol: TCP + targetPort: kafka-internal + selector: + app.kubernetes.io/name: kafka + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: kafka +--- +# Source: nussknacker/charts/kafka/templates/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-kafka + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: kafka + helm.sh/chart: kafka-22.1.6 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: kafka +spec: + type: ClusterIP + sessionAffinity: None + ports: + - name: tcp-client + port: 9092 + protocol: TCP + targetPort: kafka-client + nodePort: null + selector: + app.kubernetes.io/name: kafka + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: kafka +--- +# Source: nussknacker/charts/postgresql/templates/primary/svc-headless.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-postgresql-hl + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-12.1.15 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary + # Use this annotation in addition to the actual publishNotReadyAddresses + # field below because the annotation will stop being respected soon but the + # field is broken in some versions of Kubernetes: + # https://github.com/kubernetes/kubernetes/issues/58662 + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" +spec: + type: ClusterIP + clusterIP: None + # We want all pods in the StatefulSet to have their addresses published for + # the sake of the other Postgresql pods even before they're ready, since they + # have to be able to talk to each other in order to become ready. + publishNotReadyAddresses: true + ports: + - name: tcp-postgresql + port: 5432 + targetPort: tcp-postgresql + selector: + app.kubernetes.io/name: postgresql + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: primary +--- +# Source: nussknacker/charts/postgresql/templates/primary/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-postgresql + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-12.1.15 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary +spec: + type: ClusterIP + sessionAffinity: None + ports: + - name: tcp-postgresql + port: 5432 + targetPort: tcp-postgresql + nodePort: null + selector: + app.kubernetes.io/name: postgresql + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: primary +--- +# Source: nussknacker/charts/telegraf/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-telegraf + labels: + helm.sh/chart: telegraf-1.8.37 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +spec: + type: ClusterIP + ports: + - port: 8125 + targetPort: 8125 + protocol: "UDP" + name: "statsd" + selector: + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/charts/zookeeper/templates/svc-headless.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-zookeeper-headless + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + app.kubernetes.io/name: zookeeper + helm.sh/chart: zookeeper-11.0.3 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: zookeeper +spec: + type: ClusterIP + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: tcp-client + port: 2181 + targetPort: client + - name: tcp-follower + port: 2888 + targetPort: follower + - name: tcp-election + port: 3888 + targetPort: election + selector: + app.kubernetes.io/name: zookeeper + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: zookeeper +--- +# Source: nussknacker/charts/zookeeper/templates/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-zookeeper + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + app.kubernetes.io/name: zookeeper + helm.sh/chart: zookeeper-11.0.3 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: zookeeper +spec: + type: ClusterIP + sessionAffinity: None + ports: + - name: tcp-client + port: 2181 + targetPort: client + nodePort: null + - name: tcp-follower + port: 2888 + targetPort: follower + - name: tcp-election + port: 3888 + targetPort: election + selector: + app.kubernetes.io/name: zookeeper + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: zookeeper +--- +# Source: nussknacker/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-nussknacker + labels: + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm + annotations: + +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name +--- +# Source: nussknacker/charts/apicurio-registry/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: release-name-apicurio-registry + labels: + helm.sh/chart: apicurio-registry-0.1.5 + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.2.5.Final" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name + template: + metadata: + labels: + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name + spec: + serviceAccountName: release-name-apicurio-registry + securityContext: + {} + containers: + - name: apicurio-registry + securityContext: + {} + image: "apicurio/apicurio-registry-kafkasql:2.5.8.Final" + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + env: + - name: KAFKA_BOOTSTRAP_SERVERS + value: release-name-kafka:9092 + resources: + {} +--- +# Source: nussknacker/charts/flink/templates/taskmanager.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: release-name-flink-taskmanager + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm + component: taskmanager + annotations: + "cluster-autoscaler.kubernetes.io/safe-to-evict": "false" +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: taskmanager + template: + metadata: + labels: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: taskmanager + annotations: + spec: + serviceAccountName: release-name-flink-taskmanager + securityContext: + {} + initContainers: + containers: + - name: taskmanager + image: "flink:1.18.1-scala_2.12-java11" + imagePullPolicy: IfNotPresent + workingDir: /opt/flink + command: + - "/bin/bash" + - "-c" + - "cp /opt/flink/opt/flink-s3-fs-presto-*.jar /opt/flink/lib/ && wget https://repo1.maven.org/maven2/com/github/oshi/oshi-core/3.4.0/oshi-core-3.4.0.jar -O /opt/flink/lib/oshi-core-3.4.0.jar && wget https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.4.0/jna-5.4.0.jar -O /opt/flink/lib/jna-5.4.0.jar && wget https://repo1.maven.org/maven2/net/java/dev/jna/jna-platform/5.4.0/jna-platform-5.4.0.jar -O /opt/flink/lib/jna-platform-5.4.0.jar && $FLINK_HOME/bin/taskmanager.sh start-foreground;" + env: + - name: JVM_ARGS + value: "-Djava.security.properties=/opt/flink/conf/security.properties" + envFrom: + ports: + - containerPort: 6122 + name: rpc + - containerPort: 9999 + name: metrics + livenessProbe: + tcpSocket: + port: 6122 + initialDelaySeconds: 30 + periodSeconds: 60 + volumeMounts: + - name: flink-config-volume + mountPath: /opt/flink/conf + resources: + limits: + memory: 3Gi + requests: + memory: 2560Mi + + volumes: + - name: flink-config-volume + configMap: + name: release-name-flink-config + items: + - key: flink-conf-taskmanager.yaml + path: flink-conf.yaml + - key: log4j.properties + path: log4j.properties + - key: log4j.properties + path: log4j-console.properties + - key: security.properties + path: security.properties +--- +# Source: nussknacker/charts/grafana/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: release-name-grafana + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + annotations: + checksum/config: b25596e8ff96a19e25c9384ccecc3c17ab0ffb10408393004af7a38b548db65e + checksum/dashboards-json-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + checksum/sc-dashboard-provider-config: fcbf33152d73ddca44fd9c6b5f721cb4e9023dbecdb56984cff328e76b7cf4d2 + checksum/secret: 11e4135ba04c8a7a2e931fc5592702480322f0a162f1c1088e9e184cbef5382e + kubectl.kubernetes.io/default-container: grafana + spec: + + serviceAccountName: release-name-grafana + automountServiceAccountToken: true + securityContext: + fsGroup: 472 + runAsGroup: 472 + runAsNonRoot: true + runAsUser: 472 + enableServiceLinks: true + containers: + - name: grafana-sc-dashboard + image: "quay.io/kiwigrid/k8s-sidecar:1.25.1" + imagePullPolicy: IfNotPresent + env: + - name: METHOD + value: WATCH + - name: LABEL + value: "grafana_dashboard" + - name: FOLDER + value: "/tmp/dashboards" + - name: RESOURCE + value: "both" + - name: REQ_USERNAME + valueFrom: + secretKeyRef: + name: release-name-grafana + key: admin-user + - name: REQ_PASSWORD + valueFrom: + secretKeyRef: + name: release-name-grafana + key: admin-password + - name: REQ_URL + value: http://localhost:3000/api/admin/provisioning/dashboards/reload + - name: REQ_METHOD + value: POST + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + volumeMounts: + - name: sc-dashboard-volume + mountPath: "/tmp/dashboards" + - name: grafana-sc-datasources + image: "quay.io/kiwigrid/k8s-sidecar:1.25.1" + imagePullPolicy: IfNotPresent + env: + - name: METHOD + value: WATCH + - name: LABEL + value: "grafana_datasource" + - name: FOLDER + value: "/etc/grafana/provisioning/datasources" + - name: RESOURCE + value: "both" + - name: REQ_USERNAME + valueFrom: + secretKeyRef: + name: release-name-grafana + key: admin-user + - name: REQ_PASSWORD + valueFrom: + secretKeyRef: + name: release-name-grafana + key: admin-password + - name: REQ_URL + value: http://localhost:3000/api/admin/provisioning/datasources/reload + - name: REQ_METHOD + value: POST + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + volumeMounts: + - name: sc-datasources-volume + mountPath: "/etc/grafana/provisioning/datasources" + - name: grafana + image: "docker.io/grafana/grafana:10.1.5" + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + seccompProfile: + type: RuntimeDefault + volumeMounts: + - name: config + mountPath: "/etc/grafana/grafana.ini" + subPath: grafana.ini + - name: storage + mountPath: "/var/lib/grafana" + - name: sc-dashboard-volume + mountPath: "/tmp/dashboards" + - name: sc-dashboard-provider + mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml" + subPath: provider.yaml + - name: sc-datasources-volume + mountPath: "/etc/grafana/provisioning/datasources" + ports: + - name: grafana + containerPort: 3000 + protocol: TCP + - name: gossip-tcp + containerPort: 9094 + protocol: TCP + - name: gossip-udp + containerPort: 9094 + protocol: UDP + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: GF_SECURITY_ADMIN_USER + valueFrom: + secretKeyRef: + name: release-name-grafana + key: admin-user + - name: GF_SECURITY_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: release-name-grafana + key: admin-password + - name: GF_PATHS_DATA + value: /var/lib/grafana/ + - name: GF_PATHS_LOGS + value: /var/log/grafana + - name: GF_PATHS_PLUGINS + value: /var/lib/grafana/plugins + - name: GF_PATHS_PROVISIONING + value: /etc/grafana/provisioning + envFrom: + - secretRef: + name: release-name-influxdb-auth + livenessProbe: + failureThreshold: 10 + httpGet: + path: /api/health + port: 3000 + initialDelaySeconds: 60 + timeoutSeconds: 30 + readinessProbe: + httpGet: + path: /api/health + port: 3000 + volumes: + - name: config + configMap: + name: release-name-grafana + - name: storage + emptyDir: {} + - name: sc-dashboard-volume + emptyDir: + {} + - name: sc-dashboard-provider + configMap: + name: release-name-grafana-config-dashboards + - name: sc-datasources-volume + emptyDir: + {} +--- +# Source: nussknacker/charts/telegraf/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: release-name-telegraf + labels: + helm.sh/chart: telegraf-1.8.37 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name + template: + metadata: + labels: + app.kubernetes.io/name: telegraf + app.kubernetes.io/instance: release-name + annotations: + checksum/config: 9a2914c96aa1b736703d67d822e9f014deacc65d767cf793c1aa8d3a4e74e104 + spec: + serviceAccountName: release-name-telegraf + containers: + - name: telegraf + image: "docker.io/library/telegraf:1.28-alpine" + imagePullPolicy: "IfNotPresent" + resources: + {} + args: + - --config-directory + - /etc/telegraf/telegraf.d + env: + - name: HOSTNAME + value: telegraf-polling-service + volumeMounts: + - name: config + mountPath: /etc/telegraf + - mountPath: /etc/telegraf/telegraf.d + name: telegraf-nussknacker + volumes: + - name: config + configMap: + name: release-name-telegraf + - configMap: + name: telegraf-nussknacker + name: telegraf-nussknacker +--- +# Source: nussknacker/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: release-name-nussknacker + labels: + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm + annotations: +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + template: + metadata: + annotations: + checksum/config: 22fd0cecf3410c00bd5de09c1e4739139fe893ad76416d4b0b5223c71ba76d61 + labels: + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + spec: + + imagePullSecrets: + - name: gitlab-registry + serviceAccountName: release-name-nussknacker + securityContext: + fsGroup: 1001 + containers: + - name: nussknacker + securityContext: + runAsUser: 1001 + image: "touk/nussknacker:staging-latest" + imagePullPolicy: Always + volumeMounts: + - name: config + mountPath: /etc/nussknacker + - name: logging-config + mountPath: /etc/logging + env: + - name: JDK_JAVA_OPTIONS + value: + - name: CONFIG_FILE + value: /etc/nussknacker/application.conf + - name: HELM_RELEASE_NAME + value: release-name + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: 'release-name-postgresql' + key: postgres-password + - name: INFLUXDB_PASSWORD + valueFrom: + secretKeyRef: + name: 'release-name-influxdb-auth' + key: influxdb-password + - name: INFLUXDB_USER + valueFrom: + secretKeyRef: + name: 'release-name-influxdb-auth' + key: influxdb-user + - name: NUSSKNACKER_LOG_LEVEL + value: DEBUG + ports: + - name: http + containerPort: 8080 + protocol: TCP + + + livenessProbe: + httpGet: + path: / + port: http + periodSeconds: 5 + failureThreshold: 3 + timeoutSeconds: 5 + startupProbe: + httpGet: + path: / + port: http + periodSeconds: 3 + failureThreshold: 40 + timeoutSeconds: 5 + resources: + limits: + memory: 1Gi + requests: + memory: 512Mi + volumes: + - name: config + configMap: + name: release-name-nussknacker + - name: logging-config + configMap: + name: release-name-nussknacker-logging-conf + - name: storage + emptyDir: {} +--- +# Source: nussknacker/charts/flink/templates/jobmanager.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-flink-jobmanager + labels: + app.kubernetes.io/name: flink + helm.sh/chart: flink-0.2.0 + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.11.2" + app.kubernetes.io/managed-by: Helm + component: jobmanager + annotations: +spec: + replicas: 1 + podManagementPolicy: Parallel + selector: + matchLabels: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: jobmanager + serviceName: release-name-flink-jobmanager-headless + template: + metadata: + labels: + app.kubernetes.io/name: flink + app.kubernetes.io/instance: release-name + component: jobmanager + annotations: + spec: + serviceAccountName: release-name-flink-jobmanager + securityContext: + {} + initContainers: + containers: + - name: jobmanager + image: "flink:1.18.1-scala_2.12-java11" + imagePullPolicy: IfNotPresent + workingDir: /opt/flink + command: + - "/bin/bash" + - "-c" + - "cp /opt/flink/opt/flink-s3-fs-presto-*.jar /opt/flink/lib/ && wget https://repo1.maven.org/maven2/com/github/oshi/oshi-core/3.4.0/oshi-core-3.4.0.jar -O /opt/flink/lib/oshi-core-3.4.0.jar && wget https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.4.0/jna-5.4.0.jar -O /opt/flink/lib/jna-5.4.0.jar && wget https://repo1.maven.org/maven2/net/java/dev/jna/jna-platform/5.4.0/jna-platform-5.4.0.jar -O /opt/flink/lib/jna-platform-5.4.0.jar && cp $FLINK_HOME/conf/flink-conf.yaml.tpl $FLINK_HOME/conf/flink-conf.yaml && $FLINK_HOME/bin/jobmanager.sh start-foreground;" + env: + - name: JVM_ARGS + value: "-Djava.security.properties=/opt/flink/conf/security.properties" + - name: FLINK_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + envFrom: + ports: + - containerPort: 6124 + name: blob + - containerPort: 6123 + name: rpc + - containerPort: 8081 + name: ui + - containerPort: 9999 + name: metrics + readinessProbe: + tcpSocket: + port: 6123 + periodSeconds: 10 + initialDelaySeconds: 20 + livenessProbe: + tcpSocket: + port: 6124 + initialDelaySeconds: 10 + periodSeconds: 15 + volumeMounts: + - name: flink-config-volume + mountPath: /opt/flink/conf/flink-conf.yaml.tpl + subPath: flink-conf.yaml.tpl + - name: flink-config-volume + mountPath: /opt/flink/conf/log4j.properties + subPath: log4j.properties + - name: flink-config-volume + mountPath: /opt/flink/conf/log4j-console.properties + subPath: log4j.properties + - name: flink-config-volume + mountPath: /opt/flink/conf/security.properties + subPath: security.properties + resources: + {} + + volumes: + - name: flink-config-volume + configMap: + name: release-name-flink-config + items: + - key: flink-conf.yaml + path: flink-conf.yaml.tpl + - key: log4j.properties + path: log4j.properties + - key: security.properties + path: security.properties +--- +# Source: nussknacker/charts/influxdb/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-influxdb + labels: + helm.sh/chart: influxdb-4.12.5 + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.8.10" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + serviceName: "release-name-influxdb" + template: + metadata: + labels: + app.kubernetes.io/name: influxdb + app.kubernetes.io/instance: release-name + spec: + serviceAccountName: release-name-influxdb + containers: + - name: release-name-influxdb + image: "influxdb:1.8.10" + imagePullPolicy: "IfNotPresent" + ports: + - name: api + containerPort: 8086 + - name: rpc + containerPort: 8088 + env: + - name: INFLUXDB_DB + value: nussknacker + - name: INFLUXDB_ADMIN_USER + valueFrom: + secretKeyRef: + name: release-name-influxdb-auth + key: influxdb-user + - name: INFLUXDB_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: release-name-influxdb-auth + key: influxdb-password + livenessProbe: + httpGet: + path: /ping + port: api + scheme: HTTP + initialDelaySeconds: 30 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /ping + port: api + scheme: HTTP + initialDelaySeconds: 5 + timeoutSeconds: 1 + volumeMounts: + - name: release-name-influxdb-data + mountPath: /var/lib/influxdb + - name: config + mountPath: /etc/influxdb + volumes: + - name: config + configMap: + name: release-name-influxdb + # Cannot use existing claim in enterprise mode + # Must use volume claim template in enterprise mode + volumeClaimTemplates: + - metadata: + name: release-name-influxdb-data + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" +--- +# Source: nussknacker/charts/kafka/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-kafka + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: kafka + helm.sh/chart: kafka-22.1.6 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: kafka +spec: + podManagementPolicy: Parallel + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: kafka + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: kafka + serviceName: release-name-kafka-headless + updateStrategy: + rollingUpdate: {} + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: kafka + helm.sh/chart: kafka-22.1.6 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: kafka + annotations: + spec: + + hostNetwork: false + hostIPC: false + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: kafka + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: kafka + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + securityContext: + fsGroup: 1001 + serviceAccountName: release-name-kafka + containers: + - name: kafka + image: docker.io/bitnami/kafka:3.4.1-debian-11-r0 + imagePullPolicy: "IfNotPresent" + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 1001 + command: + - /scripts/setup.sh + env: + - name: BITNAMI_DEBUG + value: "false" + - name: MY_POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: KAFKA_CFG_ZOOKEEPER_CONNECT + value: release-name-zookeeper:2181 + - name: KAFKA_INTER_BROKER_LISTENER_NAME + value: "INTERNAL" + - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP + value: "INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT" + - name: KAFKA_CFG_LISTENERS + value: "INTERNAL://:9094,CLIENT://:9092" + - name: KAFKA_CFG_ADVERTISED_LISTENERS + value: "INTERNAL://$(MY_POD_NAME).release-name-kafka-headless.tenant-f882867c-112a-4e60-8b62-496f62cb6441.svc.cluster.local:9094,CLIENT://$(MY_POD_NAME).release-name-kafka-headless.tenant-f882867c-112a-4e60-8b62-496f62cb6441.svc.cluster.local:9092" + - name: ALLOW_PLAINTEXT_LISTENER + value: "yes" + - name: KAFKA_ZOOKEEPER_PROTOCOL + value: PLAINTEXT + - name: KAFKA_VOLUME_DIR + value: "/bitnami/kafka" + - name: KAFKA_LOG_DIR + value: "/opt/bitnami/kafka/logs" + - name: KAFKA_CFG_DELETE_TOPIC_ENABLE + value: "false" + - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE + value: "true" + - name: KAFKA_HEAP_OPTS + value: "-Xmx1024m -Xms1024m" + - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MESSAGES + value: "10000" + - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MS + value: "1000" + - name: KAFKA_CFG_LOG_RETENTION_BYTES + value: "1073741824" + - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVAL_MS + value: "300000" + - name: KAFKA_CFG_LOG_RETENTION_HOURS + value: "168" + - name: KAFKA_CFG_MESSAGE_MAX_BYTES + value: "1000012" + - name: KAFKA_CFG_LOG_SEGMENT_BYTES + value: "1073741824" + - name: KAFKA_CFG_LOG_DIRS + value: "/bitnami/kafka/data" + - name: KAFKA_CFG_DEFAULT_REPLICATION_FACTOR + value: "1" + - name: KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR + value: "1" + - name: KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR + value: "1" + - name: KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR + value: "1" + - name: KAFKA_CFG_NUM_IO_THREADS + value: "8" + - name: KAFKA_CFG_NUM_NETWORK_THREADS + value: "3" + - name: KAFKA_CFG_NUM_PARTITIONS + value: "1" + - name: KAFKA_CFG_NUM_RECOVERY_THREADS_PER_DATA_DIR + value: "1" + - name: KAFKA_CFG_SOCKET_RECEIVE_BUFFER_BYTES + value: "102400" + - name: KAFKA_CFG_SOCKET_REQUEST_MAX_BYTES + value: "104857600" + - name: KAFKA_CFG_SOCKET_SEND_BUFFER_BYTES + value: "102400" + - name: KAFKA_CFG_ZOOKEEPER_CONNECTION_TIMEOUT_MS + value: "6000" + - name: KAFKA_CFG_AUTHORIZER_CLASS_NAME + value: "" + - name: KAFKA_CFG_ALLOW_EVERYONE_IF_NO_ACL_FOUND + value: "true" + - name: KAFKA_CFG_SUPER_USERS + value: "User:admin" + - name: KAFKA_ENABLE_KRAFT + value: "false" + ports: + - name: kafka-client + containerPort: 9092 + - name: kafka-internal + containerPort: 9094 + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + tcpSocket: + port: kafka-client + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + tcpSocket: + port: kafka-client + resources: + limits: {} + requests: {} + volumeMounts: + - name: data + mountPath: /bitnami/kafka + - name: logs + mountPath: /opt/bitnami/kafka/logs + - name: scripts + mountPath: /scripts/setup.sh + subPath: setup.sh + volumes: + - name: scripts + configMap: + name: release-name-kafka-scripts + defaultMode: 0755 + - name: logs + emptyDir: {} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" +--- +# Source: nussknacker/charts/postgresql/templates/primary/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-postgresql + namespace: "tenant-f882867c-112a-4e60-8b62-496f62cb6441" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-12.1.15 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary +spec: + replicas: 1 + serviceName: release-name-postgresql-hl + updateStrategy: + rollingUpdate: {} + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: postgresql + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: primary + template: + metadata: + name: release-name-postgresql + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-12.1.15 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary + spec: + serviceAccountName: default + + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: postgresql + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: primary + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + securityContext: + fsGroup: 1001 + hostNetwork: false + hostIPC: false + initContainers: + - name: init-chmod-data + image: docker.io/bitnami/bitnami-shell:11-debian-11-r81 + imagePullPolicy: "IfNotPresent" + resources: + limits: {} + requests: {} + command: + - /bin/sh + - -ec + - | + chown 1001:1001 /bitnami/postgresql + mkdir -p /bitnami/postgresql/data + chmod 700 /bitnami/postgresql/data + find /bitnami/postgresql -mindepth 1 -maxdepth 1 -not -name "conf" -not -name ".snapshot" -not -name "lost+found" | \ + xargs -r chown -R 1001:1001 + chmod -R 777 /dev/shm + securityContext: + runAsUser: 0 + volumeMounts: + - name: data + mountPath: /bitnami/postgresql + - name: dshm + mountPath: /dev/shm + containers: + - name: postgresql + image: docker.io/bitnami/postgresql:15.2.0-debian-11-r0 + imagePullPolicy: "IfNotPresent" + securityContext: + runAsUser: 1001 + env: + - name: BITNAMI_DEBUG + value: "false" + - name: POSTGRESQL_PORT_NUMBER + value: "5432" + - name: POSTGRESQL_VOLUME_DIR + value: "/bitnami/postgresql" + - name: PGDATA + value: "/bitnami/postgresql/data" + # Authentication + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: release-name-postgresql + key: postgres-password + # Replication + # Initdb + # Standby + # LDAP + - name: POSTGRESQL_ENABLE_LDAP + value: "no" + # TLS + - name: POSTGRESQL_ENABLE_TLS + value: "no" + # Audit + - name: POSTGRESQL_LOG_HOSTNAME + value: "false" + - name: POSTGRESQL_LOG_CONNECTIONS + value: "false" + - name: POSTGRESQL_LOG_DISCONNECTIONS + value: "false" + - name: POSTGRESQL_PGAUDIT_LOG_CATALOG + value: "off" + # Others + - name: POSTGRESQL_CLIENT_MIN_MESSAGES + value: "error" + - name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES + value: "pgaudit" + ports: + - name: tcp-postgresql + containerPort: 5432 + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: + - /bin/sh + - -c + - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: + - /bin/sh + - -c + - -e + + - | + exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ] + resources: + limits: {} + requests: + cpu: 250m + memory: 256Mi + volumeMounts: + - name: dshm + mountPath: /dev/shm + - name: data + mountPath: /bitnami/postgresql + volumes: + - name: dshm + emptyDir: + medium: Memory + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" +--- +# Source: nussknacker/charts/zookeeper/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-zookeeper + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + labels: + app.kubernetes.io/name: zookeeper + helm.sh/chart: zookeeper-11.0.3 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: zookeeper + role: zookeeper +spec: + replicas: 1 + podManagementPolicy: Parallel + selector: + matchLabels: + app.kubernetes.io/name: zookeeper + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: zookeeper + serviceName: release-name-zookeeper-headless + updateStrategy: + rollingUpdate: {} + type: RollingUpdate + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: zookeeper + helm.sh/chart: zookeeper-11.0.3 + app.kubernetes.io/instance: release-name + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: zookeeper + spec: + serviceAccountName: default + + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: zookeeper + app.kubernetes.io/instance: release-name + app.kubernetes.io/component: zookeeper + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + securityContext: + fsGroup: 1001 + initContainers: + containers: + - name: zookeeper + image: docker.io/bitnami/zookeeper:3.8.0-debian-11-r74 + imagePullPolicy: "IfNotPresent" + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 1001 + command: + - /scripts/setup.sh + resources: + limits: {} + requests: + cpu: 250m + memory: 256Mi + env: + - name: BITNAMI_DEBUG + value: "false" + - name: ZOO_DATA_LOG_DIR + value: "" + - name: ZOO_PORT_NUMBER + value: "2181" + - name: ZOO_TICK_TIME + value: "2000" + - name: ZOO_INIT_LIMIT + value: "10" + - name: ZOO_SYNC_LIMIT + value: "5" + - name: ZOO_PRE_ALLOC_SIZE + value: "65536" + - name: ZOO_SNAPCOUNT + value: "100000" + - name: ZOO_MAX_CLIENT_CNXNS + value: "60" + - name: ZOO_4LW_COMMANDS_WHITELIST + value: "srvr, mntr, ruok" + - name: ZOO_LISTEN_ALLIPS_ENABLED + value: "no" + - name: ZOO_AUTOPURGE_INTERVAL + value: "0" + - name: ZOO_AUTOPURGE_RETAIN_COUNT + value: "3" + - name: ZOO_MAX_SESSION_TIMEOUT + value: "40000" + - name: ZOO_SERVERS + value: release-name-zookeeper-0.release-name-zookeeper-headless.tenant-f882867c-112a-4e60-8b62-496f62cb6441.svc.cluster.local:2888:3888::1 + - name: ZOO_ENABLE_AUTH + value: "no" + - name: ZOO_ENABLE_QUORUM_AUTH + value: "no" + - name: ZOO_HEAP_SIZE + value: "1024" + - name: ZOO_LOG_LEVEL + value: "ERROR" + - name: ALLOW_ANONYMOUS_LOGIN + value: "yes" + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + ports: + - name: client + containerPort: 2181 + - name: follower + containerPort: 2888 + - name: election + containerPort: 3888 + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok'] + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok'] + volumeMounts: + - name: scripts + mountPath: /scripts/setup.sh + subPath: setup.sh + - name: data + mountPath: /bitnami/zookeeper + volumes: + - name: scripts + configMap: + name: release-name-zookeeper-scripts + defaultMode: 0755 + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" +--- +# Source: nussknacker/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: release-name-nussknacker + labels: + helm.sh/chart: nussknacker-1.15.0-SNAPSHOT + app.kubernetes.io/name: nussknacker + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "1.15.0-SNAPSHOT" + app.kubernetes.io/managed-by: Helm + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod +spec: + rules: + - http: + paths: + - path: /grafana + pathType: Prefix + backend: + service: + name: release-name-grafana + port: + number: 80 + - path: / + pathType: Prefix + backend: + service: + name: release-name-nussknacker + port: + number: 80 +--- +# Source: nussknacker/templates/extra-deploy.yaml +# Pattern from bitnami +--- +# Source: nussknacker/charts/grafana/templates/tests/test-serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm + name: release-name-grafana-test + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + annotations: + "helm.sh/hook": test-success + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" +--- +# Source: nussknacker/charts/grafana/templates/tests/test-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: release-name-grafana-test + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 + annotations: + "helm.sh/hook": test-success + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm +data: + run.sh: |- + @test "Test Health" { + url="http://release-name-grafana/api/health" + + code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^ HTTP/{print $2}') + [ "$code" == "200" ] + } +--- +# Source: nussknacker/charts/apicurio-registry/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: "release-name-apicurio-registry-test-connection" + labels: + helm.sh/chart: apicurio-registry-0.1.5 + app.kubernetes.io/name: apicurio-registry + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "2.2.5.Final" + app.kubernetes.io/managed-by: Helm + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['release-name-apicurio-registry:80'] + restartPolicy: Never +--- +# Source: nussknacker/charts/grafana/templates/tests/test.yaml +apiVersion: v1 +kind: Pod +metadata: + name: release-name-grafana-test + labels: + helm.sh/chart: grafana-6.61.2 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "10.1.5" + app.kubernetes.io/managed-by: Helm + annotations: + "helm.sh/hook": test-success + "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" + namespace: tenant-f882867c-112a-4e60-8b62-496f62cb6441 +spec: + serviceAccountName: release-name-grafana-test + containers: + - name: release-name-test + image: "docker.io/bats/bats:v1.4.1" + imagePullPolicy: "IfNotPresent" + command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] + volumeMounts: + - mountPath: /tests + name: tests + readOnly: true + volumes: + - name: tests + configMap: + name: release-name-grafana-test + restartPolicy: Never +--- +# Source: nussknacker/templates/tests/test-job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: "release-name-nussknacker-test-job" + annotations: + "helm.sh/hook": test +spec: + activeDeadlineSeconds: 600 + backoffLimit: 0 + template: + spec: + imagePullSecrets: + - name: gitlab-registry + shareProcessNamespace: true + containers: + - name: test-job + image: touk/kafka-bats + imagePullPolicy: Always + command: + - /main-wrapper.sh + - /usr/local/bin/bats + args: + - -t + - //suites/kafka-only.bats + env: + - name: NUSSKNACKER_URL + value: "http://release-name-nussknacker:80" + - name: AUTHORIZATION + value: "Basic YWRtaW46YWRtaW4=" + - name: KAFKA_NAMESPACE + value: release-name + - name: KAFKA_BOOTSTRAP_SERVER + value: "release-name-kafka:9092" + - name: STREAMING_SCENARIO_TYPE + value: "StreamMetaData" + - name: SCHEMA_REGISTRY_URL + value: "http://release-name-apicurio-registry:80/apis/ccompat/v6/" + - name: RR_SCENARIO_INPUT_URL + value: "http://release-name-test-scenario-for-rr-only:80" + volumeMounts: + - name: suites + mountPath: /suites + - name: scripts + mountPath: /main-wrapper.sh + subPath: main-wrapper.sh + - name: pids + mountPath: /var/run/sidecars + restartPolicy: Never + volumes: + - name: pids + emptyDir: {} + - name: suites + configMap: + name: release-name-nussknacker-test-suites + - name: scripts + configMap: + name: release-name-nussknacker-test-scripts + defaultMode: 0755 diff --git a/src/templates/_helpers.tpl b/src/templates/_helpers.tpl index 28b0489..34857be 100644 --- a/src/templates/_helpers.tpl +++ b/src/templates/_helpers.tpl @@ -180,9 +180,9 @@ nussknacker-lite-scenario {{- end -}} {{- define "nussknacker.additionalClassPathModules" -}} -{{- $list := .Values.nussknacker.additionalClassPathModules -}} -{{- if gt (len $list) 0 -}} -{{- printf ",%s" (join $list ",") -}} +{{- $additionalClassPathModules := default (list) .Values.nussknacker.additionalClassPathModules }} +{{- if gt (len $additionalClassPathModules) 0 -}} +{{- printf ", \"%s\"" (join "\", \"" $additionalClassPathModules) -}} {{- else -}} {{- "" -}} {{- end -}} From 1f53f05d6ede4953ed5554122399adb344a02014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 23 Apr 2024 09:30:56 +0200 Subject: [PATCH 3/3] Added readme entry --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 6e0cd6d..45e6dab 100644 --- a/README.md +++ b/README.md @@ -36,3 +36,9 @@ Examples: - `./build-deploy-verify.sh release-name -f deploy-values-streaming-lite.yaml -f examples/customSecret/custom-secret-values.yaml` - deploy chart in streaming-lite mode, passing secret to both designer and runtime container (see description in `custom-secret-values.yaml`) - `./build-deploy-verify.sh release-name -f deploy-values-streaming-lite.yaml -f examples/custom-logging.yaml` - deploy chart in streaming-lite mode with custom logging configuration of the designer and runtime containers (see description in `custom-logging.yaml`) - `./build-deploy-verify.sh release-name -f examples/customConfig/custom-conf-values.yaml` - deploy chart in streaming-lite mode with additional config map with custom application.conf configuration of the designer + +### Rendering helm locally +To check how helm is rendered with default values, you can execute helm this way in root directory: +``` +helm template -f deploy-values.yaml --set "image.tag=staging-latest" --debug ./src +``` \ No newline at end of file