通过API导出Grafana仪表板

Met*_*ead 3 curl dashboard grafana grafana-api

我有一个关于 Grafana API 的问题。

\n

我需要导出使用 GUI 制作的所有仪表板的 JSON 模型,以便将它们导入到另一个 Grafana 实例中。\n我尝试使用仪表板 API - api/dashboards/,使用带有仪表板 uuid 或 uri (db/ ),\n但由于某种原因我总是收到未找到的消息

\n

我发现的 uids 和 uris

\n
$URL/api/search?query=&\n
Run Code Online (Sandbox Code Playgroud)\n

然后我尝试获取模型或任何数据

\n
curl -k -H \xe2\x80\x9cAuthorization: Bearer $KEY\xe2\x80\x9d $URL/api/dashboards/db/$dash_name\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
curl -k -H \xe2\x80\x9cAuthorization: Bearer $KEY\xe2\x80\x9d $URL/api/dashboards/uid/$uid\n
Run Code Online (Sandbox Code Playgroud)\n

结果是一样的。

\n

有谁知道这是为什么?我在其他地方找不到任何信息。

\n

提前致谢。

\n

Met*_*ead 6

解决方案取自:https://gist.github.com/crisidev/bd52bdcc7f029be2f295#gistcomment-3975489

#!/bin/bash

HOST='http://localhost:3000'
KEY="<add-valid-key>"
DIR="grafana_dashboards"

# Iterate through dashboards using the current API Key
for dashboard_uid in $(curl -sS -H "Authorization: Bearer $KEY" $HOST/api/search\?query\=\& | jq -r '.[] | select( .type | contains("dash-db")) | .uid'); do
    url=$(echo $HOST/api/dashboards/uid/$dashboard_uid | tr -d '\r')
    dashboard_json=$(curl -sS -H "Authorization: Bearer $KEY" $url)
    dashboard_title=$(echo $dashboard_json | jq -r '.dashboard | .title' | sed -r 's/[ \/]+/_/g')
    dashboard_version=$(echo $dashboard_json | jq -r '.dashboard | .version')
    folder_title="$(echo $dashboard_json | jq -r '.meta | .folderTitle')"

    echo "Creating: ${DIR}/${folder_title}/${dashboard_title}_v${dashboard_version}.json"
    mkdir -p "${DIR}/${folder_title}"
    echo ${dashboard_json} | jq -r {meta:.meta}+.dashboard > "${DIR}/${folder_title}/${dashboard_title}_v${dashboard_version}.json"
done
Run Code Online (Sandbox Code Playgroud)