Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Step1: Database Backup

...

Step1: Database Backup

...

Note

Recommended to migrate in Test instance initially

Expand
titleWindows
  • Stop the previous version of Grafana running on the instance and change the start type as Manual

  • Follow the below steps to backup existing database

    • Navigate to <postgres_installation_path>/bin

    • Backup DB by executing the command pg_dump --username=username --password=password grafana > grafana_backup

Info

To Restore Database - psql grafana < grafana_backup

  • Stop the previous version of Grafana running on the instance

  • Follow the below steps to backup existing database

  • Navigate to <postgres_installation_path>/bin

  • Backup DB by executing the command pg_dump
    Expand
    titleWindowsLinux
    • Stop the previous version of Grafana running on the instance and change the start type as Manual

    • Follow the below steps to backup existing database

      • Navigate to <postgres_installation_path>/bin

      • Backup DB by executing the command pg_dump --username=username --password=password grafana > grafana_backup

    Info

    To Restore Database - psql grafana < grafana_backup

    Expand
    titleLinux

    DB Restore

    ...

    Drop all schema

    Login to postgres DB and execute below commands

    1. psql -U grafana

    2. \c grafana

    3. DROP SCHEMA public cascade;

    4. CREATE SCHEMA public;

    Restore the default grants

    To restore defaults grant execute the below commands

    1. GRANT ALL ON SCHEMA public TO postgres;

    2. GRANT ALL ON SCHEMA public TO public;

    Restore DB

    To restore Db execute the below command

    1. psql --username=username --

    ...

    1. password  grafana < grafana_backup

    Step2: Manual Backup of Dashboards

    ...

    Using the “share dashboard” option from the dashboard menu, export all dashboards from each and very Org as a JSON file and save it to a physical location

    Step3: Grafana default settings

    ...

    Use the Grafana default settings bundled in Grafana 7.1.0 by Insights team, or make all necessary configuration changes in conf/defaults.ini as per preference.

    Step4 : Start Grafana

    ...

    Expand
    titleWindows

    Run ./Grafana7.sh start to start Grafana(Usage - Grafana7.sh {start|stop|restart|status}).

    Expand
    titleLinux

    Run grafana-server.exe file from the bin folder of Grafana or run Grafana7-Tomcat-SetUp.bat and Grafana-Tomcat-StartUp.bat create it as a windows service as per convenience.

    Step5: Grafana DataSource Renaming

    ...

    Rename the existing Grafana Neo4j DataSources in all Org(For example Neo4jLocal to Neo4jLocal_old) and create a new DataSources using latest DataSource plugin Neo4j3.0

    Expand
    titleInsights Neo4j DataSource

    Insights now has two Neo4j DataSource plugin

    • Neo4j2.0 - Typescript and Angular.js based.

    • Neo4j3.0 - Using React Framework with Grafana in-built plugin framework

    Note

    Neo4j2.0 is deprecated in Grafana 7.1.0 so it is recommended to add new DataSources using the Latest DataSource plugin Neo4j3.0

    • Both these data source will work fine until Grafana 7.0.3 but any feature improvements will be added only to Neo4j3.0, since Grafana moved its source code to support react . So it is recommended to use the latest DataSource plugin Neo4j3.0 for Grafana Migration.
    Info

    For a successful migration ensure to rename the existing DataSources and create new DataSources using lastest DataSource plugin Neo4j3.0, before starting the Dashboard Migration

    Expand
    titleInference DataSource

    The old Inference DataSource has been deprecated, for Grafana 7.0.3 and above use Inference_DS3.0 and inference-plugin

    Enter the Http url : http://localhost:8080/PlatformService/datasource/inference/data/v7

    Image RemovedImage Added

    Step6: Compatiable changes for Grafana 7.1.0

    ...

    Convert the dashboard json that has been exported from Step2 into a compatible format for Grafana 7 using the below steps

    Expand
    titleDashboard Migration
    Note

    Before importing the dashboards into Grafana delete the existing dashboards to avoid error “A dashboard in this folder with the same name already exists”

    Grafana dashboards are backward compatible which can be exported from previous version of Grafana and imported into Grafana 7.1.0 by doing the following changes in the exported json file

    Info

    There are two data formats in Grafana 7.1.0 Table and Graph(timeseries). Either of one should be selected in the datasource while querying, based on the panel preference

    • Export Dashboards as json file from the previous Grafana version

    • change the following fields inside targets array of exported json file as below and the same is depicted as table comparisons higlighting differences

      • target” to “queryText

      • rawQuery” to “table

      • “hide”: true to “hide”: false

    Note

    Make sure that "hide": true inside annotations element is not changedto false

    Exported Dashboard json file(previous Grafana Version)

    Compatible changes for Grafana 7.1.0

    {
    "annotations": {
    "list": [
    {
    "builtIn": 1,
    "datasource": "-- Grafana --",
    "enable": true,
    "hide": true,
    "iconColor": "rgba(0, 211, 255, 1)",
    "name": "Annotations & Alerts",
    "type": "dashboard"
    }
    ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "id": 371,
    "links": [],
    "panels": [
    {
    "cacheTimeout": null,
    "colorBackground": false,
    "colorValue": false,
    "colors": [
    "#299c46",
    "rgba(237, 129, 40, 0.89)",
    "#d44a3a"
    ],
    "datasource": "Neo4j_Local",
    "format": "none",
    "gauge": {
    "maxValue": 100,
    "minValue": 0,
    "show": false,
    "thresholdLabels": false,
    "thresholdMarkers": true
    },
    "gridPos": {
    "h": 9,
    "w": 12,
    "x": 0,
    "y": 0
    },
    "id": 2,
    "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": "",
    "targets": [
    {
    "checkQuery": false,
    "hide": true,
    "refId": "A",
    "rawQuery": true,
    "target": "MATCH (n:ALM) RETURN count(n)",
    "timeSeries": true
    }
    ],
    "thresholds": "",
    "timeFrom": null,
    "timeShift": null,
    "title": "Panel Title",
    "type": "singlestat",
    "valueFontSize": "80%",
    "valueMaps": [
    {
    "op": "=",
    "text": "N/A",
    "value": "null"
    }
    ],
    "valueName": "avg"
    }
    ],
    "schemaVersion": 18,
    "style": "dark",
    "tags": [],
    "templating": {
    "list": []
    },
    "time": {
    "from": "now-6h",
    "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": "New dashboard Copy",
    "uid": "q2Sdbc7Mz",
    "version": 4

    }

    {
    "annotations": {
    "list": [
    {
    "builtIn": 1,
    "datasource": "-- Grafana --",
    "enable": true,
    "hide": true,
    "iconColor": "rgba(0, 211, 255, 1)",
    "name": "Annotations & Alerts",
    "type": "dashboard"
    }
    ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "id": 371,
    "links": [],
    "panels": [
    {
    "cacheTimeout": null,
    "colorBackground": false,
    "colorValue": false,
    "colors": [
    "#299c46",
    "rgba(237, 129, 40, 0.89)",
    "#d44a3a"
    ],
    "datasource": "Neo4j_Local",
    "format": "none",
    "gauge": {
    "maxValue": 100,
    "minValue": 0,
    "show": false,
    "thresholdLabels": false,
    "thresholdMarkers": true
    },
    "gridPos": {
    "h": 9,
    "w": 12,
    "x": 0,
    "y": 0
    },
    "id": 2,
    "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": "",
    "targets": [
    {
    "checkQuery": false,
    "hide": false,
    "refId": "A",
    "table": true,
    "queryText": "MATCH (n:ALM) RETURN count(n)",
    "timeSeries": true
    }
    ],
    "thresholds": "",
    "timeFrom": null,
    "timeShift": null,
    "title": "Panel Title",
    "type": "singlestat",
    "valueFontSize": "80%",
    "valueMaps": [
    {
    "op": "=",
    "text": "N/A",
    "value": "null"
    }
    ],
    "valueName": "avg"
    }
    ],
    "schemaVersion": 18,
    "style": "dark",
    "tags": [],
    "templating": {
    "list": []
    },
    "time": {
    "from": "now-6h",
    "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": "New dashboard Copy",
    "uid": "q2Sdbc7Mz",
    "version": 4

    }

    If the panel is a graph panel then mark table as false and mark graph as true

    • “table: false,
      ”graph”: true,

    Exported Dashboard json file

    Compatible changes for Grafana 7.1.0

    {
    "annotations": {
    "list": [
    {
    "builtIn": 1,
    "datasource": "-- Grafana --",
    "enable": true,
    "hide": true,
    "iconColor": "rgba(0, 211, 255, 1)",
    "name": "Annotations & Alerts",
    "type": "dashboard"
    }
    ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "id": 316,
    "links": [],
    "panels": [
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "datasource": "Neo4j_Local",
    "fill": 1,
    "gridPos": {
    "h": 12,
    "w": 12,
    "x": 0,
    "y": 0
    },
    "id": 4,
    "legend": {
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "rightSide": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 1,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": true,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "checkQuery": false,
    "graph": false,
    "rawQuery": true,
    "refId": "A",
    "target": "MATCH (n:MaturityTrend) RETURN n.inSightsTime as Time, n.vectorValue as MaturityValue order by Time",
    "timeSeries": true
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Consolidated Trend",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "short",
    "label": "Maturity Value",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "label": null,
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    }
    ],
    "schemaVersion": 18,
    "style": "dark",
    "tags": [],
    "templating": {
    "list": []
    },
    "time": {
    "from": "now-2y",
    "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": "New dashboard Copy",
    "uid": "jEgKHn9ik",
    "version": 11
    }

    {
    "annotations": {
    "list": [
    {
    "builtIn": 1,
    "datasource": "-- Grafana --",
    "enable": true,
    "hide": true,
    "iconColor": "rgba(0, 211, 255, 1)",
    "name": "Annotations & Alerts",
    "type": "dashboard"
    }
    ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "id": 316,
    "links": [],
    "panels": [
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "datasource": "Neo4j_Local",
    "fill": 1,
    "gridPos": {
    "h": 12,
    "w": 12,
    "x": 0,
    "y": 0
    },
    "id": 4,
    "legend": {
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "rightSide": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 1,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": true,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "checkQuery": false,
    "graph": true,
    "table": false,
    "refId": "A",
    "queryText": "MATCH (n:MaturityTrend) RETURN n.inSightsTime as Time, n.vectorValue as MaturityValue order by Time",
    "timeSeries": true
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Consolidated Trend",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "short",
    "label": "Maturity Value",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "label": null,
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    }
    ],
    "schemaVersion": 18,
    "style": "dark",
    "tags": [],
    "templating": {
    "list": []
    },
    "time": {
    "from": "now-2y",
    "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": "New dashboard Copy",
    "uid": "jEgKHn9ik",
    "version": 11
    }

    ...

    Expand
    titleDeprecated plugins
    • Singlestat and Table plugins are removed in Grafana 7.0.3 and above

    • Singlestat is replaced with Stat; Stat is a Grafana native plugin which has more features than Singlestat

    • Table plugin is replaced with Newtable plugin

    Please Note Newtable plugin does not have pagination

    But we have use the old SingleStat and Table plugin which is backward compatible using export and import previous Grafana Dashboard json.