如何在Grafana图像中添加仪表板配置json文件?

Gre*_*orm 8 dashboard docker grafana grafana-api grafana-templating

我有一个grafana docker映像,该映像具有使用配置文件预先配置的hawkular数据源。

运行grafana实例后,我有一个由teammate给定的json,可以将其导入grafana内,并且该json文件在导入时会创建仪表板。

如何使仪表板默认出现在Grafana实例中?

我尝试将json文件复制到/ etc / grafana / provisioning / dashboards /文件夹中,并创建了一个新的docker映像。但是,当我运行图像时,实例在主页或其中的任何位置都没有包含仪表板。

如何在Docker映像中添加此json文件。我是否遵循正确的方法?

我尝试了这个http://docs.grafana.org/administration/provisioning/,但并没有太大帮助。有什么建议吗?

这是json文件。

{
    "id": null,
    "title": "Openshift Metrics",
    "tags": [],
    "style": "dark",
    "timezone": "browser",
    "editable": true,
    "hideControls": false,
    "sharedCrosshair": false,
    "rows": [
      {
        "collapse": false,
        "editable": true,
        "height": "322px",
        "panels": [
          {
            "content": "<center><p style='font-size: 40pt'>$app</p></center>",
            "editable": true,
            "error": false,
            "id": 23,
            "isNew": true,
            "links": [],
            "mode": "html",
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "style": {
              "font-size": "36pt"
            },
            "title": "",
            "type": "text"
          },
          {
            "aliasColors": {},
            "bars": false,
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "fill": 1,
            "grid": {
              "threshold1": null,
              "threshold1Color": "rgba(216, 200, 27, 0.27)",
              "threshold2": null,
              "threshold2Color": "rgba(234, 112, 112, 0.22)"
            },
            "id": 9,
            "isNew": true,
            "legend": {
              "avg": false,
              "current": false,
              "max": false,
              "min": false,
              "show": true,
              "total": false,
              "values": false
            },
            "lines": true,
            "linewidth": 2,
            "links": [],
            "nullPointMode": "connected",
            "percentage": false,
            "pointradius": 5,
            "points": false,
            "renderer": "flot",
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "seriesOverrides": [],
            "span": 6,
            "stack": false,
            "steppedLine": false,
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "none",
                "tags": [
                  {
                    "name": "container_name",
                    "value": "$app"
                  },
                  {
                    "name": "descriptor_name",
                    "value": "memory/usage"
                  }
                ],
                "target": "select metric",
                "tagsQL": "container_name IN [$app] AND descriptor_name='memory/usage'",
                "timeAggFn": "avg",
                "type": "gauge"
              }
            ],
            "timeFrom": null,
            "timeShift": null,
            "title": "Memory usage",
            "tooltip": {
              "msResolution": true,
              "shared": true,
              "sort": 0,
              "value_type": "cumulative"
            },
            "type": "graph",
            "xaxis": {
              "show": true
            },
            "yaxes": [
              {
                "format": "bytes",
                "label": null,
                "logBase": 1,
                "max": null,
                "min": 0,
                "show": true
              },
              {
                "format": "short",
                "label": null,
                "logBase": 1,
                "max": null,
                "min": null,
                "show": true
              }
            ]
          },
          {
            "cacheTimeout": null,
            "colorBackground": true,
            "colorValue": false,
            "colors": [
              "rgba(50, 172, 45, 0.97)",
              "rgba(237, 129, 40, 0.89)",
              "rgba(245, 54, 54, 0.9)"
            ],
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "format": "bytes",
            "gauge": {
              "maxValue": 100,
              "minValue": 0,
              "show": false,
              "thresholdLabels": false,
              "thresholdMarkers": true
            },
            "height": "100px",
            "id": 12,
            "interval": null,
            "isNew": true,
            "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"
              }
            ],
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": false,
              "lineColor": "rgb(31, 120, 193)",
              "show": false
            },
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "sum",
                "tags": [
                  {
                    "name": "container_name",
                    "value": "$app"
                  },
                  {
                    "name": "descriptor_name",
                    "value": "memory/usage"
                  }
                ],
                "target": "select metric",
                "tagsQL": "container_name IN [$app] AND descriptor_name='memory/usage'",
                "timeAggFn": "live",
                "type": "gauge"
              }
            ],
            "thresholds": "140000000,180000000",
            "title": "Live, all pods",
            "type": "singlestat",
            "valueFontSize": "80%",
            "valueMaps": [
              {
                "op": "=",
                "text": "N/A",
                "value": "null"
              }
            ],
            "valueName": "avg"
          },
          {
            "cacheTimeout": null,
            "colorBackground": true,
            "colorValue": false,
            "colors": [
              "rgba(50, 172, 45, 0.97)",
              "rgba(237, 129, 40, 0.89)",
              "rgba(245, 54, 54, 0.9)"
            ],
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "format": "bytes",
            "gauge": {
              "maxValue": 100,
              "minValue": 0,
              "show": false,
              "thresholdLabels": false,
              "thresholdMarkers": true
            },
            "height": "100px",
            "id": 15,
            "interval": null,
            "isNew": true,
            "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"
              }
            ],
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": false,
              "lineColor": "rgb(31, 120, 193)",
              "show": false
            },
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "avg",
                "tags": [
                  {
                    "name": "container_name",
                    "value": "$app"
                  },
                  {
                    "name": "descriptor_name",
                    "value": "memory/usage"
                  }
                ],
                "target": "select metric",
                "tagsQL": "container_name IN [$app] AND descriptor_name='memory/usage'",
                "timeAggFn": "live",
                "type": "gauge"
              }
            ],
            "thresholds": "140000000,180000000",
            "title": "Live per pod",
            "type": "singlestat",
            "valueFontSize": "80%",
            "valueMaps": [
              {
                "op": "=",
                "text": "N/A",
                "value": "null"
              }
            ],
            "valueName": "avg"
          },
          {
            "cacheTimeout": null,
            "colorBackground": true,
            "colorValue": false,
            "colors": [
              "rgba(50, 172, 45, 0.97)",
              "rgba(237, 129, 40, 0.89)",
              "rgba(245, 54, 54, 0.9)"
            ],
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "format": "bytes",
            "gauge": {
              "maxValue": 100,
              "minValue": 0,
              "show": false,
              "thresholdLabels": false,
              "thresholdMarkers": true
            },
            "height": "100px",
            "id": 10,
            "interval": null,
            "isNew": true,
            "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"
              }
            ],
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": false,
              "lineColor": "rgb(31, 120, 193)",
              "show": false
            },
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "sum",
                "tags": [
                  {
                    "name": "container_name",
                    "value": "$app"
                  },
                  {
                    "name": "descriptor_name",
                    "value": "memory/usage"
                  }
                ],
                "target": "select metric",
                "tagsQL": "container_name IN [$app] AND descriptor_name='memory/usage'",
                "timeAggFn": "avg",
                "type": "gauge"
              }
            ],
            "thresholds": "140000000,180000000",
            "title": "Average, all pods",
            "type": "singlestat",
            "valueFontSize": "80%",
            "valueMaps": [
              {
                "op": "=",
                "text": "N/A",
                "value": "null"
              }
            ],
            "valueName": "avg"
          },
          {
            "cacheTimeout": null,
            "colorBackground": true,
            "colorValue": false,
            "colors": [
              "rgba(50, 172, 45, 0.97)",
              "rgba(237, 129, 40, 0.89)",
              "rgba(245, 54, 54, 0.9)"
            ],
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "format": "bytes",
            "gauge": {
              "maxValue": 100,
              "minValue": 0,
              "show": false,
              "thresholdLabels": false,
              "thresholdMarkers": true
            },
            "height": "100px",
            "id": 13,
            "interval": null,
            "isNew": true,
            "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"
              }
            ],
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": false,
              "lineColor": "rgb(31, 120, 193)",
              "show": false
            },
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "avg",
                "tags": [
                  {
                    "name": "container_name",
                    "value": "$app"
                  },
                  {
                    "name": "descriptor_name",
                    "value": "memory/usage"
                  }
                ],
                "target": "select metric",
                "tagsQL": "container_name IN [$app] AND descriptor_name='memory/usage'",
                "timeAggFn": "avg",
                "type": "gauge"
              }
            ],
            "thresholds": "140000000,180000000",
            "title": "Average per pod",
            "type": "singlestat",
            "valueFontSize": "80%",
            "valueMaps": [
              {
                "op": "=",
                "text": "N/A",
                "value": "null"
              }
            ],
            "valueName": "avg"
          },
          {
            "cacheTimeout": null,
            "colorBackground": true,
            "colorValue": false,
            "colors": [
              "rgba(50, 172, 45, 0.97)",
              "rgba(237, 129, 40, 0.89)",
              "rgba(245, 54, 54, 0.9)"
            ],
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "format": "bytes",
            "gauge": {
              "maxValue": 100,
              "minValue": 0,
              "show": false,
              "thresholdLabels": false,
              "thresholdMarkers": true
            },
            "height": "100px",
            "id": 11,
            "interval": null,
            "isNew": true,
            "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"
              }
            ],
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": false,
              "lineColor": "rgb(31, 120, 193)",
              "show": false
            },
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "sum",
                "tags": [
                  {
                    "name": "container_name",
                    "value": "$app"
                  },
                  {
                    "name": "descriptor_name",
                    "value": "memory/usage"
                  }
                ],
                "target": "select metric",
                "tagsQL": "container_name IN [$app] AND descriptor_name='memory/usage'",
                "timeAggFn": "max",
                "type": "gauge"
              }
            ],
            "thresholds": "140000000,180000000",
            "title": "Max, all pods",
            "type": "singlestat",
            "valueFontSize": "80%",
            "valueMaps": [
              {
                "op": "=",
                "text": "N/A",
                "value": "null"
              }
            ],
            "valueName": "avg"
          },
          {
            "cacheTimeout": null,
            "colorBackground": true,
            "colorValue": false,
            "colors": [
              "rgba(50, 172, 45, 0.97)",
              "rgba(237, 129, 40, 0.89)",
              "rgba(245, 54, 54, 0.9)"
            ],
            "datasource": "Hawk-DS",
            "editable": true,
            "error": false,
            "format": "bytes",
            "gauge": {
              "maxValue": 100,
              "minValue": 0,
              "show": false,
              "thresholdLabels": false,
              "thresholdMarkers": true
            },
            "height": "100px",
            "id": 14,
            "interval": null,
            "isNew": true,
            "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"
              }
            ],
            "repeatIteration": 1476706310439,
            "scopedVars": {},
            "span": 2,
            "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": false,
              "lineColor": "rgb(31, 120, 193)",
              "show": false
            },
            "targets": [
              {
                "queryBy": "tags",
                "rate": false,
                "refId": "A",
                "seriesAggFn": "avg",
                "tags": [
                  {
                    "name": "container_na

Vol*_*ozo 12

我遇到了同样的问题,我希望下一个解决方案可以帮助某人。\n例如,您有下一个工作目录:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docker-compose.yml          \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grafana                     \n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dashboards\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 exported_dashboard.json    #dashboard you saved before\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 provisioning            \n\xe2\x94\x82       \xe2\x94\x82                       \n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dashboards          \n\xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 all.yml         \n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 datasources\n\xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 all.yml         \n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. Dockerfile您必须将文件夹添加provisioningdashboardsgrafana 容器中:
  2. \n
\n
FROM grafana/grafana:latest\nADD ./provisioning /etc/grafana/provisioning\nADD ./dashboards /var/lib/grafana/dashboards\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 您必须provisioning/dashboards/all.yml设置导入仪表板文件夹的路径\nexported_dashboard.json实际放置的位置:
  2. \n
\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docker-compose.yml          \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grafana                     \n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dashboards\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 exported_dashboard.json    #dashboard you saved before\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 provisioning            \n\xe2\x94\x82       \xe2\x94\x82                       \n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dashboards          \n\xe2\x94\x82       \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 all.yml         \n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 datasources\n\xe2\x94\x82           \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 all.yml         \n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. [可选]然后您还可以在中配置默认​​数据源provisioning/datasources/all.ymlprometheus中配置默认​​数据源,例如:
  2. \n
\n
FROM grafana/grafana:latest\nADD ./provisioning /etc/grafana/provisioning\nADD ./dashboards /var/lib/grafana/dashboards\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 最后,docker-compose.yml
  2. \n
\n
- name: \'default\'\n  org_id: 1\n  folder: \'\'\n  type: \'file\'\n  options:\n    folder: \'/var/lib/grafana/dashboards\'\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 至于HOME dashborad,您可以使用GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATHevironment 变量,如上所示。\n有关 evironment 变量的更多信息,您可以在该github 问题GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH中阅读。
  • \n
  • 您可以在下一个github 存储库中找到完整的综合代码示例
  • \n
  • 原始文章有解释
  • \n
\n


kic*_*hik 8

您应该在该文件夹中放置一个指向 JSON 文件的 YAML 文件。例如写/etc/grafana/provisioning/dashboards/local.yml

apiVersion: 1

providers:
- name: 'default'
  orgId: 1
  folder: ''
  type: file
  disableDeletion: false
  updateIntervalSeconds: 10 #how often Grafana will scan for changed dashboards
  options:
    path: /var/lib/grafana/dashboards
Run Code Online (Sandbox Code Playgroud)

然后将您的 JSON 文件写入/var/lib/grafana/dashboards/openshift.json.


在 Grafana 5 之前,我之前的解决方案是将整个 Docker 进程包装在一个脚本中,一旦 Docker 容器启动,该脚本使用API创建仪表板。您可以使用GF_SECURITY_ADMIN_PASSWORD环境变量来设置密码。您也可以使用GF_AUTH_ANONYMOUS_ENABLED,但您需要确保外部世界无法访问它。

docker run -p 3000:3000 -e GF_AUTH_ANONYMOUS_ENABLED=true grafana/grafana ...
sleep 10  # wait for grafana to load (use a better method of waiting in production)
curl -skfS -XPOST --header "Content-Type: application/json" "http://localhost:3000/grafana/api/dashboards/db" --data-binary @dashboard.json
Run Code Online (Sandbox Code Playgroud)

  • 但是有没有办法将它们作为 Docker 镜像本身的一部分包含在主页上?就像我们在 docker 镜像中的配置文件夹中添加数据源文件一样? (2认同)