
Prometheus 的 remote_write 如何配置 sigv4 签名认证对接 AWS 服务【免费下载链接】prometheusThe Prometheus monitoring system and time series database.项目地址: https://gitcode.com/GitHub_Trending/pr/prometheus如果你需要把 Prometheus 采集到的样本通过 remote write 推送到要求 AWS SigV4 签名的服务端文档给出的例子是 Amazon Managed Service for Prometheus对应service_name取aps就需要在remote_write配置中启用sigv4签名块。本文基于仓库文档 configuration.md 中remote_write与sigv4的 schema 说明给出配置方法、各字段的适用条件以及配置校验方式。前提你已有一个 Prometheus 主配置文件YAML 格式包含remote_write段你知道目标 remote write 端点的url和 AWS regionAWS 凭证通过配置文件中的access_key/secret_key字段、环境变量、命名 profile 或 STS 角色方式之一提供下文分别说明。在哪里配置scheme、basic_auth等 HTTP 参数之外每个remote_write条目支持一个可选的sigv4字段。schema 中对该块的说明是Optionally configures AWSs Signature Verification 4 signing process to sign requests. Cannot be set at the same time as basic_auth, authorization, oauth2, or azuread. To use the default credentials from the AWS SDK, usesigv4: {}.也就是说sigv4只能二选一它不能与basic_auth、authorization、oauth2、azuread以及google_iam同时配置。文档同时给出了最短写法sigv4: {}表示直接使用 AWS SDK 的默认凭证链不填任何字段。主路径在 remote_write 中启用 sigv4最小可用配置如下。url是必填项缺省时配置校验会报url for remote_write is emptyaccess_key/secret_key处替换为你自己的 AWS 凭证如果这两项留空文档说明会改用环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEYremote_write: - url: 你的 AWS remote write 端点 URL sigv4: region: us-east-1 # 留空则使用默认凭证链中的 region access_key: 你的 AWS access key secret_key: 你的 AWS secret key各字段含义以 configuration.md 中sigv4块的注释为准regionAWS region留空时使用默认凭证链中的 region。access_key/secret_keyAWS API keys留空时使用环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。profile用于认证的命名 AWS profile。role_arnAWS Role ARN作为使用 AWS API keys 的替代方式。external_idAssumeRole 时使用的 AWS External ID只能与role_arn一起使用。session_nameAssumeRole 时映射到 AWS RoleSessionName 的会话名只能与role_arn一起使用必须匹配模式^[\w,.-]{2,64}$。要求 Prometheus 3.15.0。tagsAssumeRole 时用于成本分摊的 STS 会话标签只能与role_arn一起使用tag 键不能为空且不超过 128 字符tag 值不超过 256 字符。要求 Prometheus 3.15.0。service_name用于限定 SigV4 签名范围的 AWS 服务名例如aps对应 Amazon Managed Service for Prometheus。use_fips_sts_endpoint为 AWS STS 端点定义 FIPS 模式默认false。要求 Prometheus 2.54.0。文档特别指出 FIPS STS 的选择应通过该字段配置而不是环境变量——AWS_USE_FIPS_ENDPOINT已经不起作用。可选分支不同凭证来源根据你运行 Prometheus 的环境sigv4块可以有几种写法均来自上述 schema使用 AWS SDK 默认凭证链——不填任何字段remote_write: - url: 你的 AWS remote write 端点 URL sigv4: {}使用命名 profile例如~/.aws/credentials中定义的 profileremote_write: - url: 你的 AWS remote write 端点 URL sigv4: region: us-east-1 profile: 你的 AWS profile 名通过 STS AssumeRole 用角色替代 API keys可附带external_id、session_name与tags后两者需要 Prometheus 3.15.0字段版本要求见上一节remote_write: - url: 你的 AWS remote write 端点 URL sigv4: region: us-east-1 role_arn: 你的 Role ARN external_id: 你的 External ID service_name: aps # 对接 Amazon Managed Service for Prometheus 时如果你要对接的就是 Amazon Managed Service for Prometheus注意service_name取aps这是文档注释中明确给出的示例值。互斥认证与校验报错配置多个互斥认证项时Prometheus 会在加载配置阶段拒绝该配置。config.go 中validateAuthConfigs的检查逻辑是在basic_auth、authorization、oauth2、sigv4、azuread、google_iam中最多只能配置一个否则报错at most one of basic_auth, authorization, oauth2, sigv4, azuread or google_iam must be configured. Currently configured: [basic_auth sigv4]Currently configured后面列出的是你实际同时配置的那些项。同理authorization头也不能通过headers自定义必须经由上述认证参数配置。验证配置修改完主配置文件后用 promtool 检查配置文件是否有效命令见 promtool.md 中promtool check config一节promtool check config 你的 prometheus 配置文件路径该命令的用途是 “Check if the config files are valid or not”通过说明url、sigv4等字段与互斥认证规则都校验合格。之后把配置应用到 Prometheus重启或重载即可生效对接签名端点的运行时表现取决于目标服务是否接受该签名文档未提供额外的运行时验证步骤。版本限制小结字段 / 行为版本要求来自文档session_name、tagsPrometheus 3.15.0use_fips_sts_endpointPrometheus 2.54.0external_id支持见 CHANGELOG.md 中 “HTTP client: Add AWSexternal_idsupport for sigv4”service_name、session_name、tags文档化 / sigv4 模块升级见 CHANGELOG.md “main / unreleased” 条目如果你的版本早于 3.15.0session_name与tags这两个字段不可用需要升级到满足要求的版本后再配置。【免费下载链接】prometheusThe Prometheus monitoring system and time series database.项目地址: https://gitcode.com/GitHub_Trending/pr/prometheus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考