You need to enable JavaScript to run this app.
文档中心
云监控

云监控

复制全文
下载 pdf
导出监控数据到 Prometheus
导出监控数据到自建 Prometheus
复制全文
下载 pdf
导出监控数据到自建 Prometheus
如果您在云下已有完善的企业管理系统,可以通过云监控提供的监控数据导出工具 Exporter,将云上数据实时导出到线下进行统一监控,并持续写入 Prometheus。​
说明​
该功能目前处于公测阶段,暂时免费使用。如需使用,请在开通按量计费后联系您的客户经理。​
背景信息​
导出监控数据到自建 Prometheus 提供 Scrape 和 Remote Write 两种方式 ,在架构、数据流向、适用场景上存在显著差异。​
​
对比维度​
Scrape(主动拉取)​
Remote Write(远程写入)​
数据流向​
Pull 拉取模式,Prometheus 服务端主动向监控目标发起指标请求​
Push 推送模式,采集客户端主动将指标数据推送至远端 Prometheus 服务端​
适配集群量级​
适用于中小型监控集群,节点规模量级较小​
适用于中大型、超大规模集群,节点规模量级较大​
典型应用场景​
  • 同网段无隔离内网环境​
  • 物理服务器、常驻业务服务监控​
  • 追求架构极简、无扩容需求的业务场景​
  • 需本地快速查询、实时告警的监控场景​
  • 跨机房、跨网段、多云隔离网络环境​
  • 大规模 Kubernetes 容器集群​
  • 短生命周期容器、临时任务监控​
  • 多区域监控数据统一汇聚汇总的场景​
​
前提条件​
已经获取拥有云监控读权限 CloudMonitorReadOnlyAccess 的 AK、SK,以备 Exporter 运行使用。更多详细说明参见:访问密钥使用指南。​
使用限制​
  • Exporter 目前仅支持导出 Gauge 类型的数据。​
  • Exporter 1.4.0 及以上版本支持通过 Remote Write 方式导出数据。​
  • Exporter 通过请求GetMetricData接口获取监控数据,会占用接口 Quota,超限后获取指标会被限制。​
  • 若需要调用的指标和对象较多,可能会因为限频导致拉取失败,建议尽量将请求按照时间维度均摊。​
操作步骤​
Exporter 通过 OpenAPI 调用云监控指标数据,以 Prometheus 协议对外导出指标,您可以配置 Prometheus 采集任务进行数据采集。​
​
方式一:通过 Remote Write 方式导出数据
方式二:通过 Scrape 方式导出数据
​
步骤一:开启 Remote Write 功能​
  1. 打开乱序写入的窗口。​
  • ​
    storage:​
    tsdb:​
    out_of_order_time_window: 10m​
    ​
  1. 开启 Prometheus 的 Remote Write 能力。​
  • ​
    # 在Prometheus的启动项中增加: --web.enable-remote-write-receiver参数​
    ./prometheus --web.enable-remote-write-receiver​
    ​
步骤二:安装 Exporter 插件​
​
Kubernetes 安装 Exporter
Docker 安装 Exporter
虚拟机安装 Exporter
​
  1. 在 Kubernetes 集群中创建配置项。​
​
apiVersion: v1​
kind: ConfigMap​
metadata:​
name: cloud-monitor-exporter-conf​
data:​
conf.yaml: |​
Credentials:​
AccessKey: "********"​
SecretKey: "********"​
Region: "cn-beijing"​
ServiceName: cloudmonitor​
Host: cloudmonitor.cn-beijing.volcengineapi.com​
MaxRetries: 3​
BatchInstanceCount: 50​
DataQueueSize: 100​
DataConcurrency: 10​
MetaFreshIntervalSeconds: 60​
DataFreshIntervalSeconds: 60​
Limiter:​
LimitQPSGetMetricData: 9​
LimitQPSMonitorObjectList: 9​
BehaviorWhenPullTimeout: SkipMissExecute​
StatisticsType: "LAST"​
Products:​
- Namespace: "VCM_Kafka"​
- Namespace: "VCM_ECS"​
RemoteWrites:​
- Name: "my-prometheus"​
EndPoint: "https://prometheus.example.com/api/v1/write"​
Username: "admin"​
Password: "${PROMETHEUS_PASSWORD}"​
MaxWaitTime: "10s"​
HTTPWriteConcurrency: 16​
RetryCount: 3​
GlobalLabel:​
cluster: "production"​
region: "beijing"​
Scope:​
- self-metric​
- cloud-monitor​
​
  1. 根据实际情况配置 YAML 文件,然后在您的 Kubernetes 集群中安装 Exporter。​
​
apiVersion: apps/v1​
kind: Deployment​
metadata:​
name: cloud-monitor-exporter​
spec:​
replicas: 1​
selector:​
matchLabels:​
app: cloud-monitor-exporter​
template:​
metadata:​
labels:​
app: cloud-monitor-exporter​
annotations:​
prometheus.io/scrape: "true"​
prometheus.io/port: "9898"​
spec:​
containers:​
- name: cloud-monitor-exporter​
image: cloud-monitor-cn-beijing.cr.volces.com/cm/cloud-monitor-exporter:v1.2.0​
args:​
- "--config=/conf/conf.yaml"​
- "--port=9898"​
resources:​
limits:​
memory: "128Mi"​
cpu: "500m"​
ports:​
- containerPort: 9898​
volumeMounts:​
- name: conf​
mountPath: /conf​
volumes:​
- name: conf​
configMap:​
name: cloud-monitor-exporter-conf​
​
​
​
结果验证​
​Image​​
​
参数​
说明​
指标名​
Exporter 导出的指标名为metricName_subNamespace_namespace。​
示例中 MetricName 为AggregatedMemUtil,SubNamespace 为aggregated_server,Namespace 为VCM_Redis,因此,实际导出的指标名为AggregatedMemUtil_aggregated_server_VCM_Redis。​
指标数值​
数值对应的 value 为 Float 类型,如果需要显示小数点后两位,请手动处理。​
时间戳​
GetMetricData动作返回的时间。产品当前指标的时间 = GetMetricData 返回的时间 - DelaySeconds 时间。​
例如:调用GetMetricData接口查询指标的时间是 10:00:00,用户配置的DelaySeconds为300 秒(5 分钟),那么10:05:00 时才会查询到 10:00:00 的数据。​
​
更多说明​
启动参数​
​
-config string​
# 配置文件路径 (default "/conf/config.yaml")​
-enable-self-metrics​
# 是否启用自监控指标, 可选true/false (default true)​
-host string​
# exporter 监听 EndPoint (default "0.0.0.0")​
-log-level string​
# 日志级别, 可选:​
# - panic​
# - fatal​
# - error​
# - warn/warning​
# - info​
# - debug​
# - trace​
# 对大小写不敏感 (default "info")​
-port int​
# exporter 监听端口 (default 9898)​
​
全局配置​
Exporter 提供了高度自定义的配置,不仅提供了简单场景下的简易配置能力,还可以适配多种极端场景。​
注意​
  • 不同地域的服务接入地址Host不同,本例中以 cn-beijing 地域为例。实际操作时,请注意将如下代码中的Host更换为正确的地址。详情请参见 服务地址。​
  • 部分云产品属于全域产品,没有地域限制。此时,Host 根据请求发起环境就近选择 服务地址 中开通地域的接入地址,同时请求头中的Region须配置为该地域的RegionId。​
  • subnamespace 的取值请参见各云产品指标文档的 SubNamespace 列。详情请参见 云监控指标查询。​
  • metricname 的取值请参见各云产品指标文档的 MetricName 列。详情请参见 云监控指标查询。​
​
# 用户的认证信息​
Credentials: <Credentials>​
​
# 指定 Exporter 发起 API 请求的域名​
[ Host: <String> | default = "cloudmonitor.cn-beijing.volcengineapi.com" ]​
​
# 选填,是否禁用SSL连接,默认为false,使用https请求 [exporter版本>=v1.0.21]​
[ DisableSSL: <true|false> | default = false ]​
​
# 获取指定 Region 的数据​
[ Region: <String> | default = "cn-beijing"]​
​
# 调用 API 的 5xx 状态码以及限流的重试次数​
[ MaxRetries: <Integer> | default = 3, range = [1, 3] ]​
​
# 每次拉取指标的请求最大实例数量​
[ BatchInstanceCount: <Integer> | default = 50, range = [1, 50] ]​
​
# 内部请求体的队列长度​
[ DataQueueSize: <Integer> | default = 100, range = [1, +] ]​
​
# 执行拉取的线程数​
[ DataConcurrency: <Integer> | default = 10, range = [1, +] ]​
​
# 元数据拉取的刷新间隔​
[ MetaFreshIntervalSeconds: <Seconds> | default = 60, range = [30, +] ]​
​
# 指标数据拉取的间隔​
[ DataFreshIntervalSeconds: <Seconds> | default = 60, range = [30, +] ]​
​
# 对请求的限制配置​
[ Limiter: <Limiter> ]​
​
#​
# 轮次超时: 是指指标拉取的时间超过了配置的 DataFreshIntervalSeconds. ​
#​
# 此配置描述 Exporter 在发生轮次超时后, 应该如何处理当前轮次和下一轮次的数据拉取.​
#​
# - SkipMissExecute: 本次拉取完成后, 跳过没有执行的轮次, 直接执行最新拉取.​
# - ContinueMissExecute: 本次拉取完成后, 继续执行没有执行的轮次.​
# - StopAndBackFilling: 停止本次拉取, 直接开始下一次拉取, 并把当前未完成的拉取请求放在离线队列中, ​
# 然后通过 Remote Write 的方式写入 Prometheus.​
[ BehaviorWhenPullTimeout: <String> | default = "" ]​
​
# 回填配置, 仅在 BehaviorWhenPullTimeout = StopAndBackFilling 的时候, 才会生效.​
[ OfflinePullConfig: <OfflinePullConfig> ]​
​
#选填,拉取 N 个数据点, 再进行 max、min、avg、last 等计算, 默认为 LAST,即取最晚的值。只能是 MAX/MIN/AVG/LAST/FIRST/COUNT/SUM 其中的 1 个,不区分大小写​
StatisticsType: <String>​
​
#选填,产品数据延迟时间,对应exporter的查询结束时间=now-QueryDelaySeconds​
QueryDelaySeconds: <Seconds | [0, +]>​
​
#选填,产品数据查询范围时间,默认2分钟,查询的开始时间=查询的结束时间-QueryRangeSeconds​
QueryRangeSeconds: <Seconds | [0, +]>​
​
#选填,查询的Period,最小30s​
QueryPeriodSeconds: <Seconds | [0, +]>​
​
#选填,产品额外静态标签,最终会与全局配置的ExtraLabels合并去重,key为label name,value为label的value​
[ StaticLabels: <String>:<String> ]​
​
#选填,是否使用新的指标来打点实例元信息,默认为false,直接追加到原始指标上​
MetaLabelWithNewMetric: <true|false>​
​
#选填,元数据打点指标名称,若MetaLabelWithNewMetric为true该参数才有意义,默认为volc_resource_info​
MetaLabelWithNewMetricName: <String>​
​
#选填,产品额外标签,最终会与全局配置的ExtraLabels合并去重​
ExtraLabels: <StringArray>​
​
#选填,产品额外元信息Tag过滤正则规则,使用golang 正则,遵循RE2规范匹配Tag name,tag标签会默认增加tag_前缀​
ExtraLabelsWithTagNameRegex: <StringArray>​
​
#选填,导出项目列表,最多配置20个项目,配置后对所有Products生效,优先级低于Products的ProjectNames配置​
ProjectNames: <StringArray>​
​
#选填,Prometheus Remote Write 模式配置​
[ RemoteWrites: <RemoteWrite[]> ]​
​
#必填 需要导出的产品列表, 如果没有声明产品列表, Exporter 不会导出指标. ​
Products: <ProductConfig ...>​
​
#选填,指标采集配置​
Metrics: ​
<Namespace>: ​
<SubNamespace>: <MetricConfig ...>​
​
Credentials 配置说明​
​
# 用户认证的 AccessKey​
AccessKey: <String>​
​
# 用户认证的 SecretKey​
SecretKey: <String>​
​
Limiter 配置说明​
说明​
仅当 BehaviorWhenPullTimeout 配置为 SkipMissExecute 或 ContinueMissExecute 时,LimitQPSGetMetricData 的自适应限流才能生效。​
​
# 调用云监控指标接口的 QPS。BehaviorWhenPullTimeout 配置为 StopAndBackFilling 时必填,否则可选。若不配置此参数,默认采用自适应限流,将把集中在某个时间段内的大量请求分散到刷新周期的不同时间点处理。​
[ LimitQPSGetMetricData: <Integer> | default = ]​
​
# 可选,获取云监控指标元数据的 QPS。若不配置此参数,默认采用自适应限流,将把集中在某个时间段内的大量请求分散到刷新周期的不同时间点处理。​
[ LimitQPSMonitorObjectList: <Integer> | default = ]​
​
OfflinePullConfig 配置说明​
​
# 回填线程的请求 QPS 占总请求的比例.​
[ RequestQPSRatio: <Float> | default = 0.3, range = [0.1, 0.9] ]​
​
# 回填数据的并发数, 如果设置为 0, 则会被设置为 Config.DataConcurrency​
[ Concurrency: <Integer> | default = 0, range = [0, +] ]​
​
# 回填数据的请求池大小, 如果设置为 0, 则会被设置为 Config.DataQueueSize​
[ DataQueueSize: <Integer> | default = 0, range = [0, +] ]​
​
# 最大有效时间, 超过该时间的请求会被丢弃.​
#​
# 指标数据的拉取都会携带时间范围, 数据拉取的结果是请求的时间范围中的, 如果预估指标拉取的时间落​
# 后于当前时间 - MaxAllowedOfflineDelayTime, 该请求会被丢弃. ​
# MaxAllowedOfflineDelayTime 必须小于 Prometheus 配置的乱序写入时间范围, 否则会出现写入​
# 失败的问题. Prometheus 乱序写入需要高版本的 Prometheus 支持.​
#​
# Prometheus OTLP: ​
# https://prometheus.io/docs/prometheus/latest/querying/api/#otlp-receiver ​
#​
# Prometheus 提供了乱序写入的能力, 需要配置开启, 另外需要信任Exporter导出指标的时间戳​
# > --------- prometheus.yml ---------------​
# > scrape_config:​
# > honor_timestamps: true​
# >​
# > storage:​
# > tsdb:​
# > out_of_order_time_window: <Duration>​
# > --------- prometheus.yml ---------------​
[ PromOutOfOrderTimeWindow: <Duration> | default = ? ]​
​
# Prometheus 的 Remote Write 地址.​
#​
# Exporter 通过 Remote Write 的方式进行数据回填, 如果 Prometheus Remote Write 地址为空, ​
# 则数据无法回填到 Prometheus 中.​
# ​
# Prometheus 开启回填的方式:​
# prometheus 开启 WriteAPI EndPoint:​
# > ------- Prometheus start command -------​
# > prometheus \​
# > --web.enable-remote-write-receiver \​
# > --config.file={FilePATH} \​
# > {其他参数}​
# > ----------------------------------------​
PromWriteAddress: <String>​
​
[ PromBasicAuth: <PromBasicAuth>]​
​
PromBasicAuth 配置说明​
​
# Prometheus 基础认证信息​
​
# Prometheus web basic auth username.​
Username: <String>​
​
# Prometheus web basic auth password.​
Password: <String>​
​
ProductConfig 配置说明​
​
#必填,产品的命名空间​
Namespace: <String>​
​
#选填,仅采集指定project下的实例,如果为空,则使用全局ProjectName​
#限制:不能同时配置ProjectName和ProjectNames​
ProjectName: <String>​
​
#选填,仅采集指定多个project下的实例,如果为空,则使用全局ProjectNames​
#限制:不能同时配置ProjectName和ProjectNames​
ProjectNames: <StringArray>​
​
#选填,产品额外标签,最终会与全局配置的ExtraLabels合并去重​
ExtraLabels: <StringArray>​
​
#选填,产品额外元信息Tag过滤正则规则,使用golang 正则,遵循RE2规范匹配Tag name,tag标签会默认增加tag_前缀​
ExtraLabelsWithTagNameRegex: <StringArray>​
​
#选填,产品可选 Dimension,详情请参见 云监控指标查询 下各云产品的 Dimension 字段。注:无(可选)标识的 Dimension 默认导出,不需要额外配置。​
ExtraDimensions: <StringArray>​
​
#选填,拉取N个数据点, 再进行max、min、avg、last等计算, 默认FIRST取最早的值。只能是MAX/MIN/AVG/LAST/FIRST/COUNT/SUM其中的1个,不区分大小写​
StatisticsType: <String>​
​
#选填,产品数据延迟时间,对应exporter的查询结束时间=now-QueryDelaySeconds​
QueryDelaySeconds: <Seconds | [0, +]>​
​
#选填,产品数据查询范围时间,默认2分钟,查询的开始时间=查询的结束时间-QueryRangeSeconds​
QueryRangeSeconds: <Seconds | [0, +]>​
​
#选填,查询的Period,​
QueryPeriodSeconds: <Seconds | [0, +]>​
​
#选填,仅需要采集的子命名空间,默认导出所有子命名空间​
OnlyIncludeSubNamespaces:​
[ - <SubNamespace> ]​
​
#选填,排除采集子命名空间下的指标,默认导出所有指标​
ExcludeSubNamespaces:​
[ - <SubNamespace> ]​
​
#选填,仅需要采集的指标,key=子命名空间,默认导出所有指标​
OnlyIncludeMetrics:​
[- <SubNamespace>: '[' <MetricName> [, ...] ']' ]​
​
#选填,排除指标列表,key=sub-namespace,默认导出所有指标​
ExcludeMetrics: <SubNamespace: StringArray...>​
[- <SubNamespace>: '[' <MetricName> [, ...] ']' ]​
​
#选填,仅采集指定实例ID列表,默认导出所有实例​
OnlyIncludeInstances: <StringArray>​
​
#选填,排查采集实例ID列表,默认导出所有实例​
ExcludeInstances: <StringArray>​
​
#选填,使用云产品元信息字段,对实例进行过滤​
InstanceMatchers:​
[- <InstanceMatcher> ]​
​
​
配置项​
配置说明​
配置示例​
​
InstanceMatchers:​
[- <InstanceMatcher> ]​
​
使用元信息字段,对云产品实例进行过滤。其中,<InstanceMatcher>包含如下字段:​
  • Field: <String>:云产品元信息字段,不同云产品支持的元信息字段不同。详情请参见 支持的云产品。​
  • Type: <String>:匹配关系,取值:​
  • include:采集指定 Field 值的实例。​
  • exclude:排除指定 Field 值的实例。​
  • regex:采集 Field 值满足正则匹配列表的实例。​
  • 若未填写,则默认取值为include。​
  • Values: <StringArray>:云产品元信息字段的值。​
说明​
  • 当填写的元信息字段不存在时,系统会忽略该过滤配置。​
  • 当填写多个过滤条件时,多个条件之间为 且 关系,即会筛选出同时满足所有条件的云产品实例。​
以 ECS 为例,ECS 支持导出的元信息字段包括:AvailableZone、IP.Inside等。​
配置示例如下,使用IP.Inside元信息字段,导出指定私网地址 ECS 实例的指标。​
​
InstanceMatchers:​
- Field: "IP.Inside"​
Type: "include"​
Values:​
- "192.168.1.10"​
- "192.168.1.20"​
​
​
MetricConfig 配置说明​
​
#必填,指标名称​
MetricName: <String>​
​
#选填,指标可选 Dimension,优先级高于产品级别(ProductConfig)的 ExtraDimensions,详情请参见 云监控指标查询 下各指标的 Dimension 字段。注:无(可选)标识的 Dimension 默认导出,不需要额外配置。​
ExtraDimensions: <StringArray>​
​
#选填,拉取N个数据点, 再进行max、min、avg、last等计算, 默认FIRST取最早的值。只能是MAX/MIN/AVG/LAST/FIRST/COUNT/SUM其中的1个,不区分大小写​
StatisticsType: <String>​
​
#选填,产品数据延迟时间,对应exporter的查询结束时间=now-QueryDelaySeconds​
QueryDelaySeconds: <Seconds | [0, +]>​
​
#选填,产品数据查询范围时间,默认2分钟,查询的开始时间=查询的结束时间-QueryRangeSeconds​
QueryRangeSeconds: <Seconds | [0, +]>​
​
#选填,查询的Period,最小30s​
QueryPeriodSeconds: <Seconds | [0, +]>​
​
​
​
StatisticsType 配置说明​
Exporter默认周期性从服务端拉取指标数据,每次拉取的时间范围默认为2分钟(可以通过QueryRangeSeconds参数自定义),一般包含N个数据点并默认会以其中时间戳最早的一个点作为当前轮次采集的数据点。对于部分稀疏打点或者指标数据有毛刺的场景,您可以选择每次拉取过去一段时间范围N个点的最大值/最小值或者其他采样方式(MAX/MIN/AVG/LAST/FIRST/COUNT/SUM中的一种),作为当前轮次的采样点。该参数支持指标粒度的配置。​
Remote Write 配置说明​
Prometheus Remote Write 模式配置,支持将采集的指标直接写入支持 Remote Write 协议的时序数据库。​
​
# RemoteWrite 配置数组,支持配置多个目标​
RemoteWrites:​
- # 必填:Prometheus Remote Write API端点​
# 格式端点: http://host:port/api/v1/write 或 https://host:port/api/v1/write​
# 自动补全: 如果未指定协议前缀,自动添加 http://​
EndPoint: <String>​
​
# 选填:实例名称,用于日志和自监控区分​
# 默认值: 使用 EndPoint 的值​
[ Name: <String> ]​
​
# 选填:HTTP 基础认证用户名​
[ Username: <String> ]​
​
# 选填:HTTP 基础认证密码​
[ Password: <String> ]​
​
# 选填:聚合块定时 flush 周期​
# 默认值: "10s", 最小值: "1s"​
[ MaxWaitTime: <Duration> ]​
​
# 选填:缓冲队列大小​
# 默认值: 10000, 最小值: 1000​
[ WriteBufferQueueSize: <Integer> ]​
​
# 选填:单次发送的样本字节上限​
# 默认值: 10000, 最小值: 2000​
[ MaxSampleBytesPreSend: <Integer> ]​
​
# 选填:写失败重试次数​
# 默认值: 3, 范围: [1, 10]​
[ RetryCount: <Integer> ]​
​
# 选填:控制 Relabel/聚合 worker 并发度(CPU 密集)​
# 默认值: CPU 核心数, 范围: [1, 2*CPU]​
[ RelabelWorkerConcurrency: <Integer> ]​
​
# 选填:控制 HTTP 写入并发度(IO 密集)​
# 默认值: CPU 核心数, 范围: [1, 16*CPU]​
[ HTTPWriteConcurrency: <Integer> ]​
​
# 选填:单个聚合块的样本点上限​
# 默认值: 使用 WriteBufferQueueSize 的值​
[ MaxSamplesPerBlock: <Integer> ]​
​
# 选填:输入与块通道的容量​
# 默认值: 1000​
[ ChannelCapacity: <Integer> ]​
​
# 选填:标签重写规则​
[ RelabelConfigs: <RelabelConfig[]> ]​
​
# 选填:全局标签,在 Relabel 处理完成后添加到所有指标上​
[ GlobalLabel: <Map<String, String>> ]​
​
# 选填:采集范围,控制写入哪些类型的数据​
# 默认值: ["self-metric", "cloud-monitor"]​
# 可选值: "self-metric" (自监控), "cloud-monitor" (云监控), "offline-pool" (离线池)​
[ Scope: <StringArray> ]​
​
# 选填:自监控采集周期​
# 默认值: "10s"​
[ SelfMonitorCollectPeriod: <Duration> ]​
​
健康检查与就绪探针​
Exporter 提供了/ready和/health接口用于存活和就绪检查。​
健康检查​
访问/health接口会返回content-type: text/plain; charset=utf-8的响应信息:​
状态码始终为200。​
​
ok​
​
  1. 在 Exporter 启动后,/health接口就会开始工作, 并在 Exporter 停止运行前, 始终返回ok。​
  1. 如果出现异常,/health接口可能会出现超时、无响应等非预期返回。​
就绪接口​
Exporter 在完成第一次数据采集后,/ready接口会返回content-type: text/plain; charset=utf-8的响应信息:​
状态码始终为200。​
​
ready​
​
  • 如果 Exporter 没有完成第一次数据采集,/ready接口会返回not ready信息。​
  • 如果/health接口没有返回预期结果,则/ready接口的返回不可信。​
相关文档​
最近更新时间:2026.05.09 11:45:29
这个页面对您有帮助吗?
有用
有用
无用
无用