Grafana dashboard: OpenNMS Outage Wallboard
Description: Information for about current alarms, outages, ​and affected business services from OpenNMS Horizon.

For users, until Horizon 21.1.0 these views need to be added manually into the database. If you have Horizon 24.0.0+ these views come preinstalled with the default database scheme.

* [node_alarms_view.sql](https://gist.github.com/indigo423/7926424df459cd3fa1ace504856567c8)
* [node_ip_services_view.sql](https://gist.github.com/indigo423/e327753c950e9a9a3097bc0ef0cbc4b3)
* [node_outages_view.sql](https://gist.github.com/indigo423/306758499244dbda0792998c339d0c38)
* [node_categories_view.sql](https://gist.github.com/indigo423/49301465e65367b2ac38b9b8fc21871c)

Details and discussions please in our [OpenNMS public wiki](https://wiki.opennms.org/wiki/Proposals/Outage_Visualization) or [Chat](https://chat.opennms.org/opennms-discuss)

Report source available in our [Grafana Dashboard GitHub Repository](https://github.com/opennms-forge/grafana-dashboards).

{
  "__inputs": [
    {
      "name": "DS_OPENNMS_PSQL",
      "label": "OpenNMS PSQL",
      "description": "",
      "type": "datasource",
      "pluginId": "postgres",
      "pluginName": "PostgreSQL"
    }
  ],
  "__requires": [
    {
      "type": "grafana",
      "id": "grafana",
      "name": "Grafana",
      "version": "5.3.1"
    },
    {
      "type": "datasource",
      "id": "postgres",
      "name": "PostgreSQL",
      "version": "5.0.0"
    },
    {
      "type": "panel",
      "id": "singlestat",
      "name": "Singlestat",
      "version": "5.0.0"
    },
    {
      "type": "panel",
      "id": "table",
      "name": "Table",
      "version": "5.0.0"
    },
    {
      "type": "panel",
      "id": "text",
      "name": "Text",
      "version": "5.0.0"
    }
  ],
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "description": "Information for about current alarms, outages, ​and affected business services from OpenNMS Horizon.",
  "editable": true,
  "gnetId": 5915,
  "graphTooltip": 0,
  "id": null,
  "iteration": 1540202573760,
  "links": [],
  "panels": [
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 0
      },
      "id": 37,
      "panels": [],
      "title": "Business Service Alarms",
      "type": "row"
    },
    {
      "cacheTimeout": null,
      "colorBackground": true,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "Outstanding alarms related to business services.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 0,
        "y": 1
      },
      "id": 30,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "count",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(*)\nFROM\n  alarms\nWHERE\n  alarms.eventuei = 'uei.opennms.org/bsm/serviceProblem' AND\n  alarms.alarmacktime isnull AND\n  alarms.logmsg not like '%resolved%'",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "",
      "type": "singlestat",
      "valueFontSize": "200%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "columns": [],
      "datasource": "${DS_OPENNMS_PSQL}",
      "fontSize": "120%",
      "gridPos": {
        "h": 5,
        "w": 20,
        "x": 4,
        "y": 1
      },
      "id": 39,
      "links": [],
      "pageSize": null,
      "scroll": true,
      "showHeader": true,
      "sort": {
        "col": 0,
        "desc": true
      },
      "styles": [
        {
          "alias": "Time",
          "dateFormat": "YYYY-MM-DD HH:mm:ss",
          "pattern": "Time",
          "type": "date"
        },
        {
          "alias": "Affected since last event time",
          "colorMode": null,
          "colors": [
            "rgba(245, 54, 54, 0.9)",
            "rgba(237, 129, 40, 0.89)",
            "rgba(50, 172, 45, 0.97)"
          ],
          "dateFormat": "YYYY-MM-DD HH:mm:ss",
          "decimals": 2,
          "pattern": "duration",
          "preserveFormat": false,
          "sanitize": false,
          "thresholds": [],
          "type": "string",
          "unit": "short"
        },
        {
          "alias": "Last Event Time",
          "colorMode": null,
          "colors": [
            "rgba(245, 54, 54, 0.9)",
            "rgba(237, 129, 40, 0.89)",
            "rgba(50, 172, 45, 0.97)"
          ],
          "dateFormat": "YYYY-MM-DD HH:mm:ss",
          "decimals": 2,
          "pattern": "lasteventtime",
          "thresholds": [],
          "type": "date",
          "unit": "short"
        },
        {
          "alias": "Business Service Name",
          "colorMode": null,
          "colors": [
            "rgba(245, 54, 54, 0.9)",
            "rgba(237, 129, 40, 0.89)",
            "rgba(50, 172, 45, 0.97)"
          ],
          "dateFormat": "YYYY-MM-DD HH:mm:ss",
          "decimals": 2,
          "pattern": "name",
          "sanitize": true,
          "thresholds": [],
          "type": "string",
          "unit": "short"
        },
        {
          "alias": "",
          "colorMode": null,
          "colors": [
            "rgba(245, 54, 54, 0.9)",
            "rgba(237, 129, 40, 0.89)",
            "rgba(50, 172, 45, 0.97)"
          ],
          "decimals": 2,
          "pattern": "/.*/",
          "thresholds": [],
          "type": "number",
          "unit": "short"
        }
      ],
      "targets": [
        {
          "alias": "",
          "filter": {
            "clauses": [
              {
                "operator": {
                  "id": 1,
                  "label": "AND"
                },
                "restriction": {
                  "attribute": "uei",
                  "comparator": {
                    "id": 1,
                    "label": "EQ"
                  },
                  "value": "uei.opennms.org/bsm/serviceProblem"
                }
              },
              {
                "operator": {
                  "id": 1,
                  "label": "AND"
                },
                "restriction": {
                  "attribute": "alarmAckTime",
                  "comparator": {
                    "id": 1,
                    "label": "EQ"
                  },
                  "value": "null"
                }
              }
            ],
            "limit": 0
          },
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  bsm_service.name,\n  bsmAlarm.lasteventtime,\n  EXTRACT(DAYS FROM age(now(), bsmAlarm.lasteventtime)) || 'd ' || EXTRACT(HOURS FROM age(now(), bsmAlarm.lasteventtime)) || 'h ' || EXTRACT(MINUTES FROM age(now(), bsmAlarm.lasteventtime)) || 'm ' || ROUND(EXTRACT(SECONDS FROM age(now(), bsmAlarm.lasteventtime))::NUMERIC,0) || 's' AS duration\nFROM\n  bsm_service\nJOIN\n  (SELECT\n    substring(reductionkey from '[0-9]+$')::INTEGER AS bsmId,\n    alarms.lasteventtime\n  FROM\n    alarms\n  WHERE\n    eventuei = 'uei.opennms.org/bsm/serviceProblem' and\n    alarms.logmsg not like '%resolved%') AS bsmAlarm\nON\n   bsmAlarm.bsmId = bsm_service.id\nORDER BY\n  bsmAlarm.lasteventtime DESC",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "title": "Business Service Alarms",
      "transform": "table",
      "transparent": true,
      "type": "table"
    },
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 6
      },
      "id": 35,
      "panels": [],
      "title": "Alarms Outstanding",
      "type": "row"
    },
    {
      "content": "<h3 style=\"text-align: center\">Nodes</h3>",
      "gridPos": {
        "h": 2,
        "w": 8,
        "x": 0,
        "y": 7
      },
      "id": 7,
      "links": [],
      "mode": "html",
      "title": "",
      "type": "text"
    },
    {
      "content": "<h3 style=\"text-align: center\">Interfaces</h3>",
      "gridPos": {
        "h": 2,
        "w": 8,
        "x": 8,
        "y": 7
      },
      "id": 10,
      "links": [],
      "mode": "html",
      "title": "",
      "transparent": true,
      "type": "text"
    },
    {
      "content": "<h3 style=\"text-align: center\">Services</h3>",
      "gridPos": {
        "h": 2,
        "w": 8,
        "x": 16,
        "y": 7
      },
      "id": 12,
      "links": [],
      "mode": "html",
      "title": "",
      "type": "text"
    },
    {
      "cacheTimeout": null,
      "colorBackground": true,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 3,
        "w": 8,
        "x": 0,
        "y": 9
      },
      "id": 25,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "count",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(current_node_alarms.nodeid)\nFROM\n  (SELECT\n    node_alarms.location,\n    node_alarms.nodeid,\n    node_alarms.lasteventtime,\n    $__timeTo() - node_alarms.firsteventtime AS duration_raw,\n    EXTRACT(DAYS FROM $__timeTo() - node_alarms.firsteventtime) || 'd ' || EXTRACT(HOURS FROM $__timeTo() - node_alarms.firsteventtime) || 'h ' || EXTRACT(MINUTES FROM $__timeTo() - node_alarms.firsteventtime) || 'm ' || ROUND(EXTRACT(SECONDS FROM $__timeTo() - node_alarms.firsteventtime)::NUMERIC,0) || 's' AS duration\n  FROM\n    node_alarms\n  WHERE\n    node_alarms.acknowledged = FALSE AND\n    node_alarms.eventuei like 'uei.opennms.org/nodes/nodeDown' AND\n    node_alarms.location IN ($location) AND\n    node_alarms.categoryname IN ($category) AND\n    node_alarms.max_alarm_severity_unack = '6'\n  GROUP BY\n    node_alarms.location,\n    node_alarms.nodelabel,\n    node_alarms.nodeid,\n    node_alarms.firsteventtime,\n    node_alarms.lasteventtime) AS current_node_alarms",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "",
      "type": "singlestat",
      "valueFontSize": "170%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": true,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 3,
        "w": 8,
        "x": 8,
        "y": 9
      },
      "id": 26,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "count",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(current_interface_alarms.nodeid)\nFROM\n  (SELECT\n    node_alarms.location,\n    node_alarms.nodelabel,\n    node_alarms.nodeid,\n    node_alarms.ipaddr,\n    node_alarms.lasteventtime,\n    $__timeTo() - node_alarms.firsteventtime AS duration_raw,\n    EXTRACT(DAYS FROM $__timeTo() - node_alarms.firsteventtime) || 'd ' || EXTRACT(HOURS FROM $__timeTo() - node_alarms.firsteventtime) || 'h ' || EXTRACT(MINUTES FROM $__timeTo() - node_alarms.firsteventtime) || 'm ' || ROUND(EXTRACT(SECONDS FROM $__timeTo() - node_alarms.firsteventtime)::NUMERIC,0) || 's' AS duration\n  FROM\n    node_alarms\n  WHERE\n    node_alarms.acknowledged = FALSE AND\n    node_alarms.eventuei like 'uei.opennms.org/nodes/interfaceDown' AND\n    node_alarms.location IN ($location) AND\n    node_alarms.categoryname IN ($category) AND\n    node_alarms.max_alarm_severity_unack = '5'\n  GROUP BY\n    node_alarms.location,\n    node_alarms.nodeid,\n    node_alarms.nodelabel,\n    node_alarms.ipaddr,\n    node_alarms.firsteventtime,\n    node_alarms.lasteventtime) AS current_interface_alarms\n",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "",
      "transparent": true,
      "type": "singlestat",
      "valueFontSize": "170%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": true,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 3,
        "w": 8,
        "x": 16,
        "y": 9
      },
      "id": 24,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "count",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(current_service_alarms.nodeid)\nFROM\n  (SELECT\n    node_alarms.location,\n    node_alarms.nodelabel,\n    node_alarms.nodeid,\n    node_alarms.ipaddr,\n    node_alarms.servicename,\n    node_alarms.lasteventtime,\n    $__timeTo() - node_alarms.firsteventtime AS duration_raw,\n    EXTRACT(DAYS FROM $__timeTo() - node_alarms.firsteventtime) || 'd ' || EXTRACT(HOURS FROM $__timeTo() - node_alarms.firsteventtime) || 'h ' || EXTRACT(MINUTES FROM $__timeTo() - node_alarms.firsteventtime) || 'm ' || ROUND(EXTRACT(SECONDS FROM $__timeTo() - node_alarms.firsteventtime)::NUMERIC,0) || 's' AS duration\n  FROM\n    node_alarms\n  WHERE\n    node_alarms.acknowledged = FALSE AND\n    node_alarms.eventuei like 'uei.opennms.org/nodes/nodeLostService' AND\n    node_alarms.location IN ($location) AND\n    node_alarms.categoryname IN ($category) AND\n    node_alarms.max_alarm_severity_unack = '5'\n  GROUP BY\n    node_alarms.location,\n    node_alarms.nodeid,\n    node_alarms.nodelabel,\n    node_alarms.ipaddr,\n    node_alarms.servicename,\n    node_alarms.firsteventtime,\n    node_alarms.lasteventtime) AS current_service_alarms",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "",
      "type": "singlestat",
      "valueFontSize": "170%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 12
      },
      "id": 22,
      "panels": [],
      "repeat": null,
      "title": "Outages Outstanding",
      "type": "row"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": true,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "Current outages affecting nodes in selected categories or locations.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 2,
        "x": 0,
        "y": 13
      },
      "id": 4,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "amount",
      "targets": [
        {
          "alias": "",
          "bucketAggs": [
            {
              "field": "timestamp",
              "id": "2",
              "settings": {
                "interval": "auto",
                "min_doc_count": 0,
                "trimEdges": 0
              },
              "type": "date_histogram"
            }
          ],
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "metrics": [
            {
              "field": "select field",
              "id": "1",
              "type": "count"
            }
          ],
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(DISTINCT(node_outages.nodeid)) AS amount\nFROM\n  node_outages\nWHERE\n  node_outages.resolved = 'FALSE' AND\n  node_outages.svclosteventuei = 'uei.opennms.org/nodes/nodeDown' AND\n  node_outages.location IN ($location) AND\n  node_outages.categoryname IN ($category)\n",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "timeField": "timestamp",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "Current",
      "type": "singlestat",
      "valueFontSize": "150%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": true,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "decimals": 1,
      "description": "Current outages affecting nodes in selected categories or locations in percent from the whole monitored inventory.",
      "format": "percent",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": true,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 4,
        "x": 2,
        "y": 13
      },
      "id": 9,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "percentage",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  CASE\n    WHEN\n      nodes_by_category.tally > 0 THEN\n        100.0/nodes_by_category.tally * node_outages_by_category.tally\n      ELSE\n        0.0\n    END AS percentage\nFROM\n  (SELECT\n    'nodes'::TEXT AS type,\n    0.0 AS tally) AS tmp\nLEFT JOIN\n  (SELECT\n    'nodes'::TEXT AS type,\n    COUNT(distinct(nodeid)) AS tally\n  FROM\n    node_outages\n  WHERE\n    node_outages.location IN ($location) AND\n    node_outages.categoryname IN ($category) AND\n    node_outages.resolved = FALSE AND\n    node_outages.svclosteventuei = 'uei.opennms.org/nodes/nodeDown') AS node_outages_by_category\nON\n  node_outages_by_category.type = tmp.type\nLEFT JOIN\n  (SELECT\n    'nodes'::TEXT as type,\n    COUNT(DISTINCT(nodeid)) AS tally\n   FROM\n     node_categories\n   WHERE\n     node_categories.location IN ($location) AND\n     node_categories.categoryname IN ($category)\n  ) AS nodes_by_category\nON\n  nodes_by_category.type = tmp.type\n",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "20,70",
      "title": "Percent",
      "type": "singlestat",
      "valueFontSize": "70%",
      "valueMaps": [
        {
          "op": "=",
          "text": "0",
          "value": ""
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "All active monitored nodes in inventory.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 2,
        "x": 6,
        "y": 13
      },
      "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,
      "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": false
      },
      "tableColumn": "count",
      "targets": [
        {
          "alias": "",
          "bucketAggs": [
            {
              "field": "timestamp",
              "id": "2",
              "settings": {
                "interval": "auto",
                "min_doc_count": 0,
                "trimEdges": 0
              },
              "type": "date_histogram"
            }
          ],
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "metrics": [
            {
              "field": "select field",
              "id": "1",
              "type": "count"
            }
          ],
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(DISTINCT node_categories.nodeid)\nFROM\n  node_categories\nWHERE\n  node_categories.location IN ($location) AND\n  node_categories.categoryname IN ($category)",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "timeField": "timestamp",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "",
      "title": "Total",
      "type": "singlestat",
      "valueFontSize": "150%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": true,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "Current outages affecting nodes in selected categories or locations.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 2,
        "x": 8,
        "y": 13
      },
      "id": 13,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "tally",
      "targets": [
        {
          "alias": "",
          "bucketAggs": [
            {
              "field": "timestamp",
              "id": "2",
              "settings": {
                "interval": "auto",
                "min_doc_count": 0,
                "trimEdges": 0
              },
              "type": "date_histogram"
            }
          ],
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "metrics": [
            {
              "field": "select field",
              "id": "1",
              "type": "count"
            }
          ],
          "rawQuery": true,
          "rawSql": "SELECT\n  'ipinterfaces' :: TEXT AS type,\n  COUNT(distinct (node_outages.nodeid)) AS tally\nFROM\n  node_outages\nJOIN\n  node_outage_status\nON\n  node_outages.nodeid = node_outage_status.nodeid\nWHERE\n  node_outages.categoryname IN ($category) AND\n  node_outages.location IN ($location) AND\n  node_outages.resolved = FALSE AND\n  node_outages.nodetype = 'A' AND\n  node_outage_status.max_outage_severity = '5' AND\n  node_outages.svclosteventuei = 'uei.opennms.org/nodes/interfaceDown'",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "timeField": "timestamp",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "Current",
      "transparent": true,
      "type": "singlestat",
      "valueFontSize": "150%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": true,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "Current outages affecting interfaces in selected categories or locations in percent from the whole monitored inventory.",
      "format": "percent",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": true,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 4,
        "x": 10,
        "y": 13
      },
      "id": 14,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "percentage",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  CASE\n    WHEN\n      ipinterfaces_by_category.tally > 0 THEN\n        100.0/ipinterfaces_by_category.tally * ipinterfaces_outages_by_category.tally\n      ELSE\n        0.0\n    END AS percentage\nFROM\n  (SELECT\n    'ipinterfaces'::TEXT AS type,\n    0.0 AS tally) AS tmp\nLEFT JOIN\n  (SELECT\n    'ipinterfaces'::TEXT AS type,\n    COUNT(distinct (node_outages.nodeid)) AS tally\n  FROM\n    node_outages\n  JOIN\n    node_outage_status\n  ON\n    node_outages.nodeid = node_outage_status.nodeid\n  WHERE\n    node_outages.categoryname IN ($category) AND\n    node_outages.location IN ($location) AND\n    node_outages.resolved = FALSE AND\n    node_outages.nodetype = 'A' AND\n    node_outage_status.max_outage_severity = '5' AND\n    node_outages.svclosteventuei = 'uei.opennms.org/nodes/interfaceDown') AS ipinterfaces_outages_by_category\nON\n  ipinterfaces_outages_by_category.type = tmp.type\nLEFT JOIN\n  (SELECT\n    'ipinterfaces'::TEXT AS type,\n    COUNT(DISTINCT(nis.ip_if_id)) AS tally\n  FROM\n    node_ip_services nis\n  WHERE\n    nis.if_svc_status = 'A' AND\n    nis.categoryname IN ($category)) AS ipinterfaces_by_category\nON\n  ipinterfaces_by_category.type = tmp.type\n",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "20,70",
      "title": "Percentage",
      "transparent": true,
      "type": "singlestat",
      "valueFontSize": "70%",
      "valueMaps": [
        {
          "op": "=",
          "text": "0",
          "value": ""
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "All active monitored IP interfaces in inventory.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 2,
        "x": 14,
        "y": 13
      },
      "id": 15,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "tally",
      "targets": [
        {
          "alias": "",
          "bucketAggs": [
            {
              "field": "timestamp",
              "id": "2",
              "settings": {
                "interval": "auto",
                "min_doc_count": 0,
                "trimEdges": 0
              },
              "type": "date_histogram"
            }
          ],
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "metrics": [
            {
              "field": "select field",
              "id": "1",
              "type": "count"
            }
          ],
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(DISTINCT(nis.ip_if_id)) AS tally\nFROM\n  node_ip_services nis\nWHERE\n  nis.if_svc_status = 'A' AND\n  nis.categoryname IN ($category) AND\n  nis.location IN ($location)",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "timeField": "timestamp",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "",
      "title": "Total",
      "transparent": true,
      "type": "singlestat",
      "valueFontSize": "150%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": true,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "Current outages affecting services in selected categories or locations.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 2,
        "x": 16,
        "y": 13
      },
      "id": 18,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "tally",
      "targets": [
        {
          "alias": "",
          "bucketAggs": [
            {
              "field": "timestamp",
              "id": "2",
              "settings": {
                "interval": "auto",
                "min_doc_count": 0,
                "trimEdges": 0
              },
              "type": "date_histogram"
            }
          ],
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "metrics": [
            {
              "field": "select field",
              "id": "1",
              "type": "count"
            }
          ],
          "rawQuery": true,
          "rawSql": "SELECT\n  'services' :: TEXT AS type,\n  COUNT(DISTINCT (servicename)) AS tally\nFROM\n  node_outages\n  JOIN\n  node_outage_status\n    ON\n      node_outages.nodeid = node_outage_status.nodeid\nWHERE\n  node_outages.categoryname IN ($category) AND\n  node_outages.location IN ($location) AND\n  node_outages.resolved = FALSE AND\n  node_outages.nodetype = 'A' AND\n  node_outage_status.max_outage_severity = '5' AND\n  node_outages.svclosteventuei = 'uei.opennms.org/nodes/nodeLostService'\n",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "timeField": "timestamp",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "1,1",
      "title": "Current",
      "type": "singlestat",
      "valueFontSize": "150%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": true,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "decimals": 1,
      "description": "Current outages affecting services in selected categories or locations in percent from the whole monitored inventory.",
      "format": "percent",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": true,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 4,
        "x": 18,
        "y": 13
      },
      "id": 16,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "percentage",
      "targets": [
        {
          "alias": "",
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "rawQuery": true,
          "rawSql": "SELECT\n  CASE\n    WHEN\n      services_by_category.tally > 0 THEN\n        100.0/services_by_category.tally * service_outages_by_category.tally\n      ELSE\n        0.0\n  END AS percentage\nFROM\n  (SELECT\n    'services'::TEXT AS type,\n    0.0 AS tally) AS tmp\nLEFT JOIN\n  (SELECT\n    'services'::TEXT AS type,\n    COUNT(DISTINCT(node_outages.serviceid)) AS tally\n  FROM\n    node_outages\n  JOIN\n    node_outage_status\n  ON\n    node_outages.nodeid = node_outage_status.nodeid\n  WHERE\n    node_outages.categoryname IN ($category) AND\n    node_outages.categoryname IN ($location) AND\n    node_outages.resolved = FALSE AND\n    node_outages.nodetype = 'A' AND\n    node_outage_status.max_outage_severity = '5' AND\n    node_outages.svclosteventuei = 'uei.opennms.org/nodes/nodeLostService') AS service_outages_by_category\nON\n  service_outages_by_category.type = tmp.type\nLEFT JOIN\n  (SELECT\n    'services'::TEXT as type,\n    COUNT(DISTINCT(node_ip_services.if_svc_id)) AS tally\n   FROM\n     node_ip_services\n   WHERE\n     node_ip_services.categoryname IN ($category) AND\n     node_ip_services.if_svc_status = 'A' ) AS services_by_category\nON\n  services_by_category.type = tmp.type\n",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "20,70",
      "title": "Percentage",
      "type": "singlestat",
      "valueFontSize": "70%",
      "valueMaps": [
        {
          "op": "=",
          "text": "0",
          "value": ""
        }
      ],
      "valueName": "avg"
    },
    {
      "cacheTimeout": null,
      "colorBackground": false,
      "colorValue": false,
      "colors": [
        "#299c46",
        "rgba(237, 129, 40, 0.89)",
        "#d44a3a"
      ],
      "datasource": "${DS_OPENNMS_PSQL}",
      "description": "All active monitored services in inventory.",
      "format": "none",
      "gauge": {
        "maxValue": 100,
        "minValue": 0,
        "show": false,
        "thresholdLabels": false,
        "thresholdMarkers": true
      },
      "gridPos": {
        "h": 6,
        "w": 2,
        "x": 22,
        "y": 13
      },
      "id": 17,
      "interval": null,
      "links": [],
      "mappingType": 1,
      "mappingTypes": [
        {
          "name": "value to text",
          "value": 1
        },
        {
          "name": "range to text",
          "value": 2
        }
      ],
      "maxDataPoints": 100,
      "nullPointMode": "connected",
      "nullText": null,
      "postfix": "",
      "postfixFontSize": "50%",
      "prefix": "",
      "prefixFontSize": "50%",
      "rangeMaps": [
        {
          "from": "null",
          "text": "N/A",
          "to": "null"
        }
      ],
      "sparkline": {
        "fillColor": "rgba(31, 118, 189, 0.18)",
        "full": false,
        "lineColor": "rgb(31, 120, 193)",
        "show": false
      },
      "tableColumn": "tally",
      "targets": [
        {
          "alias": "",
          "bucketAggs": [
            {
              "field": "timestamp",
              "id": "2",
              "settings": {
                "interval": "auto",
                "min_doc_count": 0,
                "trimEdges": 0
              },
              "type": "date_histogram"
            }
          ],
          "format": "table",
          "group": [],
          "metricColumn": "none",
          "metrics": [
            {
              "field": "select field",
              "id": "1",
              "type": "count"
            }
          ],
          "rawQuery": true,
          "rawSql": "SELECT\n  COUNT(DISTINCT(nis.if_svc_id)) AS tally\nFROM\n  node_ip_services nis\nWHERE\n  nis.if_svc_status = 'A' AND\n  nis.categoryname IN ($category) AND\n  nis.location IN ($location)",
          "refId": "A",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "column"
              }
            ]
          ],
          "timeColumn": "time",
          "timeField": "timestamp",
          "where": [
            {
              "name": "$__timeFilter",
              "params": [],
              "type": "macro"
            }
          ]
        }
      ],
      "thresholds": "",
      "title": "Total",
      "type": "singlestat",
      "valueFontSize": "150%",
      "valueMaps": [
        {
          "op": "=",
          "text": "N/A",
          "value": "null"
        }
      ],
      "valueName": "avg"
    }
  ],
  "refresh": "30s",
  "schemaVersion": 16,
  "style": "dark",
  "tags": [
    "opennms"
  ],
  "templating": {
    "list": [
      {
        "allValue": null,
        "current": {},
        "datasource": "${DS_OPENNMS_PSQL}",
        "hide": 0,
        "includeAll": true,
        "label": "Monitoring Location",
        "multi": true,
        "name": "location",
        "options": [],
        "query": "SELECT DISTINCT(n.location) FROM node n ORDER BY location ASC",
        "refresh": 2,
        "regex": "",
        "skipUrlSync": false,
        "sort": 0,
        "tagValuesQuery": "",
        "tags": [],
        "tagsQuery": "",
        "type": "query",
        "useTags": false
      },
      {
        "allValue": null,
        "current": {},
        "datasource": "${DS_OPENNMS_PSQL}",
        "hide": 0,
        "includeAll": true,
        "label": "Surveillance Category",
        "multi": true,
        "name": "category",
        "options": [],
        "query": "SELECT 'no category'::TEXT as categoryname UNION SELECT categoryname FROM categories ORDER BY categoryname",
        "refresh": 2,
        "regex": "",
        "skipUrlSync": false,
        "sort": 1,
        "tagValuesQuery": "",
        "tags": [],
        "tagsQuery": "",
        "type": "query",
        "useTags": false
      }
    ]
  },
  "time": {
    "from": "now-24h",
    "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": "OpenNMS Outage Wallboard",
  "uid": "277sSkGmz",
  "version": 6
}