apiVersion: influxdata.com/v2alpha1 kind: Label metadata: name: fervent-bohr-ded001 spec: color: '#066fc5' name: istio --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: agitated-albattani-ded005 spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: client_workload_namespace query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"source_workload_namespace\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n \ and r.destination_service == v.service\r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n and r.destination_service == v.service,\r\n start: v.timeRangeStart\r\n)" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: agitated-spence-1ed00f spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: inbound_workload query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"source_workload\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n and r.destination_workload == v.workload\r\n and r.destination_workload_namespace == v.namespace\r\n and r.source_workload_namespace == v.inbound_workload_namespace\r\n \ or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n \ and r.destination_workload == v.workload\r\n and r.destination_workload_namespace == v.namespace\r\n and r.source_workload_namespace == v.inbound_workload_namespace,\r\n \ start: v.timeRangeStart\r\n)" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: agreeing-davinci-ded00d spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: namespace query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"destination_workload_namespace\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n \ or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\",\r\n \ start: v.timeRangeStart\r\n)" selected: - istio-system type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: agreeing-morse-5ed003 spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: service query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"destination_service\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\",\r\n \ start: v.timeRangeStart\r\n)" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: bettering-ardinghelli-5ed007 spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: service_workload query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"destination_workload\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n and r.destination_service == v.service\r\n and r.destination_workload_namespace == v.service_workload_namespace\r\n and r.reporter == \"destination\"\r\n \ or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n \ and r.destination_service == v.service\r\n and r.destination_workload_namespace == v.service_workload_namespace\r\n and r.reporter == \"destination\",\r\n \ start: v.timeRangeStart\r\n)" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: dazzling-babbage-1ed003 spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: bucket query: |- buckets() |> filter(fn: (r) => r.name !~ /^_/) |> rename(columns: {name: "_value"}) |> keep(columns: ["_value"]) selected: - demo type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: elated-hellman-ded009 spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: destination_service query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"destination_service\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n and r.reporter == \"source\"\r\n and r.source_workload == v.workload\r\n and r.source_workload_namespace == v.namespace\r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n and r.reporter == \"source\"\r\n and r.source_workload == v.workload\r\n and r.source_workload_namespace == v.namespace,\r\n start: v.timeRangeStart\r\n )" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: relaxed-lamport-5ed00f spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: client_workload query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"source_workload\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n and r.destination_service == v.service\r\n and r.source_workload_namespace == v.client_workload_namespace\r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n and r.destination_service == v.service,\r\n start: v.timeRangeStart\r\n)" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: rightful-kapitsa-5ed00b spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: inbound_workload_namespace query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"source_workload_namespace\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n \ and r.reporter == \"source\"\r\n and r.destination_workload == v.workload\r\n \ and r.destination_workload_namespace == v.namespace\r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n \ and r.reporter == \"source\"\r\n and r.destination_workload == v.workload\r\n \ and r.destination_workload_namespace == v.namespace,\r\n start: v.timeRangeStart\r\n)" selected: - source type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: rustling-saha-1ed007 spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: workload query: "import \"influxdata/influxdb/schema\"\r\n\r\nsource = schema.tagValues(\r\n \ bucket: v.bucket,\r\n tag: \"source_workload\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\" \r\n and r.source_workload_namespace == v.namespace \r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\" \r\n \ and r.source_workload_namespace == v.namespace,\r\n start: v.timeRangeStart\r\n)\r\n\r\ndestination = schema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"destination_workload\",\r\n \ predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\" \r\n and r.destination_workload_namespace == v.namespace \r\n or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\" \r\n and r.destination_workload_namespace == v.namespace,\r\n start: v.timeRangeStart\r\n)\r\n\r\nunion(tables: [source, destination])" selected: - unknown type: query --- apiVersion: influxdata.com/v2alpha1 kind: Variable metadata: name: thirsty-clarke-1ed00b spec: associations: - kind: Label name: fervent-bohr-ded001 language: flux name: service_workload_namespace query: "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(\r\n bucket: v.bucket,\r\n tag: \"destination_workload_namespace\",\r\n predicate: (r) => r._measurement == \"prometheus\" \r\n and r._field == \"istio_requests_total\"\r\n \ and r.destination_service == v.service\r\n and r.reporter == \"destination\"\r\n \ or r._measurement == \"prometheus\" \r\n and r._field == \"istio_tcp_sent_bytes_total\"\r\n \ and r.destination_service == v.service\r\n and r.reporter == \"destination\",\r\n \ start: v.timeRangeStart\r\n)" type: query --- apiVersion: influxdata.com/v2alpha1 kind: Dashboard metadata: name: boring-williams-9ed001 spec: associations: - kind: Label name: fervent-bohr-ded001 charts: - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 2f1fa093-5837-42f4-bbef-705c62693672 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 6d707081-471a-4353-b325-9e1e1339646b name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 3767919c-7ad6-44c5-a94e-2bd5bd74f930 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Deployed Versions opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: |- from(bucket: v.bucket) |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "prometheus") |> filter(fn: (r) => r["_field"] == "istio_build") |> filter(fn: (r) => r["component"] == "pilot") |> group(columns: ["tag"]) |> aggregateWindow(every: 1m, fn: sum, createEmpty: false) staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 2f1fa093-5837-42f4-bbef-705c62693672 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 6d707081-471a-4353-b325-9e1e1339646b name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 3767919c-7ad6-44c5-a94e-2bd5bd74f930 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Resource Usage - CPU opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nfrom(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"container_cpu_usage_seconds_total\" and r[\"container\"] == \"discovery\" and r[\"pod\"] =~ /istiod-.*|istio-pilot-.*/ or\n r[\"_field\"] == \"process_cpu_seconds_total\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"container_cpu_usage_seconds_total\" and r[\"container\"] == \"istio-proxy\" and r[\"pod\"] =~ /istiod-.*|istio-pilot-.*/\n \ )\n |> increase() \n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 2 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 2f1fa093-5837-42f4-bbef-705c62693672 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 6d707081-471a-4353-b325-9e1e1339646b name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 3767919c-7ad6-44c5-a94e-2bd5bd74f930 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Resource Usage - Memory opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "a = from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => r[\"_field\"] == \"process_virtual_memory_bytes\" \n or r[\"_field\"] == \"process_resident_memory_bytes\" \n or r[\"_field\"] == \"go_memstats_heap_sys_bytes\" \n or r[\"_field\"] == \"go_memstats_heap_alloc_bytes\"\n or r[\"_field\"] == \"go_memstats_alloc_bytes\"\n \ or r[\"_field\"] == \"go_memstats_heap_inuse_bytes\"\n or r[\"_field\"] == \"go_memstats_stack_inuse_bytes\")\n |> filter(fn: (r) => r[\"app\"] == \"istiod\" \n or r[\"container\"] =~ /discovery/ \n or r[\"pod\"] =~ /istiod-.*|istio-pilot-.*/)\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n |> filter(fn: (r) => exists r._value)\n \ |> keep(columns: [\"_time\", \"_value\", \"_field\"])\n\nb = from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => r[\"_field\"] == \"container_memory_working_set_bytes\")\n \ |> filter(fn: (r) => r[\"container\"] =~ /discovery/ and r[\"pod\"] =~ /istiod-.*|istio-pilot-.*/)\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n |> filter(fn: (r) => exists r._value)\n \ |> keep(columns: [\"_time\", \"_value\", \"_field\"])\n\nunion(tables: [a, b])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 4 - axes: - label: ms name: x colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale fillColumns: - quantile height: 2 kind: Histogram legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Proxy Push Time position: stacked queries: - query: "import \"experimental/prometheus\"\n\nhistograms =\n from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_proxy_convergence_time_bucket\")\n \ |> filter(fn: (r) => exists r._value)\n |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)\n \nunion(tables: [\n histograms |> prometheus.histogramQuantile(quantile: 0.99),\n histograms |> prometheus.histogramQuantile(quantile: 0.9),\n histograms |> prometheus.histogramQuantile(quantile: 0.5)\n])" staticLegend: {} width: 4 xCol: _value yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" label: kB / s name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: TX/RX Connection Bytes rate opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nfrom(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"envoy_cluster_upstream_cx_rx_bytes_total\" and r[\"cluster_name\"] == \"xds-grpc\" or\n r[\"_field\"] == \"envoy_cluster_upstream_cx_tx_bytes_total\" and r[\"cluster_name\"] == \"xds-grpc\"\n )\n |> aggregateWindow(every: 1m, fn: max)\n |> increase(columns: [\"_value\"])\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 2f1fa093-5837-42f4-bbef-705c62693672 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 6d707081-471a-4353-b325-9e1e1339646b name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 3767919c-7ad6-44c5-a94e-2bd5bd74f930 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Resource Usage - Disk opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: |- from(bucket: v.bucket) |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "prometheus") |> filter(fn: (r) => r["_field"] == "container_fs_usage_bytes") |> filter(fn: (r) => (r["container"] == "discovery" and r["pod"] =~ /istiod-.*|istio-pilot-.*/) or (r["container"] == "istio-proxy" and r["pod"] =~ /istiod-.*|istio-pilot-.*/)) |> aggregateWindow(every: 1m, fn: mean, createEmpty: false) |> filter(fn: (r) => exists r._value) |> keep(columns: ["_time", "_value", "_field"]) staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 4 yCol: _value - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 2f1fa093-5837-42f4-bbef-705c62693672 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 6d707081-471a-4353-b325-9e1e1339646b name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 3767919c-7ad6-44c5-a94e-2bd5bd74f930 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Resource Usage - Goroutines opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: |- from(bucket: v.bucket) |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "prometheus") |> filter(fn: (r) => r["_field"] == "go_goroutines") |> filter(fn: (r) => r["app"] == "istiod") |> aggregateWindow(every: 1m, fn: mean, createEmpty: false) |> filter(fn: (r) => exists r._value) |> keep(columns: ["_time", "_value", "_field"]) staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 4 yCol: _value yPos: 2 - axes: - base: "10" name: x scale: linear - base: "2" label: ops / s name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Pilot Pushes opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: |- import "experimental/aggregate" from(bucket: v.bucket) |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "prometheus") |> filter(fn: (r) => r["_field"] == "pilot_xds_pushes") |> filter(fn: (r) => r["type"] =~ /cds|eds|lds|rds|sds|nds/) |> increase() |> aggregate.rate(every: 1m, unit: 1s, groupColumns: ["type"]) |> filter(fn: (r) => exists r._value) staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 4 yCol: _value yPos: 4 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Sidecar Injection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nfrom(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"sidecar_injection_success_total\" or\n \ r[\"_field\"] == \"sidecar_injection_failure_total\"\n )\n |> increase(columns: [\"_value\"])\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 4 yCol: _value yPos: 6 - colors: - hex: '#ffffff' id: base name: white type: text decimalPlaces: 2 height: 1 kind: Single_Stat name: RX connection bytes rate - 50th percentile queries: - query: "quantile = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => \r\n r[\"_field\"] == \"envoy_cluster_upstream_cx_rx_bytes_total\" and r[\"cluster_name\"] == \"xds-grpc\"\r\n )\r\n |> aggregateWindow(every: 1m, fn: max)\r\n \ |> increase(columns: [\"_value\"])\r\n |> derivative(unit: 1s, nonNegative: true, columns: [\"_value\"], timeColumn: \"_time\")\r\n \ |> quantile(column: \"_value\", q: 0.5, method: \"exact_mean\")\r\n \ |> fill(column: \"_value\", usePrevious: true)\r\n |> yield(name: \"quantile\")" staticLegend: {} suffix: ' kB/s' width: 2 xPos: 4 yPos: 8 - colors: - hex: '#ffffff' id: base name: white type: text decimalPlaces: 2 height: 1 kind: Single_Stat name: TX connection bytes rate - 50th percentile queries: - query: "quantile = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => \r\n r[\"_field\"] == \"envoy_cluster_upstream_cx_tx_bytes_total\" and r[\"cluster_name\"] == \"xds-grpc\"\r\n )\r\n |> aggregateWindow(every: 1m, fn: max)\r\n \ |> increase(columns: [\"_value\"])\r\n |> derivative(unit: 1s, nonNegative: true, columns: [\"_value\"], timeColumn: \"_time\")\r\n \ |> quantile(column: \"_value\", q: 0.5, method: \"exact_mean\")\r\n \ |> fill(column: \"_value\", usePrevious: true)\r\n |> yield(name: \"quantile\")" staticLegend: {} suffix: ' kB/s' width: 2 xPos: 4 yPos: 9 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Configuration Validation opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nfrom(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"galley_validation_passed\" or\n r[\"_field\"] == \"galley_validation_failed\"\n )\n |> increase(columns: [\"_value\"])\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\n \ |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 2 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Pilot Errors opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nrejects = from(bucket: v.bucket)\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"pilot_xds_cds_reject\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_xds_eds_reject\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_xds_rds_reject\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_xds_lds_reject\" and r[\"app\"] == \"istiod\"\n )\n |> aggregateWindow(every: 1m, fn: sum)\n |> filter(fn: (r) => exists r._value)\n\nrates = from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"pilot_xds_write_timeout\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_total_xds_internal_errors\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_total_xds_rejects\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_xds_push_context_errors\" and r[\"app\"] == \"istiod\"\n )\n |> aggregateWindow(every: 1m, fn: sum)\n |> increase()\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\n |> filter(fn: (r) => exists r._value)\n\nunion(tables: [rejects, rates])\n\n\n \n \n \n \n\n\n\n\n \n\n\n\n// sum(pilot_xds_cds_reject{app=\"istiod\"}) or exists(pilot_xds_cds_reject{app=\"istiod\"}) - 1)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xPos: 8 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 2f1fa093-5837-42f4-bbef-705c62693672 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 6d707081-471a-4353-b325-9e1e1339646b name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 3767919c-7ad6-44c5-a94e-2bd5bd74f930 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Pilot Conflicts opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n \ |> filter(fn: (r) => \n r[\"_field\"] == \"pilot_conflict_inbound_listener\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_conflict_outbound_listener_http_over_current_tcp\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_conflict_outbound_listener_tcp_over_current_tcp\" and r[\"app\"] == \"istiod\" or\n r[\"_field\"] == \"pilot_conflict_outbound_listener_tcp_over_current_http\" and r[\"app\"] == \"istiod\")\n |> aggregateWindow(every: 1m, fn: sum)\n |> filter(fn: (r) => exists r._value)\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 8 yCol: _value yPos: 2 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: ADS Monitoring opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nfrom(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"pilot_virt_services\" and r[\"app\"] == \"istiod\" or \n r[\"_field\"] == \"pilot_services\" and r[\"app\"] == \"istiod\" or \n r[\"_field\"] == \"pilot_xds\" and r[\"app\"] == \"istiod\"\n )\n |> group(columns: [\"_field\", \"pod\"], mode:\"by\")\n \ |> aggregateWindow(every: 1m, fn: mean)\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 8 yCol: _value yPos: 4 - axes: - base: "10" name: x scale: linear - base: "2" label: ops / s name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Envoy Details opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\nupstream = from(bucket: v.bucket)\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"envoy_cluster_upstream_cx_total\" and r[\"cluster_name\"] == \"xds-grpc\" or \n r[\"_field\"] == \"envoy_cluster_upstream_cx_connect_fail\" and r[\"cluster_name\"] == \"xds-grpc\"\n )\n |> aggregateWindow(every: 1m, fn: sum)\n |> increase(columns: [\"_value\"])\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\n |> group(columns: [\"_field\"], mode:\"by\")\n\nrestarts = from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n |> filter(fn: (r) => \n r[\"_field\"] == \"envoy_server_hot_restart_epoch\"\n )\n |> group(columns: [\"_field\"], mode:\"by\")\n |> aggregateWindow(every: 1m, fn: sum)\n |> filter(fn: (r) => exists r._value)\n\nunion(tables: [upstream, restarts])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 8 yCol: _value yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: ccc7bb26-480f-4908-be3f-34751f5fbd85 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 61ae7e4d-378f-4bdd-9a41-5ecd3c3ca4fe name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: af961e97-10bb-42c9-a004-0e5b1b267afe name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: XDS Active Connections opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\n \ |> filter(fn: (r) => \n r[\"_field\"] == \"envoy_cluster_upstream_cx_active\" and r[\"cluster_name\"] == \"xds-grpc\"\n )\n |> group(columns: [\"_field\"], mode:\"by\")\n |> aggregateWindow(every: 1m, fn: sum)\n \ |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 8 yCol: _value yPos: 8 description: The control plane manages and configures the proxies to route traffic. name: Istio Control Plane Dashboard --- apiVersion: influxdata.com/v2alpha1 kind: Dashboard metadata: name: great-grothendieck-5ed001 spec: associations: - kind: Label name: fervent-bohr-ded001 charts: - axes: - base: "10" name: x scale: linear - base: "2" label: ops/s name: "y" scale: linear colorizeRows: true colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 2 height: 2 hoverDimension: auto kind: Single_Stat_Plus_Line legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Global Request Volume opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n \ |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 suffix: ' ops/s' width: 4 widthRatio: 1 xCol: _time yCol: _value - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorizeRows: true colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 2 hoverDimension: auto kind: Single_Stat_Plus_Line legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Global Success Rate (non-5xx responses) opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfivehundreds = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nall = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n |> filter(fn: (r) => exists r._value)\r\n \r\n\r\njoin(tables: {fh:fivehundreds, a:all}, on: [\"_time\", \"_start\", \"_stop\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_fh / r._value_a) * 100.0\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 suffix: ' %' width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 2 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: d84fa53d-936c-436d-9158-db77ee6bece6 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: ef10540d-61e6-4c94-bdf7-dcbbf6ad640e name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 77af5ea1-8f84-48e2-9673-67c02437f36b name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Request Rate by Workload opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"response_code\"] == \"200\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"destination_workload\", \"destination_workload_namespace\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 4 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: d84fa53d-936c-436d-9158-db77ee6bece6 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: ef10540d-61e6-4c94-bdf7-dcbbf6ad640e name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 77af5ea1-8f84-48e2-9673-67c02437f36b name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Success Rate By Workload opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfivehundreds = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> aggregateWindow(every: 1m, fn: max)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"destination_workload\", \"destination_workload_namespace\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nall = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> aggregateWindow(every: 1m, fn: max)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"destination_workload\", \"destination_workload_namespace\"]) \ \r\n |> filter(fn: (r) => exists r._value)\r\n\r\njoin(tables: {fh:fivehundreds, a:all}, on: [\"_time\", \"_start\", \"_stop\", \"destination_workload\", \"destination_workload_namespace\"])\r\n |> map(fn: (r) => ({\r\n \ _time: r._time,\r\n _value: (r._value_fh / r._value_a) * 100.0,\r\n \ destination_workload: r.destination_workload,\r\n destination_workload_namespace: r.destination_workload_namespace\r\n }))" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 6 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Virtual Services queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"VirtualService\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 4 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Service Entries queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"ServiceEntry\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 4 yPos: 1 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Peer Authentication Policies queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"PeerAuthentication\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 4 yPos: 2 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Request Authentication Policies queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"RequestAuthentication\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 4 yPos: 3 - axes: - label: s name: x colors: - hex: '#31C0F6' id: 96240091-5d92-4dce-8d04-6a11bd48671b name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 4391eb13-082a-4d61-8cd0-5244a014fd1d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 4fd32bc5-507a-4c59-a48c-ad7fc12411d1 name: Nineteen Eighty Four type: scale fillColumns: - _start - _stop - destination_workload - destination_workload_namespace - quantile height: 4 kind: Histogram legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Latency Percentile by Workload position: stacked queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nhistograms =\r\n from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"le\", \"destination_workload\", \"destination_workload_namespace\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n \r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5)\r\n])" staticLegend: {} width: 6 xCol: _value xPos: 4 yPos: 4 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Destination Rules queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"DestinationRule\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 5 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Gateways queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"Gateway\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 5 yPos: 1 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Workload Entries queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"WorkloadEntry\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 5 yPos: 2 - colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 0 height: 1 kind: Single_Stat name: Authorization Policy Policies queries: - query: "pivot = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"pilot_k8s_cfg_events\" and\r\n r[\"type\"] == \"AuthorizationPolicy\"\r\n )\r\n |> filter(fn: (r) => r[\"event\"] == \"delete\" or r[\"event\"] == \"add\")\r\n \ |> aggregateWindow(every: 1m, fn: max)\r\n |> filter(fn: (r) => exists r._value)\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"event\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with\r\n _value: r.add - (if exists r.delete then r.delete else 0.0)\r\n }))\r\n |> yield(name: \"pivot\")" staticLegend: {} width: 1 xPos: 5 yPos: 3 - axes: - base: "10" name: x scale: linear - base: "2" label: 'ops / s ' name: "y" scale: linear colorizeRows: true colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 2 height: 2 hoverDimension: auto kind: Single_Stat_Plus_Line legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: 4XXs opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"response_code\"] =~ /4.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 suffix: ' ops/s' width: 4 widthRatio: 1 xCol: _time xPos: 6 yCol: _value - axes: - base: "10" name: x scale: linear - base: "2" label: 'ops / s ' name: "y" scale: linear colorizeRows: true colors: - hex: '#00C9FF' id: base name: laser type: text decimalPlaces: 2 height: 2 hoverDimension: auto kind: Single_Stat_Plus_Line legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: 5XXs opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"response_code\"] =~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 suffix: ' ops/s' width: 4 widthRatio: 1 xPos: 6 yPos: 2 description: The global view of the Mesh along with services and workloads in the mesh. name: ' Istio Mesh Dashboard' --- apiVersion: influxdata.com/v2alpha1 kind: Dashboard metadata: name: magical-antonelli-5ed001 spec: associations: - kind: Label name: fervent-bohr-ded001 charts: - height: 1 kind: Markdown name: Name this Cell (Clone) (Clone) (Clone) note: '## **vCPU Usage**' staticLegend: {} width: 6 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: vCPU / 1k rps opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nmm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n\r\na = mm\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_cpu_usage_seconds_total\")\r\n \ |> filter(fn: (r) => r[\"container\"] == \"istio-proxy\")\r\n |> filter(fn: (r) => r[\"pod\"] =~ /istio-ingressgateway-.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nb = mm\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"source_workload\"] == \"istio-ingressgateway\")\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n |> map(fn: (r) => ({ r with _value: r._value / 1000.0 }))\r\n\r\njoin(tables: {a:a, b:b}, on: [\"_time\"])\r\n |> map(fn: (r) => ({\r\n _time: r._time,\r\n \ _value: r._value_a / r._value_b\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 1 - height: 1 kind: Markdown name: Name this Cell (Clone) (Clone) (Clone) note: '## **Istio Component Versions**' staticLegend: {} width: 6 yPos: 3 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Istio Components by Version opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_build\")\r\n |> group(columns: [\"component\", \"tag\"], mode:\"by\")\r\n |> aggregateWindow(every: 1m, fn: sum)\r\n \ |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 6 widthRatio: 1 xCol: _time yCol: _value yPos: 4 - height: 1 kind: Markdown name: Name this Cell note: '## **Proxy Resource Usage**' staticLegend: {} width: 6 yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Memory opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_memory_working_set_bytes\")\r\n \ |> filter(fn: (r) => r[\"container\"] == \"istio-proxy\")\r\n |> group(columns: [\"_field\"], mode:\"by\")\r\n |> aggregateWindow(every: 1m, fn: sum)\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 7 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Disk opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_fs_usage_bytes\")\r\n |> filter(fn: (r) => r[\"container\"] == \"istio-proxy\")\r\n |> group(columns: [\"_field\"], mode:\"by\")\r\n |> aggregateWindow(every: 1m, fn: sum)\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 9 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: vCPU opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_cpu_usage_seconds_total\")\r\n \ |> filter(fn: (r) => r[\"container\"] == \"istio-proxy\" and r[\"pod\"] =~ /istio-ingressgateway-.*/\r\n or r[\"namespace\"] != \"istio-system\" and r[\"container\"] == \"istio-proxy\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: vCPU opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_cpu_usage_seconds_total\")\r\n \ |> filter(fn: (r) => r[\"container\"] == \"istio-proxy\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 7 - height: 1 kind: Markdown name: Name this Cell (Clone) (Clone) note: '## **Memory and Data Rates**' staticLegend: {} width: 6 xPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Memory Usage opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_memory_working_set_bytes\")\r\n\r\na = m\r\n |> filter(fn: (r) => r[\"pod\"] =~ /istio-ingressgateway-.*/ \r\n or r[\"namespace\"] != \"istio-system\" and r[\"container\"] == \"istio-proxy\")\r\n |> group(columns: [\"_field\"], mode:\"by\")\r\n \ |> aggregateWindow(every: 1m, fn: sum)\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nb = m\r\n |> filter(fn: (r) => r[\"pod\"] =~ /istio-ingressgateway-.*/ and r[\"container\"] != \"POD\" \r\n \ or r[\"namespace\"] != \"istio-system\" and r[\"container\"] == \"istio-proxy\")\r\n |> group(columns: [\"_field\"], mode:\"by\")\r\n \ |> aggregateWindow(every: 1m, fn: count)\r\n |> filter(fn: (r) => exists r._value)\r\n\r\n\r\njoin(tables: {a:a, b:b}, on: [\"_time\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: float(v: r._value_a) / float(v: r._value_b)\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 1 - height: 1 kind: Markdown name: Name this Cell (Clone) note: '## **Istiod Resource Usage**' staticLegend: {} width: 6 xPos: 6 yPos: 3 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Memory opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\na = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"process_virtual_memory_bytes\"\r\n or r[\"_field\"] == \"process_virtual_memory_bytes\"\r\n or r[\"_field\"] == \"process_resident_memory_bytes\"\r\n or r[\"_field\"] == \"go_memstats_heap_sys_bytes\"\r\n \ or r[\"_field\"] == \"go_memstats_heap_alloc_bytes\"\r\n or r[\"_field\"] == \"go_memstats_alloc_bytes\"\r\n or r[\"_field\"] == \"go_memstats_heap_inuse_bytes\"\r\n or r[\"_field\"] == \"go_memstats_stack_inuse_bytes\")\r\n \ |> filter(fn: (r) => r[\"app\"] == \"istiod\")\r\n |> aggregateWindow(every: 1m, fn: mean)\r\n |> filter(fn: (r) => exists r._value)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])\r\n\r\nb = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_memory_working_set_bytes\")\r\n \ |> filter(fn: (r) => r[\"container\"] =~ /discovery|istio-proxy/)\r\n \ |> filter(fn: (r) => r[\"pod\"] =~ /istiod-.*/)\r\n |> aggregateWindow(every: 1m, fn: mean)\r\n |> filter(fn: (r) => exists r._value)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])\r\n\r\nunion(tables: [a, b])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 4 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: vCPU opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n\r\ncontainer_cpu_usage_seconds = m\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_cpu_usage_seconds_total\")\r\n \ |> filter(fn: (r) => r[\"container\"] =~ /discovery|istio-proxy/)\r\n \ |> filter(fn: (r) => r[\"pod\"] =~ /istiod-.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)\r\n |> yield(name: \"container_cpu_usage_seconds\")\r\n\r\ncontainer_cpu_usage_seconds_by_container = m\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_cpu_usage_seconds_total\")\r\n \ |> filter(fn: (r) => r[\"container\"] =~ /discovery|istio-proxy/)\r\n \ |> filter(fn: (r) => r[\"pod\"] =~ /istiod-.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"container\"])\r\n |> filter(fn: (r) => exists r._value)\r\n |> yield(name: \"container_cpu_usage_seconds_by_container\")\r\n\r\n\r\nprocess_cpu_seconds = m\r\n |> filter(fn: (r) => r[\"_field\"] == \"process_cpu_seconds_total\")\r\n \ |> filter(fn: (r) => r[\"app\"] == \"istiod\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)\r\n |> yield(name: \"process_cpu_seconds\")" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B/s colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes transferred / sec opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n\r\nres = m\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_response_bytes_sum\")\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == \"istio-ingressgateway\" and r[\"reporter\"] == \"source\")\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)\r\n |> yield(name: \"res\")\r\n\r\nres_req = m\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_response_bytes_sum\" or r[\"_field\"] == \"istio_request_bytes_sum\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] != \"istio-system\" and r[\"reporter\"] == \"source\")\r\n |> pivot(\r\n rowKey:[\"_time\"],\r\n columnKey: [\"_field\"],\r\n valueColumn: \"_value\"\r\n )\r\n |> map(fn: (r) => ({ r with _value: float(v: r.istio_response_bytes_sum) + float(v: r.istio_request_bytes_sum)\r\n }))\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)\r\n |> yield(name: \"res_req\")" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 9 yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: iB colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Disk opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"container_fs_usage_bytes\")\r\n |> filter(fn: (r) => r[\"container\"] =~ /discovery|istio-proxy/)\r\n |> filter(fn: (r) => r[\"pod\"] =~ /istiod-.*/)\r\n |> group(columns: [\"_field\"], mode:\"by\")\r\n |> aggregateWindow(every: 1m, fn: sum)\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 9 yCol: _value yPos: 4 - axes: - base: "10" name: x scale: linear - name: "y" scale: linear colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 1d828f59-ce6e-481f-98ce-6a0b3ba4082e name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: d06f569a-bbcc-4078-86ca-e5689e4c442a name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 8a563569-5d25-4682-a5e5-151840c78ca8 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Goroutines opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"go_goroutines\")\r\n |> filter(fn: (r) => r[\"app\"] == \"istiod\")\r\n |> group(columns: [\"_field\"], mode:\"by\")\r\n |> aggregateWindow(every: 1m, fn: sum)\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 9 yCol: _value yPos: 6 description: The charts on this dashboard are intended to show Istio main components cost in terms of resources utilization under steady load name: Istio Performance Dashboard --- apiVersion: influxdata.com/v2alpha1 kind: Dashboard metadata: name: musing-robinson-1ed001 spec: associations: - kind: Label name: fervent-bohr-ded001 charts: - height: 1 kind: Markdown name: Name this Cell (Clone) note: '## **General**' staticLegend: {} width: 12 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Client Request Volume opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Server Request Volume opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 yPos: 3 - height: 1 kind: Markdown name: Name this Cell note: '## **Client Workloads**' staticLegend: {} width: 6 yPos: 5 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Requests By Source And Response Code opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Duration By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Response Size By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_response_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 10 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Sent to Incoming TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 12 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Client Success Rate (non-5xx responses) opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\nfivehundreds = m\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nall = m\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n \r\n\r\njoin(tables: {fh:fivehundreds, a:all}, on: [\"_time\", \"_start\", \"_stop\", \"reporter\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_fh / r._value_a) * 100.0,\r\n reporter: r.reporter\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Server Success Rate (non-5xx responses) opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n\r\nfivehundreds = m\r\n \ |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nall = m\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s)\r\n |> filter(fn: (r) => exists r._value)\r\n \r\n\r\njoin(tables: {fh:fivehundreds, a:all}, on: [\"_time\",\"_start\", \"_stop\"])\r\n |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_fh / r._value_a) * 100.0\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 3 yPos: 3 - axes: - base: "10" name: x scale: linear - name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Success Rate (non-5xx responses) By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\nnon_5xx_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\na = join(tables: {non_5xx_tls:non_5xx_tls, all_tls:all_tls}, on: [\"_time\",\"_start\",\"_stop\",\"response_code\",\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx_tls / r._value_all_tls) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n connection_security_policy: r.connection_security_policy,\r\n \ source_workload_namespace: r.source_workload_namespace,\r\n source_workload: r.source_workload\r\n })\r\n )\r\n\r\nnon_5xx = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nb = join(tables: {non_5xx:non_5xx, all:all}, on: [\"_time\",\"_start\",\"_stop\",\"response_code\",\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx / r._value_all) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n connection_security_policy: r.connection_security_policy,\r\n \ source_workload_namespace: r.source_workload_namespace,\r\n source_workload: r.source_workload\r\n })\r\n )\r\n\r\nunion(tables: [a, b])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Size By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Received from Incoming TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.client_workload)\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.client_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 10 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Client Request Duration opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental\"\r\nimport \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nhistograms =\r\n from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n \ |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"le\",\"reporter\"])\r\n\r\n |> filter(fn: (r) => exists r._value)\r\nunion(tables: [\r\n histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5)\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Server Request Duration opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental\"\r\nimport \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nhistograms =\r\n from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"le\"])\r\n\r\n |> filter(fn: (r) => exists r._value)\r\nunion(tables: [\r\n histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5)\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 6 yPos: 3 - height: 1 kind: Markdown name: Name this Cell (Clone) note: '## **Service Workloads**' staticLegend: {} width: 6 xPos: 6 yPos: 5 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Requests By Destination Workload And Response Code opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\nprinc = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"response_code\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nno_princ = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"response_code\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\n\r\nunion(tables: [princ, no_princ])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 6 yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Duration By Service Workload opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 6 yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Response Size By Service Workload opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_response_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 6 yPos: 10 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Sent to Incoming TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 6 yPos: 12 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: TCP Received Bytes opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 9 yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: TCP Sent Bytes opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.service)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 9 yCol: _value yPos: 3 - axes: - base: "10" name: x scale: linear - name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Success Rate (non-5xx responses) By Destination Workload opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\nnon_5xx_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\na = join(tables: {non_5xx_tls:non_5xx_tls, all_tls:all_tls}, on: [\"_time\",\"_start\",\"_stop\",\"response_code\",\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx_tls / r._value_all_tls) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n connection_security_policy: r.connection_security_policy,\r\n \ destination_workload: r.destination_workload,\r\n destination_workload_namespace: r.destination_workload_namespace\r\n })\r\n )\r\n\r\nnon_5xx = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nb = join(tables: {non_5xx:non_5xx, all:all}, on: [\"_time\",\"_start\",\"_stop\",\"response_code\",\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx / r._value_all) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n connection_security_policy: r.connection_security_policy,\r\n \ destination_workload: r.destination_workload,\r\n destination_workload_namespace: r.destination_workload_namespace\r\n })\r\n )\r\n\r\nunion(tables: [a, b])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 9 yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Size By Service Workload opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 9 yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Received from Incoming TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"destination\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.service_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.service_workload)\r\n \ |> filter(fn: (r) => r[\"destination_service\"] == v.service) \r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_workload\",\"destination_workload_namespace\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 9 yPos: 10 description: Details about metrics for the service and then client workloads (workloads that are calling this service) and service workloads (workloads that are providing this service) for that service. name: Istio Service Dashboard --- apiVersion: influxdata.com/v2alpha1 kind: Dashboard metadata: name: pensive-stonebraker-9ed001 spec: associations: - kind: Label name: fervent-bohr-ded001 charts: - height: 1 kind: Markdown name: Name this Cell (Clone) note: '## **General**' staticLegend: {} width: 12 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Volume opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nfrom(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\"])\r\n |> filter(fn: (r) => exists r._value)" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Success Rate (non-5xx responses) opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n\r\nfivehundreds = m\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"_field\", \"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nall = m\r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"_field\", \"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n \r\n\r\njoin(tables: {fh:fivehundreds, a:all}, on: [\"_time\", \"_start\", \"_stop\", \"reporter\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_fh / r._value_a) * 100.0,\r\n reporter: r.reporter\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time yCol: _value yPos: 3 - height: 1 kind: Markdown name: Name this Cell note: '## **Inbound Workloads**' staticLegend: {} width: 6 yPos: 5 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Requests By Source And Response Code opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Duration By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Response Size By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_response_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time yCol: _value yPos: 10 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Sent to Incoming TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 yPos: 12 - axes: - base: "10" name: x scale: linear - name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Success Rate (non-5xx responses) By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\nnon_5xx_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\na = join(tables: {non_5xx_tls:non_5xx_tls, all_tls:all_tls}, on: [\"_time\", \"_start\", \"_stop\",\"response_code\",\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx_tls / r._value_all_tls) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n source_workload_namespace: r.source_workload_namespace,\r\n \ source_workload: r.source_workload,\r\n connection_security_policy: r.connection_security_policy\r\n })\r\n )\r\n\r\nnon_5xx = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nb = join(tables: {non_5xx:non_5xx, all:all}, on: [\"_time\", \"_start\", \"_stop\",\"response_code\",\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx / r._value_all) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n source_workload_namespace: r.source_workload_namespace,\r\n \ source_workload: r.source_workload,\r\n connection_security_policy: r.connection_security_policy\r\n })\r\n )\r\n\r\nunion(tables: [a, b])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Incoming Request Size By Source opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 3 yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Received from Incoming TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.workload )\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.inbound_workload_namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.inbound_workload)\r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"source_workload_namespace\",\"source_workload\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 3 yPos: 10 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: TCP Server Traffic opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\ntx = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nrx = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"destination_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n \r\n\r\njoin(tables: {tx:tx, rx:rx}, on: [\"_time\", \"_start\", \"_stop\", \"reporter\"])\r\n |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_tx + r._value_rx),\r\n \ reporter: r.reporter\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 4 yCol: _value yPos: 1 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Request Duration opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental\"\r\nimport \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nhistograms =\r\n from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n \ |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n \ |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"destination_workload_namespace\"] == v.namespace)\r\n \ |> filter(fn: (r) => r[\"destination_workload\"] == v.workload)\r\n \ |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n \ |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"le\",\"reporter\"])\r\n\r\n |> filter(fn: (r) => exists r._value)\r\nunion(tables: [\r\n histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5)\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xCol: _time xPos: 4 yCol: _value yPos: 3 - height: 1 kind: Markdown name: Name this Cell (Clone) note: '## **Outbound Services**' staticLegend: {} width: 6 xPos: 6 yPos: 5 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' ops/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Outgoing Requests By Destination And Response Code opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service) \r\n\r\nprinc = m\r\n |> filter(fn: (r) => r[\"destination_principal\"] =~ /spiffe.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_service\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nno_princ = m\r\n |> filter(fn: (r) => r[\"destination_principal\"] !~ /spiffe.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_service\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\n\r\nunion(tables: [princ, no_princ])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Outgoing Request Duration By Destination opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" or r[\"_field\"] == \"istio_request_duration_seconds_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service) \r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n \ |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> map(fn: (r) => ({ r with le: if r[\"_field\"] == \"istio_request_duration_milliseconds_bucket\" then float(v: r.le) / 1000.0 else float(v: r.le) })) \r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Response Size By Destination opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_response_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service)\r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 6 yCol: _value yPos: 10 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Received from Outgoing TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service) \r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 6 yPos: 12 - axes: - base: "10" name: x scale: linear - base: "10" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: TCP Client Traffic opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\ntx = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_sent_bytes_total\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n\r\nrx = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n \ |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n \ |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"reporter\"] =~ /source|destination/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"_field\", \"reporter\"])\r\n |> filter(fn: (r) => exists r._value)\r\n \r\n\r\njoin(tables: {tx:tx, rx:rx}, on: [\"_time\", \"_start\", \"_stop\", \"reporter\"])\r\n |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_tx + r._value_rx),\r\n \ reporter: r.reporter\r\n })\r\n )" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 4 widthRatio: 1 xPos: 8 yPos: 1 - axes: - base: "10" name: x scale: linear - name: "y" scale: linear suffix: ' %' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Outgoing Success Rate (non-5xx responses) By Destination opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_requests_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service) \r\n\r\nnon_5xx_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\na = join(tables: {non_5xx_tls:non_5xx_tls, all_tls:all_tls}, on: [\"_time\", \"_start\", \"_stop\",\"response_code\",\"reporter\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx_tls / r._value_all_tls) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n connection_security_policy: r.connection_security_policy,\r\n \ destination_service: r.destination_service\r\n })\r\n )\r\n\r\nnon_5xx = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n |> filter(fn: (r) => r[\"response_code\"] !~ /5.*/)\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nall = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 5m, unit: 1s, groupColumns: [\"reporter\",\"response_code\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nb = join(tables: {non_5xx:non_5xx, all:all}, on: [\"_time\", \"_start\", \"_stop\",\"response_code\",\"reporter\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> map(fn: (r) => ({\r\n _time: r._time,\r\n _value: (r._value_non_5xx / r._value_all) * 100.0,\r\n reporter: r.reporter,\r\n response_code: r.response_code,\r\n connection_security_policy: r.connection_security_policy,\r\n \ destination_service: r.destination_service\r\n })\r\n )\r\n\r\nunion(tables: [a, b])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 9 yPos: 6 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: B colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: bcac2843-2f91-4917-9297-00813796c616 name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: e45eed79-50ee-4e17-8668-d4942b7c6cc9 name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: 95085605-dfca-4428-9734-51d2e16f9ff2 name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Outgoing Request Size By Destination opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\nimport \"experimental/prometheus\"\r\n\r\nm = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_request_bytes_bucket\")\r\n \ |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service) \r\n\r\nhistograms_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nhistograms = m\r\n \ |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"le\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.99),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.95),\r\n \ histograms |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms |> prometheus.histogramQuantile(quantile: 0.5),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.99),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.95),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.9),\r\n histograms_tls |> prometheus.histogramQuantile(quantile: 0.5),\r\n])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xCol: _time xPos: 9 yCol: _value yPos: 8 - axes: - base: "10" name: x scale: linear - base: "2" name: "y" scale: linear suffix: ' B/s' colorMapping: {} colorizeRows: true colors: - hex: '#31C0F6' id: 3171e769-22f4-4bf7-b6a0-0fc4f12d339a name: Nineteen Eighty Four type: scale - hex: '#A500A5' id: 2276c6b9-69b3-411f-966b-43f6ba2d301d name: Nineteen Eighty Four type: scale - hex: '#FF7E27' id: b7fe02a2-a7ef-4ff1-a1a4-c7a5b72eed6a name: Nineteen Eighty Four type: scale geom: line height: 2 hoverDimension: auto kind: Xy legendColorizeRows: true legendOpacity: 1 legendOrientationThreshold: 1e+08 name: Bytes Sent on Outgoing TCP Connection opacity: 1 orientationThreshold: 1e+08 position: overlaid queries: - query: "import \"experimental/aggregate\"\r\n\r\nm = from(bucket: v.bucket)\r\n \ |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"prometheus\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"istio_tcp_received_bytes_total\")\r\n |> filter(fn: (r) => r[\"reporter\"] == \"source\")\r\n |> filter(fn: (r) => r[\"source_workload_namespace\"] == v.namespace)\r\n |> filter(fn: (r) => r[\"source_workload\"] == v.workload)\r\n |> filter(fn: (r) => r[\"destination_service\"] == v.destination_service) \r\n\r\ntls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] == \"mutual_tls\")\r\n |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value) \r\n\r\nno_tls = m\r\n |> filter(fn: (r) => r[\"connection_security_policy\"] != \"mutual_tls\")\r\n \ |> increase(columns: [\"_value\"])\r\n |> aggregate.rate(every: 1m, unit: 1s, groupColumns: [\"reporter\",\"destination_service\",\"connection_security_policy\"])\r\n \ |> filter(fn: (r) => exists r._value)\r\n\r\nunion(tables: [tls, no_tls])" staticLegend: colorizeRows: true opacity: 1 orientationThreshold: 1e+08 widthRatio: 1 width: 3 widthRatio: 1 xPos: 9 yPos: 10 description: Details about metrics for each workload and then inbound workloads (workloads that are sending request to this workload) and outbound services (services to which this workload send requests) for that workload. name: ' Istio Workload Dashboard' --- apiVersion: influxdata.com/v2alpha1 kind: Telegraf metadata: name: jolly-pike-5ed001 spec: associations: - kind: Label name: fervent-bohr-ded001 config: |- # Configuration for telegraf agent [agent] ## Default data collection interval for all inputs interval = "20s" ## Rounds collection interval to 'interval' ## ie, if interval="10s" then always collect on :00, :10, :20, etc. round_interval = true ## Telegraf will send metrics to outputs in batches of at most ## metric_batch_size metrics. ## This controls the size of writes that Telegraf sends to output plugins. metric_batch_size = 1000 ## Maximum number of unwritten metrics per output. Increasing this value ## allows for longer periods of output downtime without dropping metrics at the ## cost of higher maximum memory usage. metric_buffer_limit = 10000 ## Collection jitter is used to jitter the collection by a random amount. ## Each plugin will sleep for a random time within jitter before collecting. ## This can be used to avoid many plugins querying things like sysfs at the ## same time, which can have a measurable effect on the system. collection_jitter = "0s" ## Default flushing interval for all outputs. Maximum flush_interval will be ## flush_interval + flush_jitter flush_interval = "10s" ## Jitter the flush interval by a random amount. This is primarily to avoid ## large write spikes for users running a large number of telegraf instances. ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s flush_jitter = "0s" ## By default or when set to "0s", precision will be set to the same ## timestamp order as the collection interval, with the maximum being 1s. ## ie, when interval = "10s", precision will be "1s" ## when interval = "250ms", precision will be "1ms" ## Precision will NOT be used for service inputs. It is up to each individual ## service input to set the timestamp at the appropriate precision. ## Valid time units are "ns", "us" (or "µs"), "ms", "s". precision = "" ## Log at debug level. # debug = false ## Log only error level messages. # quiet = false ## Log target controls the destination for logs and can be one of "file", ## "stderr" or, on Windows, "eventlog". When set to "file", the output file ## is determined by the "logfile" setting. # logtarget = "file" ## Name of the file to be logged to when using the "file" logtarget. If set to ## the empty string then logs are written to stderr. # logfile = "" ## The logfile will be rotated after the time interval specified. When set ## to 0 no time based rotation is performed. Logs are rotated only when ## written to, if there is no log activity rotation may be delayed. # logfile_rotation_interval = "0d" ## The logfile will be rotated when it becomes larger than the specified ## size. When set to 0 no size based rotation is performed. # logfile_rotation_max_size = "0MB" ## Maximum number of rotated archives to keep, any older logs are deleted. ## If set to -1, no archives are removed. # logfile_rotation_max_archives = 5 ## Pick a timezone to use when logging or type 'local' for local time. ## Example: America/Chicago # log_with_timezone = "" ## Override default hostname, if empty use os.Hostname() hostname = "" ## If set to true, do no set the "host" tag in the telegraf agent. omit_hostname = false [[outputs.influxdb_v2]] ## The URLs of the InfluxDB cluster nodes. ## ## Multiple URLs can be specified for a single cluster, only ONE of the ## urls will be written to each interval. ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] urls = ["$INFLUX_HOST"] ## Token for authentication. token = "$INFLUX_TOKEN" ## Organization is the name of the organization you wish to write to; must exist. organization = "$INFLUX_ORG" ## Destination bucket to write into. bucket = "$INFLUX_BUCKET" ## The value of this tag will be used to determine the bucket. If this ## tag is not set the 'bucket' option is used as the default. # bucket_tag = "" ## If true, the bucket tag will not be added to the metric. # exclude_bucket_tag = false ## Timeout for HTTP messages. # timeout = "5s" ## Additional HTTP headers # http_headers = {"X-Special-Header" = "Special-Value"} ## HTTP Proxy override, if unset values the standard proxy environment ## variables are consulted to determine which proxy, if any, should be used. # http_proxy = "http://corporate.proxy:3128" ## HTTP User-Agent # user_agent = "telegraf" ## Content-Encoding for write request body, can be set to "gzip" to ## compress body or "identity" to apply no encoding. # content_encoding = "gzip" ## Enable or disable uint support for writing uints influxdb 2.0. # influx_uint_support = false ## Optional TLS Config for use on HTTP connections. # tls_ca = "/etc/telegraf/ca.pem" # tls_cert = "/etc/telegraf/cert.pem" # tls_key = "/etc/telegraf/key.pem" ## Use TLS but skip chain & host verification # insecure_skip_verify = false [[inputs.prometheus]] urls = [ "https://kubernetes.default.svc/api/v1/nodes/$HOSTNAME/proxy/metrics/cadvisor", "https://kubernetes.default.svc/api/v1/nodes/$HOSTNAME/proxy/metrics" ] metric_version = 2 monitor_kubernetes_pods = true pod_scrape_scope = "node" pod_scrape_interval = 60 kubernetes_field_selector = "spec.nodeName=$HOSTNAME" bearer_token = "/var/run/secrets/kubernetes.io/serviceaccount/token" response_timeout = "5s" tls_ca = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" insecure_skip_verify = true name: istio-daemonset