{
  "tags": [],
  "title": "Kubernetes apiserver",
  "widgets": [
    {
      "layout": {
        "x": 0,
        "y": 0,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "apiserver request rate",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": true
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "sum:kube_apiserver.apiserver_request_total.count{*} by {verb}.as_rate()",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 6,
        "y": 0,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "workqueue service time",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": true
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "p95:workqueue_queue_duration_seconds{*}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "p90:workqueue_queue_duration_seconds{*}",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "p50:workqueue_queue_duration_seconds{*}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "p95",
                "formula": "query1"
              },
              {
                "alias": "p90",
                "formula": "query2"
              },
              {
                "alias": "p50",
                "formula": "query3"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 2,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "apiserver request latency",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": true
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "p95:kube_apiserver.apiserver_request_duration_seconds{verb NOT IN (connect,watch)}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "p90:kube_apiserver.apiserver_request_duration_seconds{verb NOT IN (connect,watch)}",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "p50:kube_apiserver.apiserver_request_duration_seconds{verb NOT IN (connect,watch)}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "p95",
                "formula": "query1"
              },
              {
                "alias": "p90",
                "formula": "query2"
              },
              {
                "alias": "p50 ",
                "formula": "query3"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 6,
        "y": 2,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "workqueue processing time",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": true
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "p95:workqueue_work_duration_seconds{*}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "p90:workqueue_work_duration_seconds{*}",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "p50:workqueue_work_duration_seconds{*}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "p95",
                "formula": "query1"
              },
              {
                "alias": "p90",
                "formula": "query2"
              },
              {
                "alias": "p50",
                "formula": "query3"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 4,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "etcd request latency",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": true
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "p95:etcd_request_duration_seconds{*}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "p90:etcd_request_duration_seconds{*}",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "p50:etcd_request_duration_seconds{*}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "p95",
                "formula": "query1"
              },
              {
                "alias": "p90",
                "formula": "query2"
              },
              {
                "alias": "p50",
                "formula": "query3"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 6,
        "y": 4,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "etcd helper cache hit ratio",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": true
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "sum:etcd_helper_cache_hit.count{*}.as_rate()",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:etcd_helper_cache_miss.count{*}.as_rate()",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "ratio",
                "formula": "(query1 / (query1 + query2)) * 100"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    }
  ],
  "description": "Converted from Grafana dashboard https://grafana.com/grafana/dashboards/12006 (by otterley). Latency and cache hit graphs for Kubernetes apiserver.  Useful for observing performance of Amazon EKS clusters.",
  "layout_type": "ordered",
  "reflow_type": "fixed",
  "template_variables": []
}