{
  "tags": [],
  "title": "Redis Dashboard for Prometheus Redis Exporter (helm stable/redis-ha)",
  "widgets": [
    {
      "layout": {
        "x": 0,
        "y": 0,
        "width": 1,
        "height": 2
      },
      "definition": {
        "type": "query_value",
        "title": "Uptime",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "max:redis_uptime_in_seconds{$instance}.rollup(max, 300)",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "s"
      }
    },
    {
      "layout": {
        "x": 1,
        "y": 0,
        "width": 1,
        "height": 2
      },
      "definition": {
        "type": "query_value",
        "title": "Clients",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "avg:redis.net.clients{$instance}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "query1"
              }
            ],
            "response_format": "scalar"
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center"
      }
    },
    {
      "layout": {
        "x": 2,
        "y": 0,
        "width": 2,
        "height": 2
      },
      "definition": {
        "type": "query_value",
        "title": "Memory Usage",
        "requests": [
          {
            "queries": [
              {
                "name": "query1",
                "query": "avg:redis.mem.used{$instance}",
                "aggregator": "last",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "avg:redis.mem.maxmemory{$instance}",
                "aggregator": "last",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "100 * (query1 / query2)"
              }
            ],
            "response_format": "scalar",
            "conditional_formats": [
              {
                "value": 80,
                "palette": "white_on_gray",
                "comparator": ">="
              },
              {
                "value": 95,
                "palette": "white_on_gray",
                "comparator": ">="
              }
            ]
          }
        ],
        "autoscale": true,
        "precision": 2,
        "text_align": "center",
        "custom_unit": "%"
      }
    },
    {
      "layout": {
        "x": 4,
        "y": 0,
        "width": 4,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Commands Executed / sec",
        "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:redis.net.commands{$instance}",
                "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": 8,
        "y": 0,
        "width": 4,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Hits / Misses per Sec",
        "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:redis.stats.keyspace_hits{$instance}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "avg:redis.stats.keyspace_misses{$instance}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "hits",
                "formula": "query1"
              },
              {
                "alias": "misses",
                "formula": "query2"
              }
            ],
            "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": "Total Memory 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:redis.mem.used{$instance}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "avg:redis.mem.maxmemory{$instance}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "used",
                "formula": "query1"
              },
              {
                "alias": "max",
                "formula": "query2"
              }
            ],
            "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": "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": "avg:redis_net_input_bytes.count{$instance}.as_rate()",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "avg:redis_net_output_bytes.count{$instance}.as_rate()",
                "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"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 4,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Total Items per DB",
        "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:redis.keys{$instance} by {redis_db}",
                "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": 4,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Expiring vs Not-Expiring Keys",
        "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:redis.keys{$instance}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:redis.expires{$instance}",
                "data_source": "metrics"
              },
              {
                "name": "query3",
                "query": "sum:redis.expires{$instance}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "not expiring",
                "formula": "query1 - query2"
              },
              {
                "alias": "expiring",
                "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": 6,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Expired / Evicted",
        "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:redis.keys.expired{$instance} by {host}",
                "data_source": "metrics"
              },
              {
                "name": "query2",
                "query": "sum:redis.keys.evicted{$instance} by {host}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "alias": "expired",
                "formula": "query1"
              },
              {
                "alias": "evicted",
                "formula": "query2"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 6,
        "y": 6,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Command Calls / sec",
        "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:redis.command.calls{$instance} by {command}",
                "data_source": "metrics"
              }
            ],
            "formulas": [
              {
                "formula": "top(query1, 5, 'mean', 'desc')"
              }
            ],
            "display_type": "area",
            "response_format": "timeseries"
          }
        ],
        "show_legend": true,
        "legend_layout": "auto",
        "legend_columns": [
          "avg",
          "min",
          "max",
          "value",
          "sum"
        ]
      }
    },
    {
      "layout": {
        "x": 0,
        "y": 8,
        "width": 6,
        "height": 2
      },
      "definition": {
        "type": "timeseries",
        "title": "Redis connected clients",
        "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:redis.net.clients{$instance}",
                "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"
        ]
      }
    }
  ],
  "description": "Converted from Grafana dashboard https://grafana.com/grafana/dashboards/11835 (by 2C2R). Redis Dashboard for Prometheus Redis Exporter 1.x, it works with helm stable/redis-ha exporter.\r\n\r\nIf you missing redis memory utilization, please modify \"maxmemory\" value in values.yaml",
  "layout_type": "ordered",
  "reflow_type": "fixed",
  "template_variables": [
    {
      "name": "namespace",
      "prefix": "namespace",
      "default": "*",
      "available_values": []
    },
    {
      "name": "pod_name",
      "prefix": "pod",
      "default": "*",
      "available_values": []
    },
    {
      "name": "instance",
      "prefix": "host",
      "default": "*",
      "available_values": []
    }
  ]
}