Checkpoint pushgateway 持久化文件到对象存储

问题描述

我正在使用 pushgateway 公开来自短期批处理作业的指标。

目前,pushgateway 实例是在裸机上启动的,我在其中安装了一个 docker 卷,以便在容器重新启动的情况下保留指标(与 --persistence.file 参数结合使用)。

这里是用于运行容器的 docker-compose.yml 文件的摘录:

 pushgateway:
    image: prom/pushgateway:v1.2.0
    restart: unless-stopped
    volumes:
      - pushgw-data:/data
    ports:
      - "${PUSHGW_PORT:-9091}:9091"
    command: --persistence.file="/data/metric.store"

我要迁移到没有持久卷但配备了 s3 兼容对象存储的(私有)kubernetes 集群。

从 github 上的 this issue 似乎可以将 s3 定位为检查点,但如果没有进一步的输入,我不知道如何实现这一点,这是我通过在网上搜索信息找到的最好方法。>

谁能指出我正确的方向?

解决方法

所以最后 https://serverfault.com/questions/976764/kubernetes-run-aws-s3-sync-rsync-against-persistent-volume-on-demand 为我指明了正确的方向。

这是 $notifiable 描述符的摘录,它按预期工作:

deployment.yaml

注意 pushgateway 的 docker 镜像的入口点覆盖。在我的情况下,我将 10 秒延迟开始,您可能需要调整延迟以满足您的需要。这个延迟是必要的,因为 pushgateway 容器将比 sidecar 启动得更快(我想也是因为与 s3 的网络交换)。

如果 pushgateway 在不存在度量标准存储文件时启动,则不会使用/考虑它。但更糟糕的是,当您第一次向 pushgateway 发送数据时,它会覆盖该文件。此时,来自 sidecar 容器的“同步”也将覆盖原始“副本”,因此请注意并确保在试验此延迟值之前备份指标文件。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...