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 01/47] 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 02/47] 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 03/47] 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 From 3a1114cbf9ac753b9fced3f3ed131a39297ba4dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 11 Jun 2024 17:11:14 +0200 Subject: [PATCH 04/47] Added handling for flink-k8s-operator --- src/templates/_helpers.tpl | 2 +- src/templates/configmap.yaml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/templates/_helpers.tpl b/src/templates/_helpers.tpl index 34857be..448209d 100644 --- a/src/templates/_helpers.tpl +++ b/src/templates/_helpers.tpl @@ -191,7 +191,7 @@ nussknacker-lite-scenario {{- define "nussknacker.streaming.modelClassPath" -}} {{- if .Values.nussknacker.streaming.modelClassPath -}} {{ tpl ( mustToJson .Values.nussknacker.streaming.modelClassPath) . }} -{{- else if eq .Values.nussknacker.mode "flink" -}} +{{- else if or (eq .Values.nussknacker.mode "flink") (eq .Values.nussknacker.mode "flink-k8s-operator") -}} ["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"{{ include "nussknacker.additionalClassPathModules" . }}] diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index f78931f..76ef4e2 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -23,6 +23,11 @@ data: {{- /* Find easier way of passing it through values */}} restUrl: "{{ include "nussknacker.flinkJobManagerUrl" . }}" } {{ tpl (.Values.nussknacker.flinkConfig | mustToJson) . }} + {{- else if eq .Values.nussknacker.mode "flink-k8s-operator" }} + deploymentConfig: { + type: "flink-k8s-operator" + k8sNamespace: {{ template "nussknacker.namespace" . }} + } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { type: "ververica" From a305c66e43a8243e64b7c6c822e6f527b11b5d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 11 Jun 2024 20:18:40 +0200 Subject: [PATCH 05/47] Added config field --- src/templates/configmap.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 76ef4e2..ea0572d 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,6 +27,7 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} + localDirectoryForPayloadJars: "/mnt/payloads" } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { From e1ce7f9ee5852cfea4f2206edd7a31a21287a5cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Thu, 13 Jun 2024 10:56:10 +0200 Subject: [PATCH 06/47] added sharedDirectory field --- src/templates/configmap.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index ea0572d..6c8a1ac 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,7 +27,7 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} - localDirectoryForPayloadJars: "/mnt/payloads" + sharedDirectory: "/mnt/payloads" } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { From 87d14ae29343bd5a0c9e6cf214c733e562d8dfc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 14 Jun 2024 14:04:51 +0200 Subject: [PATCH 07/47] Added missing conf field --- src/templates/configmap.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 6c8a1ac..e2196ee 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -28,6 +28,7 @@ data: type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} sharedDirectory: "/mnt/payloads" + persistenceVolumeClaimName: "payload-pvc-nfs" } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { From ed69a1197b05f860695bdcdd27085762c7d47197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 20:23:39 +0200 Subject: [PATCH 08/47] Added some flink-k8s-operator related yamls --- .../flink-deployment-creator-role.yaml | 8 ++++++++ .../flink-deployment-creator-rolebinding.yaml | 11 +++++++++++ .../flink-service-account-clusterrolebinding.yaml | 14 ++++++++++++++ .../flink-k8s-operator/service-account.yaml | 4 ++++ .../flink-k8s-operator/shared-volume-pvc.yaml | 11 +++++++++++ src/values.yaml | 3 +++ 6 files changed, 51 insertions(+) create mode 100644 src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml create mode 100644 src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml create mode 100644 src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml create mode 100644 src/templates/flink-k8s-operator/service-account.yaml create mode 100644 src/templates/flink-k8s-operator/shared-volume-pvc.yaml diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml new file mode 100644 index 0000000..ce83ac3 --- /dev/null +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -0,0 +1,8 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: flink-deployment-creator +rules: +- apiGroups: ["flink.apache.org"] + resources: ["flinkdeployments"] + verbs: ["create", "delete", "list", "update", "get"] diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml new file mode 100644 index 0000000..871f2c9 --- /dev/null +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -0,0 +1,11 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: flink-deployment-creator-binding +subjects: +- kind: ServiceAccount + name: nussknacker +roleRef: + kind: Role + name: flink-deployment-creator + apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml new file mode 100644 index 0000000..7112fda --- /dev/null +++ b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Values.clusterRoleBinding.name }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ .Values.clusterRoleBinding.roleName }} +subjects: +{{- range .Values.clusterRoleBinding.subjects }} +- kind: ServiceAccount + name: {{ .name }} + namespace: {{ .namespace }} +{{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/service-account.yaml b/src/templates/flink-k8s-operator/service-account.yaml new file mode 100644 index 0000000..899edcd --- /dev/null +++ b/src/templates/flink-k8s-operator/service-account.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: flink-service-account \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml new file mode 100644 index 0000000..89606fb --- /dev/null +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: payload-pvc-nfs +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi + storageClassName: nfs \ No newline at end of file diff --git a/src/values.yaml b/src/values.yaml index fae630e..60fde1f 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -219,6 +219,9 @@ flink: jobmanager: statefulset: true +flink-k8s-operator: + enabled: true + grafana: enabled: true grafana.ini: From 3a3b5ac9d993ae77b4955eef56d62332daea2f79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 20:30:15 +0200 Subject: [PATCH 09/47] Added condition checking for clusterRoleBinding --- .../flink-service-account-clusterrolebinding.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml index 7112fda..3b49945 100644 --- a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml @@ -1,3 +1,4 @@ +{{- if .Values.clusterRoleBinding }} apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: @@ -11,4 +12,5 @@ subjects: - kind: ServiceAccount name: {{ .name }} namespace: {{ .namespace }} +{{- end }} {{- end }} \ No newline at end of file From 297d860a5d132a4d920a7d2565fbc8a5f806aed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 20:57:32 +0200 Subject: [PATCH 10/47] Added conditionals --- .../flink-k8s-operator/flink-deployment-creator-role.yaml | 2 ++ .../flink-deployment-creator-rolebinding.yaml | 4 +++- src/templates/flink-k8s-operator/service-account.yaml | 4 +++- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 4 +++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index ce83ac3..9f4645c 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -1,3 +1,4 @@ +{{- if .Values.flink-k8s-operator.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: @@ -6,3 +7,4 @@ rules: - apiGroups: ["flink.apache.org"] resources: ["flinkdeployments"] verbs: ["create", "delete", "list", "update", "get"] +{{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index 871f2c9..0ae4486 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -1,3 +1,4 @@ +{{- if .Values.flink-k8s-operator.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: @@ -8,4 +9,5 @@ subjects: roleRef: kind: Role name: flink-deployment-creator - apiGroup: rbac.authorization.k8s.io \ No newline at end of file + apiGroup: rbac.authorization.k8s.io +{{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/service-account.yaml b/src/templates/flink-k8s-operator/service-account.yaml index 899edcd..79e6a67 100644 --- a/src/templates/flink-k8s-operator/service-account.yaml +++ b/src/templates/flink-k8s-operator/service-account.yaml @@ -1,4 +1,6 @@ +{{- if .Values.flink-k8s-operator.enabled }} apiVersion: v1 kind: ServiceAccount metadata: - name: flink-service-account \ No newline at end of file + name: flink-service-account +{{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 89606fb..1c2db9c 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -1,3 +1,4 @@ +{{- if .Values.flink-k8s-operator.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -8,4 +9,5 @@ spec: resources: requests: storage: 1Gi - storageClassName: nfs \ No newline at end of file + storageClassName: nfs +{{- end }} \ No newline at end of file From f96f62945e8a3eeae8ba69d8ea731102666acdca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 21:01:25 +0200 Subject: [PATCH 11/47] test --- src/templates/flink-k8s-operator/service-account.yaml | 4 ++-- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/templates/flink-k8s-operator/service-account.yaml b/src/templates/flink-k8s-operator/service-account.yaml index 79e6a67..896e6cb 100644 --- a/src/templates/flink-k8s-operator/service-account.yaml +++ b/src/templates/flink-k8s-operator/service-account.yaml @@ -1,6 +1,6 @@ -{{- if .Values.flink-k8s-operator.enabled }} +{{- if .Values.flink-k8s-operator.enabled -}} apiVersion: v1 kind: ServiceAccount metadata: name: flink-service-account -{{- end }} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 1c2db9c..49c791c 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.flink-k8s-operator.enabled }} +{{- if .Values.flink-k8s-operator.enabled -}} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -10,4 +10,4 @@ spec: requests: storage: 1Gi storageClassName: nfs -{{- end }} \ No newline at end of file +{{- end -}} \ No newline at end of file From abdf96e38d9b0c8bc205ac2402d032f160d888af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 21:07:03 +0200 Subject: [PATCH 12/47] test --- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 49c791c..1c2db9c 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.flink-k8s-operator.enabled -}} +{{- if .Values.flink-k8s-operator.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -10,4 +10,4 @@ spec: requests: storage: 1Gi storageClassName: nfs -{{- end -}} \ No newline at end of file +{{- end }} \ No newline at end of file From a64fdd2bfa53f8d9a1a6acf711443adabd814f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 21:11:34 +0200 Subject: [PATCH 13/47] test --- .../flink-k8s-operator/flink-deployment-creator-role.yaml | 2 +- .../flink-deployment-creator-rolebinding.yaml | 2 +- .../flink-service-account-clusterrolebinding.yaml | 2 ++ src/templates/flink-k8s-operator/service-account.yaml | 2 +- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index 9f4645c..f7cbfaf 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -1,4 +1,4 @@ -{{- if .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index 0ae4486..5562774 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -1,4 +1,4 @@ -{{- if .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: diff --git a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml index 3b49945..ea1316e 100644 --- a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml @@ -1,3 +1,4 @@ +{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} {{- if .Values.clusterRoleBinding }} apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -13,4 +14,5 @@ subjects: name: {{ .name }} namespace: {{ .namespace }} {{- end }} +{{- end }} {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/service-account.yaml b/src/templates/flink-k8s-operator/service-account.yaml index 896e6cb..9ac7fd5 100644 --- a/src/templates/flink-k8s-operator/service-account.yaml +++ b/src/templates/flink-k8s-operator/service-account.yaml @@ -1,4 +1,4 @@ -{{- if .Values.flink-k8s-operator.enabled -}} +{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} apiVersion: v1 kind: ServiceAccount metadata: diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 1c2db9c..414ac4d 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: From 702bf1d46b32534bca68c18364044dc124b71ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 21:15:32 +0200 Subject: [PATCH 14/47] test --- .../flink-k8s-operator/flink-deployment-creator-role.yaml | 2 +- .../flink-deployment-creator-rolebinding.yaml | 2 +- .../flink-service-account-clusterrolebinding.yaml | 2 +- src/templates/flink-k8s-operator/service-account.yaml | 2 +- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 2 +- src/values.yaml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index f7cbfaf..94dff88 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index 5562774..20bff30 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: diff --git a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml index ea1316e..9f51679 100644 --- a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} {{- if .Values.clusterRoleBinding }} apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding diff --git a/src/templates/flink-k8s-operator/service-account.yaml b/src/templates/flink-k8s-operator/service-account.yaml index 9ac7fd5..68dc10f 100644 --- a/src/templates/flink-k8s-operator/service-account.yaml +++ b/src/templates/flink-k8s-operator/service-account.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} apiVersion: v1 kind: ServiceAccount metadata: diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 414ac4d..b46e6b6 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values "flink-k8s-operator") .Values.flink-k8s-operator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: diff --git a/src/values.yaml b/src/values.yaml index 60fde1f..363657b 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -219,7 +219,7 @@ flink: jobmanager: statefulset: true -flink-k8s-operator: +flinkK8sOperator: enabled: true grafana: From 58678d780b0785a1bfbaadda014457736a66b889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 18 Jun 2024 21:23:16 +0200 Subject: [PATCH 15/47] test --- src/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/values.yaml b/src/values.yaml index 363657b..26d0325 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -220,7 +220,7 @@ flink: statefulset: true flinkK8sOperator: - enabled: true + enabled: false grafana: enabled: true From 8531fbb5d79e9a28ffe2673c37c6ecf7cbc4d56c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Wed, 19 Jun 2024 10:47:41 +0200 Subject: [PATCH 16/47] experimenting with flink operator role --- .../flink-operator-role.yaml | 10 ++++++++++ .../flink-operator-rolebinding.yaml | 13 +++++++++++++ ...ink-service-account-clusterrolebinding.yaml | 18 ------------------ 3 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 src/templates/flink-k8s-operator/flink-operator-role.yaml create mode 100644 src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml delete mode 100644 src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml new file mode 100644 index 0000000..4445bb8 --- /dev/null +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -0,0 +1,10 @@ +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: flink-operator-role +rules: +- apiGroups: [""] + resources: ["pods"] + verbs: ["create", "get", "list", "watch", "update", "delete"] +{{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml new file mode 100644 index 0000000..da1134a --- /dev/null +++ b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml @@ -0,0 +1,13 @@ +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: flink-operator-rolebinding +subjects: +- kind: ServiceAccount + name: flink-service-account +roleRef: + kind: Role + name: flink-operator-role + apiGroup: rbac.authorization.k8s.io +{{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml b/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml deleted file mode 100644 index 9f51679..0000000 --- a/src/templates/flink-k8s-operator/flink-service-account-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} -{{- if .Values.clusterRoleBinding }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Values.clusterRoleBinding.name }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Values.clusterRoleBinding.roleName }} -subjects: -{{- range .Values.clusterRoleBinding.subjects }} -- kind: ServiceAccount - name: {{ .name }} - namespace: {{ .namespace }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file From 37f4956b06b1c831e0548c0921bb6266b83bb934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Wed, 19 Jun 2024 14:42:02 +0200 Subject: [PATCH 17/47] fix --- src/templates/flink-k8s-operator/flink-operator-role.yaml | 3 +++ .../{service-account.yaml => flink-service-account.yaml} | 0 2 files changed, 3 insertions(+) rename src/templates/flink-k8s-operator/{service-account.yaml => flink-service-account.yaml} (100%) diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml index 4445bb8..c7421d2 100644 --- a/src/templates/flink-k8s-operator/flink-operator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -7,4 +7,7 @@ rules: - apiGroups: [""] resources: ["pods"] verbs: ["create", "get", "list", "watch", "update", "delete"] +- apiGroups: ["apps"] + resources: ["deployments"] + verbs: ["create", "get", "list", "watch", "update", "delete"] {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/service-account.yaml b/src/templates/flink-k8s-operator/flink-service-account.yaml similarity index 100% rename from src/templates/flink-k8s-operator/service-account.yaml rename to src/templates/flink-k8s-operator/flink-service-account.yaml From 7817e8387a3e3a80ba9aa95d550d724869b3f292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Thu, 20 Jun 2024 15:28:07 +0200 Subject: [PATCH 18/47] Added resource policy to keep payload-pvc-nfs --- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index b46e6b6..046a8a4 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -3,6 +3,8 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: payload-pvc-nfs + annotations: + "helm.sh/resource-policy": keep spec: accessModes: - ReadWriteMany From 65e2ee88671a69b3b6601ac9ad3b805e3e166e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Thu, 20 Jun 2024 18:29:05 +0200 Subject: [PATCH 19/47] Testing pre-delete flink deployments script --- .../pre-delete-flink-deployments.yaml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml diff --git a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml new file mode 100644 index 0000000..76245de --- /dev/null +++ b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml @@ -0,0 +1,25 @@ +{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: delete-flinkdeployments + labels: +{{ include "nussknacker.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-weight": "0" + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +spec: + template: + spec: + containers: + - name: delete-flinkdeployments + image: bitnami/kubectl:latest + command: + - /bin/sh + - -c + - | + kubectl delete flinkdeployments --all -n {{ .Release.Namespace }} + restartPolicy: Never + backoffLimit: 1 +{{- end }} \ No newline at end of file From 24ec073ec23137bcfce2fc08d71f687370afd813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 24 Jun 2024 18:29:56 +0200 Subject: [PATCH 20/47] test --- .../flink-k8s-operator/pre-delete-flink-deployments.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml index 76245de..ce3344a 100644 --- a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml @@ -4,17 +4,21 @@ kind: Job metadata: name: delete-flinkdeployments labels: -{{ include "nussknacker.labels" . | nindent 4 }} + {{ include "nussknacker.labels" . | nindent 4 }} annotations: "helm.sh/hook": pre-delete "helm.sh/hook-weight": "0" "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded spec: template: + metadata: + labels: + {{ include "nussknacker.labels" . | nindent 8 }} spec: containers: - name: delete-flinkdeployments image: bitnami/kubectl:latest + imagePullPolicy: IfNotPresent command: - /bin/sh - -c @@ -22,4 +26,4 @@ spec: kubectl delete flinkdeployments --all -n {{ .Release.Namespace }} restartPolicy: Never backoffLimit: 1 -{{- end }} \ No newline at end of file +{{- end }} From 7d40bc8068c969867ac89eb54c5cbb58eac001ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 24 Jun 2024 18:35:33 +0200 Subject: [PATCH 21/47] improvement --- .../flink-k8s-operator/pre-delete-flink-deployments.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml index ce3344a..b68780b 100644 --- a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml @@ -15,6 +15,7 @@ spec: labels: {{ include "nussknacker.labels" . | nindent 8 }} spec: + serviceAccountName: nussknacker containers: - name: delete-flinkdeployments image: bitnami/kubectl:latest From 525125dc1298030e42cb8bea0be2e49fba61e229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 24 Jun 2024 19:33:09 +0200 Subject: [PATCH 22/47] Added quota info --- .../flink-k8s-operator/pre-delete-flink-deployments.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml index b68780b..928cc68 100644 --- a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml @@ -15,7 +15,7 @@ spec: labels: {{ include "nussknacker.labels" . | nindent 8 }} spec: - serviceAccountName: nussknacker + serviceAccountName: flink-delete-sa containers: - name: delete-flinkdeployments image: bitnami/kubectl:latest @@ -25,6 +25,13 @@ spec: - -c - | kubectl delete flinkdeployments --all -n {{ .Release.Namespace }} + resources: + limits: + cpu: "100m" + memory: "30Mi" + requests: + cpu: "100m" + memory: "30Mi" restartPolicy: Never backoffLimit: 1 {{- end }} From 1bdf44d05236c04e2b57efe688b2470246cdc543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 24 Jun 2024 19:43:10 +0200 Subject: [PATCH 23/47] fix --- .../flink-deployment-creator-rolebinding.yaml | 2 +- .../flink-k8s-operator/pre-delete-flink-deployments.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index 20bff30..4ad9149 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -5,7 +5,7 @@ metadata: name: flink-deployment-creator-binding subjects: - kind: ServiceAccount - name: nussknacker + name: {{ include "nussknacker.serviceAccountName" . }} roleRef: kind: Role name: flink-deployment-creator diff --git a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml index 928cc68..2059bcb 100644 --- a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml @@ -15,7 +15,7 @@ spec: labels: {{ include "nussknacker.labels" . | nindent 8 }} spec: - serviceAccountName: flink-delete-sa + serviceAccountName: nussknacker containers: - name: delete-flinkdeployments image: bitnami/kubectl:latest From fc129547d6edf462bec608e2b5e7064be4e89ccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 24 Jun 2024 21:23:16 +0200 Subject: [PATCH 24/47] Improvements --- ...ink-deployments.yaml => delete-flink-deployments.yaml} | 4 ++-- .../flink-k8s-operator/flink-deployment-creator-role.yaml | 4 ++-- .../flink-deployment-creator-rolebinding.yaml | 6 +++--- src/templates/flink-k8s-operator/flink-operator-role.yaml | 4 ++-- .../flink-k8s-operator/flink-operator-rolebinding.yaml | 8 ++++---- .../flink-k8s-operator/flink-service-account.yaml | 4 ++-- src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 8 +++++--- src/values.yaml | 4 +++- 8 files changed, 23 insertions(+), 19 deletions(-) rename src/templates/flink-k8s-operator/{pre-delete-flink-deployments.yaml => delete-flink-deployments.yaml} (82%) diff --git a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml similarity index 82% rename from src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml rename to src/templates/flink-k8s-operator/delete-flink-deployments.yaml index 2059bcb..87848a5 100644 --- a/src/templates/flink-k8s-operator/pre-delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: batch/v1 kind: Job metadata: @@ -15,7 +15,7 @@ spec: labels: {{ include "nussknacker.labels" . | nindent 8 }} spec: - serviceAccountName: nussknacker + serviceAccountName: {{ include "nussknacker.serviceAccountName" . }} containers: - name: delete-flinkdeployments image: bitnami/kubectl:latest diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index 94dff88..e89769d 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -1,8 +1,8 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: - name: flink-deployment-creator + name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} rules: - apiGroups: ["flink.apache.org"] resources: ["flinkdeployments"] diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index 4ad9149..aa7171e 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -1,13 +1,13 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - name: flink-deployment-creator-binding + name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }}-rolebinding subjects: - kind: ServiceAccount name: {{ include "nussknacker.serviceAccountName" . }} roleRef: kind: Role - name: flink-deployment-creator + name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} apiGroup: rbac.authorization.k8s.io {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml index c7421d2..72c8c05 100644 --- a/src/templates/flink-k8s-operator/flink-operator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -1,8 +1,8 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: - name: flink-operator-role + name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} rules: - apiGroups: [""] resources: ["pods"] diff --git a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml index da1134a..acdc1b9 100644 --- a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml @@ -1,13 +1,13 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - name: flink-operator-rolebinding + name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }}-rolebinding subjects: - kind: ServiceAccount - name: flink-service-account + name: {{ default "flink-service-account" .Values.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} roleRef: kind: Role - name: flink-operator-role + name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} apiGroup: rbac.authorization.k8s.io {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-service-account.yaml b/src/templates/flink-k8s-operator/flink-service-account.yaml index 68dc10f..d68798e 100644 --- a/src/templates/flink-k8s-operator/flink-service-account.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account.yaml @@ -1,6 +1,6 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: ServiceAccount metadata: - name: flink-service-account + name: {{ default "flink-service-account" .Values.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} {{- end -}} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 046a8a4..95a3aef 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -1,15 +1,17 @@ -{{- if and (hasKey .Values "flinkK8sOperator") .Values.flinkK8sOperator.enabled }} +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: payload-pvc-nfs + name: {{ .Values.flinkK8sOperatorDeploymentManager.sharedPVC.name }} +{{- if and (hasKey .Values.flinkK8sOperatorDeploymentManager.sharedPVC "keepAfterUninstall") .Values.flinkK8sOperatorDeploymentManager.sharedPVC.keepAfterUninstall }} annotations: "helm.sh/resource-policy": keep +{{- end }} spec: accessModes: - ReadWriteMany resources: requests: - storage: 1Gi + storage: {{ default "1Gi" .Values.flinkK8sOperatorDeploymentManager.sharedPVC.storageSize }} storageClassName: nfs {{- end }} \ No newline at end of file diff --git a/src/values.yaml b/src/values.yaml index 26d0325..f378743 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -219,8 +219,10 @@ flink: jobmanager: statefulset: true -flinkK8sOperator: +flinkK8sOperatorDeploymentManager: enabled: false + sharedPVC: + name: payload-pvc-nfs grafana: enabled: true From e5219b693288ccee42f384711b10535357e405ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 24 Jun 2024 22:27:54 +0200 Subject: [PATCH 25/47] improvements --- .../flink-k8s-operator/flink-deployment-creator-role.yaml | 2 ++ .../flink-deployment-creator-rolebinding.yaml | 2 ++ src/templates/flink-k8s-operator/flink-operator-role.yaml | 2 ++ .../flink-k8s-operator/flink-operator-rolebinding.yaml | 2 ++ src/templates/flink-k8s-operator/flink-service-account.yaml | 2 ++ src/templates/flink-k8s-operator/shared-volume-pvc.yaml | 2 ++ 6 files changed, 12 insertions(+) diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index e89769d..8607e6e 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -3,6 +3,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} + labels: + {{ include "nussknacker.labels" . | nindent 4 }} rules: - apiGroups: ["flink.apache.org"] resources: ["flinkdeployments"] diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index aa7171e..651d031 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -3,6 +3,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }}-rolebinding + labels: + {{ include "nussknacker.labels" . | nindent 4 }} subjects: - kind: ServiceAccount name: {{ include "nussknacker.serviceAccountName" . }} diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml index 72c8c05..d2e1401 100644 --- a/src/templates/flink-k8s-operator/flink-operator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -3,6 +3,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} + labels: + {{ include "nussknacker.labels" . | nindent 4 }} rules: - apiGroups: [""] resources: ["pods"] diff --git a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml index acdc1b9..60ecb08 100644 --- a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml @@ -3,6 +3,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }}-rolebinding + labels: + {{ include "nussknacker.labels" . | nindent 4 }} subjects: - kind: ServiceAccount name: {{ default "flink-service-account" .Values.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} diff --git a/src/templates/flink-k8s-operator/flink-service-account.yaml b/src/templates/flink-k8s-operator/flink-service-account.yaml index d68798e..9ca5367 100644 --- a/src/templates/flink-k8s-operator/flink-service-account.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account.yaml @@ -3,4 +3,6 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ default "flink-service-account" .Values.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} + labels: + {{ include "nussknacker.labels" . | nindent 4 }} {{- end -}} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml index 95a3aef..22fa604 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/shared-volume-pvc.yaml @@ -7,6 +7,8 @@ metadata: annotations: "helm.sh/resource-policy": keep {{- end }} + labels: + {{ include "nussknacker.labels" . | nindent 4 }} spec: accessModes: - ReadWriteMany From f6131565c1a3655c08b9e1586e0a67ab28384cc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 25 Jun 2024 08:20:36 +0200 Subject: [PATCH 26/47] toggle for deleting flink deployments --- src/templates/flink-k8s-operator/delete-flink-deployments.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/templates/flink-k8s-operator/delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml index 87848a5..9c76fbf 100644 --- a/src/templates/flink-k8s-operator/delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml @@ -1,4 +1,5 @@ {{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if not (and (hasKey .Values.flinkK8sOperatorDeploymentManager "keepFlinkDeploymentsOnUninstall") (.Values.flinkK8sOperatorDeploymentManager.keepFlinkDeploymentsOnUninstall)) }} apiVersion: batch/v1 kind: Job metadata: @@ -35,3 +36,4 @@ spec: restartPolicy: Never backoffLimit: 1 {{- end }} +{{- end }} From a89f9bcbdd75e94f5f841f7a66c93e593c85fd19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 25 Jun 2024 08:49:40 +0200 Subject: [PATCH 27/47] Moved sharedDirectoryMount to config --- src/templates/configmap.yaml | 4 ++-- src/values.yaml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index e2196ee..1b3d5d2 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,8 +27,8 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} - sharedDirectory: "/mnt/payloads" - persistenceVolumeClaimName: "payload-pvc-nfs" + sharedDirectory: {{ .Values.flinkK8sOperatorDeploymentManager.sharedDirectoryMount | quote }} + persistenceVolumeClaimName: {{ .Values.flinkK8sOperatorDeploymentManager.sharedPVC.name | quote }} } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { diff --git a/src/values.yaml b/src/values.yaml index f378743..9982ac0 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -221,6 +221,7 @@ flink: flinkK8sOperatorDeploymentManager: enabled: false + sharedDirectoryMount: /mnt/payloads sharedPVC: name: payload-pvc-nfs From 32ac9de25c86e043dc1d5e7b1e21bd8cf3451e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 25 Jun 2024 08:59:56 +0200 Subject: [PATCH 28/47] removed unnecessary file --- out | 11209 ---------------------------------------------------------- 1 file changed, 11209 deletions(-) delete mode 100644 out diff --git a/out b/out deleted file mode 100644 index 51c42d1..0000000 --- a/out +++ /dev/null @@ -1,11209 +0,0 @@ ---- -# 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 From 0da25df81af69105c48339981f8830558c2b21b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 25 Jun 2024 09:26:32 +0200 Subject: [PATCH 29/47] Adapted to changed config file --- src/templates/configmap.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 1b3d5d2..ca7485a 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,7 +27,7 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} - sharedDirectory: {{ .Values.flinkK8sOperatorDeploymentManager.sharedDirectoryMount | quote }} + sharedDirectoryMount: {{ .Values.flinkK8sOperatorDeploymentManager.sharedDirectoryMount | quote }} persistenceVolumeClaimName: {{ .Values.flinkK8sOperatorDeploymentManager.sharedPVC.name | quote }} } {{- else if eq .Values.nussknacker.mode "ververica" }} From 2048a14b1f8c7ebe8186edc796ce387ea3493389 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 25 Jun 2024 20:18:35 +0200 Subject: [PATCH 30/47] Added influx config for flink k8s operator --- src/templates/configmap.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index ca7485a..4440ef8 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -29,6 +29,8 @@ data: k8sNamespace: {{ template "nussknacker.namespace" . }} sharedDirectoryMount: {{ .Values.flinkK8sOperatorDeploymentManager.sharedDirectoryMount | quote }} persistenceVolumeClaimName: {{ .Values.flinkK8sOperatorDeploymentManager.sharedPVC.name | quote }} + influxdbUsername: ${INFLUXDB_USER} + influxdbPassword: ${INFLUXDB_PASSWORD} } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { From 2942f7ba052f31a691661981beafe27c2dc83062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Mon, 15 Jul 2024 16:45:44 +0200 Subject: [PATCH 31/47] Added job state storage + refactor --- src/templates/configmap.yaml | 6 ++++-- ...me-pvc.yaml => jar-shared-volume-pvc.yaml} | 6 +++--- .../job-state-shared-volume-pvc.yaml | 19 +++++++++++++++++++ src/values.yaml | 9 ++++++--- 4 files changed, 32 insertions(+), 8 deletions(-) rename src/templates/flink-k8s-operator/{shared-volume-pvc.yaml => jar-shared-volume-pvc.yaml} (61%) create mode 100644 src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 4440ef8..331d2b0 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,8 +27,10 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} - sharedDirectoryMount: {{ .Values.flinkK8sOperatorDeploymentManager.sharedDirectoryMount | quote }} - persistenceVolumeClaimName: {{ .Values.flinkK8sOperatorDeploymentManager.sharedPVC.name | quote }} + jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} + jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} + jobStateStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName | quote }} + jobStateStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.mountPoint | quote }} influxdbUsername: ${INFLUXDB_USER} influxdbPassword: ${INFLUXDB_PASSWORD} } diff --git a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml similarity index 61% rename from src/templates/flink-k8s-operator/shared-volume-pvc.yaml rename to src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml index 22fa604..8dd1fec 100644 --- a/src/templates/flink-k8s-operator/shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml @@ -2,8 +2,8 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: {{ .Values.flinkK8sOperatorDeploymentManager.sharedPVC.name }} -{{- if and (hasKey .Values.flinkK8sOperatorDeploymentManager.sharedPVC "keepAfterUninstall") .Values.flinkK8sOperatorDeploymentManager.sharedPVC.keepAfterUninstall }} + name: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName }} +{{- if and (hasKey .Values.flinkK8sOperatorDeploymentManager.jobJarStorage "keepAfterUninstall") .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.keepAfterUninstall }} annotations: "helm.sh/resource-policy": keep {{- end }} @@ -14,6 +14,6 @@ spec: - ReadWriteMany resources: requests: - storage: {{ default "1Gi" .Values.flinkK8sOperatorDeploymentManager.sharedPVC.storageSize }} + storage: {{ default "1Gi" .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcSize }} storageClassName: nfs {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml new file mode 100644 index 0000000..73bf450 --- /dev/null +++ b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml @@ -0,0 +1,19 @@ +{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName }} +{{- if and (hasKey .Values.flinkK8sOperatorDeploymentManager.jobStateStorage "keepAfterUninstall") .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.keepAfterUninstall }} + annotations: + "helm.sh/resource-policy": keep +{{- end }} + labels: + {{ include "nussknacker.labels" . | nindent 4 }} +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: {{ default "1Gi" .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcSize }} + storageClassName: nfs +{{- end }} \ No newline at end of file diff --git a/src/values.yaml b/src/values.yaml index 9982ac0..4914489 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -221,9 +221,12 @@ flink: flinkK8sOperatorDeploymentManager: enabled: false - sharedDirectoryMount: /mnt/payloads - sharedPVC: - name: payload-pvc-nfs + jobJarStorage: + pvcName: job-jars-pvc + mountPoint: /mnt/payloads + jobStateStorage: + pvcName: job-states-pvc + mountPoint: /mnt/jobstates grafana: enabled: true From 115fd4853317b858d47b50a3a150a4297b3197f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 23 Jul 2024 11:08:07 +0200 Subject: [PATCH 32/47] Fixed grafana dashboard --- src/templates/_helpers.tpl | 2 +- src/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/_helpers.tpl b/src/templates/_helpers.tpl index 448209d..c8f4814 100644 --- a/src/templates/_helpers.tpl +++ b/src/templates/_helpers.tpl @@ -170,7 +170,7 @@ http://{{ include "apicurio-registry.fullname" ( index .Subcharts "apicurio-regi {{- end -}} {{- define "nussknacker.streaming.dashboard" -}} -{{- if eq .Values.nussknacker.mode "flink" -}} +{{- if or (eq .Values.nussknacker.mode "flink") (eq .Values.nussknacker.mode "flink-k8s-operator") -}} nussknacker-scenario {{- else if eq .Values.nussknacker.mode "lite-k8s" -}} nussknacker-lite-scenario diff --git a/src/values.yaml b/src/values.yaml index 4914489..dc6881d 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -223,7 +223,7 @@ flinkK8sOperatorDeploymentManager: enabled: false jobJarStorage: pvcName: job-jars-pvc - mountPoint: /mnt/payloads + mountPoint: /mnt/jobjars jobStateStorage: pvcName: job-states-pvc mountPoint: /mnt/jobstates From 0c011e8488358e573c4a49e68f6e58208f936c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Wed, 24 Jul 2024 12:07:08 +0200 Subject: [PATCH 33/47] Added additional permissions to flink-service-account --- src/templates/flink-k8s-operator/flink-operator-role.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml index d2e1401..1d0649b 100644 --- a/src/templates/flink-k8s-operator/flink-operator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -9,6 +9,9 @@ rules: - apiGroups: [""] resources: ["pods"] verbs: ["create", "get", "list", "watch", "update", "delete"] +- apiGroups: [""] + resources: ["configmaps"] + verbs: ["create", "get", "list", "watch", "update", "delete"] - apiGroups: ["apps"] resources: ["deployments"] verbs: ["create", "get", "list", "watch", "update", "delete"] From 086805449b0279182eee0172f7d99c2f4425f091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Thu, 25 Jul 2024 09:51:13 +0200 Subject: [PATCH 34/47] Added flinkVersion to config --- src/templates/configmap.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 331d2b0..64004b1 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,6 +27,7 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} + flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} jobStateStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName | quote }} From fc2ed02b590b7115738c6736201953a11973ca6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Thu, 25 Jul 2024 09:55:55 +0200 Subject: [PATCH 35/47] fix --- src/values.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/values.yaml b/src/values.yaml index dc6881d..8ef8032 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -221,6 +221,7 @@ flink: flinkK8sOperatorDeploymentManager: enabled: false + flinkVersion: "1.17" jobJarStorage: pvcName: job-jars-pvc mountPoint: /mnt/jobjars From 2e482d8c8a285cfea9d592947ab890faaa93cf06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 08:58:34 +0200 Subject: [PATCH 36/47] Added limitOfRunningScenarios config parameter --- src/templates/configmap.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 64004b1..0a09fc2 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,6 +27,7 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} + limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} From 3ff6ddcae2acda5e419ebbb93545502cbd3f96a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 09:31:49 +0200 Subject: [PATCH 37/47] potential fix --- src/templates/configmap.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 0a09fc2..1243131 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,7 +27,7 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} - limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} + limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios | quote }} flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} From 8c0deb19b4877b7d852fa2034c362fc96517c7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 09:53:01 +0200 Subject: [PATCH 38/47] fixes --- src/templates/configmap.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 1243131..ee9771d 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,14 +27,14 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} + {{- if .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios | quote }} + {{- end }} flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} jobStateStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName | quote }} jobStateStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.mountPoint | quote }} - influxdbUsername: ${INFLUXDB_USER} - influxdbPassword: ${INFLUXDB_PASSWORD} } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { From 403bf73cd91d177357389efda5bf9a64d8717330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 10:12:54 +0200 Subject: [PATCH 39/47] fix --- src/templates/configmap.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index ee9771d..52a421d 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -28,7 +28,7 @@ data: type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} {{- if .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} - limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios | quote }} + limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} {{- end }} flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} From 620a8e71df3f0f5b0695662fec9d13fa00cfc039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 11:16:16 +0200 Subject: [PATCH 40/47] Added handling of customLimitOfRunningScenarioExceededMessage --- src/templates/configmap.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 52a421d..36fb77e 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -30,6 +30,9 @@ data: {{- if .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage }} + customLimitOfRunningScenarioExceededMessage: {{ .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage }} + {{- end }} flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} From 59e7b02da1f5ff01ea85951ce3eaa48edca9dfbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 11:23:07 +0200 Subject: [PATCH 41/47] fix --- src/templates/configmap.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 36fb77e..63f0733 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -31,7 +31,7 @@ data: limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} {{- end }} {{- if .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage }} - customLimitOfRunningScenarioExceededMessage: {{ .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage }} + customLimitOfRunningScenarioExceededMessage: {{ .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage | quote }} {{- end }} flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} From 7988f9c449bc9b7bbdb8aec0a688042564178e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 26 Jul 2024 13:28:41 +0200 Subject: [PATCH 42/47] Added all optional parameters for flink k8s operator dm --- src/templates/configmap.yaml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index 63f0733..ee77356 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -38,6 +38,33 @@ data: jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} jobStateStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName | quote }} jobStateStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.mountPoint | quote }} + {{- if .Values.flinkK8sOperatorDeploymentManager.numberOfTaskSlotsInTaskManager }} + numberOfTaskSlotsInTaskManager: {{ .Values.flinkK8sOperatorDeploymentManager.numberOfTaskSlotsInTaskManager }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.jobParallelism }} + jobParallelism: {{ .Values.flinkK8sOperatorDeploymentManager.jobParallelism }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.jobUpgradeMode }} + jobUpgradeMode: {{ .Values.flinkK8sOperatorDeploymentManager.jobUpgradeMode | quote }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.allowNonRestoredState }} + allowNonRestoredState: {{ .Values.flinkK8sOperatorDeploymentManager.allowNonRestoredState }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.jobManagerMemory }} + jobManagerMemory: {{ .Values.flinkK8sOperatorDeploymentManager.jobManagerMemory | quote }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.jobManagerCpu }} + jobManagerCpu: {{ .Values.flinkK8sOperatorDeploymentManager.jobManagerCpu }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.taskManagerMemory }} + taskManagerMemory: {{ .Values.flinkK8sOperatorDeploymentManager.taskManagerMemory | quote }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.taskManagerCpu }} + taskManagerCpu: {{ .Values.flinkK8sOperatorDeploymentManager.taskManagerCpu }} + {{- end }} + {{- if .Values.flinkK8sOperatorDeploymentManager.taskManagerReplicas }} + taskManagerReplicas: {{ .Values.flinkK8sOperatorDeploymentManager.taskManagerReplicas | quote }} + {{- end }} } {{- else if eq .Values.nussknacker.mode "ververica" }} deploymentConfig: { From da68b9c8695448add25c6da8602824ff77368fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Tue, 30 Jul 2024 21:32:34 +0200 Subject: [PATCH 43/47] moved flink k8s operator config to enterprise section --- src/templates/configmap.yaml | 54 +++++++++---------- .../delete-flink-deployments.yaml | 4 +- .../flink-deployment-creator-role.yaml | 4 +- .../flink-deployment-creator-rolebinding.yaml | 6 +-- .../flink-operator-role.yaml | 4 +- .../flink-operator-rolebinding.yaml | 8 +-- .../flink-service-account.yaml | 4 +- .../jar-shared-volume-pvc.yaml | 8 +-- .../job-state-shared-volume-pvc.yaml | 8 +-- src/values.yaml | 24 +++++---- 10 files changed, 64 insertions(+), 60 deletions(-) diff --git a/src/templates/configmap.yaml b/src/templates/configmap.yaml index ee77356..77a9bcf 100644 --- a/src/templates/configmap.yaml +++ b/src/templates/configmap.yaml @@ -27,43 +27,43 @@ data: deploymentConfig: { type: "flink-k8s-operator" k8sNamespace: {{ template "nussknacker.namespace" . }} - {{- if .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} - limitOfRunningScenarios: {{ .Values.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} + limitOfRunningScenarios: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.limitOfRunningScenarios }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage }} - customLimitOfRunningScenarioExceededMessage: {{ .Values.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage | quote }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage }} + customLimitOfRunningScenarioExceededMessage: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.customLimitOfRunningScenarioExceededMessage | quote }} {{- end }} - flinkVersion: {{ .Values.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} - jobJarStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} - jobJarStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} - jobStateStoragePVCName: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName | quote }} - jobStateStorageMountPoint: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.mountPoint | quote }} - {{- if .Values.flinkK8sOperatorDeploymentManager.numberOfTaskSlotsInTaskManager }} - numberOfTaskSlotsInTaskManager: {{ .Values.flinkK8sOperatorDeploymentManager.numberOfTaskSlotsInTaskManager }} + flinkVersion: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkVersion | quote }} + jobJarStoragePVCName: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName | quote }} + jobJarStorageMountPoint: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.mountPoint | quote }} + jobStateStoragePVCName: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName | quote }} + jobStateStorageMountPoint: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.mountPoint | quote }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.numberOfTaskSlotsInTaskManager }} + numberOfTaskSlotsInTaskManager: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.numberOfTaskSlotsInTaskManager }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.jobParallelism }} - jobParallelism: {{ .Values.flinkK8sOperatorDeploymentManager.jobParallelism }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.jobParallelism }} + jobParallelism: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobParallelism }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.jobUpgradeMode }} - jobUpgradeMode: {{ .Values.flinkK8sOperatorDeploymentManager.jobUpgradeMode | quote }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.jobUpgradeMode }} + jobUpgradeMode: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobUpgradeMode | quote }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.allowNonRestoredState }} - allowNonRestoredState: {{ .Values.flinkK8sOperatorDeploymentManager.allowNonRestoredState }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.allowNonRestoredState }} + allowNonRestoredState: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.allowNonRestoredState }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.jobManagerMemory }} - jobManagerMemory: {{ .Values.flinkK8sOperatorDeploymentManager.jobManagerMemory | quote }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.jobManagerMemory }} + jobManagerMemory: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobManagerMemory | quote }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.jobManagerCpu }} - jobManagerCpu: {{ .Values.flinkK8sOperatorDeploymentManager.jobManagerCpu }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.jobManagerCpu }} + jobManagerCpu: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobManagerCpu }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.taskManagerMemory }} - taskManagerMemory: {{ .Values.flinkK8sOperatorDeploymentManager.taskManagerMemory | quote }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.taskManagerMemory }} + taskManagerMemory: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.taskManagerMemory | quote }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.taskManagerCpu }} - taskManagerCpu: {{ .Values.flinkK8sOperatorDeploymentManager.taskManagerCpu }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.taskManagerCpu }} + taskManagerCpu: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.taskManagerCpu }} {{- end }} - {{- if .Values.flinkK8sOperatorDeploymentManager.taskManagerReplicas }} - taskManagerReplicas: {{ .Values.flinkK8sOperatorDeploymentManager.taskManagerReplicas | quote }} + {{- if .Values.enterprise.flinkK8sOperatorDeploymentManager.taskManagerReplicas }} + taskManagerReplicas: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.taskManagerReplicas | quote }} {{- end }} } {{- else if eq .Values.nussknacker.mode "ververica" }} diff --git a/src/templates/flink-k8s-operator/delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml index 9c76fbf..51b029f 100644 --- a/src/templates/flink-k8s-operator/delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml @@ -1,5 +1,5 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} -{{- if not (and (hasKey .Values.flinkK8sOperatorDeploymentManager "keepFlinkDeploymentsOnUninstall") (.Values.flinkK8sOperatorDeploymentManager.keepFlinkDeploymentsOnUninstall)) }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if not (and (hasKey .Values.enterprise.flinkK8sOperatorDeploymentManager "keepFlinkDeploymentsOnUninstall") (.Values.enterprise.flinkK8sOperatorDeploymentManager.keepFlinkDeploymentsOnUninstall)) }} apiVersion: batch/v1 kind: Job metadata: diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index 8607e6e..b6757df 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -1,8 +1,8 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: - name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} + name: {{ default "flink-deployment-creator" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} labels: {{ include "nussknacker.labels" . | nindent 4 }} rules: diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index 651d031..b51b21a 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -1,8 +1,8 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }}-rolebinding + name: {{ default "flink-deployment-creator" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }}-rolebinding labels: {{ include "nussknacker.labels" . | nindent 4 }} subjects: @@ -10,6 +10,6 @@ subjects: name: {{ include "nussknacker.serviceAccountName" . }} roleRef: kind: Role - name: {{ default "flink-deployment-creator" .Values.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} + name: {{ default "flink-deployment-creator" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkDeploymentCreatorRole }} apiGroup: rbac.authorization.k8s.io {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml index 1d0649b..81932b9 100644 --- a/src/templates/flink-k8s-operator/flink-operator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -1,8 +1,8 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: - name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} + name: {{ default "flink-operator" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} labels: {{ include "nussknacker.labels" . | nindent 4 }} rules: diff --git a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml index 60ecb08..6f2982f 100644 --- a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml @@ -1,15 +1,15 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }}-rolebinding + name: {{ default "flink-operator" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkOperatorRole }}-rolebinding labels: {{ include "nussknacker.labels" . | nindent 4 }} subjects: - kind: ServiceAccount - name: {{ default "flink-service-account" .Values.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} + name: {{ default "flink-service-account" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} roleRef: kind: Role - name: {{ default "flink-operator" .Values.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} + name: {{ default "flink-operator" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkOperatorRole }} apiGroup: rbac.authorization.k8s.io {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/flink-service-account.yaml b/src/templates/flink-k8s-operator/flink-service-account.yaml index 9ca5367..bcd6d96 100644 --- a/src/templates/flink-k8s-operator/flink-service-account.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account.yaml @@ -1,8 +1,8 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: ServiceAccount metadata: - name: {{ default "flink-service-account" .Values.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} + name: {{ default "flink-service-account" .Values.enterprise.flinkK8sOperatorDeploymentManager.flinkServiceAccount }} labels: {{ include "nussknacker.labels" . | nindent 4 }} {{- end -}} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml index 8dd1fec..701aa70 100644 --- a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml @@ -1,9 +1,9 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: {{ .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName }} -{{- if and (hasKey .Values.flinkK8sOperatorDeploymentManager.jobJarStorage "keepAfterUninstall") .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.keepAfterUninstall }} + name: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcName }} +{{- if and (hasKey .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage "keepAfterUninstall") .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.keepAfterUninstall }} annotations: "helm.sh/resource-policy": keep {{- end }} @@ -14,6 +14,6 @@ spec: - ReadWriteMany resources: requests: - storage: {{ default "1Gi" .Values.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcSize }} + storage: {{ default "1Gi" .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcSize }} storageClassName: nfs {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml index 73bf450..5eb54ab 100644 --- a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml @@ -1,9 +1,9 @@ -{{- if and (hasKey .Values "flinkK8sOperatorDeploymentManager") .Values.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: {{ .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName }} -{{- if and (hasKey .Values.flinkK8sOperatorDeploymentManager.jobStateStorage "keepAfterUninstall") .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.keepAfterUninstall }} + name: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcName }} +{{- if and (hasKey .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage "keepAfterUninstall") .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.keepAfterUninstall }} annotations: "helm.sh/resource-policy": keep {{- end }} @@ -14,6 +14,6 @@ spec: - ReadWriteMany resources: requests: - storage: {{ default "1Gi" .Values.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcSize }} + storage: {{ default "1Gi" .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcSize }} storageClassName: nfs {{- end }} \ No newline at end of file diff --git a/src/values.yaml b/src/values.yaml index 8ef8032..49fa915 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -219,16 +219,6 @@ flink: jobmanager: statefulset: true -flinkK8sOperatorDeploymentManager: - enabled: false - flinkVersion: "1.17" - jobJarStorage: - pvcName: job-jars-pvc - mountPoint: /mnt/jobjars - jobStateStorage: - pvcName: job-states-pvc - mountPoint: /mnt/jobstates - grafana: enabled: true grafana.ini: @@ -330,3 +320,17 @@ nussknackerInitContainers: [ ] #Extra resources to deploy extraDeploy: [] + +########################################################### +### Configuration for Nussknacker enterprise components ### +########################################################### +enterprise: + flinkK8sOperatorDeploymentManager: + enabled: false + flinkVersion: "1.17" + jobJarStorage: + pvcName: job-jars-pvc + mountPoint: /mnt/jobjars + jobStateStorage: + pvcName: job-states-pvc + mountPoint: /mnt/jobstates \ No newline at end of file From e15bda85b95ecd5044d892b8c390fd607a3354b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Wed, 31 Jul 2024 09:41:15 +0200 Subject: [PATCH 44/47] fix --- src/templates/flink-k8s-operator/delete-flink-deployments.yaml | 2 +- .../flink-k8s-operator/flink-deployment-creator-role.yaml | 2 +- .../flink-deployment-creator-rolebinding.yaml | 2 +- src/templates/flink-k8s-operator/flink-operator-role.yaml | 2 +- .../flink-k8s-operator/flink-operator-rolebinding.yaml | 2 +- src/templates/flink-k8s-operator/flink-service-account.yaml | 2 +- src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml | 2 +- .../flink-k8s-operator/job-state-shared-volume-pvc.yaml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/templates/flink-k8s-operator/delete-flink-deployments.yaml b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml index 51b029f..cefcc7e 100644 --- a/src/templates/flink-k8s-operator/delete-flink-deployments.yaml +++ b/src/templates/flink-k8s-operator/delete-flink-deployments.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} {{- if not (and (hasKey .Values.enterprise.flinkK8sOperatorDeploymentManager "keepFlinkDeploymentsOnUninstall") (.Values.enterprise.flinkK8sOperatorDeploymentManager.keepFlinkDeploymentsOnUninstall)) }} apiVersion: batch/v1 kind: Job diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml index b6757df..97d786d 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-role.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: diff --git a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml index b51b21a..727bf7d 100644 --- a/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-deployment-creator-rolebinding.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: diff --git a/src/templates/flink-k8s-operator/flink-operator-role.yaml b/src/templates/flink-k8s-operator/flink-operator-role.yaml index 81932b9..2c66762 100644 --- a/src/templates/flink-k8s-operator/flink-operator-role.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-role.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: diff --git a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml index 6f2982f..ca3ccdc 100644 --- a/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml +++ b/src/templates/flink-k8s-operator/flink-operator-rolebinding.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: diff --git a/src/templates/flink-k8s-operator/flink-service-account.yaml b/src/templates/flink-k8s-operator/flink-service-account.yaml index bcd6d96..ea2ae85 100644 --- a/src/templates/flink-k8s-operator/flink-service-account.yaml +++ b/src/templates/flink-k8s-operator/flink-service-account.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: ServiceAccount metadata: diff --git a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml index 701aa70..dd9cdbe 100644 --- a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: diff --git a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml index 5eb54ab..7b6049d 100644 --- a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml @@ -1,4 +1,4 @@ -{{- if and (hasKey .Values.enterprise "flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} +{{- if and (hasKey .Values "enterprise.flinkK8sOperatorDeploymentManager") .Values.enterprise.flinkK8sOperatorDeploymentManager.enabled }} apiVersion: v1 kind: PersistentVolumeClaim metadata: From 1b8d082159778a47540615dfe6fd67cacdb7e2f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 6 Sep 2024 16:31:07 +0200 Subject: [PATCH 45/47] Moved pvc storage class value to config file --- src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml | 2 +- .../flink-k8s-operator/job-state-shared-volume-pvc.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml index dd9cdbe..a5b2906 100644 --- a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml @@ -15,5 +15,5 @@ spec: resources: requests: storage: {{ default "1Gi" .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcSize }} - storageClassName: nfs + storageClassName: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcStorageClassName }} {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml index 7b6049d..5cd8054 100644 --- a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml @@ -15,5 +15,5 @@ spec: resources: requests: storage: {{ default "1Gi" .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcSize }} - storageClassName: nfs + storageClassName: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcStorageClassName }} {{- end }} \ No newline at end of file From c2c1aa7c7d1b7736b44998f51beaff3448bf78dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 6 Sep 2024 16:42:24 +0200 Subject: [PATCH 46/47] fix --- src/values.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/values.yaml b/src/values.yaml index 49fa915..ace2f43 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -331,6 +331,8 @@ enterprise: jobJarStorage: pvcName: job-jars-pvc mountPoint: /mnt/jobjars + pvcStorageClassName: nfs jobStateStorage: pvcName: job-states-pvc - mountPoint: /mnt/jobstates \ No newline at end of file + mountPoint: /mnt/jobstates + pvcStorageClassName: nfs From 4c2208ce0bdabb521a9d0a5196a05c27894e8056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Pi=C4=99kos?= Date: Fri, 6 Sep 2024 16:54:34 +0200 Subject: [PATCH 47/47] fixes --- src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml | 4 +++- .../flink-k8s-operator/job-state-shared-volume-pvc.yaml | 4 +++- src/values.yaml | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml index a5b2906..702dc35 100644 --- a/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/jar-shared-volume-pvc.yaml @@ -15,5 +15,7 @@ spec: resources: requests: storage: {{ default "1Gi" .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcSize }} - storageClassName: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcStorageClassName }} + {{- with .Values.enterprise.flinkK8sOperatorDeploymentManager.jobJarStorage.pvcStorageClassName }} + storageClassName: {{ . }} + {{- end }} {{- end }} \ No newline at end of file diff --git a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml index 5cd8054..1ed50f7 100644 --- a/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml +++ b/src/templates/flink-k8s-operator/job-state-shared-volume-pvc.yaml @@ -15,5 +15,7 @@ spec: resources: requests: storage: {{ default "1Gi" .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcSize }} - storageClassName: {{ .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcStorageClassName }} + {{- with .Values.enterprise.flinkK8sOperatorDeploymentManager.jobStateStorage.pvcStorageClassName }} + storageClassName: {{ . }} + {{- end }} {{- end }} \ No newline at end of file diff --git a/src/values.yaml b/src/values.yaml index ace2f43..779d305 100644 --- a/src/values.yaml +++ b/src/values.yaml @@ -331,8 +331,8 @@ enterprise: jobJarStorage: pvcName: job-jars-pvc mountPoint: /mnt/jobjars - pvcStorageClassName: nfs + # pvcStorageClassName: default jobStateStorage: pvcName: job-states-pvc mountPoint: /mnt/jobstates - pvcStorageClassName: nfs + # pvcStorageClassName: default