Code Monkey home page Code Monkey logo

Comments (12)

pb82 avatar pb82 commented on May 16, 2024 1

Closing this because it should no longer be an issue on master.
@yogeek please note that those compatibility switches are probably no longer needed. Dashboards should just work now as long as Grafana accepts them.

from grafana-operator.

pb82 avatar pb82 commented on May 16, 2024

The dashboards in the linked project all appear to be defined in jsonnet instead of regular json. Did you convert them to json? Can you please attach one of the dashboard CRs (or the json content) you're trying to import?

from grafana-operator.

yogeek avatar yogeek commented on May 16, 2024

Yes indeed, I genereted the JSON with jsonnet.
Here is one of the JSON :

{
   "__inputs": [ ],
   "__requires": [ ],
   "annotations": {
      "list": [ ]
   },
   "editable": false,
   "gnetId": null,
   "graphTooltip": 0,
   "hideControls": false,
   "id": null,
   "links": [ ],
   "refresh": "",
   "rows": [
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "cacheTimeout": null,
               "colorBackground": false,
               "colorValue": false,
               "colors": [
                  "#299c46",
                  "rgba(237, 129, 40, 0.89)",
                  "#d44a3a"
               ],
               "datasource": "prometheus",
               "format": "none",
               "gauge": {
                  "maxValue": 100,
                  "minValue": 0,
                  "show": false,
                  "thresholdLabels": false,
                  "thresholdMarkers": true
               },
               "gridPos": { },
               "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"
                  }
               ],
               "span": 2,
               "sparkline": {
                  "fillColor": "rgba(31, 118, 189, 0.18)",
                  "full": false,
                  "lineColor": "rgb(31, 120, 193)",
                  "show": false
               },
               "tableColumn": "",
               "targets": [
                  {
                     "expr": "sum(up{job=\"kube-controller-manager\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "",
                     "refId": "A"
                  }
               ],
               "thresholds": "",
               "title": "Up",
               "tooltip": {
                  "shared": false
               },
               "type": "singlestat",
               "valueFontSize": "80%",
               "valueMaps": [
                  {
                     "op": "=",
                     "text": "N/A",
                     "value": "null"
                  }
               ],
               "valueName": "min"
            },
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 3,
               "legend": {
                  "alignAsTable": "true",
                  "avg": false,
                  "current": "true",
                  "max": false,
                  "min": false,
                  "rightSide": "true",
                  "show": "true",
                  "total": false,
                  "values": "true"
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 10,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(rate(workqueue_adds_total{job=\"kube-controller-manager\", instance=~\"$instance\"}[5m])) by (instance, name)",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{instance}} {{name}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Work Queue Add Rate",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "ops",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  },
                  {
                     "format": "ops",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 4,
               "legend": {
                  "alignAsTable": "true",
                  "avg": false,
                  "current": "true",
                  "max": false,
                  "min": false,
                  "rightSide": "true",
                  "show": "true",
                  "total": false,
                  "values": "true"
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(rate(workqueue_depth{job=\"kube-controller-manager\", instance=~\"$instance\"}[5m])) by (instance, name)",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{instance}} {{name}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Work Queue Depth",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 5,
               "legend": {
                  "alignAsTable": "true",
                  "avg": false,
                  "current": "true",
                  "max": false,
                  "min": false,
                  "rightSide": "true",
                  "show": "true",
                  "total": false,
                  "values": "true"
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"kube-controller-manager\", instance=~\"$instance\"}[5m])) by (instance, name, le))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{instance}} {{name}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Work Queue Latency",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "s",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  },
                  {
                     "format": "s",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 6,
               "legend": {
                  "alignAsTable": false,
                  "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": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 4,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(rate(rest_client_requests_total{job=\"kube-controller-manager\", instance=~\"$instance\",code=~\"2..\"}[5m]))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "2xx",
                     "refId": "A"
                  },
                  {
                     "expr": "sum(rate(rest_client_requests_total{job=\"kube-controller-manager\", instance=~\"$instance\",code=~\"3..\"}[5m]))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "3xx",
                     "refId": "B"
                  },
                  {
                     "expr": "sum(rate(rest_client_requests_total{job=\"kube-controller-manager\", instance=~\"$instance\",code=~\"4..\"}[5m]))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "4xx",
                     "refId": "C"
                  },
                  {
                     "expr": "sum(rate(rest_client_requests_total{job=\"kube-controller-manager\", instance=~\"$instance\",code=~\"5..\"}[5m]))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "5xx",
                     "refId": "D"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Kube API Request Rate",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "ops",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  },
                  {
                     "format": "ops",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  }
               ]
            },
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 7,
               "legend": {
                  "alignAsTable": false,
                  "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": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 8,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_latency_seconds_bucket{job=\"kube-controller-manager\", instance=~\"$instance\", verb=\"POST\"}[5m])) by (verb, url, le))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{verb}} {{url}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Post Request Latency 99th Quantile",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "s",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "s",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 8,
               "legend": {
                  "alignAsTable": "true",
                  "avg": false,
                  "current": "true",
                  "max": false,
                  "min": false,
                  "rightSide": "true",
                  "show": "true",
                  "total": false,
                  "values": "true"
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_latency_seconds_bucket{job=\"kube-controller-manager\", instance=~\"$instance\", verb=\"GET\"}[5m])) by (verb, url, le))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{verb}} {{url}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Get Request Latency 99th Quantile",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "s",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "s",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 9,
               "legend": {
                  "alignAsTable": false,
                  "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": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 4,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "process_resident_memory_bytes{job=\"kube-controller-manager\",instance=~\"$instance\"}",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{instance}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Memory",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "bytes",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  },
                  {
                     "format": "bytes",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  }
               ]
            },
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 10,
               "legend": {
                  "alignAsTable": false,
                  "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": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 4,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "rate(process_cpu_seconds_total{job=\"kube-controller-manager\",instance=~\"$instance\"}[5m])",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{instance}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "CPU usage",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            },
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 11,
               "legend": {
                  "alignAsTable": false,
                  "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": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 4,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "go_goroutines{job=\"kube-controller-manager\",instance=~\"$instance\"}",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "{{instance}}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Goroutines",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  },
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": null,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      }
   ],
   "schemaVersion": 14,
   "style": "dark",
   "tags": [
      "kubernetes-mixin"
   ],
   "templating": {
      "list": [
         {
            "current": {
               "text": "Prometheus",
               "value": "Prometheus"
            },
            "hide": 0,
            "label": null,
            "name": "datasource",
            "options": [ ],
            "query": "prometheus",
            "refresh": 1,
            "regex": "",
            "type": "datasource"
         },
         {
            "allValue": null,
            "current": { },
            "datasource": "prometheus",
            "hide": 0,
            "includeAll": true,
            "label": null,
            "multi": false,
            "name": "instance",
            "options": [ ],
            "query": "label_values(process_cpu_seconds_total{job=\"kube-controller-manager\"}, instance)",
            "refresh": 2,
            "regex": "",
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         }
      ]
   },
   "time": {
      "from": "now-1h",
      "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": "Kubernetes / Controller Manager",
   "uid": "72e0e05bef5099e5f049b05fdc429ed4",
   "version": 0
}

from grafana-operator.

yogeek avatar yogeek commented on May 16, 2024

After some investigation, it seems that the SDK you use to interact with grafana is th e v0.0.0-20191103185352-c717bbeb00ed (https://github.com/integr8ly/grafana-operator/blob/master/go.mod#L13)

It seems that this sdk is now in version v0.8 (https://github.com/grafana-tools/sdk/releases)

Do you think is could be a problem of SDK version compatibility ?

from grafana-operator.

pb82 avatar pb82 commented on May 16, 2024

@yogeek Ok, i debugged the dashboard. The problem is that in your json all boolean true values in a panel's legend are strings ("true"), e.g. see line 108 of your json:

                   "legend": {
                      "alignAsTable": "true",
                      "avg": false,
                      "current": "true",
                      "max": false,
                      "min": false,
                      "rightSide": "true",
                      "show": "true",
                      "total": false,
                      "values": "true"
                   },

I suspect this is a problem in your conversion process. It also seems to be the case only in legends, other boolean true values appear fine.

After I replaced all occurrences of "true" with true, the dashboard worked fine.

from grafana-operator.

yogeek avatar yogeek commented on May 16, 2024

@pb82 Ok thank you, I just tested using sed to replace all "true" by true before applying the dashboards and the ones with the problem have been imported correctly 👍
So I just opened an issue on the dashboards repo : kubernetes-monitoring/kubernetes-mixin#314.

but (sorry there is a but ;) ) a few dasboards are still erroneous and this seems to be linked to the operator this time. Indeed importing them with the UI from the JSON file is working fine.

Grafana operator logs :

-operator-54f75bf954-w5b6l grafana-operator {"level":"info","ts":1576760793.8307214,"logger":"controller_grafanadashboard","msg":"cannot process dashboard monitoring/pods"}
grafana-operator-54f75bf954-w5b6l grafana-operator {"level":"info","ts":1576760793.866059,"logger":"controller_grafanadashboard","msg":"cannot process dashboard monitoring/namespace-by-pod"}
grafana-operator-54f75bf954-w5b6l grafana-operator {"level":"info","ts":1576760793.910392,"logger":"controller_grafanadashboard","msg":"cannot process dashboard monitoring/pod-total"}

One of the erroneous Grafana Dashboard status :

Status:
  Hash:     
  Id:       0
  Message:  json: cannot unmarshal number into Go struct field Board.panels of type string
  Phase:    failing

And here is the corresponding initial JSON file :

{
   "__inputs": [ ],
   "__requires": [ ],
   "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,
   "hideControls": false,
   "id": null,
   "links": [ ],
   "panels": [
      {
         "collapse": false,
         "collapsed": false,
         "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 0
         },
         "id": 2,
         "panels": [ ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": true,
         "title": "Current Bandwidth",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "cacheTimeout": null,
         "colorBackground": false,
         "colorValue": false,
         "colors": [
            "#299c46",
            "rgba(237, 129, 40, 0.89)",
            "#d44a3a"
         ],
         "datasource": "prometheus",
         "decimals": 0,
         "format": "time_series",
         "gauge": {
            "maxValue": 100,
            "minValue": 0,
            "show": false,
            "thresholdLabels": false,
            "thresholdMarkers": true
         },
         "gridPos": {
            "h": 9,
            "w": 12,
            "x": 0,
            "y": 1
         },
         "height": 9,
         "id": 3,
         "interval": null,
         "links": [ ],
         "mappingType": 1,
         "mappingTypes": [
            {
               "name": "value to text",
               "value": 1
            },
            {
               "name": "range to text",
               "value": 2
            }
         ],
         "maxDataPoints": 100,
         "minSpan": 12,
         "nullPointMode": "connected",
         "nullText": null,
         "options": {
            "fieldOptions": {
               "calcs": [
                  "last"
               ],
               "defaults": {
                  "max": 10000000000,
                  "min": 0,
                  "title": "$namespace: $pod",
                  "unit": "Bps"
               },
               "mappings": [ ],
               "override": { },
               "thresholds": [
                  {
                     "color": "dark-green",
                     "index": 0,
                     "value": null
                  },
                  {
                     "color": "dark-yellow",
                     "index": 1,
                     "value": 5000000000
                  },
                  {
                     "color": "dark-red",
                     "index": 2,
                     "value": 7000000000
                  }
               ],
               "values": false
            }
         },
         "postfix": "",
         "postfixFontSize": "50%",
         "prefix": "",
         "prefixFontSize": "50%",
         "rangeMaps": [
            {
               "from": "null",
               "text": "N/A",
               "to": "null"
            }
         ],
         "span": 12,
         "sparkline": {
            "fillColor": "rgba(31, 118, 189, 0.18)",
            "full": false,
            "lineColor": "rgb(31, 120, 193)",
            "show": false
         },
         "tableColumn": "",
         "targets": [
            {
               "expr": "sum(irate(container_network_receive_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution]))",
               "format": "time_series",
               "instant": null,
               "intervalFactor": 1,
               "legendFormat": "",
               "refId": "A"
            }
         ],
         "thresholds": "",
         "timeFrom": null,
         "timeShift": null,
         "title": "Current Rate of Bytes Received",
         "type": "gauge",
         "valueFontSize": "80%",
         "valueMaps": [
            {
               "op": "=",
               "text": "N/A",
               "value": "null"
            }
         ],
         "valueName": "current"
      },
      {
         "cacheTimeout": null,
         "colorBackground": false,
         "colorValue": false,
         "colors": [
            "#299c46",
            "rgba(237, 129, 40, 0.89)",
            "#d44a3a"
         ],
         "datasource": "prometheus",
         "decimals": 0,
         "format": "time_series",
         "gauge": {
            "maxValue": 100,
            "minValue": 0,
            "show": false,
            "thresholdLabels": false,
            "thresholdMarkers": true
         },
         "gridPos": {
            "h": 9,
            "w": 12,
            "x": 12,
            "y": 1
         },
         "height": 9,
         "id": 4,
         "interval": null,
         "links": [ ],
         "mappingType": 1,
         "mappingTypes": [
            {
               "name": "value to text",
               "value": 1
            },
            {
               "name": "range to text",
               "value": 2
            }
         ],
         "maxDataPoints": 100,
         "minSpan": 12,
         "nullPointMode": "connected",
         "nullText": null,
         "options": {
            "fieldOptions": {
               "calcs": [
                  "last"
               ],
               "defaults": {
                  "max": 10000000000,
                  "min": 0,
                  "title": "$namespace: $pod",
                  "unit": "Bps"
               },
               "mappings": [ ],
               "override": { },
               "thresholds": [
                  {
                     "color": "dark-green",
                     "index": 0,
                     "value": null
                  },
                  {
                     "color": "dark-yellow",
                     "index": 1,
                     "value": 5000000000
                  },
                  {
                     "color": "dark-red",
                     "index": 2,
                     "value": 7000000000
                  }
               ],
               "values": false
            }
         },
         "postfix": "",
         "postfixFontSize": "50%",
         "prefix": "",
         "prefixFontSize": "50%",
         "rangeMaps": [
            {
               "from": "null",
               "text": "N/A",
               "to": "null"
            }
         ],
         "span": 12,
         "sparkline": {
            "fillColor": "rgba(31, 118, 189, 0.18)",
            "full": false,
            "lineColor": "rgb(31, 120, 193)",
            "show": false
         },
         "tableColumn": "",
         "targets": [
            {
               "expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution]))",
               "format": "time_series",
               "instant": null,
               "intervalFactor": 1,
               "legendFormat": "",
               "refId": "A"
            }
         ],
         "thresholds": "",
         "timeFrom": null,
         "timeShift": null,
         "title": "Current Rate of Bytes Transmitted",
         "type": "gauge",
         "valueFontSize": "80%",
         "valueMaps": [
            {
               "op": "=",
               "text": "N/A",
               "value": "null"
            }
         ],
         "valueName": "current"
      },
      {
         "collapse": false,
         "collapsed": false,
         "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 10
         },
         "id": 5,
         "panels": [ ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": true,
         "title": "Bandwidth",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "aliasColors": { },
         "bars": false,
         "dashLength": 10,
         "dashes": false,
         "datasource": "prometheus",
         "fill": 2,
         "gridPos": {
            "h": 9,
            "w": 12,
            "x": 0,
            "y": 11
         },
         "id": 6,
         "legend": {
            "alignAsTable": false,
            "avg": false,
            "current": false,
            "hideEmpty": true,
            "hideZero": true,
            "max": false,
            "min": false,
            "rightSide": false,
            "show": true,
            "total": false,
            "values": false
         },
         "lines": true,
         "linewidth": 2,
         "links": [ ],
         "minSpan": 12,
         "nullPointMode": "connected",
         "paceLength": 10,
         "percentage": false,
         "pointradius": 5,
         "points": false,
         "renderer": "flot",
         "repeat": null,
         "seriesOverrides": [ ],
         "spaceLength": 10,
         "span": 12,
         "stack": true,
         "steppedLine": false,
         "targets": [
            {
               "expr": "sum(irate(container_network_receive_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)",
               "format": "time_series",
               "intervalFactor": 1,
               "legendFormat": "{{pod}}",
               "refId": "A",
               "step": 10
            }
         ],
         "thresholds": [ ],
         "timeFrom": null,
         "timeShift": null,
         "title": "Receive Bandwidth",
         "tooltip": {
            "shared": true,
            "sort": 2,
            "value_type": "individual"
         },
         "type": "graph",
         "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": [ ]
         },
         "yaxes": [
            {
               "format": "Bps",
               "label": null,
               "logBase": 1,
               "max": null,
               "min": 0,
               "show": true
            },
            {
               "format": "Bps",
               "label": null,
               "logBase": 1,
               "max": null,
               "min": 0,
               "show": true
            }
         ]
      },
      {
         "aliasColors": { },
         "bars": false,
         "dashLength": 10,
         "dashes": false,
         "datasource": "prometheus",
         "fill": 2,
         "gridPos": {
            "h": 9,
            "w": 12,
            "x": 12,
            "y": 11
         },
         "id": 7,
         "legend": {
            "alignAsTable": false,
            "avg": false,
            "current": false,
            "hideEmpty": true,
            "hideZero": true,
            "max": false,
            "min": false,
            "rightSide": false,
            "show": true,
            "total": false,
            "values": false
         },
         "lines": true,
         "linewidth": 2,
         "links": [ ],
         "minSpan": 12,
         "nullPointMode": "connected",
         "paceLength": 10,
         "percentage": false,
         "pointradius": 5,
         "points": false,
         "renderer": "flot",
         "repeat": null,
         "seriesOverrides": [ ],
         "spaceLength": 10,
         "span": 12,
         "stack": true,
         "steppedLine": false,
         "targets": [
            {
               "expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)",
               "format": "time_series",
               "intervalFactor": 1,
               "legendFormat": "{{pod}}",
               "refId": "A",
               "step": 10
            }
         ],
         "thresholds": [ ],
         "timeFrom": null,
         "timeShift": null,
         "title": "Transmit Bandwidth",
         "tooltip": {
            "shared": true,
            "sort": 2,
            "value_type": "individual"
         },
         "type": "graph",
         "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": [ ]
         },
         "yaxes": [
            {
               "format": "Bps",
               "label": null,
               "logBase": 1,
               "max": null,
               "min": 0,
               "show": true
            },
            {
               "format": "Bps",
               "label": null,
               "logBase": 1,
               "max": null,
               "min": 0,
               "show": true
            }
         ]
      },
      {
         "collapse": true,
         "collapsed": true,
         "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 20
         },
         "id": 8,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 2,
               "gridPos": {
                  "h": 10,
                  "w": 12,
                  "x": 0,
                  "y": 21
               },
               "id": 9,
               "legend": {
                  "alignAsTable": false,
                  "avg": false,
                  "current": false,
                  "hideEmpty": true,
                  "hideZero": true,
                  "max": false,
                  "min": false,
                  "rightSide": false,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 2,
               "links": [ ],
               "minSpan": 12,
               "nullPointMode": "connected",
               "paceLength": 10,
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": true,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(irate(container_network_receive_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)",
                     "format": "time_series",
                     "intervalFactor": 1,
                     "legendFormat": "{{pod}}",
                     "refId": "A",
                     "step": 10
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Rate of Received Packets",
               "tooltip": {
                  "shared": true,
                  "sort": 2,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            },
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 2,
               "gridPos": {
                  "h": 10,
                  "w": 12,
                  "x": 12,
                  "y": 21
               },
               "id": 10,
               "legend": {
                  "alignAsTable": false,
                  "avg": false,
                  "current": false,
                  "hideEmpty": true,
                  "hideZero": true,
                  "max": false,
                  "min": false,
                  "rightSide": false,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 2,
               "links": [ ],
               "minSpan": 12,
               "nullPointMode": "connected",
               "paceLength": 10,
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": true,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(irate(container_network_transmit_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)",
                     "format": "time_series",
                     "intervalFactor": 1,
                     "legendFormat": "{{pod}}",
                     "refId": "A",
                     "step": 10
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Rate of Transmitted Packets",
               "tooltip": {
                  "shared": true,
                  "sort": 2,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": true,
         "title": "Packets",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": true,
         "collapsed": true,
         "gridPos": {
            "h": 1,
            "w": 24,
            "x": 0,
            "y": 21
         },
         "id": 11,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 2,
               "gridPos": {
                  "h": 10,
                  "w": 12,
                  "x": 0,
                  "y": 32
               },
               "id": 12,
               "legend": {
                  "alignAsTable": false,
                  "avg": false,
                  "current": false,
                  "hideEmpty": true,
                  "hideZero": true,
                  "max": false,
                  "min": false,
                  "rightSide": false,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 2,
               "links": [ ],
               "minSpan": 12,
               "nullPointMode": "connected",
               "paceLength": 10,
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": true,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)",
                     "format": "time_series",
                     "intervalFactor": 1,
                     "legendFormat": "{{pod}}",
                     "refId": "A",
                     "step": 10
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Rate of Received Packets Dropped",
               "tooltip": {
                  "shared": true,
                  "sort": 2,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            },
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 2,
               "gridPos": {
                  "h": 10,
                  "w": 12,
                  "x": 12,
                  "y": 32
               },
               "id": 13,
               "legend": {
                  "alignAsTable": false,
                  "avg": false,
                  "current": false,
                  "hideEmpty": true,
                  "hideZero": true,
                  "max": false,
                  "min": false,
                  "rightSide": false,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 2,
               "links": [ ],
               "minSpan": 12,
               "nullPointMode": "connected",
               "paceLength": 10,
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": true,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)",
                     "format": "time_series",
                     "intervalFactor": 1,
                     "legendFormat": "{{pod}}",
                     "refId": "A",
                     "step": 10
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Rate of Transmitted Packets Dropped",
               "tooltip": {
                  "shared": true,
                  "sort": 2,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "pps",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": true,
         "title": "Errors",
         "titleSize": "h6",
         "type": "row"
      }
   ],
   "refresh": "30s",
   "rows": [ ],
   "schemaVersion": 18,
   "style": "dark",
   "tags": [
      "kubernetes-mixin"
   ],
   "templating": {
      "list": [
         {
            "current": {
               "text": "Prometheus",
               "value": "Prometheus"
            },
            "hide": 0,
            "label": null,
            "name": "datasource",
            "options": [ ],
            "query": "prometheus",
            "refresh": 1,
            "regex": "",
            "type": "datasource"
         },
         {
            "allValue": ".+",
            "auto": false,
            "auto_count": 30,
            "auto_min": "10s",
            "current": {
               "text": "kube-system",
               "value": "kube-system"
            },
            "datasource": "prometheus",
            "definition": "label_values(container_network_receive_packets_total, namespace)",
            "hide": 0,
            "includeAll": true,
            "label": null,
            "multi": false,
            "name": "namespace",
            "options": [ ],
            "query": "label_values(container_network_receive_packets_total, namespace)",
            "refresh": 1,
            "regex": "",
            "skipUrlSync": false,
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         },
         {
            "allValue": ".+",
            "auto": false,
            "auto_count": 30,
            "auto_min": "10s",
            "current": {
               "text": "",
               "value": ""
            },
            "datasource": "prometheus",
            "definition": "label_values(container_network_receive_packets_total{namespace=~\"$namespace\"}, pod)",
            "hide": 0,
            "includeAll": false,
            "label": null,
            "multi": false,
            "name": "pod",
            "options": [ ],
            "query": "label_values(container_network_receive_packets_total{namespace=~\"$namespace\"}, pod)",
            "refresh": 1,
            "regex": "",
            "skipUrlSync": false,
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         },
         {
            "allValue": null,
            "auto": false,
            "auto_count": 30,
            "auto_min": "10s",
            "current": {
               "text": "5m",
               "value": "5m"
            },
            "datasource": "prometheus",
            "hide": 0,
            "includeAll": false,
            "label": null,
            "multi": false,
            "name": "resolution",
            "options": [
               {
                  "selected": false,
                  "text": "30s",
                  "value": "30s"
               },
               {
                  "selected": true,
                  "text": "5m",
                  "value": "5m"
               },
               {
                  "selected": false,
                  "text": "1h",
                  "value": "1h"
               }
            ],
            "query": "30s,5m,1h",
            "refresh": 2,
            "regex": "",
            "skipUrlSync": false,
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "interval",
            "useTags": false
         },
         {
            "allValue": null,
            "auto": false,
            "auto_count": 30,
            "auto_min": "10s",
            "current": {
               "text": "5m",
               "value": "5m"
            },
            "datasource": "prometheus",
            "hide": 2,
            "includeAll": false,
            "label": null,
            "multi": false,
            "name": "interval",
            "options": [
               {
                  "selected": true,
                  "text": "4h",
                  "value": "4h"
               }
            ],
            "query": "4h",
            "refresh": 2,
            "regex": "",
            "skipUrlSync": false,
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "interval",
            "useTags": false
         }
      ]
   },
   "time": {
      "from": "now-1h",
      "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": "Kubernetes / Networking / Pod",
   "uid": "7a18067ce943a40ae25454675c19ff5c",
   "version": 0
}

As I have successfully imported the exact same JSON from the UI, the problem seems to be in the operator.
I also have a problem with links in dashboards which are existing in the initial JSON file but are missing in the resulting dashboards. And when I look at the grafana sdk, links are missing from the model : https://github.com/grafana-tools/sdk/blob/master/panel.go#L330

It looks like the grafana sdk (the one doing the unmarshal action) is loosing some info in the process... Maybe the model included in the SDK is not coherent with the model expected by Grafana ?
What do you think ? Can it be because you use v0.0.0 of the SDK ?

from grafana-operator.

pb82 avatar pb82 commented on May 16, 2024

The problem seems to be the height property of a panel. The SDK expects a string while in your export it's a number. For example in link 69:

         "height": 9,

Interestingly, when i build a dashboard in Grafana, the panels don't get a height property (height is managed in the gridOos object). So maybe an artifact from an older Grafana version?

I'll see if this is something the operator can convert automatically. After i changed the (two) heights to strings, it was imported.

from grafana-operator.

pb82 avatar pb82 commented on May 16, 2024

@yogeek a solution for this is provided in #97

from grafana-operator.

pb82 avatar pb82 commented on May 16, 2024

@yogeek a tag with the name fix-heights is available, would you mind giving it a try? (Note that you need to set the compat property first as described in the verification steps of the PR).

from grafana-operator.

yogeek avatar yogeek commented on May 16, 2024

@pb82 I just tested the fixHeights tag and there is improvements : on the 3 dashboards were in error, 2 are now imported correctly and 1 is still problematic :

grafana-operator-778d6b698-f2b6s grafana-operator {"level":"info","ts":1576931363.2292306,"logger":"controller_grafanadashboard","msg":"cannot process dashboard monitoring/pods"}
kubectl describe grafanadashboards.integreatly.org pods
Message:  json: cannot unmarshal array into Go struct field Annotation.annotations.list.tags of type string
{
   "__inputs": [ ],
   "__requires": [ ],
   "annotations": {
      "list": [
         {
            "builtIn": 1,
            "datasource": "prometheus",
            "enable": true,
            "expr": "time() == BOOL timestamp(rate(kube_pod_container_status_restarts_total{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[2m]) > 0)",
            "hide": false,
            "iconColor": "rgba(215, 44, 44, 1)",
            "name": "Restarts",
            "showIn": 0,
            "tags": [
               "restart"
            ],
            "type": "rows"
         }
      ]
   },
   "editable": false,
   "gnetId": null,
   "graphTooltip": 0,
   "hideControls": false,
   "id": null,
   "links": [ ],
   "refresh": "",
   "rows": [
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 2,
               "legend": {
                  "alignAsTable": true,
                  "avg": true,
                  "current": true,
                  "max": false,
                  "min": false,
                  "rightSide": true,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum by(container) (container_memory_working_set_bytes{job=\"cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container=~\"$container\", container!=\"POD\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Current: {{ container }}",
                     "refId": "A"
                  },
                  {
                     "expr": "sum by(container) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\", pod=\"$pod\", container=~\"$container\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Requested: {{ container }}",
                     "refId": "B"
                  },
                  {
                     "expr": "sum by(container) (kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\", pod=\"$pod\", container=~\"$container\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Limit: {{ container }}",
                     "refId": "C"
                  },
                  {
                     "expr": "sum by(container) (container_memory_cache{job=\"cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=~\"$pod\", container=~\"$container\", container!=\"POD\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Cache: {{ container }}",
                     "refId": "D"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Memory Usage",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "bytes",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "bytes",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 3,
               "legend": {
                  "alignAsTable": true,
                  "avg": true,
                  "current": true,
                  "max": false,
                  "min": false,
                  "rightSide": true,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sum by (container) (irate(container_cpu_usage_seconds_total{job=\"cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", image!=\"\", pod=\"$pod\", container=~\"$container\", container!=\"POD\"}[4m]))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Current: {{ container }}",
                     "refId": "A"
                  },
                  {
                     "expr": "sum by(container) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\", pod=\"$pod\", container=~\"$container\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Requested: {{ container }}",
                     "refId": "B"
                  },
                  {
                     "expr": "sum by(container) (kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\", pod=\"$pod\", container=~\"$container\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Limit: {{ container }}",
                     "refId": "C"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "CPU Usage",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 4,
               "legend": {
                  "alignAsTable": true,
                  "avg": true,
                  "current": true,
                  "max": false,
                  "min": false,
                  "rightSide": true,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "sort_desc(sum by (pod) (irate(container_network_receive_bytes_total{job=\"cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[4m])))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "RX: {{ pod }}",
                     "refId": "A"
                  },
                  {
                     "expr": "sort_desc(sum by (pod) (irate(container_network_transmit_bytes_total{job=\"cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[4m])))",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "TX: {{ pod }}",
                     "refId": "B"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Network I/O",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "bytes",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "bytes",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      },
      {
         "collapse": false,
         "collapsed": false,
         "panels": [
            {
               "aliasColors": { },
               "bars": false,
               "dashLength": 10,
               "dashes": false,
               "datasource": "prometheus",
               "fill": 1,
               "gridPos": { },
               "id": 5,
               "legend": {
                  "alignAsTable": true,
                  "avg": true,
                  "current": true,
                  "max": false,
                  "min": false,
                  "rightSide": true,
                  "show": true,
                  "total": false,
                  "values": false
               },
               "lines": true,
               "linewidth": 1,
               "links": [ ],
               "nullPointMode": "null",
               "percentage": false,
               "pointradius": 5,
               "points": false,
               "renderer": "flot",
               "repeat": null,
               "seriesOverrides": [ ],
               "spaceLength": 10,
               "span": 12,
               "stack": false,
               "steppedLine": false,
               "targets": [
                  {
                     "expr": "max by (container) (kube_pod_container_status_restarts_total{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container=~\"$container\"})",
                     "format": "time_series",
                     "intervalFactor": 2,
                     "legendFormat": "Restarts: {{ container }}",
                     "refId": "A"
                  }
               ],
               "thresholds": [ ],
               "timeFrom": null,
               "timeShift": null,
               "title": "Total Restarts Per Container",
               "tooltip": {
                  "shared": false,
                  "sort": 0,
                  "value_type": "individual"
               },
               "type": "graph",
               "xaxis": {
                  "buckets": null,
                  "mode": "time",
                  "name": null,
                  "show": true,
                  "values": [ ]
               },
               "yaxes": [
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  },
                  {
                     "format": "short",
                     "label": null,
                     "logBase": 1,
                     "max": null,
                     "min": 0,
                     "show": true
                  }
               ]
            }
         ],
         "repeat": null,
         "repeatIteration": null,
         "repeatRowId": null,
         "showTitle": false,
         "title": "Dashboard Row",
         "titleSize": "h6",
         "type": "row"
      }
   ],
   "schemaVersion": 14,
   "style": "dark",
   "tags": [
      "kubernetes-mixin"
   ],
   "templating": {
      "list": [
         {
            "current": {
               "text": "Prometheus",
               "value": "Prometheus"
            },
            "hide": 0,
            "label": null,
            "name": "datasource",
            "options": [ ],
            "query": "prometheus",
            "refresh": 1,
            "regex": "",
            "type": "datasource"
         },
         {
            "allValue": null,
            "current": { },
            "datasource": "prometheus",
            "hide": 2,
            "includeAll": false,
            "label": "cluster",
            "multi": false,
            "name": "cluster",
            "options": [ ],
            "query": "label_values(kube_pod_info, cluster)",
            "refresh": 2,
            "regex": "",
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         },
         {
            "allValue": null,
            "current": { },
            "datasource": "prometheus",
            "hide": 0,
            "includeAll": false,
            "label": "Namespace",
            "multi": false,
            "name": "namespace",
            "options": [ ],
            "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)",
            "refresh": 2,
            "regex": "",
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         },
         {
            "allValue": null,
            "current": { },
            "datasource": "prometheus",
            "hide": 0,
            "includeAll": false,
            "label": "Pod",
            "multi": false,
            "name": "pod",
            "options": [ ],
            "query": "label_values(kube_pod_info{cluster=\"$cluster\", namespace=~\"$namespace\"}, pod)",
            "refresh": 2,
            "regex": "",
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         },
         {
            "allValue": null,
            "current": { },
            "datasource": "prometheus",
            "hide": 0,
            "includeAll": true,
            "label": "Container",
            "multi": false,
            "name": "container",
            "options": [ ],
            "query": "label_values(kube_pod_container_info{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}, container)",
            "refresh": 2,
            "regex": "",
            "sort": 1,
            "tagValuesQuery": "",
            "tags": [ ],
            "tagsQuery": "",
            "type": "query",
            "useTags": false
         }
      ]
   },
   "time": {
      "from": "now-1h",
      "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": "Kubernetes / Pods",
   "uid": "ab4f13a9892a76a4d21ce8c2445bf4ea",
   "version": 0
}

Additionnal newbie question : what is the advantage of using the SetDashboard instead of SetRawDashboard method in the grafana-sdk ?
Wouldn't it be less risky to directly import the raw json instead of a representation that have to be maintained against grafana dashboard model version ?

from grafana-operator.

pb82 avatar pb82 commented on May 16, 2024

@yogeek there is another compatibility switch for that, fixAnnotations: https://github.com/integr8ly/grafana-operator/blob/master/documentation/deploy_grafana.md#compatibility-with-older-dashboard-formats

It looks like tags are now supposed to be strings while older dashboards sometimes provide them as arrays.

from grafana-operator.

yogeek avatar yogeek commented on May 16, 2024

@pb82 ok I opened another issue here : kubernetes-monitoring/kubernetes-mixin#319

I can confirm you that the "fix-heights" branch is working for me. I think you can merge #97

Can you tell me where can I see this kind of change in dashboard schema so as I can debug these kind of problem myself in the future please ?

from grafana-operator.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.