参考文档
promscale/migration-tool/cmd/prom-migrator at master · timescale/promscale (github.com)
概述
Prom-migrator 是一个开源的、社区驱动的、免费使用的通用 prometheus 数据迁移工具,利用 Prometheus 的 远程存储终结点。
独特功能
- 将 Prometheus 数据从一个存储系统迁移到另一个存储系统
- 运行时漂亮的输出,允许用户跟踪进度
- 能够在发生任何意外关闭时从上次发送的数据恢复迁移
- 能够在超时或错误时尝试重试
- 无状态工作模式
安装
我的是arm64架构,如果你的环境是x86 64 可以通过promscale/migration-tool/cmd/prom-migrator at master · timescale/promscale (github.com) 去下载适合你的。
wget https://github.com/timescale/promscale/releases/download/0.17.0/prom-migrator_0.0.6_Linux_arm64
mv prom-migrator_0.0.6_Linux_arm64 /usr/local/bin/prom-migrator
chmod +x /usr/local/bin/prom-migrator
参数解释
prom-migrator 的用法:
-concurrent-pull int
并发拉取支持并发提取数据。每个 fetch 查询都分为“并发拉取”(值)部分,然后并发提取。这样可以
更快地从远程读取存储中提取数据,从而实现更高的读取吞吐量。注意:设置“concurrent-pull”> 1
将在进度条中显示并发获取数据的进度并禁用实时传输速率。高“并发拉取”会消耗大量内存,因此请确保
将其与迁移序列数和可用内存相平衡。此外,将此值设置得太高可能会导致读取存储端出现 TLS 握手错
误,或者可能导致提取请求不足,具体取决于您的网络带宽。(默认 1)
-concurrent-push int
并发推送可同时推送板。每个板被划分为“并发推送”(值)部分,然后并发推送到远程写入存储。这可能
会导致远程写入存储的吞吐量更高,前提是它能够处理负载。注意:较大的分片计数将导致大量内存使
用。(默认 1)
-end string
执行数据迁移的结束时间(RFC3339格式,如“1970-01-01T00:00:00+00:00”,或自 unix 纪元
以来的秒数,UTC)。默认情况下,如果未设置此值,则“end”将设置为迁移开始的时间。
-gc-on-push
推送每个板后运行垃圾回收器。这可能会带来更好的内存管理,因为 GC 在每个平板之后立即启动以清理
未使用的内存块。
-max-read-duration duration
通过连续的“la-increment”可以实现的最大板坯范围。这默认为“2 小时”,因为假设迁移是从
Prometheus TSDB 进行的。如果您不从 Prometheus 获取,或者如果您对 Prometheus 侧后 2
小时平板时间范围的慢速读取感到满意,请增加此持续时间。(默认 2h0m0s)
-max-read-size string
(单位:B、KB、MB、GB、TB、PB)单次应读取的最大数据大小。读取大小越大,迁移速度越快,但内
存使用量越高。示例:250MB。(默认为“500MB”)
-migration-name string
当前要执行的迁移的名称。它对应于 progress-metric-name 中设置的标签“job”的值。(默认为
“prom-migrator”)
-progress-enabled
此标志告诉迁移者是否使用进度机制。如果要以相同的时间范围进行迁移,这将很有帮助。如果启用此功
能,迁移程序将从上次停止/中断的时间恢复迁移。如果在迁移时不需要任何额外的指标,可以将其设置
为 false。但是,如果将其设置为 false,将禁用进度指标,从而禁用恢复迁移的功能。(默认为
true)
-progress-metric-auth-username string
读取远程写入存储的身份验证用户名。
-progress-metric-bearer-token string
读取 bearer-token 用于远程写入存储。这应该与用户名和密码以及持有者令牌文件互斥。
-progress-metric-bearer-token-file string
读取 bearer-token 用于远程写入存储。这应该与用户名和密码以及持有者令牌互斥。
-progress-metric-name string
Prometheus 指标名称,用于跟踪推送到远程写入存储的最后一个最大时间戳。这用于在失败后恢复迁
移过程。(默认为“prom_migrator_progress”)
-progress-metric-password string
远程写入存储的读取身份验证密码。与 password-file 互斥。
-progress-metric-password-file string
远程写入存储的读取身份验证密码。与密码互斥。
-progress-metric-tls-ca-file string
进度指标组件的 TLS CA 文件。
-progress-metric-tls-cert-file string
progress-metric 组件的 TLS 证书文件。
-progress-metric-tls-insecure-skip-verify
进度指标组件的 TLS 不安全跳过验证。
-progress-metric-tls-key-file string
进度指标组件的 TLS 密钥文件。
-progress-metric-tls-server-name string
progress-metric 组件的 TLS 服务器名称。
-progress-metric-url string
包含 progress-metric 的远程存储的 URL。注意:此 url 用于获取上次推送的时间戳。如果希望
迁移从离开的位置恢复,以防发生崩溃,请将其设置为迁移程序正在写入的远程写入存储以及启用进度的
存储。
-reader-auth-bearer-token string
用于远程读取存储的持有者令牌。这应该与用户名和密码以及持有者令牌文件互斥。
-reader-auth-bearer-token-file string
用于远程读取存储的持有者令牌文件。这应该与用户名和密码以及持有者令牌互斥。
-reader-auth-password string
远程读取存储的身份验证密码。与 password-file 互斥。
-reader-auth-password-file string
用于远程读取存储的身份验证密码文件。与密码互斥。
-reader-auth-username string
远程读取存储的身份验证用户名。
-reader-http-header key:value
要与所有读取器请求一起发送的 HTTP 标头。它使用格式 key:value,例如 '-reader-http-header=“X-Scope-OrgID:42”'。可以多次设置,以定义多个标头或同一标头的多个值。
-reader-max-retries int
出错前的最大重试次数。如果将此值设置为 0,则重试过程将永远持续,直到该过程完成。注意:如果不
想重试,请将 on-timeout 或 on-error 的值更改为非重试选项。
-reader-metrics-matcher string
指标向量选择器,用于读取要迁移的数据。(默认 “{__name__=~\”.+\“}”)
-reader-on-error string
当读取过程中发生错误时,读卡器应该如何表现。有效选项:['retry', 'skip', 'abort']。有关
上述选项的更多信息,请参阅“读取器超时”。 (默认“中止”)
-reader-on-timeout string
当在读取过程中发生超时时,读者应该如何表现。有效选项:['retry', 'skip', 'abort']。如果
“重试”,读取器将在延迟后重试获取当前板。如果“跳过”,则读取器将跳过正在读取的当前板,并移动到
下一个板。如果“中止”,迁移过程将中止。(默认为“重试”)
-reader-retry-delay duration
在 prom-migrator 重试获取 slab 之前等待“read-timeout”的持续时间。仅当在 OnTimeout
或 OnErr 中设置了“retry”选项时,才使用延迟。(默认 1 秒)
-reader-timeout duration
从读取存储中提取数据的超时。此超时还用于获取进度指标。(默认 5m0s)
-reader-tls-ca-file string
远程读取组件的 TLS CA 文件。
-reader-tls-cert-file string
远程读取组件的 TLS 证书文件。
-reader-tls-insecure-skip-verify
远程读取组件的 TLS 不安全跳过验证。
-reader-tls-key-file string
远程读取组件的 TLS 密钥文件。
-reader-tls-server-name string
远程读取组件的 TLS 服务器名称。
-reader-url 字符串
要从中读取数据的存储的 URL 地址。
-slab-range-increment duration
在连续板中递增的时间范围量。(默认 1m0s)
-start string
开始时间(RFC3339格式,如“1970-01-01T00:00:00+00:00”,或自 unix 纪元以来的秒数,
UTC)。(含)(默认为“1970-01-01T00:00:00+00:00”)
-writer-auth-bearer-token string
用于远程写入存储的持有者令牌。这应该与用户名和密码以及持有者令牌文件互斥。
-writer-auth-bearer-token-file string
用于远程写入存储的持有者令牌。这应该与用户名和密码以及持有者令牌互斥。
-writer-auth-password string
远程写入存储的身份验证密码。与 password-file 互斥。
-writer-auth-password-file string
用于远程写入存储的身份验证密码文件。与密码互斥。
-writer-auth-username string
远程写入存储的身份验证用户名。
-writer-http-header key:value
要与所有编写器请求一起发送的 HTTP 标头。它使用格式 key:value,例如 '-writer-http-
header=“X-Scope-OrgID:42”'。可以多次设置,以定义多个标头或同一标头的多个值。
-writer-max-retries int
出错前的最大重试次数。如果将此值设置为 0,则重试过程将永远持续,直到该过程完成。注意:如果不
想重试,请将 on-timeout 或 on-error 的值更改为非重试选项。
-writer-on-error string
当写入过程中发生错误时,写入器应如何操作。有效选项:['retry', 'skip', 'abort']。有关上
述选项的更多信息,请参阅“超时写入器”。 (默认“中止”)
-writer-on-timeout string
当在写入过程中发生超时时,编写器应如何操作。有效选项:['retry', 'skip', 'abort']。如果
“重试”,则编写器会在延迟后重试推送当前板。如果“跳过”,则编写器将跳过正在推送的当前板,并移动
到下一个板。如果“中止”,迁移过程将中止。(默认为“重试”)
-writer-retry-delay duration
在“写入超时”之后等待的持续时间,然后 prom-migrator 重试推送 slab。仅当在 OnTimeout 或
OnErr 中设置了“retry”选项时,才使用延迟。(默认 1 秒)
-writer-timeout duration
推送数据写入存储超时。(默认 5m0s)
-writer-tls-ca-file string
远程编写器组件的 TLS CA 文件。
-writer-tls-cert-file string
远程编写器组件的 TLS 证书文件。
-writer-tls-insecure-skip-verify
远程编写器组件的 TLS 不安全跳过验证。
-writer-tls-key-file string
远程编写器组件的 TLS 密钥文件。
-writer-tls-server-name string
远程编写器组件的 TLS 服务器名称。
-writer-url string
要写入数据迁移的存储的 URL 地址。
我的迁移命令:
从Prometheus迁移到TDengine
prom-migrator -start=1606408552 -reader-url='http://10.0.0.10:9090/api/v1/read' -writer-url='http://10.0.0.11:6041/prometheus/v1/remote_write/prometheus' -writer-auth-username='root' -writer-auth-password='[email protected]' -progress-enabled=false -concurrent-push 100000
据我个人的实验验证-concurrent-push
参数不要设置为1,如果设置为1的话 无法将Prometheus数据全部迁移到TDengine,需要设置大一些。