prometheus.exporter.gcp
prometheus.exporter.gcp
组件嵌入了 stackdriver_exporter
。它允许您收集 GCP 云监控(以前称为 stackdriver),将其转换为与 Prometheus 兼容的格式并进行远程写入。该组件支持通过 GCP 监控 API 可用的所有指标。
指标名称遵循模板 stackdriver_<monitored_resource>_<metric_type_prefix>_<metric_type>
。
以下示例显示了一个负载均衡指标
以下列表显示了它的属性
monitored_resource = https_lb_rule
metric_type_prefix = loadbalancing.googleapis.com/
metric_type = https/backend_latencies
这些属性会导致最终指标名称为 stackdriver_https_lb_rule_loadbalancing_googleapis_com_https_backend_latencies
身份验证
Alloy 必须运行在具有访问其正在抓取的 GCP 项目的权限的环境中。导出器使用 Google Golang 客户端库,该库提供了各种方法来 提供凭据。选择最适合您的选项。
在决定 Alloy 如何获取凭据后,确保该帐户已设置了 IAM 角色 roles/monitoring.viewer
。由于导出器从 GCP 监控 API 收集所有数据,因此这是唯一需要的权限。
用法
prometheus.exporter.gcp "pubsub" {
project_ids = [
"foo",
"bar",
]
metrics_prefixes = [
"pubsub.googleapis.com/snapshot",
"pubsub.googleapis.com/subscription/num_undelivered_messages",
"pubsub.googleapis.com/subscription/oldest_unacked_message_age",
]
}
参数
您可以使用以下参数配置导出器的行为。省略的字段将使用其默认值。
注意
如果您为extra_filters
参数提供字符串列表,则特定过滤器字符串中的任何字符串值都必须用转义的双引号括起来。例如,loadbalancing.googleapis.com:resource.labels.backend_target_name="sample-value"
必须在 Alloy 配置中编码为"loadbalancing.googleapis.com:resource.labels.backend_target_name=\"sample-value\""
。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
project_ids | list(string) | 配置要抓取指标的 GCP 项目。 | 是 | |
metrics_prefixes | list(string) | 来自支持的 GCP 指标 的一个或多个值。这些可以根据需要进行针对性或宽松。 | 是 | |
extra_filters | list(string) | 用于进一步细化您要从中收集指标的资源。特定过滤器字符串中的任何字符串值都必须用转义的双引号括起来。这些过滤器的结构为 <targeted_metric_prefix>:<filter_query> 。 | [] | 否 |
request_interval | duration | 查询指标时使用的时段。 | 5m | 否 |
ingest_delay | boolean | 启用后,这会根据 GCP 发布的有关数据需要多长时间才能被摄取的元数据,自动将查询指标时使用的时段向后调整。 | 否 | 否 |
request_offset | duration | 启用后,这会将查询指标时使用的时段偏移一定量。 | 0s | 否 |
drop_delegated_projects | boolean | 启用后,会删除附加项目中的指标,只从显式配置的 project_ids 中获取指标。 | 否 | 否 |
gcp_client_timeout | duration | 设置用于向 GCP 发出 API 调用的客户端的超时时间。一次抓取可能会启动对 GCP 的许多调用,因此如果您选择覆盖此值,请注意。 | 15s | 否 |
对于 extra_filters
,targeted_metric_prefix
用于确保过滤器只应用于有意义的 metric_prefix(es)。它不必显式匹配 metric_prefixes
中的值,但 targeted_metric_prefix
必须至少是 metric_prefixes
中的一个或多个的前缀。filter_query
在查询指标数据时应用于最终的指标 API 查询。发送到指标 API 的最终查询已经包含了对项目和指标类型的过滤器。每个适用的 filter_query
都会使用 AND 附加到查询中。您可以在 GCP 文档 中详细了解指标 API 过滤器选项。
对于 request_interval
,大多数情况下默认值都很好用。大多数文档化的指标都包含类似 每 X 秒采样一次。采样后,数据最多不超过 Y 秒才能看到。
的注释。只要您的 request_interval
>= Y
,您就不应该有任何问题。如果您想以编程方式执行此操作或正在收集移动较慢的指标,请考虑使用 ingest_delay
。
对于 ingest_delay
,您可以在文档化的指标中找到此值,例如 采样后,数据最多不超过 Y 秒才能看到。
由于 GCP 摄取延迟是“最坏的情况”,因此默认情况下将其关闭,以确保数据在可用后立即收集。
导出字段
以下字段被导出,可以被其他组件引用。
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 可以用来收集导出器指标的目标。 |
例如,targets
可以传递给 discovery.relabel
组件来重写目标的标签集,也可以传递给收集公开指标的 prometheus.scrape
组件。
导出的目标使用由 内存流量 指定的配置的 run 命令 地址。
组件运行状况
prometheus.exporter.gcp
只有在给出无效配置时才会报告为不健康。在这些情况下,导出字段将保留其上次健康的价值。
调试信息
prometheus.exporter.gcp
不公开任何特定于组件的调试信息。
调试指标
prometheus.exporter.gcp
不公开任何特定于组件的调试指标。
示例
prometheus.exporter.gcp "pubsub_full_config" {
project_ids = [
"foo",
"bar",
]
// Using pubsub metrics (https://cloud.google.com/monitoring/api/metrics_gcp/gcp-pubsub) as an example
// all metrics.
// [
// "pubsub.googleapis.com/"
// ]
// all snapshot specific metrics
// [
// "pubsub.googleapis.com/snapshot"
// ]
// all snapshot specific metrics and a few subscription metrics
metrics_prefixes = [
"pubsub.googleapis.com/snapshot",
"pubsub.googleapis.com/subscription/num_undelivered_messages",
"pubsub.googleapis.com/subscription/oldest_unacked_message_age",
]
// Given the above metrics_prefixes list, some examples of
// targeted_metric_prefix option behavior with respect to the filter string
// format <targeted_metric_prefix>:<filter_query> would be:
// pubsub.googleapis.com (apply to all defined prefixes)
// pubsub.googleapis.com/snapshot (apply to only snapshot metrics)
// pubsub.googleapis.com/subscription (apply to only subscription metrics)
// pubsub.googleapis.com/subscription/num_undelivered_messages (apply to only the specific subscription metric)
extra_filters = [
"pubsub.googleapis.com/subscription:resource.labels.subscription_id=monitoring.regex.full_match(\"my-subs-prefix.*\")",
]
request_interval = "5m"
request_offset = "0s"
ingest_delay = false
drop_delegated_projects = false
gcp_client_timeout = "15s"
}
prometheus.exporter.gcp "lb_with_filter" {
project_ids = [
"foo",
"bar",
]
metrics_prefixes = [
"loadbalancing.googleapis.com",
]
extra_filters = [
"loadbalancing.googleapis.com:resource.labels.backend_target_name=\"sample-value\"",
]
}
prometheus.exporter.gcp "lb_subset_with_filter" {
project_ids = [
"foo",
"bar",
]
metrics_prefixes = [
"loadbalancing.googleapis.com/https/request_bytes_count",
"loadbalancing.googleapis.com/https/total_latencies",
]
extra_filters = [
"loadbalancing.googleapis.com:resource.labels.backend_target_name=\"sample-value\"",
]
}
兼容组件
prometheus.exporter.gcp
具有可以被以下组件消费的导出内容
- 消费 Targets 的组件
注意
连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接文档。