Monitor | 基于 cAdvisor+InfluxDB+Grafana 搭建监控系统(二)| 监控平台数据持久化
Contents
背景说明
通常我们会采用本地持久存储卷来保存一些 Docker 容器服务的配置与数据,这样做的好处是配置与数据可以在容器主机上比较方便的进行修改、备份,因为容器本身并不保存任何数据,所以容器可以做到随用随弃,便于升级。
配置 Grafana 容器数据持久化(容器升级)
Grafana 容器镜像:
1
|
grafana/grafana |
容器数据目录:
1 2 |
/etc/grafana/grafana.ini # 配置文件,owner & group: root /var/lib/grafana # 数据目录,owner & group: grafana |
容器主机挂载点:
1 2 3 |
/home/docker/grafana # 宿主机 grafana 容器的家目录 /home/docker/grafana/grafana.ini # 挂载点 grafana 配置 /home/docker/grafana/data # 挂载点 grafana 数据目录 data |
关于 Grafana 容器存储持久化请先详细阅读一下官方文档说明:
-
- Grafana container with persistent storage (recommended)
- Grafana container using bind mounts
先在宿主机创建挂载点
创建挂载点
|
|
创建容器启动脚本
|
|
Next, 由于我已经创建好了且不带数据卷的 Grafana 容器,所以将会以升级的方式来添加容器数据卷,操作步骤: 备份 -> 删除旧容器 -> 启动新容器。(Note: 如果是新建容器则直接启动即可)
备份数据
为什么要备份呢?
因为已有容器未作持久化层,容器删除后数据会丢失,所以先备份,然后新创建的容器再与备份数据挂载,这样就可以保留原有数据了
从已有容器中拷贝相关数据到本地挂载点: 使用 docker cp
命令
|
|
更新容器并启动
删除旧容器(Note: 未创建数据卷的容器执行删除操作会丢失所有数据)
|
|
启动新容器, 直接运行前面创建好的脚本:run.sh
|
|
Note: 宿主机上更新配置文件后,需要重启容器才会生效
查看日志可执行如下命令:
|
|
Note: 容器默认日志是打印在终端的,并未记录到文件中,这里我没修改采用的是默认设置,所以使用上面的命令查看日志
至此,Grafana 容器升级完成。
配置 InfluxDB 数据持久化
容器镜像:tutum/influxdb
容器数据目录:
1 2 |
/config/config.toml # 配置文件 /data # 数据目录 |
Host:
1 2 3 |
/home/docker/influxdb # 宿主机 influxdb 容器的家目录 /home/docker/influxdb/config.toml # 挂载点 influxdb 配置 /home/docker/influxdb/data # 挂载点 influxdb 数据目录 data |
先在宿主机创建挂载点
创建挂载点
|
|
创建容器启动脚本
|
|
Next, 由于我已经创建好了, 且没有指定数据卷的 Influxdb 容器,所以将会以升级的方式来添加容器数据卷,操作步骤: 备份 -> 删除旧容器 -> 启动新容器。(Note: 如果是新建容器则直接启动即可)
备份数据
根据 tutum/influxdb 容器的 Dockerfile 描述,构建镜像时已经创建了数据卷:容器挂载点:/data, 对应宿主机的挂载点在 /var/lib/docker/volumes/{sha256} 下, 具体的路径可以通过如下命令得到,即:
|
|
其中 /var/lib/docker/volumes/50***/_data
目录下就是 influxdb 容器存储在宿主机上的数据
然后,我们将容器数据拷贝到我们创建好的目录下进行备份,同时也方便管理,这里直接用 docker cp
拷贝,执行命令如下:
|
|
更新容器并启动
|
|
至此,Influxdb 容器升级完成。
See Also
Thanks to the authors 🙂