托管 Prometheus 服务正式计费之前,为您提供的免费标准版实例 vmp.standard.30d 将在正式计费之后对自定义指标和云服务基础指标进行收费。
为了满足您对云基础指标的免费使用需求,托管 Prometheus 服务新推出 vmp.standard.15d 规格实例,并为您继续提供云服务基础指标的免费策略。如果您的存量实例(vmp.standard.30d)需要继续享受此免费策略,需要将旧的 vmp.standard.30d 规格实例的数据迁移到新推出的 vmp.standard.15d 规格实例中。本文为您介绍如何完成不同规格实例间的数据迁移。
说明
不同实例规格的计费详情,请参考 计费概述。
本文提供两种迁移方案,每种方案有不同的成本和影响,您可以根据实际情况选择。
迁移方案 | 方案说明 | 方案影响 |
---|---|---|
直接迁移 | 直接将采集器的写入地址从旧工作区切换到新工作区。 |
说明 旧工作区写入流量停止,且 Recording Rules 不产生新结果后,如无任何数据写入,旧工作区实例将不产生费用。 |
双写迁移 | 在迁移阶段,同时往新旧两个工作区写入一样的指标数据(数据双写),过程通常需要至少持续两个规格最小的存储天数。迁移阶段结束后,删除旧工作区的写入配置,数据仅写入新的工作区。 | 迁移阶段通常需要至少持续新旧两个规格最小的存储天数,期间会产生额外的成本,具体如下:
|
说明
本文介绍的迁移方案,只涉及采集方案或采集器。不同的采集方案会有不同的流程:
如果您使用自定义的采集器进行数据采集,也可以参照本文的迁移思路进行处理。
标准版实例迁移方案示意图,如下图所示。
配置项 | 说明 |
---|---|
$namespace | 采集器的命名空间。 |
$agent_name | 采集器的名称。 |
$remote_write_url | 新工作区 Remote Write URL。 |
$basic_auth_username | 新工作区 Basic Auth 认证用户名。 |
$basic_auth\password | 新工作区 Basic Auth 认证密码。 |
$ak | 新工作区 AK。 |
$sk | 新工作区 SK。 |
$region | 地域。 |
将旧工作区的所有告警规则,迁移到新工作区下。步骤如下:
说明
迁移告警规则后,该规则下的旧的告警事件状态将被置为 人工解除 状态。
将旧工作区的所有 Recording Rules,迁移到新工作区下。步骤如下:
bash -c 'kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: vmagent-basic-auth-new namespace: $namespace labels: app: vmagent stringData: username: $basic_auth_username password: $basic_auth_password EOF'
kubectl -n $namespace edit vmagent vmagent
remoteWrite: - url: $remote_write_url basicAuth: username: name: vmagent-basic-auth-new key: username password: name: vmagent-basic-auth-new key: password
bash -c 'if [ "$(kubectl -n $namespace get secrets $agent_name)" ]; then echo "v2"; else echo "v1"; fi'
kubectl -n $namespace edit configmaps $agent_name
remote_write: - url: $remote_write_url basic_auth: username: $basic_auth_username password: $basic_auth_password # 若认证方式为 AKSK,需将 basic_auth 替换成如下的 volc #volc: # region: $region # access_key: $ak # secret_key: $sk
kubectl -n $namespace edit configmaps $agent_name
remote_write: - url: $remote_write_url
kubectl -n $namespace edit secret $agent_name
stringData: remote_write.0.basic_auth.username: $basic_auth_username remote_write.0.basic_auth.password: $basic_auth_password # 若认证方式为 AKSK,需将上述两行替换成如下三行 #remote_write.0.volc.access_key: $ak #remote_write.0.volc.secret_key: $sk #remote_write.0.volc.region: $region
将旧工作区的所有告警规则,迁移到新工作区下。步骤如下:
说明
迁移告警规则后,该规则下的旧的告警事件状态将被置为 人工解除 状态。
将旧工作区的所有 Recording Rules,迁移到新工作区下。步骤如下:
bash -c 'kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: vmagent-basic-auth-new namespace: $namespace labels: app: vmagent stringData: username: $basic_auth_username password: $basic_auth_password EOF'
kubectl -n $namespace edit vmagent vmagent
remoteWrite: - url: $remote_write_url # 添加新工作区的相关配置 basicAuth: username: name: vmagent-basic-auth-new key: username password: name: vmagent-basic-auth-new key: password - url: http://xxx... # 此处为旧工作区的相关配置 basicAuth: username: name: vmagent-basic-auth key: username password: name: vmagent-basic-auth key: password
bash -c 'if [ "$(kubectl -n $namespace get secrets $agent_name)" ]; then echo "v2"; else echo "v1"; fi'
kubectl -n $namespace edit configmaps $agent_name
remote_write: - url: $remote_write_url # 填写新工作区的相关信息 basic_auth: username: $basic_auth_username password: $basic_auth_password # 若认证方式为 AKSK,需将 basic_auth 替换成如下的 volc #volc: # region: $region # access_key: $ak # secret_key: $sk - url: http://xxx.... # 此处为旧工作区的相关信息 volc: region: $region access_key: $ak secret_key: $sk
kubectl -n $namespace edit configmaps $agent_name
remote_write: - url: $remote_write_url # 添加新工作区的 RemoteWrite URL 地址。 - url: http://xxx.... # 此处为旧工作区的配置,需要按序下移
kubectl -n $namespace edit secret $agent_name
stringData: remote_write.0.basic_auth.username: $basic_auth_username remote_write.0.basic_auth.password: $basic_auth_password # 若认证方式为 AKSK,需将上述两行替换成如下三行 #remote_write.0.volc.access_key: $ak #remote_write.0.volc.secret_key: $sk #remote_write.0.volc.region: $region remote_write.1.volc.access_key: ... # 需要将原有配置按序下移,需要修改 remote_write.x remote_write.1.volc.secret_key: ...
kubectl -n kube-system edit configmaps prometheus-agent
remote_write: - url: $remote_write_url # 添加新工作区的相关配置 basic_auth: username: $basic_auth_username password: $basic_auth_password # 若认证方式为 AKSK,需将 basic_auth 替换成如下的 volc #volc: # region: $region # access_key: $ak # secret_key: $sk - url: http://xxx.... # 此处为旧工作区的相关配置 volc: region: $region access_key: $ak secret_key: $sk
说明
双写持续新旧两个规格工作区的最小存储天数后,即可开始删除采集器旧工作区写入配置。
kubectl -n $namespace edit vmagent vmagent
remoteWrite: - url: $remote_write_url basicAuth: username: name: vmagent-basic-auth-new key: username password: name: vmagent-basic-auth-new key: password - url: http://xxx... # 删除旧工作区配置 basicAuth: username: name: vmagent-basic-auth key: username password: name: vmagent-basic-auth key: password
bash -c 'if [ "$(kubectl -n $namespace get secrets $agent_name)" ]; then echo "v2"; else echo "v1"; fi'
kubectl -n $namespace edit configmaps $agent_name
remote_write: - url: $remote_write_url basic_auth: username: $basic_auth_username password: $basic_auth_password # 若认证方式为 AKSK,需将 basic_auth 替换成如下的 volc #volc: # region: $region # access_key: $ak # secret_key: $sk - url: http://.... # 删除旧工作区的配置 volc: region: $region access_key: $ak secret_key: $sk
kubectl -n $namespace edit configmaps $agent_name
- url: $remote_write_url - url: http://.... # 删除旧工作区的配置
kubectl -n $namespace edit secret $agent_name
stringData: remote_write.0.basic_auth.username: $basic_auth_username remote_write.0.basic_auth.password: $basic_auth_password # 若认证方式为 AKSK,需将上述两行替换成如下三行 #remote_write.0.volc.access_key: $ak #remote_write.0.volc.secret_key: $sk #remote_write.0.volc.region: $region remote_write.1.volc.access_key: ... # 需要将原有配置按序提前,需要修改 remote_write.x remote_write.1.volc.secret_key: ...
迁移完成后,您可以根据需求,删除旧工作区。具体操作,请参见 管理工作区。
警告
删除旧工作区后,您的历史数据将会被完全清除,无法恢复,请谨慎操作!