---
# Source: open-match/templates/service-account.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Include this namespace only when doing `helm template`.
# helm 2 use namespace to manage its release so `helm install` with this namespace will be broken.
apiVersion: v1
kind: Namespace
metadata:
  name: open-match
  labels:
    app: open-match
    release: open-match
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/podsecuritypolicy.yaml
apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
  annotations:
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default'
    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'docker/default'
    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'
spec:
  privileged: false
  allowPrivilegeEscalation: false
  requiredDropCapabilities:
    # Default set from Docker, without DAC_OVERRIDE or CHOWN
    - FOWNER
    - FSETID
    - KILL
    - SETGID
    - SETUID
    - SETPCAP
    - NET_BIND_SERVICE
    - NET_RAW
    - SYS_CHROOT
    - MKNOD
    - AUDIT_WRITE
    - SETFCAP
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  hostNetwork: false
  hostIPC: false
  hostPID: false
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  readOnlyRootFilesystem: false
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/tests/test-podsecuritypolicy.yaml
apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
  name: open-match-grafana-test
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
spec:
  allowPrivilegeEscalation: true
  privileged: false
  hostNetwork: false
  hostIPC: false
  hostPID: false
  fsGroup:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  runAsUser:
    rule: RunAsAny
  volumes:
  - configMap
  - downwardAPI
  - emptyDir
  - projected
  - secret
---
# Source: open-match/templates/podsecuritypolicy.yaml
# This does not allow creating privileged pods and restrict binded pods to use the specified port ranges.
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: open-match-core-podsecuritypolicy
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    release: open-match
spec:
  allowPrivilegeEscalation: false
  defaultAllowPrivilegeEscalation: false
  forbiddenSysctls:
  - "*"
  fsGroup:
    rule: "MustRunAs"
    ranges:
    - min: 1
      max: 65535
  hostIPC: false
  hostNetwork: false
  hostPID: false
  hostPorts:
  # Open Match Services
  - min: 50500
    max: 50510
  - min: 51500
    max: 51510
  # Cassandra
  - min: 7000
    max: 7001
  - min: 7199
    max: 7199
  - min: 9042
    max: 9042
  - min: 9160
    max: 9160
  # Grafana
  - min: 3000
    max: 3000
  # Jaeger
  - min: 5775
    max: 5778
  - min: 6831
    max: 6832
  - min: 14267
    max: 14268
  - min: 9411
    max: 9411
  - min: 16686
    max: 16686
  # Prometheus
  - min: 9090
    max: 9093
  - min: 9100
    max: 9100
  - min: 8080
    max: 8080
  privileged: false  # Prevents creation of privileged Pods
  readOnlyRootFilesystem: false
  # Capabilities Reference: https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
  # TODO: Open Match itself doesn't need any capabilties but its dependencies do. We should split out the service accounts later.
  allowedCapabilities:
  - CHOWN
  #requiredDropCapabilities:
  #- ALL
  runAsUser:
    rule: "RunAsAny"
    # Blocked on isolating the open match services from dependencies (Redis, Prometheus, etc.)
    # Require the container to run without root privileges.
    #rule: 'MustRunAsNonRoot'
  seLinux:
    # This policy assumes the nodes are using AppArmor rather than SELinux.
    rule: 'RunAsAny'
  supplementalGroups:
    rule: RunAsAny
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    # Assume that persistentVolumes set up by the cluster admin are safe to use.
    - 'persistentVolumeClaim'
---
# Source: open-match/templates/podsecuritypolicy.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This is the least restricted PSP used to create privileged pods to disable THP in host kernel.
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: open-match-redis-podsecuritypolicy
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'
  labels:
    app: open-match
    release: open-match
spec:
  privileged: true
  allowPrivilegeEscalation: true
  allowedCapabilities:
  - '*'
  volumes:
  - '*'
  hostNetwork: true
  hostPorts:
  # Redis
  - min: 6379
    max: 6379
  - min: 9121
    max: 9121
  hostIPC: true
  hostPID: true
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
type: Opaque
data:
  admin-user: "YWRtaW4="
  admin-password: "b3Blbm1hdGNo"
  ldap-toml: ""
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/cassandra-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: open-match-jaeger-cassandra
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/instance: open-match
type: Opaque
data:
  password: "cGFzc3dvcmQ="
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/configmap-dashboard-provider.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
  name: open-match-grafana-config-dashboards
  namespace: open-match
data:
  provider.yaml: |-
    apiVersion: 1
    providers:
    - name: 'default'
      orgId: 1
      folder: ''
      type: file
      disableDeletion: false
      options:
        path: /tmp/dashboards
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
data:
  plugins: grafana-piechart-panel
  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
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/tests/test-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-grafana-test
  labels:
    app: open-match-grafana
    chart: "grafana-3.5.7"
    heritage: "Helm"
    release: "open-match"
data:
  run.sh: |-
    @test "Test Health" {
      url="http://open-match-grafana/api/health"

      code=$(curl -s -o /dev/null -I -w "%{http_code}" $url)
      [ "$code" == "200" ]
    }
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/alertmanager-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    component: "alertmanager"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-alertmanager
data:
  alertmanager.yml: |
    global: {}
    receivers:
    - name: default-receiver
    route:
      group_interval: 5m
      group_wait: 10s
      receiver: default-receiver
      repeat_interval: 3h
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
data:
  alerts: |
    {}
  prometheus.yml: |
    global:
      evaluation_interval: 1m
      scrape_interval: 1m
      scrape_timeout: 10s
    rule_files:
    - /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
    - 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
    alerting:
      alertmanagers:
      - kubernetes_sd_configs:
          - role: pod
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - source_labels: [__meta_kubernetes_namespace]
          regex: open-match
          action: keep
        - source_labels: [__meta_kubernetes_pod_label_app]
          regex: prometheus
          action: keep
        - source_labels: [__meta_kubernetes_pod_label_component]
          regex: alertmanager
          action: keep
        - source_labels: [__meta_kubernetes_pod_container_port_number]
          regex:
          action: drop
  rules: |
    {}
---
# Source: open-match/charts/open-match-telemetry/templates/default-grafana-dashboards.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-dashboards
  labels:
     grafana_dashboard: "1"
data:
  go-processes.json: |-
    {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "description": "Process status published by Go Prometheus client library, e.g. memory used, fds open, GC details",
      "editable": true,
      "gnetId": 6671,
      "graphTooltip": 0,
      "id": 4,
      "iteration": 1579812301012,
      "links": [],
      "panels": [
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "description": "Current CPU usage to Pod memory resource limit in percentage",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 0
          },
          "id": 10,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "max",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (pod_name) (\n\nsum(\n  rate(container_cpu_usage_seconds_total{container_name!=\"POD\"}[5m]) * on (pod_name) group_left(label_app) max by (pod_name, label_app) (label_replace(kube_pod_labels{label_app=\"open-match\"}, \"pod_name\", \"$1\", \"pod\", \"(.*)\"))\n) by (pod_name, container_name)\n\n/\n\nsum(\n  (container_spec_cpu_quota{container_name!=\"POD\"} * on (pod_name) group_left(label_app) max by (pod_name, label_app) (label_replace(kube_pod_labels{label_app=\"open-match\"}, \"pod_name\", \"$1\", \"pod\", \"(.*)\")))\n  /\n  (container_spec_cpu_period{container_name!=\"POD\"} * on (pod_name) group_left(label_app) max by (pod_name, label_app) (label_replace(kube_pod_labels{label_app=\"open-match\"}, \"pod_name\", \"$1\", \"pod\", \"(.*)\")))\n) by (pod_name, container_name)\n\n*\n\n100\n)\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "{{pod_name}}",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "CPU Usage Limit Percentage",
          "tooltip": {
            "shared": true,
            "sort": 2,
            "value_type": "individual"
          },
          "transparent": true,
          "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",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 0
          },
          "id": 7,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component) (go_goroutines{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}}",
              "metric": "go_goroutines",
              "refId": "A",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Go Routines",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 2,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 8
          },
          "id": 1,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [
            {
              "alias": "resident",
              "yaxis": 2
            }
          ],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component,app) (process_resident_memory_bytes{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - resident",
              "metric": "process_resident_memory_bytes",
              "refId": "A",
              "step": 4
            },
            {
              "expr": "avg by (component,app) (process_virtual_memory_bytes{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - virtual",
              "metric": "process_virtual_memory_bytes",
              "refId": "B",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Process Memory",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 2,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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,
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 8
          },
          "id": 4,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [
            {
              "alias": "resident",
              "yaxis": 1
            }
          ],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component) (deriv(process_resident_memory_bytes{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - resident",
              "metric": "process_resident_memory_bytes",
              "refId": "A",
              "step": 4
            },
            {
              "expr": "avg by (component) (deriv(process_virtual_memory_bytes{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - virtual",
              "metric": "process_virtual_memory_bytes",
              "refId": "B",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Process Memory Derivative",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 2,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 16
          },
          "id": 2,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [
            {
              "alias": "alloc rate",
              "yaxis": 2
            }
          ],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component) (go_memstats_alloc_bytes{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - bytes allocated",
              "metric": "go_memstats_alloc_bytes",
              "refId": "A",
              "step": 4
            },
            {
              "expr": "avg by (component) (rate(go_memstats_alloc_bytes_total{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - alloc rate",
              "metric": "go_memstats_alloc_bytes_total",
              "refId": "B",
              "step": 4
            },
            {
              "expr": "avg by (component) (go_memstats_stack_inuse_bytes{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - stack inuse",
              "metric": "go_memstats_stack_inuse_bytes",
              "refId": "C",
              "step": 4
            },
            {
              "expr": "avg by (component) (go_memstats_heap_inuse_bytes{app=~\"open-match\"})",
              "format": "time_series",
              "hide": false,
              "intervalFactor": 2,
              "legendFormat": "{{component}} - heap inuse",
              "metric": "go_memstats_heap_inuse_bytes",
              "refId": "D",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Go Memstats",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 0,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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": "Bps",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "Prometheus",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 16
          },
          "id": 5,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [
            {
              "alias": "alloc rate",
              "yaxis": 2
            }
          ],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component) (deriv(go_memstats_alloc_bytes{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - bytes allocated",
              "metric": "go_memstats_alloc_bytes",
              "refId": "A",
              "step": 4
            },
            {
              "expr": "avg by (component) (deriv(go_memstats_stack_inuse_bytes{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}} - stack inuse",
              "metric": "go_memstats_stack_inuse_bytes",
              "refId": "C",
              "step": 4
            },
            {
              "expr": "avg by (component) (deriv(go_memstats_heap_inuse_bytes{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "hide": false,
              "intervalFactor": 2,
              "legendFormat": "{{component}} - heap inuse",
              "metric": "go_memstats_heap_inuse_bytes",
              "refId": "D",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Go Memstats Derivative",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 2,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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": "Bps",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "Prometheus",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 24
          },
          "id": 3,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component) (process_open_fds{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}}",
              "metric": "process_open_fds",
              "refId": "A",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Open File Descriptors",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 0,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 24
          },
          "id": 6,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component) (deriv(process_open_fds{app=~\"open-match\"}[$interval]))",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}}",
              "metric": "process_open_fds",
              "refId": "A",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Open File Descriptors Derivative",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 0,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 9,
            "w": 12,
            "x": 12,
            "y": 32
          },
          "id": 8,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg by (component, quantile) (go_gc_duration_seconds{app=~\"open-match\"})",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{component}}: {{quantile}}",
              "metric": "go_gc_duration_seconds",
              "refId": "A",
              "step": 4
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "GC Duration Quantiles",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 2,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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": "30s",
      "schemaVersion": 18,
      "style": "dark",
      "tags": [],
      "templating": {
        "list": [
          {
            "allValue": ".*",
            "current": {
              "text": "All",
              "value": "$__all"
            },
            "datasource": "Prometheus",
            "definition": "",
            "hide": 0,
            "includeAll": true,
            "label": null,
            "multi": true,
            "name": "namespace",
            "options": [],
            "query": "label_values(go_memstats_alloc_bytes, namespace)",
            "refresh": 2,
            "regex": "",
            "skipUrlSync": false,
            "sort": 0,
            "tagValuesQuery": "",
            "tags": [],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
          },
          {
            "allValue": ".*",
            "current": {
              "text": "All",
              "value": "$__all"
            },
            "datasource": "Prometheus",
            "definition": "",
            "hide": 0,
            "includeAll": true,
            "label": null,
            "multi": true,
            "name": "pod",
            "options": [],
            "query": "label_values(process_resident_memory_bytes, pod)",
            "refresh": 2,
            "regex": "",
            "skipUrlSync": false,
            "sort": 0,
            "tagValuesQuery": "",
            "tags": [],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
          },
          {
            "auto": false,
            "auto_count": 30,
            "auto_min": "10s",
            "current": {
              "text": "5m",
              "value": "5m"
            },
            "datasource": null,
            "hide": 0,
            "includeAll": false,
            "label": "",
            "multi": false,
            "name": "interval",
            "options": [
              {
                "selected": false,
                "text": "1m",
                "value": "1m"
              },
              {
                "selected": true,
                "text": "5m",
                "value": "5m"
              },
              {
                "selected": false,
                "text": "10m",
                "value": "10m"
              },
              {
                "selected": false,
                "text": "30m",
                "value": "30m"
              },
              {
                "selected": false,
                "text": "1h",
                "value": "1h"
              }
            ],
            "query": "1m,5m,10m,30m,1h",
            "refresh": 2,
            "skipUrlSync": false,
            "type": "interval"
          }
        ]
      },
      "time": {
        "from": "now-15m",
        "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": "Go Processes",
      "uid": "ypFZFgvmz",
      "version": 1
    }
  grpc.json: |-
    {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "editable": true,
      "gnetId": null,
      "graphTooltip": 0,
      "id": 2,
      "iteration": 1580944984710,
      "links": [],
      "panels": [
        {
          "collapsed": false,
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 0
          },
          "id": 25,
          "panels": [],
          "title": "gRPC Overview",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 9,
            "w": 12,
            "x": 0,
            "y": 1
          },
          "id": 13,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum by (grpc_client_method)(rate(grpc_io_client_completed_rpcs[$timewindow]))",
              "format": "time_series",
              "instant": false,
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "{{grpc_client_method}}",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client Request Rate",
          "tooltip": {
            "shared": true,
            "sort": 2,
            "value_type": "individual"
          },
          "transparent": true,
          "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,
          "decimals": null,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 9,
            "w": 12,
            "x": 12,
            "y": 1
          },
          "id": 6,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "hideEmpty": false,
            "hideZero": false,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "sideWidth": null,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum by (grpc_server_method)(rate(grpc_io_server_completed_rpcs[$timewindow]))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "Method: {{grpc_server_method}} ",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Server Request Rate",
          "tooltip": {
            "shared": true,
            "sort": 2,
            "value_type": "individual"
          },
          "transparent": true,
          "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 10
          },
          "id": 21,
          "interval": "",
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "hideEmpty": false,
            "hideZero": false,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum by (method) (\n  label_replace(\n    sum by (grpc_server_method) (rate(grpc_io_server_completed_rpcs{grpc_server_status!=\"OK\"}[$timewindow])), \n    \"method\", \n    \"$1\", \n    \"grpc_server_method\", \n    \"(.*)\"\n  )\nor\n  label_replace(\n    sum by (grpc_client_method) (rate(grpc_io_client_completed_rpcs{grpc_client_status!=\"OK\"}[$timewindow])), \n    \"method\", \n    \"$1\", \n    \"grpc_client_method\", \n    \"(.*)\"\n  )\n)\n/\nsum by (method) (\n  label_replace(\n    sum by (grpc_server_method) (rate(grpc_io_server_completed_rpcs[$timewindow])), \n    \"method\", \n    \"$1\", \n    \"grpc_server_method\", \n    \"(.*)\"\n  )\nor\n  label_replace(\n    sum by (grpc_client_method) (rate(grpc_io_client_completed_rpcs[$timewindow])), \n    \"method\", \n    \"$1\", \n    \"grpc_client_method\", \n    \"(.*)\"\n  )\n) * 100\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "{{method}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "gRPC Error Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "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,
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 10
          },
          "id": 55,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum(\n  sum by (method) (\n    label_replace(\n      rate(grpc_io_server_received_bytes_per_rpc_sum[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      rate(grpc_io_client_sent_bytes_per_rpc_sum[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  )\n  \n  /\n  \n  sum by (method) (\n    label_replace(\n      rate(grpc_io_server_received_bytes_per_rpc_count[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      rate(grpc_io_client_sent_bytes_per_rpc_count[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  )\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "Input Per Second",
              "refId": "A"
            },
            {
              "expr": "sum(\n  sum by (method) (\n    label_replace(\n      rate(grpc_io_server_sent_bytes_per_rpc_sum[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      rate(grpc_io_client_received_bytes_per_rpc_sum[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  )\n  \n  /\n  \n  sum by (method) (\n    label_replace(\n      rate(grpc_io_server_sent_bytes_per_rpc_count[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      rate(grpc_io_client_received_bytes_per_rpc_count[$timewindow]), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  )\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "Output Per Second",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Network IO per second",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "decbytes",
              "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": 18
          },
          "id": 57,
          "panels": [],
          "title": "openmatch.QueryService/QueryTickets",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 19
          },
          "id": 59,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.QueryService/QueryTickets",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 19
          },
          "id": 58,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.QueryService/QueryTickets",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 27
          },
          "id": 60,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.QueryService/QueryTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.QueryService/QueryTickets",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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": 35
          },
          "id": 29,
          "panels": [],
          "title": "openmatch.BackendService/AssignTickets",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 36
          },
          "id": 26,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.BackendService/AssignTickets",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 36
          },
          "id": 27,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.Backend/AssignTickets",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 44
          },
          "id": 12,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/AssignTickets\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.BackendService/AssignTickets",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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": 52
          },
          "id": 31,
          "panels": [],
          "repeat": null,
          "title": "openmatch.FrontendService/CreateTicket",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 53
          },
          "id": 32,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.FrontendService/CreateTicket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 53
          },
          "id": 33,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.FrontendService/CreateTicket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 61
          },
          "id": 34,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/CreateTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.FrontendService/CreateTicket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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": 69
          },
          "id": 38,
          "panels": [],
          "title": "openmatch.Evaluator/Evaluate",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 70
          },
          "id": 45,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.Evaluator/Evaluate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 70
          },
          "id": 43,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.Evaluator/Evaluate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 78
          },
          "id": 44,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.Evaluator/Evaluate\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.Evaluator/Evaluate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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": 86
          },
          "id": 40,
          "panels": [],
          "title": "openmatch.MatchFunction/Run",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 87
          },
          "id": 46,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.MatchFunction/Run",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 87
          },
          "id": 47,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.MatchFunction/Run",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 95
          },
          "id": 19,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.MatchFunction/Run\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.MatchFunction/Run",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "max": null,
              "min": "0",
              "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": 103
          },
          "id": 42,
          "panels": [],
          "title": "openmatch.BackendService/FetchMatches",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 104
          },
          "id": 48,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "instant": false,
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/CreateTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.BackendService/FetchMatches",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 104
          },
          "id": 49,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.BackendService/FetchMatches",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 112
          },
          "id": 14,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.BackendService/FetchMatches\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.BackendService/FetchMatches",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "max": null,
              "min": "0",
              "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": 120
          },
          "id": 36,
          "panels": [],
          "title": "openmatch.Synchronizer/Synchronize",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 121
          },
          "id": 50,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "instant": false,
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.internal.Synchronizer/Synchronize",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 121
          },
          "id": 51,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.internal.Synchronizer/Synchronize",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 129
          },
          "id": 15,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.internal.Synchronizer/Synchronize\"}[$timewindow])) by (grpc_client_method, le))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.internal.Synchronizer/Synchronize",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "max": null,
              "min": "0",
              "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": 137
          },
          "id": 23,
          "panels": [],
          "title": "openmatch.FrontendService/DeleteTicket",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 138
          },
          "id": 52,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "instant": false,
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_sent_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_received_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Sent per Call: openmatch.FrontendService/DeleteTicket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 138
          },
          "id": 53,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_received_bytes_per_rpc_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_sent_bytes_per_rpc_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Bytes Received per Call: openmatch.FrontendService/DeleteTicket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 146
          },
          "id": 16,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(\n  0.999,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile Latency",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(\n  0.99,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile Latency",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(\n  0.95,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile Latency",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(\n  0.90,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile Latency",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(\n  0.50,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile Latency",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(\n  0.10,\n  sum(\n    label_replace(\n      sum(rate(grpc_io_client_roundtrip_latency_bucket{grpc_client_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_client_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_client_method\", \n      \"(.*)\"\n    )\n  or\n    label_replace(\n      sum(rate(grpc_io_server_server_latency_bucket{grpc_server_method=\"openmatch.FrontendService/DeleteTicket\"}[$timewindow])) by (grpc_server_method, le), \n      \"method\", \n      \"$1\", \n      \"grpc_server_method\", \n      \"(.*)\"\n    )\n  ) by (method, le)\n)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile Latency",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Client RTT: openmatch.FrontendService/DeleteTicket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "max": null,
              "min": "0",
              "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": [
          {
            "allValue": null,
            "current": {
              "text": "5m",
              "value": "5m"
            },
            "hide": 0,
            "includeAll": false,
            "label": "Time Window",
            "multi": false,
            "name": "timewindow",
            "options": [
              {
                "selected": true,
                "text": "5m",
                "value": "5m"
              },
              {
                "selected": false,
                "text": "10m",
                "value": "10m"
              },
              {
                "selected": false,
                "text": "15m",
                "value": "15m"
              },
              {
                "selected": false,
                "text": "30m",
                "value": "30m"
              },
              {
                "selected": false,
                "text": "1h",
                "value": "1h"
              },
              {
                "selected": false,
                "text": "4h",
                "value": "4h"
              }
            ],
            "query": "5m,10m,15m,30m,1h,4h",
            "skipUrlSync": false,
            "type": "custom"
          }
        ]
      },
      "time": {
        "from": "now-3h",
        "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": "gRPC",
      "uid": "nlrmG_Cmk",
      "version": 1
    }
  match-making.json: |-
    {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "editable": true,
      "gnetId": null,
      "graphTooltip": 0,
      "links": [],
      "panels": [
        {
          "collapsed": false,
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 0
          },
          "id": 10,
          "panels": [],
          "title": "Frontend",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 1
          },
          "id": 12,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_frontend_total_bytes_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_frontend_total_bytes_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_frontend_total_bytes_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_frontend_total_bytes_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_frontend_total_bytes_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_frontend_total_bytes_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Total Bytes per Ticket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 1
          },
          "id": 14,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_frontend_searchfields_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_frontend_searchfields_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_frontend_searchfields_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_frontend_searchfields_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_frontend_searchfields_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_frontend_searchfields_per_ticket_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "SearchFields per Ticket",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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": 9
          },
          "id": 8,
          "panels": [],
          "title": "Backend",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 10
          },
          "id": 15,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum(rate(open_match_dev_backend_tickets_assigned[5m]))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "assigned",
              "refId": "A"
            },
            {
              "expr": "sum(rate(open_match_dev_backend_tickets_released[5m]))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "released",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Ticket Assigned/Release Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 10
          },
          "id": 16,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_backend_tickets_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_backend_tickets_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_backend_tickets_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_backend_tickets_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_backend_tickets_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_backend_tickets_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Tickets per Match",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 18
          },
          "id": 13,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_backend_total_bytes_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_backend_total_bytes_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_backend_total_bytes_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_backend_total_bytes_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_backend_total_bytes_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_backend_total_bytes_per_match_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Total Bytes per Match",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "bytes",
              "label": null,
              "logBase": 2,
              "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": 26
          },
          "id": 6,
          "panels": [],
          "title": "Query",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 27
          },
          "id": 19,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": true,
            "min": true,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "open_match_dev_query_total_cached_items",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "Total: {{kubernetes_pod_name}}",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Query Cache Items",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "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,
          "decimals": 0,
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 27
          },
          "id": 30,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": true,
            "min": true,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "rate(open_match_dev_query_total_fetched_items[5m])",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "Total: {{kubernetes_pod_name}}",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Query Cache Fetch Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 35
          },
          "id": 17,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_query_tickets_per_query_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_query_tickets_per_query_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_query_tickets_per_query_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_query_tickets_per_query_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_query_tickets_per_query_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_query_tickets_per_query_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Tickets per Query",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 35
          },
          "id": 22,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_query_waiting_requests_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_query_waiting_requests_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_query_waiting_requests_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_query_waiting_requests_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_query_waiting_requests_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_query_waiting_requests_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Query Cache Waiting Requests",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": null,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 43
          },
          "id": 23,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_query_update_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_query_update_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_query_update_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_query_update_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_query_update_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_query_update_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Query Cache Update Latency",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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,
          "decimals": 2,
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 43
          },
          "id": 21,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "rate(open_match_dev_query_cache_updates[5m])",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "{{kubernetes_pod_name}}",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Query Cache Update Rate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 2,
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "decimals": null,
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 51
          },
          "id": 4,
          "title": "Evaluator",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 52
          },
          "id": 24,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_evaluator_matches_per_request_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_evaluator_matches_per_request_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_evaluator_matches_per_request_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_evaluator_matches_per_request_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_evaluator_matches_per_request_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_evaluator_matches_per_request_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Matches per Evaluate Request",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 52
          },
          "id": 25,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_evaluator_matches_per_response_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_evaluator_matches_per_response_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_evaluator_matches_per_response_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_evaluator_matches_per_response_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_evaluator_matches_per_response_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_evaluator_matches_per_response_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Matches per Evaluate Response",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": 0,
          "description": "Only applies when using the default evaluator",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 60
          },
          "id": 26,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "avg(rate(open_match_dev_defaulteval_collided_matches_per_call[5m]))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Collided Matches per Evaluate",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": 0,
              "format": "none",
              "label": null,
              "logBase": 2,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 68
          },
          "id": 2,
          "title": "Synchronizer",
          "type": "row"
        },
        {
          "aliasColors": {},
          "bars": false,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": null,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 69
          },
          "id": 29,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_synchronizer_registration_mmf_done_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_synchronizer_registration_mmf_done_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_synchronizer_registration_mmf_done_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_synchronizer_registration_mmf_done_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_synchronizer_registration_mmf_done_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_synchronizer_registration_mmf_done_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Synchronizer Registration MMF Done Time",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": null,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 12,
            "y": 69
          },
          "id": 28,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_synchronizer_registration_wait_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_synchronizer_registration_wait_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_synchronizer_registration_wait_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_synchronizer_registration_wait_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_synchronizer_registration_wait_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_synchronizer_registration_wait_time_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Synchronizer Registration Wait Time",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "decimals": null,
          "description": "",
          "fill": 0,
          "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 77
          },
          "id": 27,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "histogram_quantile(0.999, sum(rate(open_match_dev_synchronizer_iteration_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 1,
              "legendFormat": "99.9%-ile",
              "refId": "A"
            },
            {
              "expr": "histogram_quantile(0.99, sum(rate(open_match_dev_synchronizer_iteration_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "99%-ile",
              "refId": "B"
            },
            {
              "expr": "histogram_quantile(0.95, sum(rate(open_match_dev_synchronizer_iteration_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "95%-ile",
              "refId": "C"
            },
            {
              "expr": "histogram_quantile(0.90, sum(rate(open_match_dev_synchronizer_iteration_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "90%-ile",
              "refId": "D"
            },
            {
              "expr": "histogram_quantile(0.50, sum(rate(open_match_dev_synchronizer_iteration_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "50%-ile",
              "refId": "F"
            },
            {
              "expr": "histogram_quantile(0.10, sum(rate(open_match_dev_synchronizer_iteration_latency_bucket[5m])) by (le))\n",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "10%-ile",
              "refId": "H"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Synchronizer Iteration Latency",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "decimals": null,
              "format": "ms",
              "label": null,
              "logBase": 2,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        }
      ],
      "schemaVersion": 18,
      "style": "dark",
      "tags": [],
      "templating": {
        "list": []
      },
      "time": {
        "from": "now-30m",
        "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": "Match Making",
      "uid": "B-nxSgqWz",
      "version": 1
    }
  redis.json: |-
    {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "description": "Redis Dashboard",
      "editable": true,
      "gnetId": 763,
      "graphTooltip": 0,
      "id": 6,
      "iteration": 1580946687856,
      "links": [],
      "panels": [
        {
          "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",
          "decimals": 0,
          "editable": true,
          "error": false,
          "format": "s",
          "gauge": {
            "maxValue": 100,
            "minValue": 0,
            "show": false,
            "thresholdLabels": false,
            "thresholdMarkers": true
          },
          "gridPos": {
            "h": 7,
            "w": 2,
            "x": 0,
            "y": 0
          },
          "id": 9,
          "interval": null,
          "isNew": true,
          "links": [],
          "mappingType": 1,
          "mappingTypes": [
            {
              "name": "value to text",
              "value": 1
            },
            {
              "name": "range to text",
              "value": 2
            }
          ],
          "maxDataPoints": 100,
          "nullPointMode": "connected",
          "nullText": null,
          "options": {},
          "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": "max(max_over_time(redis_uptime_in_seconds{instance=~\"$instance\"}[$__interval]))",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "",
              "metric": "",
              "refId": "A",
              "step": 1800
            }
          ],
          "thresholds": "",
          "title": "Uptime",
          "transparent": true,
          "type": "singlestat",
          "valueFontSize": "70%",
          "valueMaps": [
            {
              "op": "=",
              "text": "N/A",
              "value": "null"
            }
          ],
          "valueName": "current"
        },
        {
          "cacheTimeout": null,
          "colorBackground": false,
          "colorValue": false,
          "colors": [
            "rgba(50, 172, 45, 0.97)",
            "rgba(237, 129, 40, 0.89)",
            "rgba(245, 54, 54, 0.9)"
          ],
          "datasource": "Prometheus",
          "decimals": 0,
          "editable": true,
          "error": false,
          "format": "percent",
          "gauge": {
            "maxValue": 100,
            "minValue": 0,
            "show": true,
            "thresholdLabels": false,
            "thresholdMarkers": true
          },
          "gridPos": {
            "h": 7,
            "w": 3,
            "x": 2,
            "y": 0
          },
          "hideTimeOverride": true,
          "id": 11,
          "interval": null,
          "isNew": true,
          "links": [],
          "mappingType": 1,
          "mappingTypes": [
            {
              "name": "value to text",
              "value": 1
            },
            {
              "name": "range to text",
              "value": 2
            }
          ],
          "maxDataPoints": 100,
          "nullPointMode": "connected",
          "nullText": null,
          "options": {},
          "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": "100 * (redis_memory_used_bytes{instance=~\"$instance\"}  / redis_memory_max_bytes{instance=~\"$instance\"} )",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "",
              "metric": "",
              "refId": "A",
              "step": 2
            }
          ],
          "thresholds": "80,95",
          "timeFrom": "1m",
          "timeShift": null,
          "title": "Memory Usage",
          "transparent": true,
          "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": null,
            "minValue": 0,
            "show": true,
            "thresholdLabels": false,
            "thresholdMarkers": true
          },
          "gridPos": {
            "h": 7,
            "w": 3,
            "x": 5,
            "y": 0
          },
          "id": 5,
          "interval": null,
          "links": [],
          "mappingType": 1,
          "mappingTypes": [
            {
              "name": "value to text",
              "value": 1
            },
            {
              "name": "range to text",
              "value": 2
            }
          ],
          "maxDataPoints": 100,
          "nullPointMode": "connected",
          "nullText": null,
          "options": {},
          "pluginVersion": "6.2.4",
          "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": "sum(redis_db_keys{db=\"db0\"})",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "db keys",
              "refId": "A",
              "step": 240,
              "target": ""
            }
          ],
          "thresholds": "15000,30000",
          "timeFrom": null,
          "timeShift": null,
          "title": "Total DB Items",
          "transparent": true,
          "type": "singlestat",
          "valueFontSize": "80%",
          "valueMaps": [
            {
              "op": "=",
              "text": "N/A",
              "value": "null"
            }
          ],
          "valueName": "current"
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "fill": 0,
          "gridPos": {
            "h": 7,
            "w": 8,
            "x": 8,
            "y": 0
          },
          "id": 14,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pluginVersion": "6.2.4",
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [
            {
              "alias": "limit",
              "color": "#C4162A",
              "hideTooltip": true,
              "legend": false,
              "nullPointMode": "connected"
            },
            {
              "alias": "request",
              "color": "#73BF69",
              "hideTooltip": true,
              "legend": false,
              "nullPointMode": "connected"
            }
          ],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum(rate(container_cpu_usage_seconds_total{name!~\".*prometheus.*\", image!=\"\", container_name!=\"POD\"}[5m]) * on (pod_name) group_left(label_app) max by (pod_name, label_app) (label_replace(kube_pod_labels{label_app=\"redis\"}, \"pod_name\", \"$1\", \"pod\", \"(.*)\"))) by (pod_name)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "{{pod_name}} usage",
              "refId": "A"
            },
            {
              "expr": "sum(kube_pod_container_resource_limits_cpu_cores * on (pod) group_left(label_app) max by (pod, label_app) (kube_pod_labels{label_app=\"redis\"})) by (pod)",
              "format": "time_series",
              "hide": false,
              "intervalFactor": 1,
              "legendFormat": "limit",
              "refId": "B"
            },
            {
              "expr": "sum(kube_pod_container_resource_requests_cpu_cores * on (pod) group_left(label_app) max by (pod, label_app) (kube_pod_labels{label_app=\"redis\"})) by (pod)",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "request",
              "refId": "C"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "CPU Usage",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": "core",
              "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": {
            "max": "#BF1B00"
          },
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "Prometheus",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 7,
            "w": 8,
            "x": 16,
            "y": 0
          },
          "id": 7,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": false,
            "current": true,
            "hideEmpty": false,
            "hideZero": false,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null as zero",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "redis_memory_used_bytes",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}} used",
              "metric": "",
              "refId": "A",
              "step": 240,
              "target": ""
            },
            {
              "expr": "redis_memory_max_bytes",
              "format": "time_series",
              "hide": false,
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}} max",
              "refId": "B",
              "step": 240
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Total Memory Usage",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 0,
            "value_type": "cumulative"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "bytes",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": 0,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "Prometheus",
          "decimals": 2,
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 7,
            "w": 12,
            "x": 0,
            "y": 7
          },
          "id": 1,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": true,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "rate(redis_keyspace_hits_total[5m])",
              "format": "time_series",
              "hide": false,
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}} hits",
              "metric": "",
              "refId": "A",
              "step": 240,
              "target": ""
            },
            {
              "expr": "rate(redis_keyspace_misses_total[5m])",
              "format": "time_series",
              "hide": false,
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}} misses",
              "metric": "",
              "refId": "B",
              "step": 240,
              "target": ""
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Hits / Misses per Sec",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": "",
              "logBase": 1,
              "max": null,
              "min": 0,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ],
          "yaxis": {
            "align": false,
            "alignLevel": null
          }
        },
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "Prometheus",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 7,
            "w": 12,
            "x": 12,
            "y": 7
          },
          "id": 2,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "sort": "current",
            "sortDesc": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "rate(redis_commands_total{cmd!~\"info|slowlog|client|latency|replconf|config\"}[5m])",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "{{cmd}} - {{kubernetes_pod_name}}",
              "metric": "A",
              "refId": "A",
              "step": 240,
              "target": ""
            },
            {
              "expr": "sum by (kubernetes_pod_name) (rate(redis_commands_total[5m]))",
              "format": "time_series",
              "intervalFactor": 1,
              "legendFormat": "total - {{kubernetes_pod_name}}",
              "refId": "B"
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Commands Executed / sec",
          "tooltip": {
            "msResolution": false,
            "shared": true,
            "sort": 2,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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",
          "editable": true,
          "error": false,
          "fill": 0,
          "grid": {},
          "gridPos": {
            "h": 7,
            "w": 12,
            "x": 0,
            "y": 14
          },
          "id": 10,
          "isNew": true,
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": false,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "connected",
          "options": {},
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "rate(redis_net_input_bytes_total[5m])",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}} input",
              "refId": "A",
              "step": 240
            },
            {
              "expr": "rate(redis_net_output_bytes_total[5m])",
              "format": "time_series",
              "interval": "",
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}} output",
              "refId": "B",
              "step": 240
            }
          ],
          "thresholds": [],
          "timeFrom": null,
          "timeRegions": [],
          "timeShift": null,
          "title": "Network I/O",
          "tooltip": {
            "msResolution": true,
            "shared": true,
            "sort": 0,
            "value_type": "cumulative"
          },
          "transparent": true,
          "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,
          "cacheTimeout": null,
          "dashLength": 10,
          "dashes": false,
          "datasource": "Prometheus",
          "fill": 0,
          "gridPos": {
            "h": 7,
            "w": 12,
            "x": 12,
            "y": 14
          },
          "hideTimeOverride": false,
          "id": 12,
          "interval": "",
          "legend": {
            "alignAsTable": true,
            "avg": true,
            "current": true,
            "max": true,
            "min": false,
            "rightSide": true,
            "show": true,
            "total": false,
            "values": true
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "options": {},
          "percentage": false,
          "pointradius": 2,
          "points": false,
          "renderer": "flot",
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [
            {
              "expr": "sum by (kubernetes_pod_name) (redis_connected_clients)",
              "format": "time_series",
              "intervalFactor": 2,
              "legendFormat": "{{kubernetes_pod_name}}",
              "metric": "",
              "refId": "A",
              "step": 2
            }
          ],
          "thresholds": [],
          "timeFrom": "1m",
          "timeRegions": [],
          "timeShift": null,
          "title": "Clients",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "transparent": true,
          "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": "10s",
      "schemaVersion": 18,
      "style": "dark",
      "tags": [
        "prometheus",
        "redis"
      ],
      "templating": {
        "list": [
          {
            "allValue": null,
            "current": {
              "text": "10.28.0.12:9121",
              "value": "10.28.0.12:9121"
            },
            "datasource": "Prometheus",
            "definition": "label_values(redis_up, instance)",
            "hide": 0,
            "includeAll": false,
            "label": null,
            "multi": false,
            "name": "instance",
            "options": [],
            "query": "label_values(redis_up, instance)",
            "refresh": 2,
            "regex": "",
            "skipUrlSync": false,
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
          }
        ]
      },
      "time": {
        "from": "now-3h",
        "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": "Redis",
      "uid": "2bRz1gsWk",
      "version": 1
    }
---
# Source: open-match/charts/open-match-telemetry/templates/default-grafana-datasource.yaml
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-datasource
  labels:
     grafana_datasource: "1"
data:
    datasource.yaml: |-
      apiVersion: 1
      datasources:
      - name: Prometheus
        type: prometheus
        url: http://open-match-prometheus-server.open-match.svc.cluster.local:80/
        access: proxy
        isDefault: true
---
# Source: open-match/charts/redis/templates/configmap-scripts.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-redis-scripts
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    heritage: Helm
    release: open-match
data:
  start-node.sh: |
    #!/bin/bash
    is_boolean_yes() {
        local -r bool="${1:-}"
        # comparison is performed without regard to the case of alphabetic characters
        shopt -s nocasematch
        if [[ "$bool" = 1 || "$bool" =~ ^(yes|true)$ ]]; then
            true
        else
            false
        fi
    }

    HEADLESS_SERVICE="open-match-redis-headless.open-match.svc.cluster.local"
    REDIS_SERVICE="open-match-redis.open-match.svc.cluster.local"

    export REDIS_REPLICATION_MODE="slave"
    if [[ -z "$(getent ahosts "$HEADLESS_SERVICE" | grep -v "^$(hostname -i) ")" ]]; then
      export REDIS_REPLICATION_MODE="master"
    fi

    if [[ -n $REDIS_PASSWORD_FILE ]]; then
      password_aux=`cat ${REDIS_PASSWORD_FILE}`
      export REDIS_PASSWORD=$password_aux
    fi

    if [[ -n $REDIS_MASTER_PASSWORD_FILE ]]; then
      password_aux=`cat ${REDIS_MASTER_PASSWORD_FILE}`
      export REDIS_MASTER_PASSWORD=$password_aux
    fi

    if [[ "$REDIS_REPLICATION_MODE" == "master" ]]; then
      echo "I am master"
      if [[ ! -f /opt/bitnami/redis/etc/master.conf ]];then
        cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf
      fi
    else
      if [[ ! -f /opt/bitnami/redis/etc/replica.conf ]];then
        cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf
      fi

      if is_boolean_yes "$REDIS_TLS_ENABLED"; then
        sentinel_info_command="redis-cli -h $REDIS_SERVICE -p 26379 --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel get-master-addr-by-name om-redis-master"
      else
        sentinel_info_command="redis-cli -h $REDIS_SERVICE -p 26379 sentinel get-master-addr-by-name om-redis-master"
      fi
      REDIS_SENTINEL_INFO=($($sentinel_info_command))
      REDIS_MASTER_HOST=${REDIS_SENTINEL_INFO[0]}
      REDIS_MASTER_PORT_NUMBER=${REDIS_SENTINEL_INFO[1]}


      # Immediately attempt to connect to the reported master. If it doesn't exist the connection attempt will either hang
      # or fail with "port unreachable" and give no data. The liveness check will then timeout waiting for the redis
      # container to be ready and restart the it. By then the new master will likely have been elected
      if is_boolean_yes "$REDIS_TLS_ENABLED"; then
        sentinel_info_command="redis-cli -h $REDIS_MASTER_HOST -p 26379 --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel get-master-addr-by-name om-redis-master"
      else
        sentinel_info_command="redis-cli -h $REDIS_MASTER_HOST -p 26379 sentinel get-master-addr-by-name om-redis-master"
      fi

      if [[ ! ($($sentinel_info_command)) ]]; then
        # master doesn't actually exist, this probably means the remaining pods haven't elected a new one yet
        # and are reporting the old one still. Once this happens the container will get stuck and never see the new
        # master. We stop here to allow the container to not pass the liveness check and be restarted.
        exit 1
      fi
    fi

    if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then
      cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf
    fi
    ARGS=("--port" "${REDIS_PORT}")

    if [[ "$REDIS_REPLICATION_MODE" == "slave" ]]; then
      ARGS+=("--slaveof" "${REDIS_MASTER_HOST}" "${REDIS_MASTER_PORT_NUMBER}")
    fi
    ARGS+=("--protected-mode" "no")

    if [[ "$REDIS_REPLICATION_MODE" == "master" ]]; then
      ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf")
    else
      ARGS+=("--include" "/opt/bitnami/redis/etc/replica.conf")
    fi

    ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf")
    exec /run.sh "${ARGS[@]}"

  start-sentinel.sh: |
    #!/bin/bash
    replace_in_file() {
        local filename="${1:?filename is required}"
        local match_regex="${2:?match regex is required}"
        local substitute_regex="${3:?substitute regex is required}"
        local posix_regex=${4:-true}

        local result

        # We should avoid using 'sed in-place' substitutions
        # 1) They are not compatible with files mounted from ConfigMap(s)
        # 2) We found incompatibility issues with Debian10 and "in-place" substitutions
        del=$'\001' # Use a non-printable character as a 'sed' delimiter to avoid issues
        if [[ $posix_regex = true ]]; then
            result="$(sed -E "s${del}${match_regex}${del}${substitute_regex}${del}g" "$filename")"
        else
            result="$(sed "s${del}${match_regex}${del}${substitute_regex}${del}g" "$filename")"
        fi
        echo "$result" > "$filename"
    }
    sentinel_conf_set() {
        local -r key="${1:?missing key}"
        local value="${2:-}"

        # Sanitize inputs
        value="${value//\\/\\\\}"
        value="${value//&/\\&}"
        value="${value//\?/\\?}"
        [[ "$value" = "" ]] && value="\"$value\""

        replace_in_file "/opt/bitnami/redis-sentinel/etc/sentinel.conf" "^#*\s*${key} .*" "${key} ${value}" false
    }
    sentinel_conf_add() {
        echo $'\n'"$@" >> "/opt/bitnami/redis-sentinel/etc/sentinel.conf"
    }
    is_boolean_yes() {
        local -r bool="${1:-}"
        # comparison is performed without regard to the case of alphabetic characters
        shopt -s nocasematch
        if [[ "$bool" = 1 || "$bool" =~ ^(yes|true)$ ]]; then
            true
        else
            false
        fi
    }
    host_id() {
      echo "$1" | openssl sha1 | awk '{print $2}'
    }

    HEADLESS_SERVICE="open-match-redis-headless.open-match.svc.cluster.local"
    REDIS_SERVICE="open-match-redis.open-match.svc.cluster.local"

    if [[ -n $REDIS_PASSWORD_FILE ]]; then
      password_aux=`cat ${REDIS_PASSWORD_FILE}`
      export REDIS_PASSWORD=$password_aux
    fi

    if [[ ! -f /opt/bitnami/redis-sentinel/etc/sentinel.conf ]]; then
      cp /opt/bitnami/redis-sentinel/mounted-etc/sentinel.conf /opt/bitnami/redis-sentinel/etc/sentinel.conf
    fi

    export REDIS_REPLICATION_MODE="slave"
    if [[ -z "$(getent ahosts "$HEADLESS_SERVICE" | grep -v "^$(hostname -i) ")" ]]; then
      export REDIS_REPLICATION_MODE="master"
    fi

    if [[ "$REDIS_REPLICATION_MODE" == "master" ]]; then
      REDIS_MASTER_HOST="$(hostname -i)"
      REDIS_MASTER_PORT_NUMBER="6379"
    else
      if is_boolean_yes "$REDIS_SENTINEL_TLS_ENABLED"; then
        sentinel_info_command="redis-cli -h $REDIS_SERVICE -p 26379 --tls --cert ${REDIS_SENTINEL_TLS_CERT_FILE} --key ${REDIS_SENTINEL_TLS_KEY_FILE} --cacert ${REDIS_SENTINEL_TLS_CA_FILE} sentinel get-master-addr-by-name om-redis-master"
      else
        sentinel_info_command="redis-cli -h $REDIS_SERVICE -p 26379 sentinel get-master-addr-by-name om-redis-master"
      fi
      REDIS_SENTINEL_INFO=($($sentinel_info_command))
      REDIS_MASTER_HOST=${REDIS_SENTINEL_INFO[0]}
      REDIS_MASTER_PORT_NUMBER=${REDIS_SENTINEL_INFO[1]}

      # Immediately attempt to connect to the reported master. If it doesn't exist the connection attempt will either hang
      # or fail with "port unreachable" and give no data. The liveness check will then timeout waiting for the sentinel
      # container to be ready and restart the it. By then the new master will likely have been elected
      if is_boolean_yes "$REDIS_SENTINEL_TLS_ENABLED"; then
        sentinel_info_command="redis-cli -h $REDIS_MASTER_HOST -p 26379 --tls --cert ${REDIS_SENTINEL_TLS_CERT_FILE} --key ${REDIS_SENTINEL_TLS_KEY_FILE} --cacert ${REDIS_SENTINEL_TLS_CA_FILE} sentinel get-master-addr-by-name om-redis-master"
      else
        sentinel_info_command="redis-cli -h $REDIS_MASTER_HOST -p 26379 sentinel get-master-addr-by-name om-redis-master"
      fi

      if [[ ! ($($sentinel_info_command)) ]]; then
        # master doesn't actually exist, this probably means the remaining pods haven't elected a new one yet
        # and are reporting the old one still. Once this happens the container will get stuck and never see the new
        # master. We stop here to allow the container to not pass the liveness check and be restarted.
        exit 1
      fi
    fi
    sentinel_conf_set "sentinel monitor" "om-redis-master "$REDIS_MASTER_HOST" "$REDIS_MASTER_PORT_NUMBER" 2"

    add_replica() {
      if [[ "$1" != "$REDIS_MASTER_HOST" ]]; then
        sentinel_conf_add "sentinel known-replica om-redis-master $1 6379"
      fi
    }
    exec redis-server /opt/bitnami/redis-sentinel/etc/sentinel.conf --sentinel
---
# Source: open-match/charts/redis/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-redis
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    heritage: Helm
    release: open-match
data:
  redis.conf: |-
    # User-supplied configuration:
    maxclients 100000
    maxmemory 300000000
    
  master.conf: |-
    dir /data
  replica.conf: |-
    dir /data
    slave-read-only yes
    rename-command FLUSHDB ""
    rename-command FLUSHALL ""
  sentinel.conf: |-
    dir "/tmp"
    bind 0.0.0.0
    port 26379
    sentinel monitor om-redis-master open-match-redis-node-0.open-match-redis-headless.open-match.svc.cluster.local 6379 2
    sentinel down-after-milliseconds om-redis-master 60000
    sentinel failover-timeout om-redis-master 18000
    sentinel parallel-syncs om-redis-master 1
---
# Source: open-match/charts/redis/templates/health-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-redis-health
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    heritage: Helm
    release: open-match
data:
  ping_readiness_local.sh: |-
    #!/bin/bash
    export REDISCLI_AUTH="$REDIS_PASSWORD"
    response=$(
      timeout -s 3 $1 \
      redis-cli \
        -h localhost \
        -p $REDIS_PORT \
        ping
    )
    if [ "$response" != "PONG" ]; then
      echo "$response"
      exit 1
    fi
  ping_liveness_local.sh: |-
    #!/bin/bash
    export REDISCLI_AUTH="$REDIS_PASSWORD"
    response=$(
      timeout -s 3 $1 \
      redis-cli \
        -h localhost \
        -p $REDIS_PORT \
        ping
    )
    if [ "$response" != "PONG" ] && [ "$response" != "LOADING Redis is loading the dataset in memory" ]; then
      echo "$response"
      exit 1
    fi
  ping_sentinel.sh: |-
    #!/bin/bash
    export REDISCLI_AUTH="$REDIS_PASSWORD"
    response=$(
      timeout -s 3 $1 \
      redis-cli \
        -h localhost \
        -p $REDIS_SENTINEL_PORT \
        ping
    )
    if [ "$response" != "PONG" ]; then
      echo "$response"
      exit 1
    fi
  parse_sentinels.awk: |-
    /ip/ {FOUND_IP=1}
    /port/ {FOUND_PORT=1}
    /runid/ {FOUND_RUNID=1}
    !/ip|port|runid/ {
      if (FOUND_IP==1) {
        IP=$1; FOUND_IP=0;
      }
      else if (FOUND_PORT==1) {
        PORT=$1;
        FOUND_PORT=0;
      } else if (FOUND_RUNID==1) {
        printf "\nsentinel known-sentinel om-redis-master %s %s %s", IP, PORT, $0; FOUND_RUNID=0;
      }
    }
  ping_readiness_master.sh: |-
    #!/bin/bash
    export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
    response=$(
      timeout -s 3 $1 \
      redis-cli \
        -h $REDIS_MASTER_HOST \
        -p $REDIS_MASTER_PORT_NUMBER \
        ping
    )
    if [ "$response" != "PONG" ]; then
      echo "$response"
      exit 1
    fi
  ping_liveness_master.sh: |-
    #!/bin/bash
    export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD"
    response=$(
      timeout -s 3 $1 \
      redis-cli \
        -h $REDIS_MASTER_HOST \
        -p $REDIS_MASTER_PORT_NUMBER \
        ping
    )
    if [ "$response" != "PONG" ] && [ "$response" != "LOADING Redis is loading the dataset in memory" ]; then
      echo "$response"
      exit 1
    fi
  ping_readiness_local_and_master.sh: |-
    script_dir="$(dirname "$0")"
    exit_status=0
    "$script_dir/ping_readiness_local.sh" $1 || exit_status=$?
    "$script_dir/ping_readiness_master.sh" $1 || exit_status=$?
    exit $exit_status
  ping_liveness_local_and_master.sh: |-
    script_dir="$(dirname "$0")"
    exit_status=0
    "$script_dir/ping_liveness_local.sh" $1 || exit_status=$?
    "$script_dir/ping_liveness_master.sh" $1 || exit_status=$?
    exit $exit_status
---
# Source: open-match/templates/om-configmap-default.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: ConfigMap
metadata:
  name: open-match-configmap-default
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: config
    release: open-match
data:
  matchmaker_config_default.yaml: |-
    logging:
      level: debug
      format: text
      rpc: false
    # Open Match applies the exponential backoff strategy for its retryable gRPC calls.
    # The settings below are the default backoff configuration used in Open Match.
    # See https://github.com/cenkalti/backoff/blob/v3/exponential.go for detailed explanations
    backoff:
      # The initial retry interval (in milliseconds)
      initialInterval: 100ms
      # maxInterval caps the maximum time elapsed for a retry interval
      maxInterval: 500ms
      # The next retry interval is multiplied by this multiplier
      multiplier: 1.5
      # Randomize the retry interval
      randFactor: 0.5
      # maxElapsedTime caps the retry time (in milliseconds)
      maxElapsedTime: 3000ms

    api:
      backend:
        hostname: "open-match-backend"
        grpcport: "50505"
        httpport: "51505"
      frontend:
        hostname: "open-match-frontend"
        grpcport: "50504"
        httpport: "51504"
      query:
        hostname: "open-match-query"
        grpcport: "50503"
        httpport: "51503"
      synchronizer:
        hostname: "open-match-synchronizer"
        grpcport: "50506"
        httpport: "51506"
      swaggerui:
        hostname: "open-match-swaggerui"
        httpport: "51500"

      # Configurations for api.test and api.scale are used for testing.
      test:
        hostname: "open-match-test"
        grpcport: "50509"
        httpport: "51509"
      scale:
        httpport: "51509"

    redis:
      sentinelPort: 26379
      sentinelMaster: om-redis-master
      sentinelHostname: open-match-redis
      sentinelUsePassword: false
      usePassword: false
      passwordPath: /opt/bitnami/redis/secrets/redis-password
      pool:
        maxIdle: 200
        maxActive: 0
        idleTimeout: 0
        healthCheckTimeout: 300ms

    telemetry:
      reportingPeriod: "1m"
      traceSamplingFraction: "0.01"
      zpages:
        enable: "true"
      jaeger:
        enable: "true"
        agentEndpoint: "open-match-jaeger-agent:6831"
        collectorEndpoint: "http://open-match-jaeger-collector:14268/api/traces"
      prometheus:
        enable: "true"
        endpoint: "/metrics"
        serviceDiscovery: "true"
      stackdriverMetrics:
        enable: "false"
        gcpProjectId: "replace_with_your_project_id"
        prefix: "open_match"
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "10Gi"
  storageClassName:
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/alertmanager-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    component: "alertmanager"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-alertmanager
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: "2Gi"
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: "8Gi"
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
  name: open-match-grafana
  namespace: open-match
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/tests/test-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
  name: open-match-grafana-test
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/agent-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-match-jaeger-agent
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/instance: open-match
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: agent
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/cassandra-schema-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-match-jaeger-cassandra-schema
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/instance: open-match
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: cassandra-schema
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/collector-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-match-jaeger-collector
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/instance: open-match
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: collector
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/query-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-match-jaeger-query
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/instance: open-match
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: query
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/alertmanager-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    component: "alertmanager"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-alertmanager
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/kube-state-metrics-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    component: "kube-state-metrics"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-kube-state-metrics
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/node-exporter-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    component: "node-exporter"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-node-exporter
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/pushgateway-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    component: "pushgateway"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-pushgateway
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
---
# Source: open-match/charts/redis/templates/redis-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-match-redis
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    release: open-match
    heritage: Helm
---
# Source: open-match/templates/service-account.yaml
# Create a universal service account for open-match-core services.
apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-match-unprivileged-service
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    release: open-match
automountServiceAccountToken: true
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
  name: open-match-grafana-clusterrole
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["configmaps"]
  verbs: ["get", "watch", "list"]
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/kube-state-metrics-clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  labels:
    component: "kube-state-metrics"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-kube-state-metrics
rules:
  - apiGroups:
      - ""
    resources:
      - namespaces
      - nodes
      - persistentvolumeclaims
      - pods
      - services
      - resourcequotas
      - replicationcontrollers
      - limitranges
      - persistentvolumeclaims
      - persistentvolumes
      - endpoints
      - secrets
      - configmaps
    verbs:
      - list
      - watch
  - apiGroups:
      - extensions
    resources:
      - daemonsets
      - deployments
      - ingresses
      - replicasets
    verbs:
      - list
      - watch
  - apiGroups:
      - apps
    resources:
      - daemonsets
      - deployments
      - statefulsets
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - batch
    resources:
      - cronjobs
      - jobs
    verbs:
      - list
      - watch
  - apiGroups:
      - autoscaling
    resources:
      - horizontalpodautoscalers
    verbs:
      - list
      - watch
  - apiGroups:
      - policy
    resources:
      - poddisruptionbudgets
    verbs:
      - list
      - watch
  - apiGroups:
      - certificates.k8s.io
    resources:
      - certificatesigningrequests
    verbs:
      - list
      - watch
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
rules:
  - apiGroups:
      - ""
    resources:
      - nodes
      - nodes/proxy
      - services
      - endpoints
      - pods
      - ingresses
      - configmaps
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - "extensions"
    resources:
      - ingresses/status
      - ingresses
    verbs:
      - get
      - list
      - watch
  - nonResourceURLs:
      - "/metrics"
    verbs:
      - get
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: open-match-grafana-clusterrolebinding
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
subjects:
  - kind: ServiceAccount
    name: open-match-grafana
    namespace: open-match
roleRef:
  kind: ClusterRole
  name: open-match-grafana-clusterrole
  apiGroup: rbac.authorization.k8s.io
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/kube-state-metrics-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  labels:
    component: "kube-state-metrics"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-kube-state-metrics
subjects:
  - kind: ServiceAccount
    name: open-match-prometheus-kube-state-metrics
    namespace: open-match
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: open-match-prometheus-kube-state-metrics
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
subjects:
  - kind: ServiceAccount
    name: open-match-prometheus-server
    namespace: open-match
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: open-match-prometheus-server
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/role.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
rules:
- apiGroups:      ['extensions']
  resources:      ['podsecuritypolicies']
  verbs:          ['use']
  resourceNames:  [open-match-grafana]
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/tests/test-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: open-match-grafana-test
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
rules:
- apiGroups:      ['policy']
  resources:      ['podsecuritypolicies']
  verbs:          ['use']
  resourceNames:  [open-match-grafana-test]
---
# Source: open-match/templates/service-account.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: open-match-redis-role
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    release: open-match
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - open-match-redis-podsecuritypolicy
  verbs:
  - use
---
# Source: open-match/templates/service-account.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: open-match-service-role
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    release: open-match
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - open-match-core-podsecuritypolicy
  verbs:
  - use
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: open-match-grafana
subjects:
- kind: ServiceAccount
  name: open-match-grafana
  namespace: open-match
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/tests/test-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: open-match-grafana-test
  labels:
    app: grafana
    chart: grafana-3.5.7
    heritage: Helm
    release: open-match
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: open-match-grafana-test
subjects:
- kind: ServiceAccount
  name: open-match-grafana-test
  namespace: open-match
---
# Source: open-match/templates/service-account.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: open-match-redis-role-binding
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    release: open-match
subjects:
- kind: ServiceAccount
  name: open-match-redis
  namespace: open-match
roleRef:
  kind: Role
  name: open-match-redis-role
  apiGroup: rbac.authorization.k8s.io
---
# Source: open-match/templates/service-account.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: open-match-service-role-binding
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    release: open-match
subjects:
- kind: Group
  name: system:authenticated # All authenticated users
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: open-match-service-role
  apiGroup: rbac.authorization.k8s.io
---
# Source: open-match/charts/open-match-customize/templates/evaluator.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Ugly workaround to split out MMF and evaluator
# TODO: Reconsider helm chart structure and move things out after v0.8 release
kind: Service
apiVersion: v1
metadata:
  name: open-match-evaluator
  namespace: open-match
  annotations:
    chart: open-match-customize-0.0.0-dev
    heritage: Helm
  labels:
    app: open-match-customize
    component: evaluator
    release: open-match
spec:
  selector:
    app: open-match-customize
    component: evaluator
    release: open-match
  clusterIP: None
  type: ClusterIP
  ports:
  - name: grpc
    protocol: TCP
    port: 50508
  - name: http
    protocol: TCP
    port: 51508
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
spec:
  type: ClusterIP
  ports:
    - name: service
      port: 3000
      protocol: TCP
      targetPort: 3000

  selector:
    app: grafana
    release: open-match
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/charts/cassandra/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-cassandra
  labels:
    app: cassandra
    chart: cassandra-0.13.3
    release: open-match
    heritage: Helm
spec:
  clusterIP: None
  type: ClusterIP
  ports:
  - name: intra
    port: 7000
    targetPort: 7000
  - name: tls
    port: 7001
    targetPort: 7001
  - name: jmx
    port: 7199
    targetPort: 7199
  - name: cql
    port: 9042
    targetPort: 9042
  - name: thrift
    port: 9160
    targetPort: 9160
  selector:
    app: cassandra
    release: open-match
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/agent-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-jaeger-agent
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/instance: open-match
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: agent
spec:
  ports:
  - name: zipkin-compact
    port: 5775
    protocol: UDP
    targetPort: zipkin-compact
  - name: jaeger-compact
    port: 6831
    protocol: UDP
    targetPort: jaeger-compact
  - name: jaeger-binary
    port: 6832
    protocol: UDP
    targetPort: jaeger-binary
  - name: http
    port: 5778
    protocol: TCP
    targetPort: http
  type: ClusterIP
  selector:
    app.kubernetes.io/name: jaeger
    app.kubernetes.io/component: agent
    app.kubernetes.io/instance: open-match
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/collector-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-jaeger-collector
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/component: collector
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/instance: open-match
spec:
  ports:
  - name: grpc
    port: 14250
    protocol: TCP
    targetPort: grpc
  - name: tchannel
    port: 14267
    protocol: TCP
    targetPort: tchannel
  - name: http
    port: 14268
    protocol: TCP
    targetPort: http
  - name: zipkin
    port: 9411
    protocol: TCP
    targetPort: zipkin
  selector:
    app.kubernetes.io/name: jaeger
    app.kubernetes.io/component: collector
    app.kubernetes.io/instance: open-match
  type: ClusterIP
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/query-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-jaeger-query
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/component: query
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/instance: open-match
spec:
  ports:
  - name: query
    port: 80
    protocol: TCP
    targetPort: query
  selector:
    app.kubernetes.io/name: jaeger
    app.kubernetes.io/component: query
    app.kubernetes.io/instance: open-match
  type: ClusterIP
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/alertmanager-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    component: "alertmanager"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-alertmanager
spec:
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 9093
  selector:
    component: "alertmanager"
    app: prometheus
    release: open-match
  type: "ClusterIP"
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/kube-state-metrics-svc.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/scrape: "true"
  labels:
    component: "kube-state-metrics"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-kube-state-metrics
spec:
  clusterIP: None
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 8080
  selector:
    component: "kube-state-metrics"
    app: prometheus
    release: open-match
  type: "ClusterIP"
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/node-exporter-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/scrape: "true"
  labels:
    component: "node-exporter"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-node-exporter
spec:
  clusterIP: None
  ports:
    - name: metrics
      port: 9100
      protocol: TCP
      targetPort: 9100
  selector:
    component: "node-exporter"
    app: prometheus
    release: open-match
  type: "ClusterIP"
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/pushgateway-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/probe: pushgateway
  labels:
    component: "pushgateway"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-pushgateway
spec:
  ports:
    - name: http
      port: 9091
      protocol: TCP
      targetPort: 9091
  selector:
    component: "pushgateway"
    app: prometheus
    release: open-match
  type: "ClusterIP"
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
spec:
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 9090
  selector:
    component: "server"
    app: prometheus
    release: open-match
  type: "ClusterIP"
---
# Source: open-match/charts/redis/templates/headless-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-redis-headless
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    release: open-match
    heritage: Helm
spec:
  type: ClusterIP
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - name: redis
      port: 6379
      targetPort: redis
    - name: redis-sentinel
      port: 26379
      targetPort: redis-sentinel
  selector:
    app: redis
    release: open-match
---
# Source: open-match/charts/redis/templates/metrics-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-redis-metrics
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    release: open-match
    heritage: Helm
    app.kubernetes.io/component: "metrics"
spec:
  type: ClusterIP
  
  
  ports:
    - name: metrics
      port: 9121
      targetPort: metrics
  selector:
    app: redis
    release: open-match
---
# Source: open-match/charts/redis/templates/redis-with-sentinel-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: open-match-redis
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    release: open-match
    heritage: Helm
spec:
  type: ClusterIP
  
  ports:
    - name: redis
      port: 6379
      targetPort: redis
    - name: redis-sentinel
      port: 26379
      targetPort: redis-sentinel
  selector:
    app: redis
    release: open-match
---
# Source: open-match/templates/backend.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
kind: Service
apiVersion: v1
metadata:
  name: open-match-backend
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: backend
    release: open-match
spec:
  selector:
    app: open-match
    component: backend
    release: open-match
  clusterIP: None
  type: ClusterIP
  ports:
  - name: grpc
    protocol: TCP
    port: 50505
  - name: http
    protocol: TCP
    port: 51505
---
# Source: open-match/templates/frontend.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
kind: Service
apiVersion: v1
metadata:
  name: open-match-frontend
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: frontend
    release: open-match
spec:
  selector:
    app: open-match
    component: frontend
    release: open-match
  clusterIP: None
  type: ClusterIP
  ports:
  - name: grpc
    protocol: TCP
    port: 50504
  - name: http
    protocol: TCP
    port: 51504
---
# Source: open-match/templates/query.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
kind: Service
apiVersion: v1
metadata:
  name: open-match-query
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: query
    release: open-match
spec:
  selector:
    app: open-match
    component: query
    release: open-match
  clusterIP: None
  type: ClusterIP
  ports:
  - name: grpc
    protocol: TCP
    port: 50503
  - name: http
    protocol: TCP
    port: 51503
---
# Source: open-match/templates/swaggerui.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
kind: Service
apiVersion: v1
metadata:
  name: open-match-swaggerui
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: swaggerui
    release: open-match
spec:
  selector:
    app: open-match
    component: swaggerui
  type: ClusterIP
  ports:
  - name: http
    protocol: TCP
    port: 51500
---
# Source: open-match/templates/synchronizer.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
kind: Service
apiVersion: v1
metadata:
  name: open-match-synchronizer
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: synchronizer
    release: open-match
spec:
  selector:
    app: open-match
    component: synchronizer
    release: open-match
  type: ClusterIP
  ports:
  - name: grpc
    protocol: TCP
    port: 50506
  - name: http
    protocol: TCP
    port: 51506
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/agent-ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: open-match-jaeger-agent
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/instance: open-match
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: agent
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: jaeger
      app.kubernetes.io/instance: open-match
      app.kubernetes.io/component: agent
  template:
    metadata:
      labels:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/instance: open-match
        app.kubernetes.io/component: agent
    spec:
      dnsPolicy: ClusterFirst
      nodeSelector:
        {}
      serviceAccountName: open-match-jaeger-agent
      containers:
      - name: open-match-jaeger-agent
        image: jaegertracing/jaeger-agent:1.14.0
        imagePullPolicy: IfNotPresent
        env:
        - name: REPORTER_GRPC_HOST_PORT
          value: open-match-jaeger-collector:14250
        ports:
        - name: zipkin-compact
          containerPort: 5775
          protocol: UDP
        - name: jaeger-compact
          containerPort: 6831
          protocol: UDP
        - name: jaeger-binary
          containerPort: 6832
          protocol: UDP
        - name: http
          containerPort: 5778
          protocol: TCP
        - name: admin
          containerPort: 14271
          protocol: TCP
        livenessProbe:
          httpGet:
            path: /
            port: admin
        readinessProbe:
          httpGet:
            path: /
            port: admin
        resources:
          {}
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/node-exporter-daemonset.yaml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  labels:
    component: "node-exporter"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-node-exporter
spec:
  selector:
    matchLabels:
      component: "node-exporter"
      app: prometheus
      release: open-match
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        component: "node-exporter"
        app: prometheus
        release: open-match
        chart: prometheus-8.14.0
        heritage: Helm
    spec:
      serviceAccountName: open-match-prometheus-node-exporter
      containers:
        - name: prometheus-node-exporter
          image: "prom/node-exporter:v0.18.0"
          imagePullPolicy: "IfNotPresent"
          args:
            - --path.procfs=/host/proc
            - --path.sysfs=/host/sys
          ports:
            - name: metrics
              containerPort: 9100
              hostPort: 9100
          resources:
            {}
          volumeMounts:
            - name: proc
              mountPath: /host/proc
              readOnly:  true
            - name: sys
              mountPath: /host/sys
              readOnly: true
      hostNetwork: true
      hostPID: true
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: sys
          hostPath:
            path: /sys
---
# Source: open-match/charts/open-match-customize/templates/evaluator.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-evaluator
  namespace: open-match
  labels:
    app: open-match-customize
    component: evaluator
    release: open-match
spec:
  replicas: 3
  selector:
    matchLabels:
      app: open-match-customize
      component: evaluator
  template:
    metadata:
      namespace: open-match
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "51508"
        prometheus.io/path: /metrics
        chart: open-match-customize-0.0.0-dev
        heritage: Helm
      labels:
        app: open-match-customize
        component: evaluator
        release: open-match
    spec:
      
      volumes:
        
        - name: om-config-volume-override
          configMap:
            name: open-match-configmap-override
        - name: om-config-volume-default
          configMap:
            name: open-match-configmap-default
        
      serviceAccountName: open-match-unprivileged-service
      containers:
      - name: open-match-evaluator
        volumeMounts:
          
          - name: om-config-volume-override
            mountPath: /app/config/override
          - name: om-config-volume-default
            mountPath: /app/config/default
          
        image: "gcr.io/open-match-public-images/openmatch-default-evaluator:1.3.0-rc.1"
        ports:
        - name: grpc
          containerPort: 50508
        - name: http
          containerPort: 51508
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
---
# Source: open-match/charts/open-match-telemetry/charts/grafana/templates/deployment.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: open-match-grafana
  namespace: open-match
  labels:
    app: grafana
    chart: grafana-3.5.7
    release: open-match
    heritage: Helm
spec:
  replicas: 1
  selector:
    matchLabels:
      app: grafana
      release: open-match
  strategy:
    rollingUpdate: null
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: grafana
        release: open-match
      annotations:
        checksum/config: c794744f4811e6e0986629026e15d835e6ab602579bf43db3e7723207eb262b1
        checksum/dashboards-json-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
        checksum/sc-dashboard-provider-config: 785568d36ab4f4b04545986b68003b31fbaec50215f569a46ca5d462cf61bd8d
        checksum/secret: 402d070bd4b7eae24b3a5e634c5f010b45a59429c2a9e7a5aea61a6c0f5b325c
    spec:
      serviceAccountName: open-match-grafana
      securityContext:
        fsGroup: 472
        runAsUser: 472
      initContainers:
        - name: init-chown-data
          image: "busybox:1.30"
          imagePullPolicy: IfNotPresent
          securityContext:
            runAsUser: 0
          command: ["chown", "-R", "472:472", "/var/lib/grafana"]
          resources:
            {}
          volumeMounts:
            - name: storage
              mountPath: "/var/lib/grafana"
        - name: grafana-sc-datasources
          image: "kiwigrid/k8s-sidecar:0.0.16"
          imagePullPolicy: IfNotPresent
          env:
            - name: METHOD
              value: LIST
            - name: LABEL
              value: "grafana_datasource"
            - name: FOLDER
              value: "/etc/grafana/provisioning/datasources"
          resources:
            {}
          volumeMounts:
            - name: sc-datasources-volume
              mountPath: "/etc/grafana/provisioning/datasources"
      containers:
        - name: grafana-sc-dashboard
          image: "kiwigrid/k8s-sidecar:0.0.16"
          imagePullPolicy: IfNotPresent
          env:
            - name: LABEL
              value: "grafana_dashboard"
            - name: FOLDER
              value: "/tmp/dashboards"
          resources:
            {}
          volumeMounts:
            - name: sc-dashboard-volume
              mountPath: "/tmp/dashboards"
        - name: grafana
          image: "grafana/grafana:6.2.4"
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: config
              mountPath: "/etc/grafana/grafana.ini"
              subPath: grafana.ini
            - name: ldap
              mountPath: "/etc/grafana/ldap.toml"
              subPath: ldap.toml
            - name: storage
              mountPath: "/var/lib/grafana"
            - name: sc-dashboard-volume
              mountPath: "/tmp/dashboards"
            - name: sc-dashboard-provider
              mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml"
              subPath: provider.yaml
            - name: sc-datasources-volume
              mountPath: "/etc/grafana/provisioning/datasources"
          ports:
            - name: service
              containerPort: 3000
              protocol: TCP
            - name: grafana
              containerPort: 3000
              protocol: TCP
          env:
            - name: GF_SECURITY_ADMIN_USER
              valueFrom:
                secretKeyRef:
                  name: open-match-grafana
                  key: admin-user
            - name: GF_SECURITY_ADMIN_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: open-match-grafana
                  key: admin-password
            - name: GF_INSTALL_PLUGINS
              valueFrom:
                configMapKeyRef:
                  name: open-match-grafana
                  key: plugins
          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: open-match-grafana
        - name: ldap
          secret:
            secretName: open-match-grafana
            items:
              - key: ldap-toml
                path: ldap.toml
        - name: storage
          persistentVolumeClaim:
            claimName: open-match-grafana
        - name: sc-dashboard-volume
          emptyDir: {}
        - name: sc-dashboard-provider
          configMap:
            name: open-match-grafana-config-dashboards
        - name: sc-datasources-volume
          emptyDir: {}
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/collector-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-jaeger-collector
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/component: collector
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/instance: open-match
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: jaeger
      app.kubernetes.io/component: collector
      app.kubernetes.io/instance: open-match
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: collector
        app.kubernetes.io/instance: open-match
    spec:
      nodeSelector:
        {}
      serviceAccountName: open-match-jaeger-collector
      containers:
      - name: open-match-jaeger-collector
        image: jaegertracing/jaeger-collector:1.14.0
        imagePullPolicy: IfNotPresent
        env:
          - name: SPAN_STORAGE_TYPE
            value: cassandra
          - name: CASSANDRA_SERVERS
            value: open-match-cassandra
          - name: CASSANDRA_PORT
            value: "9042"
          - name: CASSANDRA_KEYSPACE
            value: "jaeger_v1_dc1"
          - name: CASSANDRA_USERNAME
            value: user
          - name: CASSANDRA_PASSWORD
            valueFrom:
              secretKeyRef:
                name: open-match-jaeger-cassandra
                key: password
        ports:
        - containerPort: 14250
          name: grpc
          protocol: TCP
        - containerPort: 14267
          name: tchannel
          protocol: TCP
        - containerPort: 14268
          name: http
          protocol: TCP
        - containerPort: 14269
          name: admin
          protocol: TCP
        - containerPort: 9411
          name: zipkin
          protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: admin
        livenessProbe:
          httpGet:
            path: /
            port: admin
        resources:
          {}
        volumeMounts:
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      volumes:
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/query-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-jaeger-query
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/component: query
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/instance: open-match
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: jaeger
      app.kubernetes.io/component: query
      app.kubernetes.io/instance: open-match
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app.kubernetes.io/name: jaeger
        app.kubernetes.io/component: query
        app.kubernetes.io/instance: open-match
    spec:
      nodeSelector:
        {}
      serviceAccountName: open-match-jaeger-query
      containers:
      - name: open-match-jaeger-query
        image: jaegertracing/jaeger-query:1.14.0
        imagePullPolicy: IfNotPresent
        env:
          - name: SPAN_STORAGE_TYPE
            value: cassandra
          - name: CASSANDRA_SERVERS
            value: open-match-cassandra
          - name: CASSANDRA_PORT
            value: "9042"
          - name: CASSANDRA_KEYSPACE
            value: "jaeger_v1_dc1"
          - name: CASSANDRA_USERNAME
            value: user
          - name: CASSANDRA_PASSWORD
            valueFrom:
              secretKeyRef:
                name: open-match-jaeger-cassandra
                key: password
          - name: QUERY_BASE_PATH
            value: 
        ports:
        - name: query
          containerPort: 16686
          protocol: TCP
        - name: admin
          containerPort: 16687
          protocol: TCP
        resources:
          {}
        volumeMounts:
        livenessProbe:
          httpGet:
            path: /
            port: admin
        readinessProbe:
          httpGet:
            path: /
            port: admin
      - name: open-match-jaeger-agent-sidecar
        image: jaegertracing/jaeger-agent:1.14.0
        imagePullPolicy: IfNotPresent
        env:
        - name: REPORTER_GRPC_HOST_PORT
          value: open-match-jaeger-collector:14250
        ports:
        - name: admin
          containerPort: 14271
          protocol: TCP
        livenessProbe:
          httpGet:
            path: /
            port: admin
        readinessProbe:
          httpGet:
            path: /
            port: admin
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      volumes:
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/alertmanager-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    component: "alertmanager"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-alertmanager
spec:
  selector:
    matchLabels:
      component: "alertmanager"
      app: prometheus
      release: open-match
  replicas: 1
  template:
    metadata:
      labels:
        component: "alertmanager"
        app: prometheus
        release: open-match
        chart: prometheus-8.14.0
        heritage: Helm
    spec:
      serviceAccountName: open-match-prometheus-alertmanager
      containers:
        - name: prometheus-alertmanager
          image: "prom/alertmanager:v0.17.0"
          imagePullPolicy: "IfNotPresent"
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.podIP
          args:
            - --config.file=/etc/config/alertmanager.yml
            - --storage.path=/data
            - --cluster.advertise-address=$(POD_IP):6783
            - --web.external-url=/

          ports:
            - containerPort: 9093
          readinessProbe:
            httpGet:
              path: /#/status
              port: 9093
            initialDelaySeconds: 30
            timeoutSeconds: 30
          resources:
            {}
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
            - name: storage-volume
              mountPath: "/data"
              subPath: ""

        - name: prometheus-alertmanager-configmap-reload
          image: "jimmidyson/configmap-reload:v0.2.2"
          imagePullPolicy: "IfNotPresent"
          args:
            - --volume-dir=/etc/config
            - --webhook-url=http://127.0.0.1:9093/-/reload
          resources:
            {}
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
              readOnly: true
      volumes:
        - name: config-volume
          configMap:
            name: open-match-prometheus-alertmanager
        - name: storage-volume
          persistentVolumeClaim:
            claimName: open-match-prometheus-alertmanager
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/kube-state-metrics-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    component: "kube-state-metrics"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-kube-state-metrics
spec:
  selector:
    matchLabels:
      component: "kube-state-metrics"
      app: prometheus
      release: open-match
  replicas: 1
  template:
    metadata:
      labels:
        component: "kube-state-metrics"
        app: prometheus
        release: open-match
        chart: prometheus-8.14.0
        heritage: Helm
    spec:
      serviceAccountName: open-match-prometheus-kube-state-metrics
      containers:
        - name: prometheus-kube-state-metrics
          image: "quay.io/coreos/kube-state-metrics:v1.6.0"
          imagePullPolicy: "IfNotPresent"
          ports:
            - name: metrics
              containerPort: 8080
          resources:
            {}
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/pushgateway-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    component: "pushgateway"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-pushgateway
spec:
  selector:
    matchLabels:
      component: "pushgateway"
      app: prometheus
      release: open-match
  replicas: 1
  template:
    metadata:
      labels:
        component: "pushgateway"
        app: prometheus
        release: open-match
        chart: prometheus-8.14.0
        heritage: Helm
    spec:
      serviceAccountName: open-match-prometheus-pushgateway
      containers:
        - name: prometheus-pushgateway
          image: "prom/pushgateway:v0.8.0"
          imagePullPolicy: "IfNotPresent"
          args:
          ports:
            - containerPort: 9091
          readinessProbe:
            httpGet:
              path: /#/status
              port: 9091
            initialDelaySeconds: 10
            timeoutSeconds: 10
          resources:
            {}
---
# Source: open-match/charts/open-match-telemetry/charts/prometheus/templates/server-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    component: "server"
    app: prometheus
    release: open-match
    chart: prometheus-8.14.0
    heritage: Helm
  name: open-match-prometheus-server
spec:
  selector:
    matchLabels:
      component: "server"
      app: prometheus
      release: open-match
  replicas: 1
  template:
    metadata:
      labels:
        component: "server"
        app: prometheus
        release: open-match
        chart: prometheus-8.14.0
        heritage: Helm
    spec:
      serviceAccountName: open-match-prometheus-server
      initContainers:
      - name: "init-chown-data"
        image: "busybox:latest"
        imagePullPolicy: "IfNotPresent"
        resources:
          {}
        # 65534 is the nobody user that prometheus uses.
        command: ["chown", "-R", "65534:65534", "/data"]
        volumeMounts:
        - name: storage-volume
          mountPath: /data
          subPath: ""
      containers:
        - name: prometheus-server-configmap-reload
          image: "jimmidyson/configmap-reload:v0.2.2"
          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.10.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: 30
            timeoutSeconds: 30
          livenessProbe:
            httpGet:
              path: /-/healthy
              port: 9090
            initialDelaySeconds: 30
            timeoutSeconds: 30
          resources:
            requests:
              cpu: 2
              memory: 4Gi
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
            - name: storage-volume
              mountPath: /data
              subPath: ""
      terminationGracePeriodSeconds: 300
      volumes:
        - name: config-volume
          configMap:
            name: open-match-prometheus-server
        - name: storage-volume
          persistentVolumeClaim:
            claimName: open-match-prometheus-server
---
# Source: open-match/templates/backend.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-backend
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: backend
    release: open-match
spec:
  replicas: 3
  selector:
    matchLabels:
      app: open-match
      component: backend
  template:
    metadata:
      namespace: open-match
      annotations:
        chart: open-match-1.3.0-rc.1
        heritage: Helm
        prometheus.io/scrape: "true"
        prometheus.io/port: "51505"
        prometheus.io/path: /metrics
      labels:
        app: open-match
        component: backend
        release: open-match
    spec:
      
      volumes:
        
        - name: om-config-volume-default
          configMap:
            name: open-match-configmap-default
        - name: om-config-volume-override
          configMap:
            name: open-match-configmap-override
        
        
      serviceAccountName: open-match-unprivileged-service
      containers:
      - name: open-match-backend
        volumeMounts:
          
          - name: om-config-volume-default
            mountPath: /app/config/default
          - name: om-config-volume-override
            mountPath: /app/config/override
          
          
        image: "gcr.io/open-match-public-images/openmatch-backend:1.3.0-rc.1"
        ports:
        - name: grpc
          containerPort: 50505
        - name: http
          containerPort: 51505
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz
            port: 51505
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz?readiness=true
            port: 51505
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 2
---
# Source: open-match/templates/frontend.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-frontend
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: frontend
    release: open-match
spec:
  replicas: 3
  selector:
    matchLabels:
      app: open-match
      component: frontend
  template:
    metadata:
      namespace: open-match
      annotations:
        chart: open-match-1.3.0-rc.1
        heritage: Helm
        prometheus.io/scrape: "true"
        prometheus.io/port: "51504"
        prometheus.io/path: /metrics
      labels:
        app: open-match
        component: frontend
        release: open-match
    spec:
      
      volumes:
        
        - name: om-config-volume-default
          configMap:
            name: open-match-configmap-default
        - name: om-config-volume-override
          configMap:
            name: open-match-configmap-override
        
        
      serviceAccountName: open-match-unprivileged-service
      containers:
      - name: open-match-frontend
        volumeMounts:
          
          - name: om-config-volume-default
            mountPath: /app/config/default
          - name: om-config-volume-override
            mountPath: /app/config/override
          
          
        image: "gcr.io/open-match-public-images/openmatch-frontend:1.3.0-rc.1"
        ports:
        - name: grpc
          containerPort: 50504
        - name: http
          containerPort: 51504
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz
            port: 51504
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz?readiness=true
            port: 51504
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 2
---
# Source: open-match/templates/query.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-query
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: query
    release: open-match
spec:
  replicas: 3
  selector:
    matchLabels:
      app: open-match
      component: query
  template:
    metadata:
      namespace: open-match
      annotations:
        chart: open-match-1.3.0-rc.1
        heritage: Helm
        prometheus.io/scrape: "true"
        prometheus.io/port: "51503"
        prometheus.io/path: /metrics
      labels:
        app: open-match
        component: query
        release: open-match
    spec:
      
      volumes:
        
        - name: om-config-volume-default
          configMap:
            name: open-match-configmap-default
        - name: om-config-volume-override
          configMap:
            name: open-match-configmap-override
        
        
      serviceAccountName: open-match-unprivileged-service
      containers:
      - name: open-match-query
        volumeMounts:
          
          - name: om-config-volume-default
            mountPath: /app/config/default
          - name: om-config-volume-override
            mountPath: /app/config/override
          
          
        image: "gcr.io/open-match-public-images/openmatch-query:1.3.0-rc.1"
        ports:
        - name: grpc
          containerPort: 50503
        - name: http
          containerPort: 51503
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz
            port: 51503
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz?readiness=true
            port: 51503
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 2
---
# Source: open-match/templates/swaggerui.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-swaggerui
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: swaggerui
    release: open-match
spec:
  replicas: 1
  selector:
    matchLabels:
      app: open-match
      component: swaggerui
  template:
    metadata:
      namespace: open-match
      annotations:
        chart: open-match-1.3.0-rc.1
        heritage: Helm
      labels:
        app: open-match
        component: swaggerui
        release: open-match
    spec:
      
      volumes:
        
        - name: om-config-volume-default
          configMap:
            name: open-match-configmap-default
        - name: om-config-volume-override
          configMap:
            name: open-match-configmap-override
        
      serviceAccountName: open-match-unprivileged-service
      containers:
      - name: open-match-swaggerui
        volumeMounts:
          
          - name: om-config-volume-default
            mountPath: /app/config/default
          - name: om-config-volume-override
            mountPath: /app/config/override
          
        image: "gcr.io/open-match-public-images/openmatch-swaggerui:1.3.0-rc.1"
        ports:
        - name: http
          containerPort: 51500
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz
            port: 51500
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz?readiness=true
            port: 51500
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 2
---
# Source: open-match/templates/synchronizer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-match-synchronizer
  namespace: open-match
  annotations:
    chart: open-match-1.3.0-rc.1
    heritage: Helm
  labels:
    app: open-match
    component: synchronizer
    release: open-match
spec:
  replicas: 1
  selector:
    matchLabels:
      app: open-match
      component: synchronizer
  template:
    metadata:
      namespace: open-match
      annotations:
        chart: open-match-1.3.0-rc.1
        heritage: Helm
        prometheus.io/scrape: "true"
        prometheus.io/port: "51506"
        prometheus.io/path: /metrics
      labels:
        app: open-match
        component: synchronizer
        release: open-match
    spec:
      
      volumes:
        
        - name: om-config-volume-default
          configMap:
            name: open-match-configmap-default
        - name: om-config-volume-override
          configMap:
            name: open-match-configmap-override
        
        
      serviceAccountName: open-match-unprivileged-service
      containers:
      - name: open-match-synchronizer
        volumeMounts:
          
          - name: om-config-volume-default
            mountPath: /app/config/default
          - name: om-config-volume-override
            mountPath: /app/config/override
          
          
        image: "gcr.io/open-match-public-images/openmatch-synchronizer:1.3.0-rc.1"
        ports:
        - name: grpc
          containerPort: 50506
        - name: http
          containerPort: 51506
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 100m
            memory: 100Mi
          requests:
            cpu: 100m
            memory: 100Mi
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz
            port: 51506
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /healthz?readiness=true
            port: 51506
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 2
---
# Source: open-match/charts/open-match-customize/templates/evaluator.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: open-match-evaluator
  namespace: open-match
  annotations:
    chart: open-match-customize-0.0.0-dev
    heritage: Helm
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: open-match-evaluator
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80
---
# Source: open-match/templates/backend.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: open-match-backend
  namespace: open-match
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: open-match-backend
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80
---
# Source: open-match/templates/frontend.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: open-match-frontend
  namespace: open-match
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: open-match-frontend
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80
---
# Source: open-match/templates/query.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: open-match-query
  namespace: open-match
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: open-match-query
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/charts/cassandra/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: open-match-cassandra
  labels:
    app: cassandra
    chart: cassandra-0.13.3
    release: open-match
    heritage: Helm
spec:
  selector:
    matchLabels:
      app: cassandra
      release: open-match
  serviceName: open-match-cassandra
  replicas: 2
  podManagementPolicy: OrderedReady
  updateStrategy:
    type: OnDelete
  template:
    metadata:
      labels:
        app: cassandra
        release: open-match
    spec:
      hostNetwork: false
      containers:
      - name: open-match-cassandra
        image: "cassandra:latest"
        imagePullPolicy: "IfNotPresent"
        resources:
          limits:
            cpu: 2
            memory: 4Gi
          requests:
            cpu: 2
            memory: 4Gi
        env:
        - name: CASSANDRA_SEEDS
          value: "open-match-cassandra-0.open-match-cassandra.open-match.svc.cluster.local"
        - name: MAX_HEAP_SIZE
          value: "2048M"
        - name: HEAP_NEWSIZE
          value: "512M"
        - name: CASSANDRA_ENDPOINT_SNITCH
          value: "GossipingPropertyFileSnitch"
        - name: CASSANDRA_CLUSTER_NAME
          value: "jaeger"
        - name: CASSANDRA_DC
          value: "dc1"
        - name: CASSANDRA_RACK
          value: "rack1"
        - name: CASSANDRA_START_RPC
          value: "false"
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        livenessProbe:
          exec:
            command: [ "/bin/sh", "-c", "nodetool status" ]
          initialDelaySeconds: 90
          periodSeconds: 30
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 3
        readinessProbe:
          exec:
            command: [ "/bin/sh", "-c", "nodetool status | grep -E \"^UN\\s+${POD_IP}\"" ]
          initialDelaySeconds: 90
          periodSeconds: 30
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 3
        ports:
        - name: intra
          containerPort: 7000
        - name: tls
          containerPort: 7001
        - name: jmx
          containerPort: 7199
        - name: cql
          containerPort: 9042
        - name: thrift
          containerPort: 9160
        volumeMounts:
        - name: data
          mountPath: /var/lib/cassandra
        lifecycle:
          preStop:
            exec:
              command: ["/bin/sh", "-c", "exec nodetool decommission"]
      terminationGracePeriodSeconds: 30
      volumes:
      - name: data
        emptyDir: {}
---
# Source: open-match/charts/redis/templates/redis-node-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: open-match-redis-node
  namespace: "open-match"
  labels:
    app: redis
    chart: redis-12.3.3
    release: open-match
    heritage: Helm
spec:
  replicas: 2
  serviceName: open-match-redis-headless
  selector:
    matchLabels:
      app: redis
      release: open-match
      role: node
  template:
    metadata:
      labels:
        app: redis
        release: open-match
        chart: redis-12.3.3
        role: node
      annotations:
        checksum/health: b62aeb1a757af78a16331fcd551c662651447ddc46bd18c4d527133916ab670b
        checksum/configmap: 4b70e5f6f3231e5c7c0afb6cded71bb82118e46983d5025537670017240018f4
        checksum/secret: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
        prometheus.io/port: "9121"
        prometheus.io/scrape: "true"
    spec:
      
      securityContext:
        fsGroup: 1001
      serviceAccountName: open-match-redis
      containers:
        - name: redis
          image: docker.io/bitnami/redis:6.0.9-debian-10-r66
          imagePullPolicy: "IfNotPresent"
          securityContext:
            runAsUser: 1001
          command:
            - /bin/bash
            - -c
            - /opt/bitnami/scripts/start-scripts/start-node.sh
          env:
            - name: REDIS_MASTER_PORT_NUMBER
              value: "6379"
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            - name: REDIS_TLS_ENABLED
              value: "no"
            - name: REDIS_PORT
              value: "6379"
            - name: REDIS_DATA_DIR
              value: /data
          ports:
            - name: redis
              containerPort: 6379
          livenessProbe:
            initialDelaySeconds: 30
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 5
            exec:
              command:
                - sh
                - -c
                - /health/ping_liveness_local.sh 5
          readinessProbe:
            initialDelaySeconds: 5
            periodSeconds: 10
            timeoutSeconds: 10
            successThreshold: 1
            failureThreshold: 5
            exec:
              command:
                - sh
                - -c
                - /health/ping_readiness_local.sh 5
          resources:
            null
          volumeMounts:
            - name: start-scripts
              mountPath: /opt/bitnami/scripts/start-scripts
            - name: health
              mountPath: /health
            - name: redis-data
              mountPath: /data
              subPath: 
            - name: config
              mountPath: /opt/bitnami/redis/mounted-etc
            - name: redis-tmp-conf
              mountPath: /opt/bitnami/redis/etc
        - name: sentinel
          image: docker.io/bitnami/redis-sentinel:6.0.9-debian-10-r66
          imagePullPolicy: "IfNotPresent"
          securityContext:
            runAsUser: 1001
          command:
            - /bin/bash
            - -c
            - /opt/bitnami/scripts/start-scripts/start-sentinel.sh
          env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            - name: REDIS_SENTINEL_TLS_ENABLED
              value: "no"
            - name: REDIS_SENTINEL_PORT
              value: "26379"
          ports:
            - name: redis-sentinel
              containerPort: 26379
          livenessProbe:
            initialDelaySeconds: 5
            periodSeconds: 5
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 5
            exec:
              command:
                - sh
                - -c
                - /health/ping_sentinel.sh 5
          readinessProbe:
            initialDelaySeconds: 5
            periodSeconds: 5
            timeoutSeconds: 1
            successThreshold: 1
            failureThreshold: 5
            exec:
              command:
                - sh
                - -c
                - /health/ping_sentinel.sh 5
          resources:
            null
          volumeMounts:
            - name: start-scripts
              mountPath: /opt/bitnami/scripts/start-scripts
            - name: health
              mountPath: /health
            - name: redis-data
              mountPath: /data
              subPath: 
            - name: config
              mountPath: /opt/bitnami/redis-sentinel/mounted-etc
            - name: sentinel-tmp-conf
              mountPath: /opt/bitnami/redis-sentinel/etc
        - name: metrics
          image: docker.io/bitnami/redis-exporter:1.15.0-debian-10-r8
          imagePullPolicy: "IfNotPresent"
          securityContext:
            runAsUser: 1001
          command:
            - /bin/bash
            - -c
            - |
              if [[ -f '/secrets/redis-password' ]]; then
              export REDIS_PASSWORD=$(cat /secrets/redis-password)
              fi
              redis_exporter
          env:
            - name: REDIS_ALIAS
              value: open-match-redis
          volumeMounts:
          ports:
            - name: metrics
              containerPort: 9121
          resources:
            null
      volumes:
        - name: start-scripts
          configMap:
            name: open-match-redis-scripts
            defaultMode: 0755
        - name: health
          configMap:
            name: open-match-redis-health
            defaultMode: 0755
        - name: config
          configMap:
            name: open-match-redis
        - name: host-sys
          hostPath:
            path: /sys
        - name: sentinel-tmp-conf
          emptyDir: {}
        - name: redis-tmp-conf
          emptyDir: {}
  volumeClaimTemplates:
    - metadata:
        name: redis-data
        labels:
          app: redis
          release: open-match
          heritage: Helm
          component: slave
      spec:
        accessModes:
          - "ReadWriteOnce"
        resources:
          requests:
            storage: "8Gi"
        
        selector:
  updateStrategy:
    type: RollingUpdate
---
# Source: open-match/charts/open-match-telemetry/charts/jaeger/templates/cassandra-schema-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: open-match-jaeger-cassandra-schema
  labels:
    app.kubernetes.io/name: jaeger
    helm.sh/chart: jaeger-0.13.3
    app.kubernetes.io/component: cassandra-schema
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/instance: open-match
spec:
  activeDeadlineSeconds: 200
  template:
    metadata:
      name: open-match-jaeger-cassandra-schema
    spec:
      serviceAccountName: open-match-jaeger-cassandra-schema
      containers:
      - name: open-match-jaeger-cassandra-schema
        image: jaegertracing/jaeger-cassandra-schema:1.14.0
        imagePullPolicy: Always
        env:
        - name: CQLSH_HOST
          value: open-match-cassandra
        - name: MODE
          value: "prod"
        - name: DATACENTER
          value: "dc1"
        - name: CASSANDRA_PORT
          value: "9042"
        - name: CASSANDRA_USERNAME
          value: user
        - name: CASSANDRA_PASSWORD
          valueFrom:
            secretKeyRef:
              name: open-match-jaeger-cassandra
              key: password
        resources:
          {}
      restartPolicy: OnFailure
---
# Source: open-match/charts/open-match-customize/templates/matchfunctions.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Ugly workaround to split out MMF and evaluator
# TODO: Reconsider helm chart structure and move things out after v0.8 release
---
# Source: open-match/templates/om-configmap-override.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Source: open-match/templates/tests/om-test-role-binding.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Source: open-match/templates/tests/om-test-role.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Source: open-match/templates/tests/om-test-service-account.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Source: open-match/templates/tests/om-test.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Source: open-match/templates/tls-secret.yaml
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
