资讯动态

VictoriaMetrics 组件对接云对象存储实战指南:S3 / GCS / Azure Blob 备份与规则读取

发布时间:2026/9/13 21:18:38 来源:尧图企业网站定制
VictoriaMetrics 组件对接云对象存储实战指南S3 / GCS / Azure Blob 备份与规则读取【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics本文是 VictoriaMetrics 各组件的云存储接入指南涵盖 vmbackup、vmrestore、vmbackupmanager 与 vmalertEnterprise如何连接 AWS S3、S3 兼容存储MinIO、Ceph、Google Cloud Storage 与 Azure Blob Storage。读者将掌握从凭据获取、认证配置、命令行参数到自建 S3 端点寻址模式的一整套可落地方案并理解这些组件在底层共享的存储抽象与参数解析逻辑。支持的组件与存储类型一览以下组件均支持以s3://、gs://、azblob://前缀在命令行中指定远端对象存储路径用于备份写入、恢复读取或规则文件加载组件AWS S3 及 S3 兼容存储Google Cloud StorageAzure Blob Storagevmbackup✅✅✅vmrestore✅✅✅vmbackupmanager✅✅✅vmalert✅✅❌这些组件使用同一套底层库lib/backup下的s3remote、gcsremote、azremote因此认证方式高度一致主要差异在于命令行 flag 的命名前缀vmalert 使用-s3.*前缀的 flag如-s3.credsFilePathvmbackup / vmrestore / vmbackupmanager 使用无前缀的 flag如-credsFilePath。这一差异的根源在于各组件的 flag 注册位置不同备份/恢复类组件的 S3/GCS 参数统一注册在 lib/backup/actions/util.go而 vmalert 在 app/vmalert/main.go 中注册自己的-rule参数并对 S3/GCS 路径做了前缀匹配支持。各组件的完整 flag 对照表见文末「逐组件 flag 对照表」一节。获取云存储凭据组件需要凭据才能访问对象存储不同云厂商的获取方式如下。AWS S3在 AWS 中创建 IAM 用户或角色为其授予目标 bucket 所需的最小权限见下表。为该 IAM 身份创建 Access Key。记录Access key ID与Secret access key后续写入凭据文件或环境变量。各组件所需的最小 S3 权限组件S3 用途最小 S3 权限vmalertEnterprise从 bucket 读取告警/录制规则规则 bucket/前缀上的s3:GetObject、s3:ListBucketvmrestore从 S3 bucket 恢复备份备份 bucket/前缀上的s3:GetObject、s3:ListBucketvmbackup上传备份到 S3并在维护期间可能删除旧备份对象备份 bucket/前缀上的s3:PutObject、s3:GetObject、s3:ListBucket、s3:DeleteObjectvmbackupmanagerEnterprise基于 vmbackup 行为自动化备份与 vmbackup 相同说明权限按最小化原则授予请将权限范围限定在目标 bucket 及其前缀上避免使用过宽的桶级或账户级策略。S3 兼容存储MinIO、Ceph使用存储系统自带的控制台或 CLI 生成 Access Key 即可凭据格式与 AWS S3 完全一致。Google Cloud Storage打开 Google Cloud Console进入IAM Admin Service Accounts。点击Create service account填写名称并分配存储角色例如 Storage Object Admin。打开该服务账号进入Keys点击Add key Create new key。密钥类型选择JSON并点击Create。将下载的 JSON 文件保存在运行 VictoriaMetrics 组件的机器上。Azure Blob StorageAzure 不支持凭据文件必须使用环境变量。登录 Azure Portal。搜索并选择Storage accounts。点击具体的存储账号名称即AZURE_STORAGE_ACCOUNT_NAME。在左侧Security networking菜单中点击Access keys。复制key1或key2的密钥值即AZURE_STORAGE_ACCOUNT_KEY。将账号名与密钥定义为环境变量export AZURE_STORAGE_ACCOUNT_NAMEmystorageaccount export AZURE_STORAGE_ACCOUNT_KEYmyaccountkey认证方式与 bucket 地址语法凭据可通过文件或环境变量提供同时需要指定云存储 bucket 的地址。bucket 名称的语法取决于云厂商s3://AWS S3 以及自建的 S3 兼容存储MinIO、Cephgs://Google Cloud Storageazblob://Azure Blob Storage在源码层面地址解析发生在 lib/backup/actions/util.go 的NewRemoteFS函数中它从路径中提取://前的 scheme依次匹配fs、gcs/gs、azblob、s3分支并将 scheme 之后的 bucket 名与目录拆分后交给对应的远程 FS 实现fsremote、gcsremote、azremote、s3remote。若路径中缺少://会直接报错missing scheme in path并提示支持gs://、s3://、azblob://、fs://四种 scheme。vmbackup 与 vmrestore使用凭据文件备份到 AWS S3 bucketvmbackup \ -storageDataPath/data \ -snapshot.createURLhttp://localhost:8428/snapshot/create \ -dsts3://victoriametrics-backup/backup01 \ -credsFilePath/etc/credentials从同一个备份恢复vmrestore \ -srcs3://victoriametrics-backup/backup01 \ -storageDataPath/data \ -credsFilePath/etc/credentials若要使用 MinIO、Ceph 等非 AWS S3 bucket必须额外提供-customS3Endpoint参数详见「自建与 S3 兼容端点」一节。也可以不写凭据文件改用环境变量提供 Access Keyexport AWS_ACCESS_KEY_IDYOUR_AWS_ACCESS_KEY export AWS_SECRET_ACCESS_KEYYOUR_SECRET_AWS_ACCESS_KEY vmbackup \ -storageDataPath/data \ -snapshot.createURLhttp://localhost:8428/snapshot/create \ -dsts3://victoriametrics-backup/backup01 vmrestore \ -srcs3://victoriametrics-backup/backup01 \ -storageDataPath/dataGoogle Cloud Storage 备份使用gs://前缀vmbackup \ -storageDataPath/data \ -snapshot.createURLhttp://localhost:8428/snapshot/create \ -dstgs://victoriametrics-backup/backup01 \ -credsFilePath/etc/credentials恢复vmrestore \ -srcgs://victoriametrics-backup/backup01 \ -storageDataPath/data \ -credsFilePath/etc/credentials在 Google Cloud 上也可以用GOOGLE_APPLICATION_CREDENTIALS指定 JSON 凭据文件路径export GOOGLE_APPLICATION_CREDENTIALS/etc/credentials vmbackup \ -storageDataPath/data \ -snapshot.createURLhttp://localhost:8428/snapshot/create \ -dstgs://victoriametrics-backup/backup01 vmrestore \ -srcgs://victoriametrics-backup/backup01 \ -storageDataPath/dataAzure Blob Storage 使用azblob://前缀并依赖环境变量而非-credsFilePathexport AZURE_STORAGE_ACCOUNT_NAMEmyaccount export AZURE_STORAGE_ACCOUNT_KEYmykey vmbackup \ -storageDataPath/data \ -snapshot.createURLhttp://localhost:8428/snapshot/create \ -dstazblob://victoriametrics-backup/backup01 vmrestore \ -srcazblob://victoriametrics-backup/backup01 \ -storageDataPath/data关于 vmbackup 的补充说明来自 app/vmbackup/main.go 的 flag 定义-dst支持gs://、s3://、azblob://、fs://四种 scheme其中fs://用于本地文件系统备份目录-dst可以指向之前的备份此时执行增量备份仅上传变化的数据若使用自定义 S3 端点URL 中只应包含 bucket 名S3 服务器的主机名必须通过-customS3Endpoint指定-snapshot.createURL指向 VictoriaMetrics 的http://victoriametrics:8428/snapshot/create接口备份前会自动创建快照备份完成后自动删除若未显式提供-snapshot.deleteURL会由 create URL 自动推导-concurrency默认 10控制并发 worker 数量-maxBytesPerSecond可限制上传带宽上限0 表示不限速。vmbackupmanagervmbackupmanager 仅在 Enterprise 版本中可用。在 AWS S3 上使用 vmbackupmanager 管理备份通过-credsFilePath传入凭据vmbackupmanager \ -dsts3://vmstorage-data/backups \ -credsFilePath/etc/credentials \ -storageDataPath/vmstorage-data \ -snapshot.createURLhttp://vmstorage:8482/snapshot/create \ -licenseFile/etc/vm-license或用环境变量提供 Access Keyexport AWS_ACCESS_KEY_IDYOUR_AWS_ACCESS_KEY export AWS_SECRET_ACCESS_KEYYOUR_SECRET_AWS_ACCESS_KEY vmbackupmanager \ -dsts3://vmstorage-data/backups \ -storageDataPath/vmstorage-data \ -snapshot.createURLhttp://vmstorage:8482/snapshot/create \ -licenseFile/etc/vm-license使用非 AWS S3 bucket 时必须提供-customS3Endpoint参数。Google Cloud Storage 上的自动化备份vmbackupmanager \ -dstgs://vmstorage-data/backups \ -credsFilePath/etc/credentials \ -storageDataPath/vmstorage-data \ -snapshot.createURLhttp://vmstorage:8482/snapshot/create \ -licenseFile/etc/vm-license同样可以用GOOGLE_APPLICATION_CREDENTIALS指定 JSON 凭据文件export GOOGLE_APPLICATION_CREDENTIALS/etc/credentials vmbackupmanager \ -dstgs://vmstorage-data/backups \ -storageDataPath/vmstorage-data \ -snapshot.createURLhttp://vmstorage:8482/snapshot/create \ -licenseFile/etc/vm-licensevmbackupmanager 也支持通过环境变量使用 Azure Blob Storageexport AZURE_STORAGE_ACCOUNT_NAMEmystorageaccount export AZURE_STORAGE_ACCOUNT_KEYmyaccountkey vmbackupmanager \ -dstazblob://vmstorage-data/backups \ -storageDataPath/vmstorage-data \ -snapshot.createURLhttp://vmstorage:8482/snapshot/create \ -licenseFile/etc/vm-licensevmalertvmalert 的云存储 flag 统一使用-s3.前缀对 S3 bucket和Google Cloud Storage 均适用。云存储规则读取仅在 Enterprise 版本中可用。从 S3 bucket 读取告警规则。-ruleflag 接受前缀因此rules/alerts_会匹配rules目录下所有以alerts_开头的文件vmalert \ -rules3://my-alert-bucket/rules/alerts_ \ -s3.credsFilePath/etc/vmalert/aws-credentials \ -datasource.urlhttp://vmselect:8481/select/0/prometheus \ -notifier.urlhttp://alertmanager:9093 \ -licenseFile/etc/vm-license也可以用环境变量提供 Access Keyexport AWS_ACCESS_KEY_IDYOUR_AWS_ACCESS_KEY export AWS_SECRET_ACCESS_KEYYOUR_SECRET_AWS_ACCESS_KEY vmalert \ -rules3://my-alert-bucket/rules/alerts_ \ -datasource.urlhttp://vmselect:8481/select/0/prometheus \ -notifier.urlhttp://alertmanager:9093 \ -licenseFile/etc/vm-license使用非 AWS S3 bucket 时必须提供-s3.customEndpoint参数。从 Google Cloud Storage 读取规则vmalert \ -rulegs://my-alert-bucket/rules/alerts_ \ -s3.credsFilePath/etc/vmalert/gcp-service-account.json \ -datasource.urlhttp://vmselect:8481/select/0/prometheus \ -notifier.urlhttp://alertmanager:9093 \ -licenseFile/etc/vm-license也可以使用GOOGLE_APPLICATION_CREDENTIALS环境变量指定 JSON 凭据文件路径export GOOGLE_APPLICATION_CREDENTIALS/etc/credentials vmalert \ -rulegs://my-alert-bucket/rules/alerts_ \ -datasource.urlhttp://vmselect:8481/select/0/prometheus \ -notifier.urlhttp://alertmanager:9093 \ -licenseFile/etc/vm-license关于 vmalert 的-rule参数来自 app/vmalert/main.go 的定义需要注意几点本地路径、HTTP URL 与s3://、gs://路径均可使用且支持 glob 层级模式与正则S3 与 GCS 路径仅支持前缀匹配例如s3://bucket/dir/rule_会匹配dir目录下所有以rule_为前缀的文件规则文件支持 YAML 多文档也支持%{ENV_VAR}占位符启动时会替换为对应的环境变量值配合-configCheckInterval可以定期检查-rule、-rule.templates与-notifier.config的变更并自动重载默认关闭也可发送 SIGHUP 信号强制检查。凭据文件格式凭据文件的具体格式取决于存储厂商。S3 凭据文件文件采用 AWS CLI 与 AWS SDK 通用的共享凭据格式[default] aws_access_key_idYOUR_AWS_ACCESS_KEY aws_secret_access_keyYOUR_SECRET_AWS_ACCESS_KEY一个文件可以定义多个 profile[default] aws_access_key_idDEFAULT_ACCESS_KEY aws_secret_access_keyDEFAULT_SECRET_KEY [monitoring] aws_access_key_idMONITORING_ACCESS_KEY aws_secret_access_keyMONITORING_SECRET_KEY [alerts] aws_access_key_idALERTS_ACCESS_KEY aws_secret_access_keyALERTS_SECRET_KEY使用-configProfileflagvmalert 中为-s3.configProfile选择非默认 profile-configProfilealerts也可以把凭据与其他配置分离凭据放一个文件非敏感配置如 region放另一个文件# /etc/credentials —— 凭据 [default] aws_access_key_idDEFAULT_ACCESS_KEY aws_secret_access_keyDEFAULT_SECRET_KEY# /etc/aws-config —— 配置 [default] regionus-east-1然后同时传入两个文件-configFilePath/etc/aws-config \ -credsFilePath/etc/credentialsGCS 凭据文件格式文件即从 Google Cloud Console 下载的 JSON 服务账号密钥内容形如{ type: service_account, project_id: project-id, private_key_id: key-id, private_key: -----BEGIN PRIVATE KEY-----\nprivate-key\n-----END PRIVATE KEY-----\n, client_email: service-account-email, client_id: client-id, auth_uri: https://accounts.google.com/o/oauth2/auth, token_uri: https://accounts.google.com/o/oauth2/token, auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs, client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/service-account-email }这是 Google Cloud IAM 定义的标准服务账号密钥格式。Azure Blob StorageAzure 不支持凭据文件必须使用环境变量export AZURE_STORAGE_ACCOUNT_NAMEmystorageaccount export AZURE_STORAGE_ACCOUNT_KEYmyaccountkey自建与 S3 兼容端点对于 MinIO、Ceph 等 S3 兼容存储需要为 vmbackup、vmrestore、vmbackupmanager 设置-customS3Endpointflag例如vmbackup \ -storageDataPath/data \ -snapshot.createURLhttp://localhost:8428/snapshot/create \ -dsts3://victoriametrics-backup/backup01 \ -customS3Endpointhttp://minio.example.local:9000vmalert 则使用-s3.customEndpointvmalert \ -rules3://my-alert-bucket/rules/alerts_ \ -s3.customEndpointhttp://minio.example.local:9000 \ -s3.credsFilePath/etc/vmalert/aws-credentials \ -datasource.urlhttp://vmselect:8481/select/0/prometheus \ -notifier.urlhttp://alertmanager:9093 \ -licenseFile/etc/vm-license在 lib/awsapi/config.go 的buildAPIEndpoint中可以看到自定义端点的处理逻辑未设置customEndpoint时端点自动按https://service.region.amazonaws.com/拼接设置了自定义端点后若端点只包含主机名不含://会自动补全为https://前缀并确保以/结尾。也就是说-customS3Endpointminio.example.local:9000与-customS3Endpointhttp://minio.example.local:9000都是可接受的写法。S3 兼容 bucket 的寻址方式连接非 AWS 的 S3 兼容 bucket 时可能还需要配置一个额外的 flag-s3ForcePathStyle用于 vmbackupmanager、vmbackup、vmrestore-s3.forcePathStyle用于 vmalert。该 flag 改变 bucket 的期望 URL 模式Flag 取值寻址风格示例适用场景true默认Path-stylehttps://endpoint/bucket/keyMinIO、Ceph 及大多数 S3 兼容存储falseVirtual host-stylehttps://bucket.endpoint/keyAliyun OSS 等要求该模式的端点该 flag 仅在使用自定义端点vmbackup 系为-customS3Endpointvmalert 为-s3.customEndpoint时生效连接真实 AWS S3 时SDK 会自动处理寻址方式。在源码中-s3ForcePathStyle的默认值为true见 lib/backup/actions/util.go并通过s3remote.FS结构体传入底层 SDK。逐组件 flag 对照表下表汇总同一概念在不同组件间的 flag 命名差异概念vmalertvmbackup、vmrestore、vmbackupmanager凭据文件-s3.credsFilePath-credsFilePath配置文件-s3.configFilePath-configFilePathProfile 选择-s3.configProfile-configProfile自定义端点-s3.customEndpoint-customS3Endpoint强制 Path-style 寻址-s3.forcePathStyle-s3ForcePathStyleTLS 跳过校验无-s3TLSInsecureSkipVerify存储类型Storage Class无-s3StorageClass除了对照表中的基础项备份/恢复类组件在 lib/backup/actions/util.go 中还注册了一批可选的进阶 S3 flag供有特殊需求的环境使用-s3ACL上传对象时设置的 ACL支持private、public-read、authenticated-read、bucket-owner-full-control等值默认不发送 ACL 头-s3StorageClass上传对象的存储类型支持STANDARD、STANDARD_IA、GLACIER、DEEP_ARCHIVE、INTELLIGENT_TIERING、ONEZONE_IA等-s3ChecksumAlgorithm上传时的完整性校验算法支持SHA256、SHA1、CRC32C、CRC32-s3SSEKMSKeyId/-s3SSEAlgorithm服务端加密SSE-KMS的密钥 ID 与算法默认算法为aws:kms-s3TLSInsecureSkipVerify连接 S3 端点时是否跳过 TLS 校验默认false仅在自建端点使用自签名证书时按需开启-s3ObjectTags为上传对象设置的 S3 标签JSON 格式如{env:prod}-objectMetadata为上传到对象存储的对象设置的元数据JSON 格式对本地文件系统忽略。这些 flag 与基础凭据参数一起在NewRemoteFS中组装进s3remote.FS结构体后交给底层 SDK 完成连接见 lib/backup/actions/util.go。小结与选型建议综合来看把 VictoriaMetrics 组件接入云存储的核心要点有三条凭据策略AWS S3 / S3 兼容存储用 ini 凭据文件支持多 profile 与配置分离或AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量GCS 用服务账号 JSON 文件或GOOGLE_APPLICATION_CREDENTIALSAzure 只能用AZURE_STORAGE_ACCOUNT_NAME/AZURE_STORAGE_ACCOUNT_KEY环境变量。端点与寻址连接真实 AWS S3 无需额外配置连接 MinIO、Ceph 等自建端点必须显式设置自定义端点并按存储要求选择 Path-style默认true或 Virtual host-style 寻址。Flag 前缀差异vmbackup / vmrestore / vmbackupmanager 与 vmalert 的 flag 命名规则不同前者无前缀、后者带-s3.前缀配置时注意对照「逐组件 flag 对照表」避免写错。备份链路建议采用「vmbackup 定时全量/增量备份 vmbackupmanager 自动化管理 vmrestore 恢复」的组合若需将告警/录制规则托管在对象存储中统一管理vmalertEnterprise的-rules3://.../-rulegs://...前缀匹配能力可以直接从 bucket 加载规则文件减少配置分发成本。【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价