我正在尝试使用HTTP API导入grafana现有的json文件,它已成功读取json文件,但是每一行都抛出2019-07-04 12:48:26.837 WARN 94752 --- [main] o.s.w.c.s.GenericWebApplicationContext: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException:
Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
错误。
我试图执行以下命令,
command not found
它正在读取json文件中的每一行,但会引发错误
“消息”:“无法导入仪表板”
curl -X POST --insecure -H "Authorization: Bearer eyJrIjoiOWwwUmpQYUFmczhRVG1CZ1VmdTZ1VlZLTlc2ba0xUb0QiLCJuIjoia2xhIiwiaWQiOjJ9" -H "Content-Type: application/json" -d '{"dashboard":{"id": 1,"title": "tested33","tags": ["templated"],"timezone": "browser","rows": [{}],"schemaVersion": 6,"version": 0},"overwrite":false}' -d "$(/u04/my_metrics.json)" localhost:3000/api/dashboards/db
请一次检查json文件,并协助我解决此问题
答案 0 :(得分:2)
您正在尝试导入在Grafana UI中导出的仪表板json /u04/my_metrics.json
。您还必须使用Grafana UI进行导入-https://grafana.com/docs/reference/export_import/。
如果要使用Grafana仪表板API(https://grafana.com/docs/http_api/dashboard/),则需要从Grafana API中“导出”(正确的API名称为“获取仪表板”)。
Grafana UI和Grafana仪表板API会生成不同的仪表板JSON主体架构,因此您不能轻松互换它们。从理论上讲,您可以将json转换为正确的格式,但是您需要熟悉使用的仪表板JSON主体架构。
答案 1 :(得分:0)
请从json中删除“ id”:17。它将开始工作
答案 2 :(得分:0)
我需要使用配置了必要仪表板的grafana来自动启动docker容器,因此请按照以下步骤操作:
在我的情况下,我使用默认的用户名和密码(admin / admin)以及在配置Docker容器时映射的端口3000。
URL如下:
http:// admin:admin @ localhost:3000 / api / dashboards / uid / lNCIQZdGk
如您所见,它将以兼容的格式返回仪表板的元数据,以通过Grafana REST API导入。
最后一步,有必要删除JSON的“ id”属性,以避免在导入时收到404,并继续使用该配置创建新的信息中心,并为其分配一个新的ID。
如您所见,删除该属性将创建一个新的仪表板并为其分配ID 4。
使用类似于以下内容的CURL命令通过脚本自动创建仪表板会更合适:
curl --verbose -L -s --fail -H "Accept: application/json" -H "Content-Type: application/json" -X POST -k http://admin:admin@localhost:3000/api/dashboards/db --data @/etc/grafana/dashboards/kafka_exporter_overview.json
我与您分享了在创建Docker容器期间用于配置仪表板和数据源的脚本:
GRAFANA_URL=${GRAFANA_URL:-http://$GF_SECURITY_ADMIN_USER:$GF_SECURITY_ADMIN_PASSWORD@localhost:3000}
#GRAFANA_URL=http://grafana-plain.k8s.playground1.aws.ad.zopa.com
DATASOURCES_PATH=${DATASOURCES_PATH:-/etc/grafana/datasources}
DASHBOARDS_PATH=${DASHBOARDS_PATH:-/etc/grafana/dashboards}
# Generic function to call the Vault API
grafana_api() {
local verb=$1
local url=$2
local params=$3
local bodyfile=$4
local response
local cmd
cmd="curl --verbose -L -s --fail -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X ${verb} -k ${GRAFANA_URL}${url}"
[[ -n "${params}" ]] && cmd="${cmd} -d \"${params}\""
[[ -n "${bodyfile}" ]] && cmd="${cmd} --data @${bodyfile}"
echo "Running ${cmd}"
eval ${cmd} || return 1
return 0
}
wait_for_api() {
while ! grafana_api GET /api/user/preferences
do
sleep 5
done
}
install_datasources() {
local datasource
for datasource in ${DATASOURCES_PATH}/*.json
do
if [[ -f "${datasource}" ]]; then
echo "Installing datasource ${datasource}"
if grafana_api POST /api/datasources "" "${datasource}"; then
echo "installed ok"
else
echo "install failed"
fi
fi
done
}
install_dashboards() {
local dashboard
for dashboard in ${DASHBOARDS_PATH}/*.json
do
if [[ -f "${dashboard}" ]]; then
echo "Installing dashboard ${dashboard}"
if grafana_api POST /api/dashboards/db "" "${dashboard}"; then
echo "installed ok"
else
echo "install failed"
fi
fi
done
}
configure_grafana() {
wait_for_api
install_datasources
install_dashboards
}
echo "Running configure_grafana in the background..."
configure_grafana &
/run.sh
exit 0
希望这个答案可以帮助某人。