如何从导出的 JSON 自动更新 Docker 映像中的 Grafana 仪表板(和数据源)?
Posted
技术标签:
【中文标题】如何从导出的 JSON 自动更新 Docker 映像中的 Grafana 仪表板(和数据源)?【英文标题】:How do I automatically update Grafana dashboards (and datasources) in the Docker Image from the exported JSON? 【发布时间】:2019-10-18 12:49:25 【问题描述】:我正在尝试使用存储(并定期更新)在 Github/Bitbucket 中的导出的相关 JSON 在 Grafana Docker 映像中自动更新 Grafana 仪表板/数据源。
例如:
-
运行 Grafana 的 Docker 镜像
Dockerfile 添加了一个从 Git 源中提取的 Bash 脚本,
然后该脚本将 JSON 文件复制到相关目录(/etc/grafana/provisioning/datasource + /dashboards)。
图形和数据源的更新无需人工干预(更新存储在 Github 或 Bitbucket 中的 JSON 除外)。
我已经执行到 Grafana docker 映像中,并且 Grafana 在一个非常基本的 linux 系统上运行,因此实际上不能使用任何命令,即 git、wget、apt。
如果我认为我应该从基本的 Debian 映像创建一个 Dockerfile,运行一个 apt 更新并在其中安装 git,我会不会很傻。然后以某种方式运行 Grafana 和该图像中的脚本?
请随时询问更多信息。
【问题讨论】:
no commands can be used i.e., git, wget, apt
?所以安装它们?它在Debian上运行。 apt-get update && apt-get install git wget
。 apt update and installing git inside
- 这很正常。 Then somehow
- 创建一个 dockerfile,添加一个 RUN apt-get update && apt-get install && apt-get autoremove
并构建该 dockerfile。如果 ENTRYPOINT 保持不变,您仍将运行 grafana。顺便提一句。 grafana dockerfile.
如果您有 git cloned/pulled
对配置文件夹的最新更新,重新创建容器将获得按指定配置的 Grafana 的新副本。但是,您可能希望保留任何现有设置、用户等(在重新创建时丢失),在这种情况下,您需要使用 docker 卷将相应的 Grafana 文件夹从容器映射到主机上的文件夹,如 Kamil 所述库克。然后您可以直接在那里更新文件,然后重新启动而不是重新创建。或ssh
进入容器并使用 Grafana CLI grafana.com/docs/administration/cli
【参考方案1】:
考虑使用 docker 卷的更简单方法:
grafana
容器为 /etc/grafana/provisioning/datasource + /dashboards
使用 docker 卷
这些 docker 卷与您创建的其他 docker 容器共享。
您的 docker 容器运行传入的 webhook 服务器,公开可用。
如果该 webhook 被触发,那么您的脚本就会运行。
该脚本git pull
s 来自您的回购和copies the JSON files into the relevant directories
的更改。 “相关目录”是您的 docker 和 grafana docker 之间共享的 docker 卷。
您注册一个 webhook 以在每次推送到 master 时在 github 存储库中执行。
整个过程是自动化的,看起来像这样:
您使用相关来源将 master 推送到您的 github 存储库 你的带有传入 webhook 服务器的 docker 被 github 坑了 您的 docker 执行脚本 该脚本 git 拉取 github 存储库并将 JSON 文件复制到共享文件夹中 如果你需要前。要从该脚本重新启动 grafana 容器,您可以挂载 docker socket-v /var/run/docker.sock
并从容器内部执行 docker 命令。
【讨论】:
所以运行 hook 的 docker 容器与 Grafana 容器不同?我有点明白这种方法,但有点不清楚 tbh 是的,没错,这就是重点。 Docker 就是为此而构建的——因此您可以分离系统的不同部分。几乎不需要对 grafana 容器进行更改。 当然!但与此同时,docker 也是为了重用和扩展基础镜像而构建的,所以制作一个自更新的 Grafana 容器没有任何问题。以上是关于如何从导出的 JSON 自动更新 Docker 映像中的 Grafana 仪表板(和数据源)?的主要内容,如果未能解决你的问题,请参考以下文章