【问题标题】:How do I automatically update Grafana dashboards (and datasources) in the Docker Image from the exported JSON?如何从导出的 JSON 自动更新 Docker 映像中的 Grafana 仪表板(和数据源)?
【发布时间】:2019-10-18 12:49:25
【问题描述】:

我正在尝试使用存储(并定期更新)在 Github/Bitbucket 中的导出的相关 JSON 在 Grafana Docker 映像中自动更新 Grafana 仪表板/数据源。

例如:

  1. 运行 Grafana 的 Docker 镜像
  2. Dockerfile 添加了一个从 Git 源中提取的 Bash 脚本,
  3. 然后该脚本将 JSON 文件复制到相关目录(/etc/grafana/provisioning/datasource + /dashboards)。
  4. 图形和数据源的更新无需人工干预(更新存储在 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 wgetapt 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

标签: bash docker grafana


【解决方案1】:

考虑使用 docker 卷的更简单方法:

  • grafana 容器为 /etc/grafana/provisioning/datasource + /dashboards 使用 docker 卷
  • 这些 docker 卷与您创建的其他 docker 容器共享。
  • 您的 docker 容器运行传入的 webhook 服务器,公开可用。
  • 如果该 webhook 被触发,那么您的脚本就会运行。
  • 该脚本git pulls 来自您的回购和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 容器没有任何问题。
猜你喜欢
  • 1970-01-01
  • 2019-07-13
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 2021-01-23
  • 2018-07-18
  • 2020-11-30
相关资源
最近更新 更多