diff --git a/Dockerfile b/Dockerfile index 7a6deb668..139818b03 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,13 +10,14 @@ FROM alpine RUN apk --update add ca-certificates curl RUN mkdir /lib64 && \ ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 && \ - mkdir -p /root/.kube + mkdir -p /root/.kube && \ + mkdir -p /tmp/istio COPY --from=bd /meshery-istio /app/ COPY --from=bd /istio /app/istio COPY --from=bd /istio.tar.gz /app/ COPY --from=bd //github.com/layer5io/meshery-istio/scripts /app/scripts/. COPY --from=bd /etc/passwd /etc/passwd -ENV ISTIO_VERSION=istio-1.5.1 +ENV ISTIO_VERSION=1.7.3 # USER appuser WORKDIR /app CMD ./meshery-istio diff --git a/istio/client.go b/istio/client.go index 17d21132a..10d300ab4 100644 --- a/istio/client.go +++ b/istio/client.go @@ -132,77 +132,10 @@ func monkeyPatchingToSupportInsecureConn(data []byte) []byte { return data1 } -// Kubeconfig is structure of the kubeconfig file -type Kubeconfig struct { - APIVersion string `yaml:"apiVersion,omitempty" json:"apiVersion,omitempty"` - Clusters []struct { - Cluster struct { - CertificateAuthorityData string `yaml:"certificate-authority-data,omitempty" json:"certificate-authority-data,omitempty"` - Server string `yaml:"server,omitempty" json:"server,omitempty"` - } `yaml:"cluster,omitempty" json:"cluster,omitempty"` - Name string `yaml:"name,omitempty" json:"name,omitempty"` - } `yaml:"clusters,omitempty" json:"clusters,omitempty"` - Contexts []struct { - Context struct { - Cluster string `yaml:"cluster,omitempty" json:"cluster,omitempty"` - Namespace string `yaml:"namespace,omitempty" json:"namespace,omitempty"` - User string `yaml:"user,omitempty" json:"user,omitempty"` - } `yaml:"context,omitempty" json:"context,omitempty"` - Name string `yaml:"name,omitempty" json:"name,omitempty"` - } `yaml:"contexts,omitempty" json:"contexts,omitempty"` - CurrentContext string `yaml:"current-context,omitempty" json:"current-context,omitempty"` - Kind string `yaml:"kind,omitempty" json:"kind,omitempty"` - Preferences struct { - } `yaml:"preferences,omitempty" json:"preferences,omitempty"` - Users []struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - User struct { - Exec struct { - APIVersion string `yaml:"apiVersion,omitempty" json:"apiVersion,omitempty"` - Args []string `yaml:"args,omitempty" json:"args,omitempty"` - Command string `yaml:"command,omitempty" json:"command,omitempty"` - Env []struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - Value string `yaml:"value,omitempty" json:"value,omitempty"` - } `yaml:"env,omitempty" json:"env,omitempty"` - } `yaml:"exec,omitempty" json:"exec,omitempty"` - AuthProvider struct { - Config struct { - AccessToken string `yaml:"access-token,omitempty" json:"access-token,omitempty"` - CmdArgs string `yaml:"cmd-args,omitempty" json:"cmd-args,omitempty"` - CmdPath string `yaml:"cmd-path,omitempty" json:"cmd-path,omitempty"` - Expiry time.Time `yaml:"expiry,omitempty" json:"expiry,omitempty"` - ExpiryKey string `yaml:"expiry-key,omitempty" json:"expiry-key,omitempty"` - TokenKey string `yaml:"token-key,omitempty" json:"token-key,omitempty"` - } `yaml:"config,omitempty" json:"config,omitempty"` - Name string `yaml:"name,omitempty" json:"name,omitempty"` - } `yaml:"auth-provider,omitempty" json:"auth-provider,omitempty"` - ClientCertificateData string `yaml:"client-certificate-data,omitempty" json:"client-certificate-data,omitempty"` - ClientKeyData string `yaml:"client-key-data,omitempty" json:"client-key-data,omitempty"` - Token string `yaml:"token,omitempty" json:"token,omitempty"` - } `yaml:"user,omitempty,omitempty" json:"user,omitempty,omitempty"` - } `yaml:"users,omitempty" json:"users,omitempty"` -} - // writeKubeconfig creates kubeconfig in local container func writeKubeconfig(kubeconfig []byte, contextName string, path string) error { - yamlConfig := Kubeconfig{} - err := yaml.Unmarshal(kubeconfig, &yamlConfig) - if err != nil { - return err - } - - yamlConfig.CurrentContext = contextName - fmt.Printf("%+v\n", yamlConfig) - - d, err := yaml.Marshal(yamlConfig) - if err != nil { - return err - } - fmt.Printf(string(d)) - - err = ioutil.WriteFile(path, d, 0600) + err := ioutil.WriteFile(path, kubeconfig, 0600) if err != nil { return err } diff --git a/istio/config_templates/addons/grafana.yaml b/istio/config_templates/addons/grafana.yaml new file mode 100644 index 000000000..e46d54ada --- /dev/null +++ b/istio/config_templates/addons/grafana.yaml @@ -0,0 +1,9019 @@ +--- +# Source: grafana/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + helm.sh/chart: grafana-5.3.5 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "7.0.5" + app.kubernetes.io/managed-by: Helm + name: grafana + namespace: istio-system +--- +# Source: grafana/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana + namespace: istio-system + labels: + helm.sh/chart: grafana-5.3.5 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "7.0.5" + app.kubernetes.io/managed-by: Helm +data: + grafana.ini: | + [analytics] + check_for_updates = true + [grafana_net] + url = https://grafana.net + [log] + mode = console + [paths] + data = /var/lib/grafana/data + logs = /var/log/grafana + plugins = /var/lib/grafana/plugins + provisioning = /etc/grafana/provisioning + + datasources.yaml: | + apiVersion: 1 + datasources: + - access: proxy + editable: true + isDefault: true + jsonData: + timeInterval: 5s + name: Prometheus + orgId: 1 + type: prometheus + url: http://prometheus:9090 + dashboardproviders.yaml: | + apiVersion: 1 + providers: + - disableDeletion: false + folder: istio + name: istio + options: + path: /var/lib/grafana/dashboards/istio + orgId: 1 + type: file + - disableDeletion: false + folder: istio + name: istio-services + options: + path: /var/lib/grafana/dashboards/istio-services + orgId: 1 + type: file +--- +# Source: grafana/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: grafana + namespace: istio-system + labels: + helm.sh/chart: grafana-5.3.5 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "7.0.5" + app.kubernetes.io/managed-by: Helm +spec: + type: LoadBalancer + ports: + - name: service + port: 3000 + protocol: TCP + targetPort: 3000 + + selector: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana +--- +# Source: grafana/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: grafana + namespace: istio-system + labels: + helm.sh/chart: grafana-5.3.5 + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app.kubernetes.io/version: "7.0.5" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: grafana + app.kubernetes.io/instance: grafana + app: grafana + annotations: + checksum/config: fe7e580c8af3062a70a8dfda740e0ae1daa655c20dd5b94e78bdd09a79b9b5cb + checksum/dashboards-json-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + checksum/sc-dashboard-provider-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + spec: + + serviceAccountName: grafana + securityContext: + fsGroup: 472 + runAsGroup: 472 + runAsUser: 472 + containers: + - name: grafana + image: "grafana/grafana:7.0.5" + imagePullPolicy: IfNotPresent + volumeMounts: + - name: config + mountPath: "/etc/grafana/grafana.ini" + subPath: grafana.ini + - name: storage + mountPath: "/var/lib/grafana" + - name: dashboards-istio + mountPath: "/var/lib/grafana/dashboards/istio" + - name: dashboards-istio-services + mountPath: "/var/lib/grafana/dashboards/istio-services" + - name: config + mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" + subPath: datasources.yaml + - name: config + mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" + subPath: dashboardproviders.yaml + ports: + - name: service + containerPort: 3000 + protocol: TCP + - name: grafana + containerPort: 3000 + protocol: TCP + env: + - name: "GF_AUTH_ANONYMOUS_ENABLED" + value: "true" + - name: "GF_AUTH_ANONYMOUS_ORG_ROLE" + value: "Admin" + - name: "GF_AUTH_BASIC_ENABLED" + value: "false" + - name: "GF_SECURITY_ADMIN_PASSWORD" + value: "-" + - name: "GF_SECURITY_ADMIN_USER" + value: "-" + livenessProbe: + failureThreshold: 10 + httpGet: + path: /api/health + port: 3000 + initialDelaySeconds: 60 + timeoutSeconds: 30 + readinessProbe: + httpGet: + path: /api/health + port: 3000 + resources: + {} + volumes: + - name: config + configMap: + name: grafana + + - name: dashboards-istio + configMap: + name: istio-grafana-dashboards + - name: dashboards-istio-services + configMap: + name: istio-services-grafana-dashboards + - name: storage + emptyDir: {} + +--- + +apiVersion: v1 +data: + istio-performance-dashboard.json: | + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 21, + "panels": [ + { + "content": "The charts on this dashboard are intended to show Istio main components cost in terms resources utilization under steady load.\n\n- **vCPU/1k rps:** shows vCPU utilization by the main Istio components normalized by 1000 requests/second. When idle or low traffic, this chart will be blank. The curve for istio-proxy refers to the services sidecars only.\n- **vCPU:** vCPU utilization by Istio components, not normalized.\n- **Memory:** memory footprint for the components. Telemetry and policy are normalized by 1k rps, and no data is shown when there is no traffic. For ingress and istio-proxy, the data is per instance.\n- **Bytes transferred/ sec:** shows the number of bytes flowing through each Istio component.\n\n\n", + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 19, + "links": [], + "mode": "markdown", + "timeFrom": null, + "timeShift": null, + "title": "Performance Dashboard README", + "transparent": true, + "type": "text" + } + ], + "title": "Performance Dashboard Notes", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 6, + "panels": [], + "title": "vCPU Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 2 + }, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "(sum(irate(container_cpu_usage_seconds_total{pod=~\"istio-telemetry-.*\",container=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "istio-telemetry", + "refId": "A" + }, + { + "expr": "(sum(irate(container_cpu_usage_seconds_total{pod=~\"istio-ingressgateway-.*\",container=\"istio-proxy\"}[1m])) / (round(sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m])), 0.001)/1000))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "istio-ingressgateway", + "refId": "B" + }, + { + "expr": "(sum(irate(container_cpu_usage_seconds_total{namespace!=\"istio-system\",container=\"istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-proxy", + "refId": "C" + }, + { + "expr": "(sum(irate(container_cpu_usage_seconds_total{pod=~\"istio-policy-.*\",container=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-policy", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "vCPU / 1k rps", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 2 + }, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{pod=~\"istio-telemetry-.*\",container=~\"mixer|istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-telemetry", + "refId": "A" + }, + { + "expr": "sum(rate(container_cpu_usage_seconds_total{pod=~\"istio-ingressgateway-.*\",container=\"istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-ingressgateway", + "refId": "B" + }, + { + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace!=\"istio-system\",container=\"istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-proxy", + "refId": "C" + }, + { + "expr": "sum(rate(container_cpu_usage_seconds_total{pod=~\"istio-policy-.*\",container=~\"mixer|istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-policy", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "vCPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 13, + "panels": [], + "title": "Memory and Data Rates", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 11 + }, + "id": 902, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "(sum(container_memory_usage_bytes{pod=~\"istio-telemetry-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000)) / (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-telemetry / 1k rps", + "refId": "A" + }, + { + "expr": "sum(container_memory_usage_bytes{pod=~\"istio-ingressgateway-.*\"}) / count(container_memory_usage_bytes{pod=~\"istio-ingressgateway-.*\",container!=\"POD\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "per istio-ingressgateway", + "refId": "B" + }, + { + "expr": "sum(container_memory_usage_bytes{namespace!=\"istio-system\",container=\"istio-proxy\"}) / count(container_memory_usage_bytes{namespace!=\"istio-system\",container=\"istio-proxy\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "per istio proxy", + "refId": "C" + }, + { + "expr": "(sum(container_memory_usage_bytes{pod=~\"istio-policy-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-policy / 1k rps", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 11 + }, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-telemetry\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-telemetry\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-telemetry", + "refId": "A" + }, + { + "expr": "sum(irate(istio_response_bytes_sum{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-ingressgateway", + "refId": "B" + }, + { + "expr": "sum(irate(istio_response_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_response_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m])) + sum(irate(istio_request_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-proxy", + "refId": "C" + }, + { + "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-policy\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-policy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio_policy", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Bytes transferred / sec", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 17, + "panels": [], + "title": "Istio Component Versions", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 15, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(istio_build) by (component, tag)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ component }}: {{ tag }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Istio Components by Version", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 71, + "panels": [], + "title": "Proxy Resource Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 32 + }, + "id": 72, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(container_memory_usage_bytes{container=\"istio-proxy\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container }} (k8s)", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 32 + }, + "id": 73, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{container=\"istio-proxy\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "vCPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 32 + }, + "id": 702, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(container_fs_usage_bytes{ container=\"istio-proxy\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ container }}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 69, + "panels": [], + "title": "Pilot Resource Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 40 + }, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_virtual_memory_bytes{app=\"istiod\"}", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory", + "refId": "I", + "step": 2 + }, + { + "expr": "process_resident_memory_bytes{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory", + "refId": "H", + "step": 2 + }, + { + "expr": "go_memstats_heap_sys_bytes{app=\"istiod\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "A" + }, + { + "expr": "go_memstats_heap_alloc_bytes{app=\"istiod\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F", + "step": 2 + }, + { + "expr": "go_memstats_heap_inuse_bytes{app=\"istiod\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Heap in-use", + "refId": "E", + "step": 2 + }, + { + "expr": "go_memstats_stack_inuse_bytes{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "G", + "step": 2 + }, + { + "expr": "sum(container_memory_usage_bytes{container=~\"discovery|istio-proxy\", pod=~\"istiod-.*\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "C", + "step": 2 + }, + { + "expr": "container_memory_usage_bytes{container=~\"discovery|istio-proxy\", pod=~\"istiod-.*\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container }} (k8s)", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 40 + }, + "id": 602, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{container=~\"discovery|istio-proxy\", pod=~\"istiod-.*\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "A", + "step": 2 + }, + { + "expr": "sum(rate(container_cpu_usage_seconds_total{container=~\"discovery|istio-proxy\", pod=~\"istiod-.*\"}[1m])) by (container)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container }} (k8s)", + "refId": "B", + "step": 2 + }, + { + "expr": "irate(process_cpu_seconds_total{app=\"istiod\"}[1m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "pilot (self-reported)", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "vCPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 40 + }, + "id": 74, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_open_fds{app=\"istiod\"}", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open FDs (pilot)", + "refId": "A" + }, + { + "expr": "container_fs_usage_bytes{ container=~\"discovery|istio-proxy\", pod=~\"istiod-.*\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ container }}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 40 + }, + "id": 402, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "go_goroutines{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Number of Goroutines", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Goroutines", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 93, + "panels": [], + "title": "Mixer Resource Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 48 + }, + "id": 94, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory", + "refId": "I", + "step": 2 + }, + { + "expr": "process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory", + "refId": "H", + "step": 2 + }, + { + "expr": "go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "A" + }, + { + "expr": "go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F", + "step": 2 + }, + { + "expr": "go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Heap in-use", + "refId": "E", + "step": 2 + }, + { + "expr": "go_memstats_stack_inuse_bytes{job=~\"istio-policy|istio-telemetry\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "G", + "step": 2 + }, + { + "expr": "sum(container_memory_usage_bytes{container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*\"})", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "C", + "step": 2 + }, + { + "expr": "container_memory_usage_bytes{container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container }} (k8s)", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 48 + }, + "id": 95, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "A", + "step": 2 + }, + { + "expr": "sum(rate(container_cpu_usage_seconds_total{container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*\"}[1m])) by (container)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container }} (k8s)", + "refId": "B", + "step": 2 + }, + { + "expr": "irate(process_cpu_seconds_total{job=~\"istio-policy|istio-telemetry\"}[1m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "mixer (self-reported)", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "vCPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 48 + }, + "id": 96, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_open_fds{job=~\"istio-policy|istio-telemetry\"}", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open FDs (pilot)", + "refId": "A" + }, + { + "expr": "container_fs_usage_bytes{container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ container }}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 48 + }, + "id": 97, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "go_goroutines{job=\"istio-telemetry\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Number of Goroutines", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Goroutines", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "10s", + "schemaVersion": 18, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Performance Dashboard", + "uid": "vu8e0VWZk", + "version": 22 + } + mixer-dashboard.json: | + { + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "5.2.3" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "5.0.0" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "5.0.0" + }, + { + "type": "panel", + "id": "text", + "name": "Text", + "version": "5.0.0" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1543881232533, + "links": [], + "panels": [ + { + "content": "

Deployed Versions

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "height": "40", + "id": 62, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 64, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(istio_build{component=\"mixer\"}) by (tag)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ tag }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Mixer Versions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "content": "

Resource Usage

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 8 + }, + "height": "40", + "id": 29, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 11 + }, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory ({{ job }})", + "refId": "I" + }, + { + "expr": "sum(process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory ({{ job }})", + "refId": "H" + }, + { + "expr": "sum(go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys ({{ job }})", + "refId": "A" + }, + { + "expr": "sum(go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc ({{ job }})", + "refId": "D" + }, + { + "expr": "sum(go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc ({{ job }})", + "refId": "F" + }, + { + "expr": "sum(go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Heap in-use ({{ job }})", + "refId": "E" + }, + { + "expr": "sum(go_memstats_stack_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use ({{ job }})", + "refId": "G" + }, + { + "expr": "sum(label_replace(container_memory_usage_bytes{job=\"kubernetes-cadvisor\", container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod\", \"(istio-telemetry|istio-policy)-.*\")) by (service)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ service }} total (k8s)", + "refId": "C" + }, + { + "expr": "sum(label_replace(container_memory_usage_bytes{job=\"kubernetes-cadvisor\", container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod\", \"(istio-telemetry|istio-policy)-.*\")) by (container, service)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ service }} - {{ container }} (k8s)", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 11 + }, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (pod), \"service\", \"$1\" , \"pod\", \"(istio-telemetry|istio-policy)-.*\")", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ service }} total (k8s)", + "refId": "A" + }, + { + "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (container, pod), \"service\", \"$1\" , \"pod\", \"(istio-telemetry|istio-policy)-.*\")", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ service }} - {{ container }} (k8s)", + "refId": "B" + }, + { + "expr": "sum(irate(process_cpu_seconds_total{job=~\"istio-telemetry|istio-policy\"}[1m])) by (job)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ job }} (self-reported)", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 11 + }, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(process_open_fds{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open FDs ({{ job }})", + "refId": "A" + }, + { + "expr": "sum(label_replace(container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container=~\"mixer|istio-proxy\", pod=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod\", \"(istio-telemetry|istio-policy)-.*\")) by (container, service)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ service }} - {{ container }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Disk", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 11 + }, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(go_goroutines{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Number of Goroutines ({{ job }})", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Goroutines", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "content": "

Mixer Overview

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 18 + }, + "height": "40px", + "id": 30, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 6, + "x": 0, + "y": 21 + }, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(grpc_io_server_completed_rpcs[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "mixer (Total)", + "refId": "B" + }, + { + "expr": "sum(rate(grpc_io_server_completed_rpcs[1m])) by (grpc_server_method)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "mixer ({{ grpc_server_method }})", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Requests", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 6, + "x": 6, + "y": 21 + }, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "{}", + "yaxis": 1 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.5, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ grpc_server_method }} 0.5", + "refId": "B" + }, + { + "expr": "histogram_quantile(0.9, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ grpc_server_method }} 0.9", + "refId": "C" + }, + { + "expr": "histogram_quantile(0.99, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ grpc_server_method }} 0.99", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Durations", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 6, + "x": 12, + "y": 21 + }, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(grpc_server_handled_total{grpc_code=~\"Unknown|Unimplemented|Internal|DataLoss\"}[1m])) by (grpc_method)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Mixer {{ grpc_method }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Server Error Rate (5xx responses)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 6, + "x": 18, + "y": 21 + }, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(grpc_server_handled_total{grpc_code!=\"OK\",grpc_service=~\".*Mixer\"}[1m])) by (grpc_method)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Mixer {{ grpc_method }}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Non-successes (4xxs)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "content": "

Adapters and Config

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 28, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 30 + }, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m])) by (adapter)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ adapter }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Adapter Dispatch Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.5, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ adapter }} - p50", + "refId": "A" + }, + { + "expr": "histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ adapter }} - p90 ", + "refId": "B" + }, + { + "expr": "histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ adapter }} - p99", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Adapter Dispatch Duration", + "tooltip": { + "shared": true, + "sort": 1, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 37 + }, + "id": 60, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "scalar(topk(1, max(mixer_config_rule_config_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Rules", + "refId": "A" + }, + { + "expr": "scalar(topk(1, max(mixer_config_rule_config_error_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Config Errors", + "refId": "B" + }, + { + "expr": "scalar(topk(1, max(mixer_config_rule_config_match_error_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Match Errors", + "refId": "C" + }, + { + "expr": "scalar(topk(1, max(mixer_config_unsatisfied_action_handler_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Unsatisfied Actions", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Rules", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 37 + }, + "id": 56, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "scalar(topk(1, max(mixer_config_instance_config_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Instances", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Instances in Latest Config", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 37 + }, + "id": 54, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "scalar(topk(1, max(mixer_config_handler_config_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Handlers", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Handlers in Latest Config", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 37 + }, + "id": 58, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "scalar(topk(1, max(mixer_config_attribute_count) by (configID)))", + "format": "time_series", + "instant": false, + "intervalFactor": 1, + "legendFormat": "Attributes", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Attributes in Latest Config", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "content": "

Individual Adapters

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 23, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 46, + "panels": [], + "repeat": "adapter", + "title": "$adapter Adapter", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 48 + }, + "id": 17, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "label_replace(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m]),\"handler\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ handler }} (error: {{ error }})", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Dispatch Count By Handler", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 48 + }, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "label_replace(histogram_quantile(0.5, sum(rate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "p50 - {{ handler_short }} (error: {{ error }})", + "refId": "A" + }, + { + "expr": "label_replace(histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "p90 - {{ handler_short }} (error: {{ error }})", + "refId": "D" + }, + { + "expr": "label_replace(histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "p99 - {{ handler_short }} (error: {{ error }})", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Dispatch Duration By Handler", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 16, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Adapter", + "multi": true, + "name": "adapter", + "options": [], + "query": "label_values(adapter)", + "refresh": 2, + "regex": "", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Mixer Dashboard", + "version": 4 + } + pilot-dashboard.json: |- + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 1, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 60, + "panels": [], + "title": "Deployed Versions", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 56, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(istio_build{component=\"pilot\"}) by (tag)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ tag }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Pilot Versions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 62, + "panels": [], + "title": "Resource Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 0, + "y": 7 + }, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "process_virtual_memory_bytes{app=\"istiod\"}", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory", + "refId": "I", + "step": 2 + }, + { + "expr": "process_resident_memory_bytes{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory", + "refId": "H", + "step": 2 + }, + { + "expr": "go_memstats_heap_sys_bytes{app=\"istiod\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "A" + }, + { + "expr": "go_memstats_heap_alloc_bytes{app=\"istiod\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F", + "step": 2 + }, + { + "expr": "go_memstats_heap_inuse_bytes{app=\"istiod\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Heap in-use", + "refId": "E", + "step": 2 + }, + { + "expr": "go_memstats_stack_inuse_bytes{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "G", + "step": 2 + }, + { + "expr": "container_memory_usage_bytes{container=~\"discovery\", pod=~\"istiod-.*|istio-pilot-.*\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Discovery (container)", + "refId": "B", + "step": 2 + }, + { + "expr": "container_memory_usage_bytes{container=~\"istio-proxy\", pod=~\"istiod-.*|istio-pilot-.*\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Sidecar (container)", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 6, + "y": 7 + }, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(container_cpu_usage_seconds_total{container=\"discovery\", pod=~\"istiod-.*|istio-pilot-.*\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Discovery (container)", + "refId": "A" + }, + { + "expr": "irate(process_cpu_seconds_total{app=\"istiod\"}[1m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Discovery (process)", + "refId": "C", + "step": 2 + }, + { + "expr": "sum(irate(container_cpu_usage_seconds_total{container=\"istio-proxy\", pod=~\"istiod-.*|istio-pilot-.*\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Sidecar (container)", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 7 + }, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "container_fs_usage_bytes{container=\"discovery\", pod=~\"istiod-.*|istio-pilot-.*\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Discovery", + "refId": "B", + "step": 2 + }, + { + "expr": "container_fs_usage_bytes{container=\"istio-proxy\", pod=~\"istiod-.*|istio-pilot-.*\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Sidecar", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 7 + }, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "go_goroutines{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Number of Goroutines", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Goroutines", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 58, + "panels": [], + "title": "Pilot Push Information", + "type": "row" + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Shows the rate of pilot pushes", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 15 + }, + "id": 622, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": false, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "paceLength": 10, + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(pilot_xds_pushes{type=\"cds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Cluster", + "refId": "C" + }, + { + "expr": "sum(irate(pilot_xds_pushes{type=\"eds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Endpoints", + "refId": "D" + }, + { + "expr": "sum(irate(pilot_xds_pushes{type=\"lds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Listeners", + "refId": "A" + }, + { + "expr": "sum(irate(pilot_xds_pushes{type=\"rds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Routes", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Pilot Pushes", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Captures a variety of pilot errors", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 15 + }, + "id": 67, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(pilot_xds_cds_reject{app=\"istiod\"}) or (absent(pilot_xds_cds_reject{app=\"istiod\"}) - 1)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Rejected CDS Configs", + "refId": "C" + }, + { + "expr": "sum(pilot_xds_eds_reject{app=\"istiod\"}) or (absent(pilot_xds_eds_reject{app=\"istiod\"}) - 1)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Rejected EDS Configs", + "refId": "D" + }, + { + "expr": "sum(pilot_xds_rds_reject{app=\"istiod\"}) or (absent(pilot_xds_rds_reject{app=\"istiod\"}) - 1)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Rejected RDS Configs", + "refId": "A" + }, + { + "expr": "sum(pilot_xds_lds_reject{app=\"istiod\"}) or (absent(pilot_xds_lds_reject{app=\"istiod\"}) - 1)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Rejected LDS Configs", + "refId": "B" + }, + { + "expr": "sum(rate(pilot_xds_write_timeout{app=\"istiod\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Write Timeouts", + "refId": "F" + }, + { + "expr": "sum(rate(pilot_total_xds_internal_errors{app=\"istiod\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Internal Errors", + "refId": "H" + }, + { + "expr": "sum(rate(pilot_total_xds_rejects{app=\"istiod\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Config Rejection Rate", + "refId": "E" + }, + { + "expr": "sum(rate(pilot_xds_push_context_errors{app=\"istiod\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Push Context Errors", + "refId": "K" + }, + { + "expr": "sum(rate(pilot_xds_pushes{type!~\"lds|cds|rds|eds\"}[1m])) by (type)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Push Errors ({{ type }})", + "refId": "L" + }, + { + "expr": "sum(rate(pilot_xds_push_errors{app=\"istiod\"}[1m])) by (type)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Push Errors ({{ type }})", + "refId": "I" + }, + { + "expr": "sum(rate(pilot_xds_push_timeout{app=\"istiod\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Push Timeouts", + "refId": "G" + }, + { + "expr": "sum(rate(pilot_xds_push_timeout_failures{app=\"istiod\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Push Timeouts Failures", + "refId": "J" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Pilot Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Shows the total time it takes to push a config update to a proxy", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 15 + }, + "id": 624, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.5, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "p50 ", + "refId": "A" + }, + { + "expr": "histogram_quantile(0.9, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "p90", + "refId": "B" + }, + { + "expr": "histogram_quantile(0.99, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "p99", + "refId": "C" + }, + { + "expr": "histogram_quantile(0.999, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "p99.9", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Proxy Push Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 23 + }, + "id": 45, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "pilot_conflict_inbound_listener{app=\"istiod\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Inbound Listeners", + "refId": "B" + }, + { + "expr": "pilot_conflict_outbound_listener_http_over_current_tcp{app=\"istiod\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Outbound Listeners (http over current tcp)", + "refId": "A" + }, + { + "expr": "pilot_conflict_outbound_listener_tcp_over_current_tcp{app=\"istiod\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Outbound Listeners (tcp over current tcp)", + "refId": "C" + }, + { + "expr": "pilot_conflict_outbound_listener_tcp_over_current_http{app=\"istiod\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Outbound Listeners (tcp over current http)", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Conflicts", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 23 + }, + "id": 47, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "pilot_virt_services{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Virtual Services", + "refId": "A" + }, + { + "expr": "pilot_services{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Services", + "refId": "B" + }, + { + "expr": "pilot_xds{app=\"istiod\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Connected Endpoints", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "ADS Monitoring", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "columns": [], + "datasource": "Prometheus", + "description": "Clusters in this table do not have any endpoints known to pilot. This could be from referencing subsets that do not have any instances, or pods marked as NotReady", + "fontSize": "100%", + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 23 + }, + "id": 51, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": null, + "desc": false + }, + "styles": [ + { + "alias": "Time", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "Clusters", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "expr": "sum(pilot_xds_eds_instances{app=\"istiod\", cluster=~\".+\\\\|.+\"}) by (cluster) < 1", + "format": "time_series", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Clusters with no known endpoints", + "transform": "timeseries_aggregations", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 64, + "panels": [], + "title": "Envoy Information", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Shows details about Envoy proxies in the mesh", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 32 + }, + "id": 40, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(envoy_cluster_upstream_cx_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Connections", + "refId": "C" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_connect_fail{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Connection Failures", + "refId": "A" + }, + { + "expr": "sum(increase(envoy_server_hot_restart_epoch[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Envoy Restarts", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Envoy Details", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 32 + }, + "id": 41, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(envoy_cluster_upstream_cx_active{cluster_name=\"xds-grpc\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "XDS Active Connections", + "refId": "C", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "XDS Active Connections", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "Shows the size of XDS requests and responses", + "fill": 1, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 32 + }, + "id": 42, + "legend": { + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max(rate(envoy_cluster_upstream_cx_rx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Response Bytes Max", + "refId": "D" + }, + { + "expr": "quantile(0.5, rate(envoy_cluster_upstream_cx_rx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Response Bytes Average", + "refId": "B" + }, + { + "expr": "max(rate(envoy_cluster_upstream_cx_tx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "XDS Request Bytes Max", + "refId": "A" + }, + { + "expr": "quantile(.5, rate(envoy_cluster_upstream_cx_tx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "XDS Request Bytes Average", + "refId": "C" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "XDS Requests Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 40 + }, + "id": 626, + "panels": [], + "title": "Webhooks", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 41 + }, + "hiddenSeries": false, + "id": 629, + "legend": { + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(galley_validation_passed[1m]))", + "interval": "", + "legendFormat": "Validations (Success)", + "refId": "A" + }, + { + "expr": "sum(rate(galley_validation_failed[1m]))", + "interval": "", + "legendFormat": "Validation (Failure)", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Configuration Validation", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 41 + }, + "hiddenSeries": false, + "id": 630, + "legend": { + "avg": false, + "current": false, + "hideZero": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(rate(sidecar_injection_success_total[1m]))", + "interval": "", + "legendFormat": "Injections (Success)", + "refId": "A" + }, + { + "expr": "sum(rate(sidecar_injection_failure_total[1m]))", + "interval": "", + "legendFormat": "Injections (Failure)", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Sidecar Injection", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 18, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Istio Control Plane Dashboard", + "uid": "3--MLVZZk", + "version": 11 + } +kind: ConfigMap +metadata: + creationTimestamp: null + name: istio-grafana-dashboards + namespace: istio-system + +--- + +apiVersion: v1 +data: + istio-mesh-dashboard.json: | + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "content": "
\n
\n Istio\n
\n
\n Istio is an open platform that provides a uniform way to connect,\n manage, and \n secure microservices.\n
\n Need help? Join the Istio community.\n
\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "height": "50px", + "id": 13, + "links": [], + "mode": "html", + "style": { + "font-size": "18pt" + }, + "title": "", + "transparent": true, + "type": "text" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 3 + }, + "id": 20, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\"}[1m])), 0.001)", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Global Request Volume", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 80, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 3 + }, + "id": 21, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "95, 99, 99.5", + "title": "Global Success Rate (non-5xx responses)", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 3 + }, + "id": 22, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"4.*\"}[1m])) ", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "4xxs", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 3 + }, + "id": 23, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"5.*\"}[1m])) ", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "5xxs", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 6 + }, + "id": 113, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "avg(galley_istio_networking_virtualservices)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A" + } + ], + "thresholds": "", + "timeFrom": null, + "timeShift": null, + "title": "Virtual Services", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 6 + }, + "id": 114, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "avg(galley_istio_networking_destinationrules)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A" + } + ], + "thresholds": "", + "timeFrom": null, + "timeShift": null, + "title": "Destination Rules", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 6 + }, + "id": 115, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "avg(galley_istio_networking_gateways)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A" + } + ], + "thresholds": "", + "timeFrom": null, + "timeShift": null, + "title": "Gateways", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 18, + "y": 6 + }, + "id": 116, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "avg(galley_istio_authentication_meshpolicies)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "refId": "A" + } + ], + "thresholds": "", + "timeFrom": null, + "timeShift": null, + "title": "Authentication Mesh Policies", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "columns": [], + "datasource": "Prometheus", + "fontSize": "100%", + "gridPos": { + "h": 21, + "w": 24, + "x": 0, + "y": 9 + }, + "hideTimeOverride": false, + "id": 73, + "links": [], + "pageSize": null, + "repeat": null, + "repeatDirection": "v", + "scroll": true, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": false, + "linkTargetBlank": false, + "linkTooltip": "Workload dashboard", + "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_2&var-workload=$__cell_", + "pattern": "destination_workload", + "preserveFormat": false, + "sanitize": false, + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Requests", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #A", + "thresholds": [], + "type": "number", + "unit": "ops" + }, + { + "alias": "P50 Latency", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #B", + "thresholds": [], + "type": "number", + "unit": "s" + }, + { + "alias": "P90 Latency", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #D", + "thresholds": [], + "type": "number", + "unit": "s" + }, + { + "alias": "P99 Latency", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #E", + "thresholds": [], + "type": "number", + "unit": "s" + }, + { + "alias": "Success Rate", + "colorMode": "cell", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #F", + "thresholds": [ + ".95", + " 1.00" + ], + "type": "number", + "unit": "percentunit" + }, + { + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-workload-dashboard?var-workload=$__cell_2&var-namespace=$__cell_3", + "pattern": "destination_workload_var", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "Service", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell", + "pattern": "destination_service", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "destination_workload_namespace", + "thresholds": [], + "type": "hidden", + "unit": "short" + } + ], + "targets": [ + { + "expr": "label_join(sum(rate(istio_requests_total{reporter=\"destination\", response_code=\"200\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}", + "refId": "A" + }, + { + "expr": "label_join((histogram_quantile(0.50, sum(rate(istio_request_duration_milliseconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)) / 1000) or histogram_quantile(0.50, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}", + "refId": "B" + }, + { + "expr": "label_join((histogram_quantile(0.90, sum(rate(istio_request_duration_milliseconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)) / 1000) or histogram_quantile(0.90, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "D" + }, + { + "expr": "label_join((histogram_quantile(0.99, sum(rate(istio_request_duration_milliseconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)) / 1000) or histogram_quantile(0.99, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "E" + }, + { + "expr": "label_join((sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) by (destination_workload, destination_workload_namespace) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m])) by (destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "F" + } + ], + "timeFrom": null, + "title": "HTTP/GRPC Workloads", + "transform": "table", + "type": "table" + }, + { + "columns": [], + "datasource": "Prometheus", + "fontSize": "100%", + "gridPos": { + "h": 18, + "w": 24, + "x": 0, + "y": 30 + }, + "hideTimeOverride": false, + "id": 109, + "links": [], + "pageSize": null, + "repeatDirection": "v", + "scroll": true, + "showHeader": true, + "sort": { + "col": 2, + "desc": true + }, + "styles": [ + { + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": false, + "linkTargetBlank": false, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-tcp-workload-dashboard?var-namespace=$__cell_2&&var-workload=$__cell", + "pattern": "destination_workload", + "preserveFormat": false, + "sanitize": false, + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Bytes Sent", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #A", + "thresholds": [ + "" + ], + "type": "number", + "unit": "Bps" + }, + { + "alias": "Bytes Received", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #C", + "thresholds": [], + "type": "number", + "unit": "Bps" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_3&var-workload=$__cell_2", + "pattern": "destination_workload_var", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "destination_workload_namespace", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Service", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell", + "pattern": "destination_service", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "expr": "label_join(sum(rate(istio_tcp_received_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}", + "refId": "C" + }, + { + "expr": "label_join(sum(rate(istio_tcp_sent_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}", + "refId": "A" + } + ], + "timeFrom": null, + "title": "TCP Workloads", + "transform": "table", + "type": "table" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 48 + }, + "id": 111, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(istio_build) by (component, tag)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ component }}: {{ tag }}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Istio Components by Version", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "5s", + "schemaVersion": 18, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Istio Mesh Dashboard", + "uid": "G8wLrJIZk", + "version": 5 + } + istio-service-dashboard.json: "{\n \"annotations\": {\n \"list\": [\n {\n + \ \"builtIn\": 1,\n \"datasource\": \"-- Grafana --\",\n \"enable\": + true,\n \"hide\": true,\n \"iconColor\": \"rgba(0, 211, 255, 1)\",\n + \ \"name\": \"Annotations & Alerts\",\n \"type\": \"dashboard\"\n + \ }\n ]\n },\n \"editable\": false,\n \"gnetId\": null,\n \"graphTooltip\": + 0,\n \"iteration\": 1536442501501,\n \"links\": [],\n \"panels\": [\n {\n + \ \"content\": \"
\\nSERVICE: + $service\\n
\",\n \"gridPos\": {\n \"h\": 3,\n \"w\": + 24,\n \"x\": 0,\n \"y\": 0\n },\n \"id\": 89,\n \"links\": + [],\n \"mode\": \"html\",\n \"title\": \"\",\n \"transparent\": + true,\n \"type\": \"text\"\n },\n {\n \"cacheTimeout\": null,\n + \ \"colorBackground\": false,\n \"colorValue\": false,\n \"colors\": + [\n \"rgba(245, 54, 54, 0.9)\",\n \"rgba(237, 129, 40, 0.89)\",\n + \ \"rgba(50, 172, 45, 0.97)\"\n ],\n \"datasource\": \"Prometheus\",\n + \ \"format\": \"ops\",\n \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": + 0,\n \"show\": false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": + true\n },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 6,\n \"x\": + 0,\n \"y\": 3\n },\n \"id\": 12,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[5m])), + 0.001)\",\n \"format\": \"time_series\",\n \"intervalFactor\": + 1,\n \"refId\": \"A\",\n \"step\": 4\n }\n ],\n + \ \"thresholds\": \"\",\n \"title\": \"Client Request Volume\",\n \"transparent\": + false,\n \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"current\"\n },\n {\n + \ \"cacheTimeout\": null,\n \"colorBackground\": false,\n \"colorValue\": + false,\n \"colors\": [\n \"rgba(50, 172, 45, 0.97)\",\n \"rgba(237, + 129, 40, 0.89)\",\n \"rgba(245, 54, 54, 0.9)\"\n ],\n \"datasource\": + \"Prometheus\",\n \"decimals\": null,\n \"format\": \"percentunit\",\n + \ \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": 80,\n \"show\": + false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": false\n + \ },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 6,\n \"x\": + 6,\n \"y\": 3\n },\n \"id\": 14,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"source\\\",destination_service=~\\\"$service\\\",response_code!~\\\"5.*\\\"}[5m])) + / sum(irate(istio_requests_total{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[5m]))\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"refId\": + \"B\"\n }\n ],\n \"thresholds\": \"95, 99, 99.5\",\n \"title\": + \"Client Success Rate (non-5xx responses)\",\n \"transparent\": false,\n + \ \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"avg\"\n },\n {\n \"aliasColors\": + {},\n \"bars\": false,\n \"dashLength\": 10,\n \"dashes\": false,\n + \ \"datasource\": \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": + {\n \"h\": 4,\n \"w\": 6,\n \"x\": 12,\n \"y\": 3\n + \ },\n \"id\": 87,\n \"legend\": {\n \"alignAsTable\": false,\n + \ \"avg\": false,\n \"current\": false,\n \"hideEmpty\": false,\n + \ \"hideZero\": false,\n \"max\": false,\n \"min\": false,\n + \ \"rightSide\": true,\n \"show\": true,\n \"total\": false,\n + \ \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le))\",\n \"format\": \"time_series\",\n \"interval\": \"\",\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"P50\",\n \"refId\": + \"A\"\n },\n {\n \"expr\": \"(histogram_quantile(0.90, + sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"P90\",\n \"refId\": + \"B\"\n },\n {\n \"expr\": \"(histogram_quantile(0.99, + sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"P99\",\n \"refId\": + \"C\"\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Client Request Duration\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"s\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"cacheTimeout\": null,\n \"colorBackground\": + false,\n \"colorValue\": false,\n \"colors\": [\n \"#299c46\",\n + \ \"rgba(237, 129, 40, 0.89)\",\n \"#d44a3a\"\n ],\n \"datasource\": + \"Prometheus\",\n \"format\": \"Bps\",\n \"gauge\": {\n \"maxValue\": + 100,\n \"minValue\": 0,\n \"show\": false,\n \"thresholdLabels\": + false,\n \"thresholdMarkers\": true\n },\n \"gridPos\": {\n \"h\": + 4,\n \"w\": 6,\n \"x\": 18,\n \"y\": 3\n },\n \"id\": + 84,\n \"interval\": null,\n \"links\": [],\n \"mappingType\": 1,\n + \ \"mappingTypes\": [\n {\n \"name\": \"value to text\",\n + \ \"value\": 1\n },\n {\n \"name\": \"range to + text\",\n \"value\": 2\n }\n ],\n \"maxDataPoints\": + 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": null,\n \"postfix\": + \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": \"\",\n \"prefixFontSize\": + \"50%\",\n \"rangeMaps\": [\n {\n \"from\": \"null\",\n \"text\": + \"N/A\",\n \"to\": \"null\"\n }\n ],\n \"sparkline\": + {\n \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n + \ \"lineColor\": \"rgb(31, 120, 193)\",\n \"show\": true\n },\n + \ \"tableColumn\": \"\",\n \"targets\": [\n {\n \"expr\": + \"sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", destination_service=~\\\"$service\\\"}[1m]))\",\n + \ \"format\": \"time_series\",\n \"hide\": false,\n \"intervalFactor\": + 1,\n \"legendFormat\": \"\",\n \"refId\": \"A\"\n }\n + \ ],\n \"thresholds\": \"\",\n \"title\": \"TCP Received Bytes\",\n + \ \"transparent\": false,\n \"type\": \"singlestat\",\n \"valueFontSize\": + \"80%\",\n \"valueMaps\": [\n {\n \"op\": \"=\",\n \"text\": + \"N/A\",\n \"value\": \"null\"\n }\n ],\n \"valueName\": + \"avg\"\n },\n {\n \"cacheTimeout\": null,\n \"colorBackground\": + false,\n \"colorValue\": false,\n \"colors\": [\n \"rgba(245, + 54, 54, 0.9)\",\n \"rgba(237, 129, 40, 0.89)\",\n \"rgba(50, 172, + 45, 0.97)\"\n ],\n \"datasource\": \"Prometheus\",\n \"format\": + \"ops\",\n \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": + 0,\n \"show\": false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": + true\n },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 6,\n \"x\": + 0,\n \"y\": 7\n },\n \"id\": 97,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[5m])), + 0.001)\",\n \"format\": \"time_series\",\n \"intervalFactor\": + 1,\n \"refId\": \"A\",\n \"step\": 4\n }\n ],\n + \ \"thresholds\": \"\",\n \"title\": \"Server Request Volume\",\n \"transparent\": + false,\n \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"current\"\n },\n {\n + \ \"cacheTimeout\": null,\n \"colorBackground\": false,\n \"colorValue\": + false,\n \"colors\": [\n \"rgba(50, 172, 45, 0.97)\",\n \"rgba(237, + 129, 40, 0.89)\",\n \"rgba(245, 54, 54, 0.9)\"\n ],\n \"datasource\": + \"Prometheus\",\n \"decimals\": null,\n \"format\": \"percentunit\",\n + \ \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": 80,\n \"show\": + false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": false\n + \ },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 6,\n \"x\": + 6,\n \"y\": 7\n },\n \"id\": 98,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\",response_code!~\\\"5.*\\\"}[5m])) + / sum(irate(istio_requests_total{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[5m]))\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"refId\": + \"B\"\n }\n ],\n \"thresholds\": \"95, 99, 99.5\",\n \"title\": + \"Server Success Rate (non-5xx responses)\",\n \"transparent\": false,\n + \ \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"avg\"\n },\n {\n \"aliasColors\": + {},\n \"bars\": false,\n \"dashLength\": 10,\n \"dashes\": false,\n + \ \"datasource\": \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": + {\n \"h\": 4,\n \"w\": 6,\n \"x\": 12,\n \"y\": 7\n + \ },\n \"id\": 99,\n \"legend\": {\n \"alignAsTable\": false,\n + \ \"avg\": false,\n \"current\": false,\n \"hideEmpty\": false,\n + \ \"hideZero\": false,\n \"max\": false,\n \"min\": false,\n + \ \"rightSide\": true,\n \"show\": true,\n \"total\": false,\n + \ \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le))\",\n \"format\": \"time_series\",\n \"interval\": \"\",\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"P50\",\n \"refId\": + \"A\"\n },\n {\n \"expr\": \"(histogram_quantile(0.90, + sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"P90\",\n \"refId\": + \"B\"\n },\n {\n \"expr\": \"(histogram_quantile(0.99, + sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\",destination_service=~\\\"$service\\\"}[1m])) + by (le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"P99\",\n \"refId\": + \"C\"\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Server Request Duration\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"s\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"cacheTimeout\": null,\n \"colorBackground\": + false,\n \"colorValue\": false,\n \"colors\": [\n \"#299c46\",\n + \ \"rgba(237, 129, 40, 0.89)\",\n \"#d44a3a\"\n ],\n \"datasource\": + \"Prometheus\",\n \"format\": \"Bps\",\n \"gauge\": {\n \"maxValue\": + 100,\n \"minValue\": 0,\n \"show\": false,\n \"thresholdLabels\": + false,\n \"thresholdMarkers\": true\n },\n \"gridPos\": {\n \"h\": + 4,\n \"w\": 6,\n \"x\": 18,\n \"y\": 7\n },\n \"id\": + 100,\n \"interval\": null,\n \"links\": [],\n \"mappingType\": + 1,\n \"mappingTypes\": [\n {\n \"name\": \"value to text\",\n + \ \"value\": 1\n },\n {\n \"name\": \"range to + text\",\n \"value\": 2\n }\n ],\n \"maxDataPoints\": + 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": null,\n \"postfix\": + \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": \"\",\n \"prefixFontSize\": + \"50%\",\n \"rangeMaps\": [\n {\n \"from\": \"null\",\n \"text\": + \"N/A\",\n \"to\": \"null\"\n }\n ],\n \"sparkline\": + {\n \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n + \ \"lineColor\": \"rgb(31, 120, 193)\",\n \"show\": true\n },\n + \ \"tableColumn\": \"\",\n \"targets\": [\n {\n \"expr\": + \"sum(irate(istio_tcp_sent_bytes_total{reporter=\\\"source\\\", destination_service=~\\\"$service\\\"}[1m])) + \",\n \"format\": \"time_series\",\n \"hide\": false,\n \"intervalFactor\": + 1,\n \"legendFormat\": \"\",\n \"refId\": \"A\"\n }\n + \ ],\n \"thresholds\": \"\",\n \"title\": \"TCP Sent Bytes\",\n + \ \"transparent\": false,\n \"type\": \"singlestat\",\n \"valueFontSize\": + \"80%\",\n \"valueMaps\": [\n {\n \"op\": \"=\",\n \"text\": + \"N/A\",\n \"value\": \"null\"\n }\n ],\n \"valueName\": + \"avg\"\n },\n {\n \"content\": \"
\\nCLIENT + WORKLOADS\\n
\",\n \"gridPos\": {\n \"h\": 3,\n \"w\": + 24,\n \"x\": 0,\n \"y\": 11\n },\n \"id\": 45,\n \"links\": + [],\n \"mode\": \"html\",\n \"title\": \"\",\n \"transparent\": + true,\n \"type\": \"text\"\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 0,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 12,\n \"x\": 0,\n \"y\": 14\n },\n \"id\": + 25,\n \"legend\": {\n \"avg\": false,\n \"current\": false,\n + \ \"hideEmpty\": true,\n \"max\": false,\n \"min\": false,\n + \ \"show\": true,\n \"total\": false,\n \"values\": false\n + \ },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": [],\n + \ \"nullPointMode\": \"null as zero\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy=\\\"mutual_tls\\\",destination_service=~\\\"$service\\\",reporter=\\\"source\\\",source_workload=~\\\"$srcwl\\\",source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace, response_code), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} + (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", reporter=\\\"source\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[5m])) by (source_workload, source_workload_namespace, + response_code), 0.001)\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ source_workload + }}.{{ source_workload_namespace }} : {{ response_code }}\",\n \"refId\": + \"A\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Incoming + Requests by Source And Response Code\",\n \"tooltip\": {\n \"shared\": + false,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + [\n \"total\"\n ]\n },\n \"yaxes\": [\n {\n \"format\": + \"ops\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n + \ \"x\": 12,\n \"y\": 14\n },\n \"id\": 26,\n \"legend\": + {\n \"avg\": false,\n \"current\": false,\n \"hideEmpty\": + true,\n \"hideZero\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\",response_code!~\\\"5.*\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace)\",\n \"format\": \"time_series\",\n + \ \"hide\": false,\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace }} (\U0001F510mTLS)\",\n + \ \"refId\": \"A\",\n \"step\": 2\n },\n {\n \"expr\": + \"sum(irate(istio_requests_total{reporter=\\\"source\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\",response_code!~\\\"5.*\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[5m])) by (source_workload, source_workload_namespace) + / sum(irate(istio_requests_total{reporter=\\\"source\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace)\",\n \"format\": \"time_series\",\n + \ \"hide\": false,\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace }}\",\n \"refId\": + \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Incoming + Success Rate (non-5xx responses) By Source\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"percentunit\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": \"1.01\",\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"description\": + \"\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": + 8,\n \"x\": 0,\n \"y\": 20\n },\n \"id\": 27,\n \"legend\": + {\n \"alignAsTable\": false,\n \"avg\": false,\n \"current\": + false,\n \"hideEmpty\": true,\n \"hideZero\": false,\n \"max\": + false,\n \"min\": false,\n \"rightSide\": false,\n \"show\": + true,\n \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.50, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.90, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.95, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.99, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.50, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.90, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.95, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.99, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Request Duration by Source\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"s\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 8,\n + \ \"x\": 8,\n \"y\": 20\n },\n \"id\": 28,\n \"legend\": + {\n \"alignAsTable\": false,\n \"avg\": false,\n \"current\": + false,\n \"hideEmpty\": true,\n \"max\": false,\n \"min\": + false,\n \"rightSide\": false,\n \"show\": true,\n \"total\": + false,\n \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Request Size By Source\",\n \"tooltip\": {\n + \ \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"decbytes\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 8,\n + \ \"x\": 16,\n \"y\": 20\n },\n \"id\": 68,\n \"legend\": + {\n \"alignAsTable\": false,\n \"avg\": false,\n \"current\": + false,\n \"hideEmpty\": true,\n \"max\": false,\n \"min\": + false,\n \"rightSide\": false,\n \"show\": true,\n \"total\": + false,\n \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Response Size By Source\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"decbytes\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 0,\n \"y\": 26\n },\n \"id\": 80,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ source_workload }}.{{ source_workload_namespace}} + (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace}}\",\n \"refId\": + \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Bytes + Received from Incoming TCP Connection\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"Bps\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 26\n },\n \"id\": 82,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\\\"mutual_tls\\\", + reporter=\\\"source\\\", destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace), + 0.001)\",\n \"format\": \"time_series\",\n \"intervalFactor\": + 1,\n \"legendFormat\": \"{{ source_workload }}.{{ source_workload_namespace}} + (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\\\"mutual_tls\\\", + reporter=\\\"source\\\", destination_service=~\\\"$service\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace), + 0.001)\",\n \"format\": \"time_series\",\n \"intervalFactor\": + 1,\n \"legendFormat\": \"{{ source_workload }}.{{ source_workload_namespace}}\",\n + \ \"refId\": \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": + [],\n \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Bytes + Sent to Incoming TCP Connection\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"Bps\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"content\": \"
\\nSERVICE + WORKLOADS\\n
\",\n \"gridPos\": {\n \"h\": 3,\n \"w\": + 24,\n \"x\": 0,\n \"y\": 32\n },\n \"id\": 69,\n \"links\": + [],\n \"mode\": \"html\",\n \"title\": \"\",\n \"transparent\": + true,\n \"type\": \"text\"\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 0,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 12,\n \"x\": 0,\n \"y\": 35\n },\n \"id\": + 90,\n \"legend\": {\n \"avg\": false,\n \"current\": false,\n + \ \"hideEmpty\": true,\n \"max\": false,\n \"min\": false,\n + \ \"show\": true,\n \"total\": false,\n \"values\": false\n + \ },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": [],\n + \ \"nullPointMode\": \"null as zero\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy=\\\"mutual_tls\\\",destination_service=~\\\"$service\\\",reporter=\\\"destination\\\",destination_workload=~\\\"$dstwl\\\",destination_workload_namespace=~\\\"$dstns\\\"}[5m])) + by (destination_workload, destination_workload_namespace, response_code), 0.001)\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code + }} (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy!=\\\"mutual_tls\\\", + destination_service=~\\\"$service\\\", reporter=\\\"destination\\\", destination_workload=~\\\"$dstwl\\\", + destination_workload_namespace=~\\\"$dstns\\\"}[5m])) by (destination_workload, + destination_workload_namespace, response_code), 0.001)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} : {{ response_code }}\",\n \"refId\": \"A\",\n \"step\": + 2\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Incoming Requests by Destination + And Response Code\",\n \"tooltip\": {\n \"shared\": false,\n \"sort\": + 0,\n \"value_type\": \"individual\"\n },\n \"type\": \"graph\",\n + \ \"xaxis\": {\n \"buckets\": null,\n \"mode\": \"time\",\n + \ \"name\": null,\n \"show\": true,\n \"values\": [\n \"total\"\n + \ ]\n },\n \"yaxes\": [\n {\n \"format\": \"ops\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 35\n },\n \"id\": 91,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"hideEmpty\": true,\n \"hideZero\": + false,\n \"max\": false,\n \"min\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\",response_code!~\\\"5.*\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[5m])) + by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[5m])) + by (destination_workload, destination_workload_namespace)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\",response_code!~\\\"5.*\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[5m])) + by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[5m])) + by (destination_workload, destination_workload_namespace)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }}\",\n \"refId\": \"B\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Success Rate (non-5xx responses) By Source\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"percentunit\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + \"1.01\",\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"description\": \"\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": + 6,\n \"w\": 8,\n \"x\": 0,\n \"y\": 41\n },\n \"id\": + 94,\n \"legend\": {\n \"alignAsTable\": false,\n \"avg\": false,\n + \ \"current\": false,\n \"hideEmpty\": true,\n \"hideZero\": + false,\n \"max\": false,\n \"min\": false,\n \"rightSide\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"(histogram_quantile(0.50, + sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.50, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.90, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.95, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.99, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.50, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.90, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.95, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.99, + sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Request Duration by Source\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"s\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 8,\n + \ \"x\": 8,\n \"y\": 41\n },\n \"id\": 95,\n \"legend\": + {\n \"alignAsTable\": false,\n \"avg\": false,\n \"current\": + false,\n \"hideEmpty\": true,\n \"max\": false,\n \"min\": + false,\n \"rightSide\": false,\n \"show\": true,\n \"total\": + false,\n \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": + 2\n },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": + 2\n },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Request Size By Source\",\n \"tooltip\": {\n + \ \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"decbytes\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 8,\n + \ \"x\": 16,\n \"y\": 41\n },\n \"id\": 96,\n \"legend\": + {\n \"alignAsTable\": false,\n \"avg\": false,\n \"current\": + false,\n \"hideEmpty\": true,\n \"max\": false,\n \"min\": + false,\n \"rightSide\": false,\n \"show\": true,\n \"total\": + false,\n \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": + 2\n },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": + 2\n },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace, le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace + }} P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Response Size By Source\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"decbytes\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 0,\n \"y\": 47\n },\n \"id\": 92,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ destination_workload }}.{{ destination_workload_namespace}} + (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_service=~\\\"$service\\\", + destination_workload=~\\\"$dstwl\\\", destination_workload_namespace=~\\\"$dstns\\\"}[1m])) + by (destination_workload, destination_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ destination_workload }}.{{ destination_workload_namespace}}\",\n \"refId\": + \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Bytes + Received from Incoming TCP Connection\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"Bps\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n }\n ],\n + \ \"yaxis\": {\n \"align\": false,\n \"alignLevel\": null\n + \ }\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 47\n },\n \"id\": 93,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\\\"mutual_tls\\\", + reporter=\\\"source\\\", destination_service=~\\\"$service\\\", destination_workload=~\\\"$dstwl\\\", + destination_workload_namespace=~\\\"$dstns\\\"}[1m])) by (destination_workload, + destination_workload_namespace), 0.001)\",\n \"format\": \"time_series\",\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_workload + }}.{{destination_workload_namespace }} (\U0001F510mTLS)\",\n \"refId\": + \"A\",\n \"step\": 2\n },\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\\\"mutual_tls\\\", + reporter=\\\"source\\\", destination_service=~\\\"$service\\\", destination_workload=~\\\"$dstwl\\\", + destination_workload_namespace=~\\\"$dstns\\\"}[1m])) by (destination_workload, + destination_workload_namespace), 0.001)\",\n \"format\": \"time_series\",\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_workload + }}.{{destination_workload_namespace }}\",\n \"refId\": \"B\",\n \"step\": + 2\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Bytes Sent to Incoming TCP Connection\",\n + \ \"tooltip\": {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": + \"individual\"\n },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"Bps\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": true\n + \ }\n ],\n \"yaxis\": {\n \"align\": false,\n \"alignLevel\": + null\n }\n }\n ],\n \"refresh\": \"10s\",\n \"schemaVersion\": 16,\n + \ \"style\": \"dark\",\n \"tags\": [],\n \"templating\": {\n \"list\": [\n + \ {\n \"allValue\": null,\n \"datasource\": \"Prometheus\",\n + \ \"hide\": 0,\n \"includeAll\": false,\n \"label\": \"Service\",\n + \ \"multi\": false,\n \"name\": \"service\",\n \"options\": + [],\n \"query\": \"label_values(destination_service)\",\n \"refresh\": + 1,\n \"regex\": \"\",\n \"sort\": 0,\n \"tagValuesQuery\": + \"\",\n \"tags\": [],\n \"tagsQuery\": \"\",\n \"type\": + \"query\",\n \"useTags\": false\n },\n {\n \"allValue\": + null,\n \"current\": {\n \"text\": \"All\",\n \"value\": + \"$__all\"\n },\n \"datasource\": \"Prometheus\",\n \"hide\": + 0,\n \"includeAll\": true,\n \"label\": \"Client Workload Namespace\",\n + \ \"multi\": true,\n \"name\": \"srcns\",\n \"options\": [],\n + \ \"query\": \"query_result( sum(istio_requests_total{reporter=\\\"destination\\\", + destination_service=\\\"$service\\\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", + destination_service=~\\\"$service\\\"}) by (source_workload_namespace))\",\n \"refresh\": + 1,\n \"regex\": \"/.*namespace=\\\"([^\\\"]*).*/\",\n \"sort\": + 2,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n \"tagsQuery\": + \"\",\n \"type\": \"query\",\n \"useTags\": false\n },\n {\n + \ \"allValue\": null,\n \"current\": {\n \"text\": \"All\",\n + \ \"value\": \"$__all\"\n },\n \"datasource\": \"Prometheus\",\n + \ \"hide\": 0,\n \"includeAll\": true,\n \"label\": \"Client + Workload\",\n \"multi\": true,\n \"name\": \"srcwl\",\n \"options\": + [],\n \"query\": \"query_result( sum(istio_requests_total{reporter=\\\"destination\\\", + destination_service=~\\\"$service\\\", source_workload_namespace=~\\\"$srcns\\\"}) + by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", + destination_service=~\\\"$service\\\", source_workload_namespace=~\\\"$srcns\\\"}) + by (source_workload))\",\n \"refresh\": 1,\n \"regex\": \"/.*workload=\\\"([^\\\"]*).*/\",\n + \ \"sort\": 3,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n + \ \"tagsQuery\": \"\",\n \"type\": \"query\",\n \"useTags\": + false\n },\n {\n \"allValue\": null,\n \"current\": {\n + \ \"text\": \"All\",\n \"value\": \"$__all\"\n },\n \"datasource\": + \"Prometheus\",\n \"hide\": 0,\n \"includeAll\": true,\n \"label\": + \"Service Workload Namespace\",\n \"multi\": true,\n \"name\": \"dstns\",\n + \ \"options\": [],\n \"query\": \"query_result( sum(istio_requests_total{reporter=\\\"destination\\\", + destination_service=\\\"$service\\\"}) by (destination_workload_namespace) or + sum(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", destination_service=~\\\"$service\\\"}) + by (destination_workload_namespace))\",\n \"refresh\": 1,\n \"regex\": + \"/.*namespace=\\\"([^\\\"]*).*/\",\n \"sort\": 2,\n \"tagValuesQuery\": + \"\",\n \"tags\": [],\n \"tagsQuery\": \"\",\n \"type\": + \"query\",\n \"useTags\": false\n },\n {\n \"allValue\": + null,\n \"current\": {\n \"text\": \"All\",\n \"value\": + \"$__all\"\n },\n \"datasource\": \"Prometheus\",\n \"hide\": + 0,\n \"includeAll\": true,\n \"label\": \"Service Workload\",\n + \ \"multi\": true,\n \"name\": \"dstwl\",\n \"options\": [],\n + \ \"query\": \"query_result( sum(istio_requests_total{reporter=\\\"destination\\\", + destination_service=~\\\"$service\\\", destination_workload_namespace=~\\\"$dstns\\\"}) + by (destination_workload) or sum(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", + destination_service=~\\\"$service\\\", destination_workload_namespace=~\\\"$dstns\\\"}) + by (destination_workload))\",\n \"refresh\": 1,\n \"regex\": \"/.*workload=\\\"([^\\\"]*).*/\",\n + \ \"sort\": 3,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n + \ \"tagsQuery\": \"\",\n \"type\": \"query\",\n \"useTags\": + false\n }\n ]\n },\n \"time\": {\n \"from\": \"now-5m\",\n \"to\": + \"now\"\n },\n \"timepicker\": {\n \"refresh_intervals\": [\n \"5s\",\n + \ \"10s\",\n \"30s\",\n \"1m\",\n \"5m\",\n \"15m\",\n + \ \"30m\",\n \"1h\",\n \"2h\",\n \"1d\"\n ],\n \"time_options\": + [\n \"5m\",\n \"15m\",\n \"1h\",\n \"6h\",\n \"12h\",\n + \ \"24h\",\n \"2d\",\n \"7d\",\n \"30d\"\n ]\n },\n \"timezone\": + \"\",\n \"title\": \"Istio Service Dashboard\",\n \"uid\": \"LJ_uJAvmk\",\n + \ \"version\": 1\n}\n" + istio-workload-dashboard.json: "{\n \"__inputs\": [\n {\n \"name\": \"DS_PROMETHEUS\",\n + \ \"label\": \"Prometheus\",\n \"description\": \"\",\n \"type\": + \"datasource\",\n \"pluginId\": \"prometheus\",\n \"pluginName\": \"Prometheus\"\n + \ }\n ],\n \"__requires\": [\n {\n \"type\": \"grafana\",\n \"id\": + \"grafana\",\n \"name\": \"Grafana\",\n \"version\": \"5.0.4\"\n },\n + \ {\n \"type\": \"panel\",\n \"id\": \"graph\",\n \"name\": \"Graph\",\n + \ \"version\": \"5.0.0\"\n },\n {\n \"type\": \"datasource\",\n + \ \"id\": \"prometheus\",\n \"name\": \"Prometheus\",\n \"version\": + \"5.0.0\"\n },\n {\n \"type\": \"panel\",\n \"id\": \"singlestat\",\n + \ \"name\": \"Singlestat\",\n \"version\": \"5.0.0\"\n },\n {\n + \ \"type\": \"panel\",\n \"id\": \"text\",\n \"name\": \"Text\",\n + \ \"version\": \"5.0.0\"\n }\n ],\n \"annotations\": {\n \"list\": + [\n {\n \"builtIn\": 1,\n \"datasource\": \"-- Grafana --\",\n + \ \"enable\": true,\n \"hide\": true,\n \"iconColor\": \"rgba(0, + 211, 255, 1)\",\n \"name\": \"Annotations & Alerts\",\n \"type\": + \"dashboard\"\n }\n ]\n },\n \"editable\": false,\n \"gnetId\": null,\n + \ \"graphTooltip\": 0,\n \"id\": null,\n \"iteration\": 1531345461465,\n \"links\": + [],\n \"panels\": [\n {\n \"content\": \"
\\nWORKLOAD: $workload.$namespace\\n
\",\n \"gridPos\": + {\n \"h\": 3,\n \"w\": 24,\n \"x\": 0,\n \"y\": 0\n + \ },\n \"id\": 89,\n \"links\": [],\n \"mode\": \"html\",\n + \ \"title\": \"\",\n \"transparent\": true,\n \"type\": \"text\"\n + \ },\n {\n \"cacheTimeout\": null,\n \"colorBackground\": false,\n + \ \"colorValue\": false,\n \"colors\": [\n \"rgba(245, 54, 54, + 0.9)\",\n \"rgba(237, 129, 40, 0.89)\",\n \"rgba(50, 172, 45, 0.97)\"\n + \ ],\n \"datasource\": \"Prometheus\",\n \"format\": \"ops\",\n + \ \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": 0,\n \"show\": + false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": true\n + \ },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 8,\n \"x\": + 0,\n \"y\": 3\n },\n \"id\": 12,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{reporter=\\\"destination\\\",destination_workload_namespace=~\\\"$namespace\\\",destination_workload=~\\\"$workload\\\"}[5m])), + 0.001)\",\n \"format\": \"time_series\",\n \"intervalFactor\": + 1,\n \"refId\": \"A\",\n \"step\": 4\n }\n ],\n + \ \"thresholds\": \"\",\n \"title\": \"Incoming Request Volume\",\n \"transparent\": + false,\n \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"current\"\n },\n {\n + \ \"cacheTimeout\": null,\n \"colorBackground\": false,\n \"colorValue\": + false,\n \"colors\": [\n \"rgba(50, 172, 45, 0.97)\",\n \"rgba(237, + 129, 40, 0.89)\",\n \"rgba(245, 54, 54, 0.9)\"\n ],\n \"datasource\": + \"Prometheus\",\n \"decimals\": null,\n \"format\": \"percentunit\",\n + \ \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": 80,\n \"show\": + false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": false\n + \ },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 8,\n \"x\": + 8,\n \"y\": 3\n },\n \"id\": 14,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"destination\\\",destination_workload_namespace=~\\\"$namespace\\\",destination_workload=~\\\"$workload\\\",response_code!~\\\"5.*\\\"}[5m])) + / sum(irate(istio_requests_total{reporter=\\\"destination\\\",destination_workload_namespace=~\\\"$namespace\\\",destination_workload=~\\\"$workload\\\"}[5m]))\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"refId\": + \"B\"\n }\n ],\n \"thresholds\": \"95, 99, 99.5\",\n \"title\": + \"Incoming Success Rate (non-5xx responses)\",\n \"transparent\": false,\n + \ \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"avg\"\n },\n {\n \"aliasColors\": + {},\n \"bars\": false,\n \"dashLength\": 10,\n \"dashes\": false,\n + \ \"datasource\": \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": + {\n \"h\": 4,\n \"w\": 8,\n \"x\": 16,\n \"y\": 3\n + \ },\n \"id\": 87,\n \"legend\": {\n \"alignAsTable\": false,\n + \ \"avg\": false,\n \"current\": false,\n \"hideEmpty\": false,\n + \ \"hideZero\": false,\n \"max\": false,\n \"min\": false,\n + \ \"rightSide\": true,\n \"show\": true,\n \"total\": false,\n + \ \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\",destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}[1m])) by (le)) / 1000) or + histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\",destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}[1m])) by (le))\",\n \"format\": + \"time_series\",\n \"interval\": \"\",\n \"intervalFactor\": + 1,\n \"legendFormat\": \"P50\",\n \"refId\": \"A\"\n },\n + \ {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\",destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}[1m])) by (le)) / 1000) or + histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\",destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}[1m])) by (le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"P90\",\n \"refId\": \"B\"\n },\n + \ {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\",destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}[1m])) by (le)) / 1000) or + histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\",destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}[1m])) by (le))\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"P99\",\n \"refId\": \"C\"\n }\n + \ ],\n \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": + null,\n \"title\": \"Request Duration\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"s\",\n \"label\": + null,\n \"logBase\": 1,\n \"max\": null,\n \"min\": + null,\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ]\n + \ },\n {\n \"cacheTimeout\": null,\n \"colorBackground\": false,\n + \ \"colorValue\": false,\n \"colors\": [\n \"#299c46\",\n \"rgba(237, + 129, 40, 0.89)\",\n \"#d44a3a\"\n ],\n \"datasource\": \"Prometheus\",\n + \ \"format\": \"Bps\",\n \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": + 0,\n \"show\": false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": + true\n },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 12,\n + \ \"x\": 0,\n \"y\": 7\n },\n \"id\": 84,\n \"interval\": + null,\n \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": + [\n {\n \"name\": \"value to text\",\n \"value\": 1\n + \ },\n {\n \"name\": \"range to text\",\n \"value\": + 2\n }\n ],\n \"maxDataPoints\": 100,\n \"nullPointMode\": + \"connected\",\n \"nullText\": null,\n \"postfix\": \"\",\n \"postfixFontSize\": + \"50%\",\n \"prefix\": \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": + [\n {\n \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"sum(irate(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", + destination_workload_namespace=~\\\"$namespace\\\", destination_workload=~\\\"$workload\\\"}[1m])) + + sum(irate(istio_tcp_received_bytes_total{reporter=\\\"destination\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\"}[1m]))\",\n \"format\": \"time_series\",\n + \ \"hide\": false,\n \"intervalFactor\": 1,\n \"legendFormat\": + \"\",\n \"refId\": \"A\"\n }\n ],\n \"thresholds\": + \"\",\n \"title\": \"TCP Server Traffic\",\n \"transparent\": false,\n + \ \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"avg\"\n },\n {\n \"cacheTimeout\": + null,\n \"colorBackground\": false,\n \"colorValue\": false,\n \"colors\": + [\n \"#299c46\",\n \"rgba(237, 129, 40, 0.89)\",\n \"#d44a3a\"\n + \ ],\n \"datasource\": \"Prometheus\",\n \"format\": \"Bps\",\n + \ \"gauge\": {\n \"maxValue\": 100,\n \"minValue\": 0,\n \"show\": + false,\n \"thresholdLabels\": false,\n \"thresholdMarkers\": true\n + \ },\n \"gridPos\": {\n \"h\": 4,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 7\n },\n \"id\": 85,\n \"interval\": null,\n + \ \"links\": [],\n \"mappingType\": 1,\n \"mappingTypes\": [\n {\n + \ \"name\": \"value to text\",\n \"value\": 1\n },\n {\n + \ \"name\": \"range to text\",\n \"value\": 2\n }\n ],\n + \ \"maxDataPoints\": 100,\n \"nullPointMode\": \"connected\",\n \"nullText\": + null,\n \"postfix\": \"\",\n \"postfixFontSize\": \"50%\",\n \"prefix\": + \"\",\n \"prefixFontSize\": \"50%\",\n \"rangeMaps\": [\n {\n + \ \"from\": \"null\",\n \"text\": \"N/A\",\n \"to\": + \"null\"\n }\n ],\n \"sparkline\": {\n \"fillColor\": + \"rgba(31, 118, 189, 0.18)\",\n \"full\": true,\n \"lineColor\": + \"rgb(31, 120, 193)\",\n \"show\": true\n },\n \"tableColumn\": + \"\",\n \"targets\": [\n {\n \"expr\": \"sum(irate(istio_tcp_sent_bytes_total{reporter=\\\"source\\\", + source_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$workload\\\"}[1m])) + + sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", source_workload_namespace=~\\\"$namespace\\\", + source_workload=~\\\"$workload\\\"}[1m]))\",\n \"format\": \"time_series\",\n + \ \"hide\": false,\n \"intervalFactor\": 1,\n \"legendFormat\": + \"\",\n \"refId\": \"A\"\n }\n ],\n \"thresholds\": + \"\",\n \"title\": \"TCP Client Traffic\",\n \"transparent\": false,\n + \ \"type\": \"singlestat\",\n \"valueFontSize\": \"80%\",\n \"valueMaps\": + [\n {\n \"op\": \"=\",\n \"text\": \"N/A\",\n \"value\": + \"null\"\n }\n ],\n \"valueName\": \"avg\"\n },\n {\n \"content\": + \"
\\nINBOUND WORKLOADS\\n
\",\n + \ \"gridPos\": {\n \"h\": 3,\n \"w\": 24,\n \"x\": 0,\n + \ \"y\": 11\n },\n \"id\": 45,\n \"links\": [],\n \"mode\": + \"html\",\n \"title\": \"\",\n \"transparent\": true,\n \"type\": + \"text\"\n },\n {\n \"aliasColors\": {},\n \"bars\": false,\n + \ \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n + \ \"fill\": 0,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n + \ \"x\": 0,\n \"y\": 14\n },\n \"id\": 25,\n \"legend\": + {\n \"avg\": false,\n \"current\": false,\n \"hideEmpty\": + true,\n \"max\": false,\n \"min\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null as zero\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy=\\\"mutual_tls\\\", + destination_workload_namespace=~\\\"$namespace\\\", destination_workload=~\\\"$workload\\\", + reporter=\\\"destination\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace, response_code), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} + (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy!=\\\"mutual_tls\\\", + destination_workload_namespace=~\\\"$namespace\\\", destination_workload=~\\\"$workload\\\", + reporter=\\\"destination\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace, response_code), 0.001)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ source_workload }}.{{ source_workload_namespace + }} : {{ response_code }}\",\n \"refId\": \"A\",\n \"step\": + 2\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Incoming Requests by Source And + Response Code\",\n \"tooltip\": {\n \"shared\": false,\n \"sort\": + 0,\n \"value_type\": \"individual\"\n },\n \"type\": \"graph\",\n + \ \"xaxis\": {\n \"buckets\": null,\n \"mode\": \"time\",\n + \ \"name\": null,\n \"show\": true,\n \"values\": [\n \"total\"\n + \ ]\n },\n \"yaxes\": [\n {\n \"format\": \"ops\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ]\n + \ },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 14\n },\n \"id\": 26,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"hideEmpty\": true,\n \"hideZero\": + false,\n \"max\": false,\n \"min\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\",response_code!~\\\"5.*\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[5m])) by (source_workload, source_workload_namespace) + / sum(irate(istio_requests_total{reporter=\\\"destination\\\", connection_security_policy=\\\"mutual_tls\\\", + destination_workload_namespace=~\\\"$namespace\\\", destination_workload=~\\\"$workload\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace)\",\n \"format\": \"time_series\",\n + \ \"hide\": false,\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace }} (\U0001F510mTLS)\",\n + \ \"refId\": \"A\",\n \"step\": 2\n },\n {\n \"expr\": + \"sum(irate(istio_requests_total{reporter=\\\"destination\\\", connection_security_policy!=\\\"mutual_tls\\\", + destination_workload_namespace=~\\\"$namespace\\\", destination_workload=~\\\"$workload\\\",response_code!~\\\"5.*\\\", + source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[5m])) + by (source_workload, source_workload_namespace)\",\n \"format\": \"time_series\",\n + \ \"hide\": false,\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace }}\",\n \"refId\": + \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Incoming + Success Rate (non-5xx responses) By Source\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"percentunit\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": \"1.01\",\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ]\n + \ },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"description\": + \"\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": + 8,\n \"x\": 0,\n \"y\": 20\n },\n \"id\": 27,\n \"legend\": + {\n \"alignAsTable\": false,\n \"avg\": false,\n \"current\": + false,\n \"hideEmpty\": true,\n \"hideZero\": false,\n \"max\": + false,\n \"min\": false,\n \"rightSide\": false,\n \"show\": + true,\n \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Request Duration by Source\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"s\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ]\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 8,\n \"x\": 8,\n \"y\": 20\n },\n \"id\": + 28,\n \"legend\": {\n \"alignAsTable\": false,\n \"avg\": false,\n + \ \"current\": false,\n \"hideEmpty\": true,\n \"max\": false,\n + \ \"min\": false,\n \"rightSide\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Incoming Request Size By Source\",\n \"tooltip\": {\n + \ \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"decbytes\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ]\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 8,\n \"x\": 16,\n \"y\": 20\n },\n \"id\": + 68,\n \"legend\": {\n \"alignAsTable\": false,\n \"avg\": false,\n + \ \"current\": false,\n \"hideEmpty\": true,\n \"max\": false,\n + \ \"min\": false,\n \"rightSide\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + \ P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload=~\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$srcwl\\\", + source_workload_namespace=~\\\"$srcns\\\"}[1m])) by (source_workload, source_workload_namespace, + le))\",\n \"format\": \"time_series\",\n \"hide\": false,\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{source_workload}}.{{source_workload_namespace}} + P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Response Size By Source\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"decbytes\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ]\n + \ },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 0,\n \"y\": 26\n },\n \"id\": 80,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"destination\\\", + connection_security_policy=\\\"mutual_tls\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"hide\": false,\n \"intervalFactor\": 1,\n + \ \"legendFormat\": \"{{ source_workload }}.{{ source_workload_namespace}} + (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"destination\\\", + connection_security_policy!=\\\"mutual_tls\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace}}\",\n \"refId\": + \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Bytes + Received from Incoming TCP Connection\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"Bps\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n }\n ]\n + \ },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 26\n },\n \"id\": 82,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\\\"mutual_tls\\\", + reporter=\\\"destination\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace}} (\U0001F510mTLS)\",\n \"refId\": + \"A\",\n \"step\": 2\n },\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\\\"mutual_tls\\\", + reporter=\\\"destination\\\", destination_workload_namespace=~\\\"$namespace\\\", + destination_workload=~\\\"$workload\\\", source_workload=~\\\"$srcwl\\\", source_workload_namespace=~\\\"$srcns\\\"}[1m])) + by (source_workload, source_workload_namespace), 0.001)\",\n \"format\": + \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ source_workload }}.{{ source_workload_namespace}}\",\n \"refId\": + \"B\",\n \"step\": 2\n }\n ],\n \"thresholds\": [],\n + \ \"timeFrom\": null,\n \"timeShift\": null,\n \"title\": \"Bytes + Sent to Incoming TCP Connection\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"Bps\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": true\n }\n ]\n + \ },\n {\n \"content\": \"
\\nOUTBOUND + SERVICES\\n
\",\n \"gridPos\": {\n \"h\": 3,\n \"w\": + 24,\n \"x\": 0,\n \"y\": 32\n },\n \"id\": 69,\n \"links\": + [],\n \"mode\": \"html\",\n \"title\": \"\",\n \"transparent\": + true,\n \"type\": \"text\"\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 0,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 12,\n \"x\": 0,\n \"y\": 35\n },\n \"id\": + 70,\n \"legend\": {\n \"avg\": false,\n \"current\": false,\n + \ \"hideEmpty\": true,\n \"max\": false,\n \"min\": false,\n + \ \"show\": true,\n \"total\": false,\n \"values\": false\n + \ },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": [],\n + \ \"nullPointMode\": \"null as zero\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy=\\\"mutual_tls\\\", + source_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$workload\\\", + reporter=\\\"source\\\", destination_service=~\\\"$dstsvc\\\"}[5m])) by (destination_service, + response_code), 0.001)\",\n \"format\": \"time_series\",\n \"intervalFactor\": + 1,\n \"legendFormat\": \"{{ destination_service }} : {{ response_code + }} (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"round(sum(irate(istio_requests_total{connection_security_policy!=\\\"mutual_tls\\\", + source_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$workload\\\", + reporter=\\\"source\\\", destination_service=~\\\"$dstsvc\\\"}[5m])) by (destination_service, + response_code), 0.001)\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} : {{ response_code }}\",\n \"refId\": \"A\",\n \"step\": + 2\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Outgoing Requests by Destination + And Response Code\",\n \"tooltip\": {\n \"shared\": false,\n \"sort\": + 0,\n \"value_type\": \"individual\"\n },\n \"type\": \"graph\",\n + \ \"xaxis\": {\n \"buckets\": null,\n \"mode\": \"time\",\n + \ \"name\": null,\n \"show\": true,\n \"values\": [\n \"total\"\n + \ ]\n },\n \"yaxes\": [\n {\n \"format\": \"ops\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ]\n + \ },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 12,\n \"y\": 35\n },\n \"id\": 71,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"hideEmpty\": true,\n \"hideZero\": + false,\n \"max\": false,\n \"min\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload_namespace=~\\\"$namespace\\\", + source_workload=~\\\"$workload\\\",response_code!~\\\"5.*\\\", destination_service=~\\\"$dstsvc\\\"}[5m])) + by (destination_service) / sum(irate(istio_requests_total{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload_namespace=~\\\"$namespace\\\", + source_workload=~\\\"$workload\\\", destination_service=~\\\"$dstsvc\\\"}[5m])) + by (destination_service)\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n },\n + \ {\n \"expr\": \"sum(irate(istio_requests_total{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload_namespace=~\\\"$namespace\\\", + source_workload=~\\\"$workload\\\",response_code!~\\\"5.*\\\", destination_service=~\\\"$dstsvc\\\"}[5m])) + by (destination_service) / sum(irate(istio_requests_total{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload_namespace=~\\\"$namespace\\\", + source_workload=~\\\"$workload\\\", destination_service=~\\\"$dstsvc\\\"}[5m])) + by (destination_service)\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{destination_service + }}\",\n \"refId\": \"B\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Outgoing Success Rate (non-5xx responses) By Destination\",\n + \ \"tooltip\": {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": + \"individual\"\n },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"percentunit\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + \"1.01\",\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ]\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"description\": \"\",\n \"fill\": 1,\n \"gridPos\": + {\n \"h\": 6,\n \"w\": 8,\n \"x\": 0,\n \"y\": 41\n + \ },\n \"id\": 72,\n \"legend\": {\n \"alignAsTable\": false,\n + \ \"avg\": false,\n \"current\": false,\n \"hideEmpty\": true,\n + \ \"hideZero\": false,\n \"max\": false,\n \"min\": false,\n + \ \"rightSide\": false,\n \"show\": true,\n \"total\": false,\n + \ \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Outgoing Request Duration by Destination\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"s\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ]\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 8,\n \"x\": 8,\n \"y\": 41\n },\n \"id\": + 73,\n \"legend\": {\n \"alignAsTable\": false,\n \"avg\": false,\n + \ \"current\": false,\n \"hideEmpty\": true,\n \"max\": false,\n + \ \"min\": false,\n \"rightSide\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Outgoing Request Size By Destination\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"decbytes\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": false\n + \ }\n ]\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 8,\n \"x\": 16,\n \"y\": 41\n },\n \"id\": + 74,\n \"legend\": {\n \"alignAsTable\": false,\n \"avg\": false,\n + \ \"current\": false,\n \"hideEmpty\": true,\n \"max\": false,\n + \ \"min\": false,\n \"rightSide\": false,\n \"show\": true,\n + \ \"total\": false,\n \"values\": false\n },\n \"lines\": + true,\n \"linewidth\": 1,\n \"links\": [],\n \"nullPointMode\": + \"null\",\n \"percentage\": false,\n \"pointradius\": 5,\n \"points\": + false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": + 10,\n \"stack\": false,\n \"steppedLine\": false,\n \"targets\": + [\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P50 (\U0001F510mTLS)\",\n \"refId\": \"D\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P90 (\U0001F510mTLS)\",\n \"refId\": \"A\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P95 (\U0001F510mTLS)\",\n \"refId\": \"B\",\n \"step\": 2\n + \ },\n {\n \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P99 (\U0001F510mTLS)\",\n \"refId\": \"C\",\n \"step\": + 2\n },\n {\n \"expr\": \"histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P50\",\n \"refId\": \"E\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P90\",\n \"refId\": \"F\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P95\",\n \"refId\": \"G\",\n \"step\": 2\n },\n {\n + \ \"expr\": \"histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload=~\\\"$workload\\\", + source_workload_namespace=~\\\"$namespace\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service, le))\",\n \"format\": \"time_series\",\n \"hide\": + false,\n \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }} P99\",\n \"refId\": \"H\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Response Size By Destination\",\n \"tooltip\": {\n \"shared\": + true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n },\n + \ \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": null,\n \"mode\": + \"time\",\n \"name\": null,\n \"show\": true,\n \"values\": + []\n },\n \"yaxes\": [\n {\n \"format\": \"decbytes\",\n + \ \"label\": null,\n \"logBase\": 1,\n \"max\": null,\n + \ \"min\": \"0\",\n \"show\": true\n },\n {\n \"format\": + \"short\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": null,\n \"show\": false\n }\n ]\n + \ },\n {\n \"aliasColors\": {},\n \"bars\": false,\n \"dashLength\": + 10,\n \"dashes\": false,\n \"datasource\": \"Prometheus\",\n \"fill\": + 1,\n \"gridPos\": {\n \"h\": 6,\n \"w\": 12,\n \"x\": + 0,\n \"y\": 47\n },\n \"id\": 76,\n \"legend\": {\n \"avg\": + false,\n \"current\": false,\n \"max\": false,\n \"min\": + false,\n \"show\": true,\n \"total\": false,\n \"values\": + false\n },\n \"lines\": true,\n \"linewidth\": 1,\n \"links\": + [],\n \"nullPointMode\": \"null\",\n \"percentage\": false,\n \"pointradius\": + 5,\n \"points\": false,\n \"renderer\": \"flot\",\n \"seriesOverrides\": + [],\n \"spaceLength\": 10,\n \"stack\": false,\n \"steppedLine\": + false,\n \"targets\": [\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\\\"mutual_tls\\\", + reporter=\\\"source\\\", source_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$workload\\\", + destination_service=~\\\"$dstsvc\\\"}[1m])) by (destination_service), 0.001)\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ destination_service }} (\U0001F510mTLS)\",\n \"refId\": \"A\",\n + \ \"step\": 2\n },\n {\n \"expr\": \"round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\\\"mutual_tls\\\", + reporter=\\\"source\\\", source_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$workload\\\", + destination_service=~\\\"$dstsvc\\\"}[1m])) by (destination_service), 0.001)\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ destination_service }}\",\n \"refId\": \"B\",\n \"step\": + 2\n }\n ],\n \"thresholds\": [],\n \"timeFrom\": null,\n + \ \"timeShift\": null,\n \"title\": \"Bytes Sent on Outgoing TCP Connection\",\n + \ \"tooltip\": {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": + \"individual\"\n },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"Bps\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": true\n + \ }\n ]\n },\n {\n \"aliasColors\": {},\n \"bars\": + false,\n \"dashLength\": 10,\n \"dashes\": false,\n \"datasource\": + \"Prometheus\",\n \"fill\": 1,\n \"gridPos\": {\n \"h\": 6,\n + \ \"w\": 12,\n \"x\": 12,\n \"y\": 47\n },\n \"id\": + 78,\n \"legend\": {\n \"avg\": false,\n \"current\": false,\n + \ \"max\": false,\n \"min\": false,\n \"show\": true,\n \"total\": + false,\n \"values\": false\n },\n \"lines\": true,\n \"linewidth\": + 1,\n \"links\": [],\n \"nullPointMode\": \"null\",\n \"percentage\": + false,\n \"pointradius\": 5,\n \"points\": false,\n \"renderer\": + \"flot\",\n \"seriesOverrides\": [],\n \"spaceLength\": 10,\n \"stack\": + false,\n \"steppedLine\": false,\n \"targets\": [\n {\n \"expr\": + \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", connection_security_policy=\\\"mutual_tls\\\", + source_workload_namespace=~\\\"$namespace\\\", source_workload=~\\\"$workload\\\", + destination_service=~\\\"$dstsvc\\\"}[1m])) by (destination_service), 0.001)\",\n + \ \"format\": \"time_series\",\n \"intervalFactor\": 1,\n \"legendFormat\": + \"{{ destination_service }} (\U0001F510mTLS)\",\n \"refId\": \"A\",\n + \ \"step\": 2\n },\n {\n \"expr\": \"round(sum(irate(istio_tcp_received_bytes_total{reporter=\\\"source\\\", + connection_security_policy!=\\\"mutual_tls\\\", source_workload_namespace=~\\\"$namespace\\\", + source_workload=~\\\"$workload\\\", destination_service=~\\\"$dstsvc\\\"}[1m])) + by (destination_service), 0.001)\",\n \"format\": \"time_series\",\n + \ \"intervalFactor\": 1,\n \"legendFormat\": \"{{ destination_service + }}\",\n \"refId\": \"B\",\n \"step\": 2\n }\n ],\n + \ \"thresholds\": [],\n \"timeFrom\": null,\n \"timeShift\": null,\n + \ \"title\": \"Bytes Received from Outgoing TCP Connection\",\n \"tooltip\": + {\n \"shared\": true,\n \"sort\": 0,\n \"value_type\": \"individual\"\n + \ },\n \"type\": \"graph\",\n \"xaxis\": {\n \"buckets\": + null,\n \"mode\": \"time\",\n \"name\": null,\n \"show\": + true,\n \"values\": []\n },\n \"yaxes\": [\n {\n \"format\": + \"Bps\",\n \"label\": null,\n \"logBase\": 1,\n \"max\": + null,\n \"min\": \"0\",\n \"show\": true\n },\n {\n + \ \"format\": \"short\",\n \"label\": null,\n \"logBase\": + 1,\n \"max\": null,\n \"min\": null,\n \"show\": true\n + \ }\n ]\n }\n ],\n \"refresh\": \"10s\",\n \"schemaVersion\": + 16,\n \"style\": \"dark\",\n \"tags\": [],\n \"templating\": {\n \"list\": + [\n {\n \"allValue\": null,\n \"current\": {},\n \"datasource\": + \"Prometheus\",\n \"hide\": 0,\n \"includeAll\": false,\n \"label\": + \"Namespace\",\n \"multi\": false,\n \"name\": \"namespace\",\n + \ \"options\": [],\n \"query\": \"query_result(sum(istio_requests_total) + by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total) by (destination_workload_namespace))\",\n + \ \"refresh\": 1,\n \"regex\": \"/.*_namespace=\\\"([^\\\"]*).*/\",\n + \ \"sort\": 0,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n + \ \"tagsQuery\": \"\",\n \"type\": \"query\",\n \"useTags\": + false\n },\n {\n \"allValue\": null,\n \"current\": {},\n + \ \"datasource\": \"Prometheus\",\n \"hide\": 0,\n \"includeAll\": + false,\n \"label\": \"Workload\",\n \"multi\": false,\n \"name\": + \"workload\",\n \"options\": [],\n \"query\": \"query_result((sum(istio_requests_total{destination_workload_namespace=~\\\"$namespace\\\"}) + by (destination_workload) or sum(istio_requests_total{source_workload_namespace=~\\\"$namespace\\\"}) + by (source_workload)) or (sum(istio_tcp_sent_bytes_total{destination_workload_namespace=~\\\"$namespace\\\"}) + by (destination_workload) or sum(istio_tcp_sent_bytes_total{source_workload_namespace=~\\\"$namespace\\\"}) + by (source_workload)))\",\n \"refresh\": 1,\n \"regex\": \"/.*workload=\\\"([^\\\"]*).*/\",\n + \ \"sort\": 1,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n + \ \"tagsQuery\": \"\",\n \"type\": \"query\",\n \"useTags\": + false\n },\n {\n \"allValue\": null,\n \"current\": {},\n + \ \"datasource\": \"Prometheus\",\n \"hide\": 0,\n \"includeAll\": + true,\n \"label\": \"Inbound Workload Namespace\",\n \"multi\": + true,\n \"name\": \"srcns\",\n \"options\": [],\n \"query\": + \"query_result( sum(istio_requests_total{reporter=\\\"destination\\\", destination_workload=\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}) by (source_workload_namespace) + or sum(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", destination_workload=\\\"$workload\\\", + destination_workload_namespace=~\\\"$namespace\\\"}) by (source_workload_namespace))\",\n + \ \"refresh\": 1,\n \"regex\": \"/.*namespace=\\\"([^\\\"]*).*/\",\n + \ \"sort\": 2,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n + \ \"tagsQuery\": \"\",\n \"type\": \"query\",\n \"useTags\": + false\n },\n {\n \"allValue\": null,\n \"current\": {},\n + \ \"datasource\": \"Prometheus\",\n \"hide\": 0,\n \"includeAll\": + true,\n \"label\": \"Inbound Workload\",\n \"multi\": true,\n \"name\": + \"srcwl\",\n \"options\": [],\n \"query\": \"query_result( sum(istio_requests_total{reporter=\\\"destination\\\", + destination_workload=\\\"$workload\\\", destination_workload_namespace=~\\\"$namespace\\\", + source_workload_namespace=~\\\"$srcns\\\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\\\"destination\\\", + destination_workload=\\\"$workload\\\", destination_workload_namespace=~\\\"$namespace\\\", + source_workload_namespace=~\\\"$srcns\\\"}) by (source_workload))\",\n \"refresh\": + 1,\n \"regex\": \"/.*workload=\\\"([^\\\"]*).*/\",\n \"sort\": 3,\n + \ \"tagValuesQuery\": \"\",\n \"tags\": [],\n \"tagsQuery\": + \"\",\n \"type\": \"query\",\n \"useTags\": false\n },\n {\n + \ \"allValue\": null,\n \"current\": {},\n \"datasource\": + \"Prometheus\",\n \"hide\": 0,\n \"includeAll\": true,\n \"label\": + \"Destination Service\",\n \"multi\": true,\n \"name\": \"dstsvc\",\n + \ \"options\": [],\n \"query\": \"query_result( sum(istio_requests_total{reporter=\\\"source\\\", + source_workload=~\\\"$workload\\\", source_workload_namespace=~\\\"$namespace\\\"}) + by (destination_service) or sum(istio_tcp_sent_bytes_total{reporter=\\\"source\\\", + source_workload=~\\\"$workload\\\", source_workload_namespace=~\\\"$namespace\\\"}) + by (destination_service))\",\n \"refresh\": 1,\n \"regex\": \"/.*destination_service=\\\"([^\\\"]*).*/\",\n + \ \"sort\": 4,\n \"tagValuesQuery\": \"\",\n \"tags\": [],\n + \ \"tagsQuery\": \"\",\n \"type\": \"query\",\n \"useTags\": + false\n }\n ]\n },\n \"time\": {\n \"from\": \"now-5m\",\n \"to\": + \"now\"\n },\n \"timepicker\": {\n \"refresh_intervals\": [\n \"5s\",\n + \ \"10s\",\n \"30s\",\n \"1m\",\n \"5m\",\n \"15m\",\n + \ \"30m\",\n \"1h\",\n \"2h\",\n \"1d\"\n ],\n \"time_options\": + [\n \"5m\",\n \"15m\",\n \"1h\",\n \"6h\",\n \"12h\",\n + \ \"24h\",\n \"2d\",\n \"7d\",\n \"30d\"\n ]\n },\n \"timezone\": + \"\",\n \"title\": \"Istio Workload Dashboard\",\n \"uid\": \"UbsSZTDik\",\n + \ \"version\": 1\n}\n" +kind: ConfigMap +metadata: + creationTimestamp: null + name: istio-services-grafana-dashboards + namespace: istio-system diff --git a/istio/config_templates/addons/jaeger.yaml b/istio/config_templates/addons/jaeger.yaml new file mode 100644 index 000000000..5af3f58c2 --- /dev/null +++ b/istio/config_templates/addons/jaeger.yaml @@ -0,0 +1,88 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jaeger + namespace: istio-system + labels: + app: jaeger +spec: + selector: + matchLabels: + app: jaeger + template: + metadata: + labels: + app: jaeger + annotations: + sidecar.istio.io/inject: "false" + prometheus.io/scrape: "true" + prometheus.io/port: "14269" + spec: + containers: + - name: jaeger + image: "docker.io/jaegertracing/all-in-one:1.18" + env: + - name: BADGER_EPHEMERAL + value: "false" + - name: SPAN_STORAGE_TYPE + value: "badger" + - name: BADGER_DIRECTORY_VALUE + value: "/badger/data" + - name: BADGER_DIRECTORY_KEY + value: "/badger/key" + - name: COLLECTOR_ZIPKIN_HTTP_PORT + value: "9411" + - name: MEMORY_MAX_TRACES + value: "50000" + - name: QUERY_BASE_PATH + value: /jaeger + livenessProbe: + httpGet: + path: / + port: 14269 + readinessProbe: + httpGet: + path: / + port: 14269 + volumeMounts: + - name: data + mountPath: /badger + resources: + requests: + cpu: 10m + volumes: + - name: data + emptyDir: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: tracing + namespace: istio-system + labels: + app: jaeger +spec: + type: LoadBalancer + ports: + - name: http-query + port: 16686 + protocol: TCP + targetPort: 16686 + selector: + app: jaeger +--- +# Jaeger implements the Zipkin API. To support swapping out the tracing backend, we use a Service named Zipkin. +apiVersion: v1 +kind: Service +metadata: + labels: + name: zipkin + name: zipkin + namespace: istio-system +spec: + ports: + - port: 9411 + targetPort: 9411 + name: http-query + selector: + app: jaeger diff --git a/istio/config_templates/addons/prometheus.yaml b/istio/config_templates/addons/prometheus.yaml new file mode 100644 index 000000000..08585de31 --- /dev/null +++ b/istio/config_templates/addons/prometheus.yaml @@ -0,0 +1,464 @@ +--- +# Source: prometheus/templates/server-serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + name: prometheus + namespace: istio-system + annotations: + {} +--- +# Source: prometheus/templates/server-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + name: prometheus + namespace: istio-system +data: + alerting_rules.yml: | + {} + alerts: | + {} + prometheus.yml: | + global: + evaluation_interval: 1m + scrape_interval: 15s + scrape_timeout: 10s + rule_files: + - /etc/config/recording_rules.yml + - /etc/config/alerting_rules.yml + - /etc/config/rules + - /etc/config/alerts + scrape_configs: + - job_name: prometheus + static_configs: + - targets: + - localhost:9090 + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-apiservers + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: default;kubernetes;https + source_labels: + - __meta_kubernetes_namespace + - __meta_kubernetes_service_name + - __meta_kubernetes_endpoint_port_name + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-nodes + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - replacement: kubernetes.default.svc:443 + target_label: __address__ + - regex: (.+) + replacement: /api/v1/nodes/$1/proxy/metrics + source_labels: + - __meta_kubernetes_node_name + target_label: __metrics_path__ + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + job_name: kubernetes-nodes-cadvisor + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - replacement: kubernetes.default.svc:443 + target_label: __address__ + - regex: (.+) + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + source_labels: + - __meta_kubernetes_node_name + target_label: __metrics_path__ + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + - job_name: kubernetes-service-endpoints + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_service_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - action: replace + source_labels: + - __meta_kubernetes_service_name + target_label: kubernetes_name + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: kubernetes_node + - job_name: kubernetes-service-endpoints-slow + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scrape_slow + - action: replace + regex: (https?) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_scheme + target_label: __scheme__ + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_service_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - action: replace + source_labels: + - __meta_kubernetes_service_name + target_label: kubernetes_name + - action: replace + source_labels: + - __meta_kubernetes_pod_node_name + target_label: kubernetes_node + scrape_interval: 5m + scrape_timeout: 30s + - honor_labels: true + job_name: prometheus-pushgateway + kubernetes_sd_configs: + - role: service + relabel_configs: + - action: keep + regex: pushgateway + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_probe + - job_name: kubernetes-services + kubernetes_sd_configs: + - role: service + metrics_path: /probe + params: + module: + - http_2xx + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_service_annotation_prometheus_io_probe + - source_labels: + - __address__ + target_label: __param_target + - replacement: blackbox + target_label: __address__ + - source_labels: + - __param_target + target_label: instance + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - source_labels: + - __meta_kubernetes_service_name + target_label: kubernetes_name + - job_name: kubernetes-pods + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_pod_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: kubernetes_pod_name + - job_name: kubernetes-pods-slow + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: keep + regex: true + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_scrape_slow + - action: replace + regex: (.+) + source_labels: + - __meta_kubernetes_pod_annotation_prometheus_io_path + target_label: __metrics_path__ + - action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + source_labels: + - __address__ + - __meta_kubernetes_pod_annotation_prometheus_io_port + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - action: replace + source_labels: + - __meta_kubernetes_namespace + target_label: kubernetes_namespace + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: kubernetes_pod_name + scrape_interval: 5m + scrape_timeout: 30s + recording_rules.yml: | + {} + rules: | + {} +--- +# Source: prometheus/templates/server-clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + name: prometheus +rules: + - apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - nodes/metrics + - services + - endpoints + - pods + - ingresses + - configmaps + verbs: + - get + - list + - watch + - apiGroups: + - "extensions" + - "networking.k8s.io" + resources: + - ingresses/status + - ingresses + verbs: + - get + - list + - watch + - nonResourceURLs: + - "/metrics" + verbs: + - get +--- +# Source: prometheus/templates/server-clusterrolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + name: prometheus +subjects: + - kind: ServiceAccount + name: prometheus + namespace: istio-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus +--- +# Source: prometheus/templates/server-service.yaml +apiVersion: v1 +kind: Service +metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + name: prometheus + namespace: istio-system +spec: + ports: + - name: http + port: 9090 + protocol: TCP + targetPort: 9090 + selector: + component: "server" + app: prometheus + release: prometheus + sessionAffinity: None + type: "LoadBalancer" +--- +# Source: prometheus/templates/server-deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + name: prometheus + namespace: istio-system +spec: + selector: + matchLabels: + component: "server" + app: prometheus + release: prometheus + replicas: 1 + template: + metadata: + labels: + component: "server" + app: prometheus + release: prometheus + chart: prometheus-11.7.0 + heritage: Helm + spec: + serviceAccountName: prometheus + containers: + - name: prometheus-server-configmap-reload + image: "jimmidyson/configmap-reload:v0.3.0" + imagePullPolicy: "IfNotPresent" + args: + - --volume-dir=/etc/config + - --webhook-url=http://127.0.0.1:9090/-/reload + resources: + {} + volumeMounts: + - name: config-volume + mountPath: /etc/config + readOnly: true + + - name: prometheus-server + image: "prom/prometheus:v2.19.0" + imagePullPolicy: "IfNotPresent" + args: + - --storage.tsdb.retention.time=15d + - --config.file=/etc/config/prometheus.yml + - --storage.tsdb.path=/data + - --web.console.libraries=/etc/prometheus/console_libraries + - --web.console.templates=/etc/prometheus/consoles + - --web.enable-lifecycle + ports: + - containerPort: 9090 + readinessProbe: + httpGet: + path: /-/ready + port: 9090 + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + livenessProbe: + httpGet: + path: /-/healthy + port: 9090 + initialDelaySeconds: 30 + periodSeconds: 15 + timeoutSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + resources: + {} + volumeMounts: + - name: config-volume + mountPath: /etc/config + - name: storage-volume + mountPath: /data + subPath: "" + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + terminationGracePeriodSeconds: 300 + volumes: + - name: config-volume + configMap: + name: prometheus + - name: storage-volume + emptyDir: + {} diff --git a/istio/config_templates/addons/zipkin.yaml b/istio/config_templates/addons/zipkin.yaml new file mode 100644 index 000000000..b868175a4 --- /dev/null +++ b/istio/config_templates/addons/zipkin.yaml @@ -0,0 +1,56 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: zipkin + namespace: istio-system + labels: + app: zipkin +spec: + selector: + matchLabels: + app: zipkin + template: + metadata: + labels: + app: zipkin + annotations: + sidecar.istio.io/inject: "false" + spec: + containers: + - name: zipkin + image: openzipkin/zipkin-slim:2.20.0 + env: + - name: STORAGE_METHOD + value: "mem" +--- +apiVersion: v1 +kind: Service +metadata: + name: tracing + namespace: istio-system + labels: + app: zipkin +spec: + type: LoadBalancer + ports: + - name: http-query + port: 9411 + protocol: TCP + targetPort: 9411 + selector: + app: zipkin +--- +apiVersion: v1 +kind: Service +metadata: + labels: + name: zipkin + name: zipkin + namespace: istio-system +spec: + ports: + - port: 9411 + targetPort: 9411 + name: http-query + selector: + app: zipkin diff --git a/istio/config_templates/bookinfo-dr.yaml b/istio/config_templates/bookinfo-dr.yaml new file mode 100644 index 000000000..96be6993a --- /dev/null +++ b/istio/config_templates/bookinfo-dr.yaml @@ -0,0 +1,62 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: DestinationRule +metadata: + name: productpage +spec: + host: productpage + subsets: + - name: v1 + labels: + version: v1 +--- +apiVersion: networking.istio.io/v1alpha3 +kind: DestinationRule +metadata: + name: reviews +spec: + host: reviews + subsets: + - name: v1 + labels: + version: v1 + - name: v2 + labels: + version: v2 + - name: v3 + labels: + version: v3 +--- +apiVersion: networking.istio.io/v1alpha3 +kind: DestinationRule +metadata: + name: ratings +spec: + host: ratings + subsets: + - name: v1 + labels: + version: v1 + - name: v2 + labels: + version: v2 + - name: v2-mysql + labels: + version: v2-mysql + - name: v2-mysql-vm + labels: + version: v2-mysql-vm +--- +apiVersion: networking.istio.io/v1alpha3 +kind: DestinationRule +metadata: + name: details +spec: + host: details + subsets: + - name: v1 + labels: + version: v1 + - name: v2 + labels: + version: v2 +--- diff --git a/istio/config_templates/mtls/deny-all.yaml b/istio/config_templates/mtls/deny-all.yaml new file mode 100644 index 000000000..32ddb6928 --- /dev/null +++ b/istio/config_templates/mtls/deny-all.yaml @@ -0,0 +1,6 @@ +apiVersion: security.istio.io/v1beta1 +kind: AuthorizationPolicy +metadata: + name: deny-all +spec: + {} \ No newline at end of file diff --git a/istio/config_templates/mtls/disable.yaml b/istio/config_templates/mtls/disable.yaml new file mode 100644 index 000000000..fccbfa542 --- /dev/null +++ b/istio/config_templates/mtls/disable.yaml @@ -0,0 +1,7 @@ +apiVersion: security.istio.io/v1beta1 +kind: PeerAuthentication +metadata: + name: disable +spec: + mtls: + mode: DISABLE \ No newline at end of file diff --git a/istio/config_templates/mtls/permissive.yaml b/istio/config_templates/mtls/permissive.yaml new file mode 100644 index 000000000..a9d59dffe --- /dev/null +++ b/istio/config_templates/mtls/permissive.yaml @@ -0,0 +1,7 @@ +apiVersion: security.istio.io/v1beta1 +kind: PeerAuthentication +metadata: + name: permissive +spec: + mtls: + mode: PERMISSIVE \ No newline at end of file diff --git a/istio/config_templates/mtls/strict.yaml b/istio/config_templates/mtls/strict.yaml new file mode 100644 index 000000000..48137d9cc --- /dev/null +++ b/istio/config_templates/mtls/strict.yaml @@ -0,0 +1,7 @@ +apiVersion: security.istio.io/v1beta1 +kind: PeerAuthentication +metadata: + name: strict +spec: + mtls: + mode: STRICT \ No newline at end of file diff --git a/istio/install-istio.go b/istio/install-istio.go index d8a3b19c5..162c9ebf0 100644 --- a/istio/install-istio.go +++ b/istio/install-istio.go @@ -32,18 +32,19 @@ const ( var ( localByPassFile = "/tmp/istio.tar.gz" + homepath = "/app/istio" localFile = path.Join(os.TempDir(), "istio.tar.gz") destinationFolder = path.Join(os.TempDir(), "istio") - basePath = path.Join(destinationFolder, "%s") + basePath = path.Join(destinationFolder, fmt.Sprintf("istio-%s", os.Getenv("ISTIO_VERSION"))) installWithmTLSFile = path.Join(basePath, "install/kubernetes/istio-demo.yaml") crdFolder = path.Join(basePath, "install/kubernetes/helm/istio-init/files/") httpbinInstallFile = path.Join(basePath, "samples/httpbin/httpbin.yaml") httpbinGatewayInstallFile = path.Join(basePath, "samples/httpbin/httpbin-gateway.yaml") - emojiVotoInstallFile = path.Join(basePath, "istio/config_templates/emojivoto.yaml") - emojiVotoGatewayInstallFile = path.Join(basePath, "istio/config_templates/emojivoto-gateway.yaml") + emojiVotoInstallFile = path.Join(homepath, "config_templates/emojivoto.yaml") + emojiVotoGatewayInstallFile = path.Join(homepath, "config_templates/emojivoto-gateway.yaml") bookInfoGatewayInstallFile = path.Join(basePath, "samples/bookinfo/networking/bookinfo-gateway.yaml") bookInfoInstallFile = path.Join(basePath, "samples/bookinfo/platform/kube/bookinfo.yaml") @@ -55,11 +56,11 @@ var ( bookInfoInjectDelayForRatingsForJasonFile = path.Join(basePath, "samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml") bookInfoInjectHTTPAbortToRatingsForJasonFile = path.Join(basePath, "samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml") - prometheusInstallFile = path.Join(basePath, "samples/addons/prometheus.yaml") kialiInstallFile = path.Join(basePath, "samples/addons/kiali.yaml") - grafanaInstallFile = path.Join(basePath, "samples/addons/grafana.yaml") - jaegerInstallFile = path.Join(basePath, "samples/addons/jaeger.yaml") - zipkinInstallFile = path.Join(basePath, "samples/addons/extras/zipkin.yaml") + prometheusInstallFile = path.Join(homepath, "config_templates/addons/prometheus.yaml") + grafanaInstallFile = path.Join(homepath, "config_templates/addons/grafana.yaml") + jaegerInstallFile = path.Join(homepath, "config_templates/addons/jaeger.yaml") + zipkinInstallFile = path.Join(homepath, "config_templates/addons/extras/zipkin.yaml") operatorInstallFile = path.Join(basePath, "samples/addons/extras/prometheus-operator.yaml") ) @@ -140,6 +141,11 @@ func (iClient *Client) executev173Install(ctx context.Context, arReq *meshes.App return err } + err = os.Setenv("ISTIO_VERSION", "1.7.3") + if err != nil { + return err + } + return nil } @@ -404,28 +410,84 @@ func (iClient *Client) getCRDsYAML() ([]string, error) { return res, nil } +func (iClient *Client) getPolicyYaml(template string) (string, error) { + fileContents, err := ioutil.ReadFile(fmt.Sprintf("%s/config_templates/mtls/%s", homepath, template)) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil +} + +func (iClient *Client) getBookinfoDrYAML(template string) (string, error) { + fileContents, err := ioutil.ReadFile(fmt.Sprintf("%s/config_templates/%s", homepath, template)) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil +} + func (iClient *Client) getPrometheusYAML() (string, error) { - return iClient.getIstioComponentYAML(prometheusInstallFile) + fileContents, err := ioutil.ReadFile(prometheusInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getKialiYAML() (string, error) { - return iClient.getIstioComponentYAML(kialiInstallFile) + fileContents, err := ioutil.ReadFile(kialiInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getGrafanaYAML() (string, error) { - return iClient.getIstioComponentYAML(grafanaInstallFile) + fileContents, err := ioutil.ReadFile(grafanaInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getJaegerYAML() (string, error) { - return iClient.getIstioComponentYAML(jaegerInstallFile) + fileContents, err := ioutil.ReadFile(jaegerInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getZipkinYAML() (string, error) { - return iClient.getIstioComponentYAML(zipkinInstallFile) + fileContents, err := ioutil.ReadFile(zipkinInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getOperatorYAML() (string, error) { - return iClient.getIstioComponentYAML(operatorInstallFile) + fileContents, err := ioutil.ReadFile(operatorInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getLatestIstioYAML() (string, error) { @@ -433,27 +495,63 @@ func (iClient *Client) getLatestIstioYAML() (string, error) { } func (iClient *Client) getBookInfoAppYAML() (string, error) { - return iClient.getIstioComponentYAML(bookInfoInstallFile) + fileContents, err := ioutil.ReadFile(bookInfoInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getBookInfoGatewayYAML() (string, error) { - return iClient.getIstioComponentYAML(bookInfoGatewayInstallFile) + fileContents, err := ioutil.ReadFile(bookInfoGatewayInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getHttpbinAppYAML() (string, error) { - return iClient.getIstioComponentYAML(httpbinInstallFile) + fileContents, err := ioutil.ReadFile(httpbinInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getHttpbinGatewayYAML() (string, error) { - return iClient.getIstioComponentYAML(httpbinGatewayInstallFile) + fileContents, err := ioutil.ReadFile(httpbinGatewayInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getEmojiVotoAppYAML() (string, error) { - return iClient.getIstioComponentYAML(emojiVotoInstallFile) + fileContents, err := ioutil.ReadFile(emojiVotoInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getEmojiVotoGatewayYAML() (string, error) { - return iClient.getIstioComponentYAML(emojiVotoGatewayInstallFile) + fileContents, err := ioutil.ReadFile(emojiVotoGatewayInstallFile) + if err != nil { + err = errors.Wrap(err, "unable to read file") + logrus.Error(err) + return "", err + } + return string(fileContents), nil } func (iClient *Client) getBookInfoDefaultDesinationRulesYAML() (string, error) { diff --git a/istio/istio.go b/istio/istio.go index f11810e00..df249d1d2 100644 --- a/istio/istio.go +++ b/istio/istio.go @@ -535,6 +535,66 @@ func (iClient *Client) ApplyOperation(ctx context.Context, arReq *meshes.ApplyRu isCustomOp := false switch arReq.OpName { + case bookInfoSubsets: + go func() { + yamlFileContents, err = iClient.getBookinfoDrYAML(op.templateName) + if err != nil { + return + } + opName1 := "deploying" + if arReq.DeleteOp { + opName1 = "removing" + } + if err := iClient.applyConfigChange(ctx, yamlFileContents, arReq.Namespace, arReq.DeleteOp, isCustomOp); err != nil { + iClient.eventChan <- &meshes.EventsResponse{ + OperationId: arReq.OperationId, + EventType: meshes.EventType_ERROR, + Summary: fmt.Sprintf("Error while %s \"%s\"", opName1, op.name), + Details: err.Error(), + } + return + } + opName := "deployed" + if arReq.DeleteOp { + opName = "removed" + } + iClient.eventChan <- &meshes.EventsResponse{ + OperationId: arReq.OperationId, + EventType: meshes.EventType_INFO, + Summary: fmt.Sprintf("\"%s\" %s successfully", op.name, opName), + Details: fmt.Sprintf("\"%s\" %s successfully", op.name, opName), + } + }() + case strictMtls, mutualMtls, disableMtls: + go func() { + yamlFileContents, err = iClient.getPolicyYaml(op.templateName) + if err != nil { + return + } + opName1 := "deploying" + if arReq.DeleteOp { + opName1 = "removing" + } + if err := iClient.applyConfigChange(ctx, yamlFileContents, arReq.Namespace, arReq.DeleteOp, isCustomOp); err != nil { + iClient.eventChan <- &meshes.EventsResponse{ + OperationId: arReq.OperationId, + EventType: meshes.EventType_ERROR, + Summary: fmt.Sprintf("Error while %s \"%s\"", opName1, op.name), + Details: err.Error(), + } + return + } + opName := "deployed" + if arReq.DeleteOp { + opName = "removed" + } + iClient.eventChan <- &meshes.EventsResponse{ + OperationId: arReq.OperationId, + EventType: meshes.EventType_INFO, + Summary: fmt.Sprintf("\"%s\" %s successfully", op.name, opName), + Details: fmt.Sprintf("\"%s\" %s successfully", op.name, opName), + } + }() case enablePrometheus: go func() { opName1 := "deploying" diff --git a/istio/supported_ops.go b/istio/supported_ops.go index 1d965f86b..8924190cf 100644 --- a/istio/supported_ops.go +++ b/istio/supported_ops.go @@ -41,8 +41,8 @@ const ( installEmojiVoto = "install_emojivoto" // Bookinfo - installBookInfoCommand = "install_book_info" - cbCommand = "cb1" + installBookInfoCommand = "install_book_info" + // cbCommand = "cb1" googleMSSampleApplication = "google_microservices_demo_application" bookInfoDefaultDestinationRules = "bookInfoDefaultDestinationRules" bookInfoRouteToV1AllServices = "bookInfoRouteToV1AllServices" @@ -52,6 +52,7 @@ const ( bookInfoInjectDelayForRatingsForJason = "bookInfoInjectDelayForRatingsForJason" bookInfoInjectHTTPAbortToRatingsForJason = "bookInfoInjectHTTPAbortToRatingsForJason" bookInfoProductPageCircuitBreaking = "bookInfoProductPageCircuitBreaking" + bookInfoSubsets = "bookinfo_subsets" // HTTPbin installHttpbinCommand = "install_http_bin" @@ -120,11 +121,11 @@ var supportedOps = map[string]supportedOperation{ // appLabel: "istio-vet", // returnLogs: true, }, - cbCommand: { - name: "httpbin: Configure circuit breaker with only one connection", - opType: meshes.OpCategory_CONFIGURE, - templateName: "circuit_breaking.tmpl", - }, + // cbCommand: { + // name: "httpbin: Configure circuit breaker with only one connection", + // opType: meshes.OpCategory_CONFIGURE, + // templateName: "circuit_breaking.tmpl", + // }, // bookInfoDefaultDestinationRules: { // name: "BookInfo: Default BookInfo destination rules (defines subsets)", // opType: meshes.OpCategory_CONFIGURE, @@ -204,25 +205,30 @@ var supportedOps = map[string]supportedOperation{ opType: meshes.OpCategory_CONFIGURE, }, denyAllPolicy: { - name: "Deny-All policy on the namespace", - opType: meshes.OpCategory_CONFIGURE, // Yet to implement + name: "Deny-All policy on the namespace", + templateName: "deny-all.yaml", + opType: meshes.OpCategory_CONFIGURE, }, strictMtls: { - name: "Strict Mtls policy", - opType: meshes.OpCategory_CONFIGURE, // Yet to implement + name: "Strict Mtls policy", + templateName: "strict.yaml", + opType: meshes.OpCategory_CONFIGURE, }, mutualMtls: { - name: "Mutual Mtls policy", - opType: meshes.OpCategory_CONFIGURE, // Yet to implement + name: "Permissive Mtls policy", + templateName: "permissive.yaml", + opType: meshes.OpCategory_CONFIGURE, }, disableMtls: { - name: "Disable Mtls policy", - opType: meshes.OpCategory_CONFIGURE, // Yet to implement + name: "Disable Mtls policy", + templateName: "disable.yaml", + opType: meshes.OpCategory_CONFIGURE, + }, + bookInfoSubsets: { + name: "Bookinfo subsets", + templateName: "bookinfo-dr.yaml", + opType: meshes.OpCategory_CONFIGURE, }, - // bookInfoRouteV1ForUser: { - // name: "Configure bookinfo page to version v1", - // opType: meshes.OpCategory_CONFIGURE, - // }, // bookInfoMirrorTrafficToV2: { // name: "Configure bookinfo page mirror traffic from v1 to v2", // opType: meshes.OpCategory_CONFIGURE, diff --git a/scripts/install.sh b/scripts/install.sh index 2884b5773..82674ed0e 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -53,7 +53,7 @@ else fi fi -if ! mv istio-$ISTIO_VERSION /tmp/istio; then +if ! mv istio-$ISTIO_VERSION /tmp/istio/.; then exit 11 fi