{
  "tags": [],
  "title": "1. Kubernetes Deployment Statefulset Daemonset metrics",
  "widgets": [
    {
      "layout": {
        "x": 0,
        "y": 0,
        "width": 4,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Deployment memory usage",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes.memory.working_set{$Node,pod_name:*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes_state.node.memory_allocatable{host:$Node.value*}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1 / query2 * 100"
              }
            ],
            "response_format": "scalar",
            "conditional_formats": [
              {
                "value": 65,
                "palette": "white_on_gray",
                "comparator": ">="
              },
              {
                "value": 90,
                "palette": "white_on_gray",
                "comparator": ">="
              }
            ]
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "%"
      }
    },
    {
      "layout": {
        "x": 4,
        "y": 0,
        "width": 4,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Deployment CPU usage",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes.cpu.usage.total{$Node}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:system.cpu.num_cores{$Node}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "(query1 / 1000000000) / query2 * 100"
              }
            ],
            "response_format": "scalar",
            "conditional_formats": [
              {
                "value": 65,
                "palette": "white_on_gray",
                "comparator": ">="
              },
              {
                "value": 90,
                "palette": "white_on_gray",
                "comparator": ">="
              }
            ]
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "%"
      }
    },
    {
      "layout": {
        "x": 8,
        "y": 0,
        "width": 4,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Unavailable Replicas",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes_state.deployment.replicas{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes_state.statefulset.replicas_desired{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "sum:kubernetes_state.daemonset.desired{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query4",
                "query": "sum:kubernetes_state.deployment.replicas_available{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query5",
                "query": "sum:kubernetes_state.statefulset.replicas{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query6",
                "query": "sum:kubernetes_state.daemonset.ready{*}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "((default_zero(query1)+default_zero(query2)+default_zero(query3)) - (default_zero(query4)+default_zero(query5)+default_zero(query6))) / (default_zero(query1)+default_zero(query2)+default_zero(query3)) * 100"
              }
            ],
            "response_format": "scalar",
            "conditional_formats": [
              {
                "value": 1,
                "palette": "white_on_gray",
                "comparator": ">="
              },
              {
                "value": 30,
                "palette": "white_on_gray",
                "comparator": ">="
              }
            ]
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "%"
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 1,
        "width": 2,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Used",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes.memory.working_set{$Node,pod_name:*}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "B"
      }
    },
    {
      "layout": {
        "x": 2,
        "y": 1,
        "width": 2,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Total",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes_state.node.memory_allocatable{host:$Node.value*}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "B"
      }
    },
    {
      "layout": {
        "x": 4,
        "y": 1,
        "width": 2,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Used",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes.cpu.usage.total{$Node}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1 / 1000000000"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center"
      }
    },
    {
      "layout": {
        "x": 6,
        "y": 1,
        "width": 2,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Total",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes_state.node.cpu_capacity{$Node}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center"
      }
    },
    {
      "layout": {
        "x": 8,
        "y": 1,
        "width": 2,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Available (cluster)",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes_state.deployment.replicas_available{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes_state.statefulset.replicas{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "sum:kubernetes_state.daemonset.ready{*}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "default_zero(query1)+default_zero(query2)+default_zero(query3)"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center"
      }
    },
    {
      "layout": {
        "x": 10,
        "y": 1,
        "width": 2,
        "height": 1
      },
      "definition": {
        "type": "query_value",
        "title": "Total (cluster)",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes_state.deployment.replicas{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes_state.statefulset.replicas_desired{*}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "sum:kubernetes_state.daemonset.desired{*}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "default_zero(query1)+default_zero(query2)+default_zero(query3)"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center"
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 2,
        "width": 12,
        "height": 3
      },
      "definition": {
        "type": "timeseries",
        "title": "CPU usage",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": false
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes.cpu.usage.total{$Node,!kube_container_name:pod} by {pod_name,host}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes_state.container.cpu_requested{host:$Node.value} by {pod_name,host}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1 / 1000000000"
              },
              {
                "formula": "query2"
              }
            ],
            "display_type": "line",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 5,
        "width": 12,
        "height": 3
      },
      "definition": {
        "type": "timeseries",
        "title": "Memory usage",
        "yaxis": {
          "max": "auto",
          "min": "auto",
          "label": "",
          "scale": "linear",
          "include_zero": false
        },
        "requests": [
          {
            "style": {
              "palette": "dog_classic",
              "line_type": "solid",
              "line_width": "normal"
            },
            "queries": [
              {
                "name": "query1",
                "query": "sum:kubernetes.memory.working_set{$Node} by {pod_name,host}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes_state.container.memory_requested{host:$Node.value} by {pod_name,host}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              },
              {
                "formula": "query2"
              }
            ],
            "display_type": "line",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 8,
        "width": 12,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Disk Usage",
        "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": "avg:kubernetes.kubelet.volume.stats.used_bytes{$Node} by {persistentvolumeclaim,host}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "avg:kubernetes.kubelet.volume.stats.capacity_bytes{$Node} by {persistentvolumeclaim,host}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "100 * (query1 / query2)"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 10,
        "width": 12,
        "height": 3
      },
      "definition": {
        "type": "timeseries",
        "title": "All processes network I/O",
        "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:kubernetes.network.rx_bytes{$Node} by {pod_name,host}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:kubernetes.network.tx_bytes{$Node} by {pod_name,host}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              },
              {
                "formula": "-query2"
              }
            ],
            "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/8588 (by prat0318). Monitors Kubernetes deployments in cluster using Prometheus. Shows overall cluster CPU / Memory of deployments, replicas in each deployment. Uses Kube state metrics and cAdvisor metrics (741)",
  "layout_type": "ordered",
  "reflow_type": "fixed",
  "template_variables": [
    {
      "name": "Deployment",
      "prefix": "deployment",
      "default": "*",
      "available_values": []
    },
    {
      "name": "Statefulset",
      "prefix": "statefulset",
      "default": "*",
      "available_values": []
    },
    {
      "name": "Daemonset",
      "prefix": "daemonset",
      "default": "*",
      "available_values": []
    },
    {
      "name": "Node",
      "prefix": "host",
      "default": "*",
      "available_values": []
    }
  ]
}