菜单
文档面包屑箭头 Grafana Alloy面包屑箭头 参考面包屑箭头 组件面包屑箭头 prometheus面包屑箭头 prometheus.exporter.gcp
开源

prometheus.exporter.gcp

prometheus.exporter.gcp 组件嵌入了 stackdriver_exporter。它允许您收集 GCP 云监控(以前称为 stackdriver),将其转换为与 Prometheus 兼容的格式并进行远程写入。该组件支持通过 GCP 监控 API 可用的所有指标。

指标名称遵循模板 stackdriver_<monitored_resource>_<metric_type_prefix>_<metric_type>

以下示例显示了一个负载均衡指标

Example GCP exporter configuration metric

以下列表显示了它的属性
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 收集所有数据,因此这是唯一需要的权限。

用法

alloy
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_idslist(string)配置要抓取指标的 GCP 项目。
metrics_prefixeslist(string)来自支持的 GCP 指标 的一个或多个值。这些可以根据需要进行针对性或宽松。
extra_filterslist(string)用于进一步细化您要从中收集指标的资源。特定过滤器字符串中的任何字符串值都必须用转义的双引号括起来。这些过滤器的结构为 <targeted_metric_prefix>:<filter_query>[]
request_intervalduration查询指标时使用的时段。5m
ingest_delayboolean启用后,这会根据 GCP 发布的有关数据需要多长时间才能被摄取的元数据,自动将查询指标时使用的时段向后调整。
request_offsetduration启用后,这会将查询指标时使用的时段偏移一定量。0s
drop_delegated_projectsboolean启用后,会删除附加项目中的指标,只从显式配置的 project_ids 中获取指标。
gcp_client_timeoutduration设置用于向 GCP 发出 API 调用的客户端的超时时间。一次抓取可能会启动对 GCP 的许多调用,因此如果您选择覆盖此值,请注意。15s

对于 extra_filterstargeted_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 摄取延迟是“最坏的情况”,因此默认情况下将其关闭,以确保数据在可用后立即收集。

导出字段

以下字段被导出,可以被其他组件引用。

名称类型描述
targetslist(map(string))可以用来收集导出器指标的目标。

例如,targets 可以传递给 discovery.relabel 组件来重写目标的标签集,也可以传递给收集公开指标的 prometheus.scrape 组件。

导出的目标使用由 内存流量 指定的配置的 run 命令 地址。

组件运行状况

prometheus.exporter.gcp 只有在给出无效配置时才会报告为不健康。在这些情况下,导出字段将保留其上次健康的价值。

调试信息

prometheus.exporter.gcp 不公开任何特定于组件的调试信息。

调试指标

prometheus.exporter.gcp 不公开任何特定于组件的调试指标。

示例

alloy
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"
}
alloy
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\"",
        ]
}
alloy
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 具有可以被以下组件消费的导出内容

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接文档。