Google Cloud Platform 模块

编辑

Google Cloud Platform 模块编辑

此模块使用 Stackdriver Monitoring API 定期从 Google Cloud Platform 提取监控指标,用于 Google Cloud Platform 服务。

此模块可能会对 Stackdriver Monitoring API 请求产生额外的 GCP 收费。请参阅 API 调用次数的粗略估计,了解更多详细信息。

模块配置和参数编辑

这是一个您可以调整的模块参数列表

  • zone: 一个包含您要监控的区域的字符串,例如 us-central1-a。或者您可以指定一个部分区域名称,例如 us-central1-us-central1-*,它将监控所有以 us-central1- 开头的区域:us-central1-aus-central1-bus-central1-cus-central1-f。请参阅 GCP 区域,了解 GCP 中可用的区域。
  • region: 一个包含您要监控的区域的字符串,例如 us-central1。这将启用对该区域下所有区域的监控。或者您可以指定一个部分区域名称,例如 us-eastus-east*,它将监控所有以 us-east 开头的区域:us-east1us-east4。如果同时配置了区域和区域,则只使用区域。请参阅 GCP 区域,了解 GCP 中可用的区域。如果未指定 regionzone,则将从所有区域/区域收集指标。
  • project_id: 一个包含您的 GCP 项目 ID 的字符串
  • credentials_file_path: 一个指向 Metricbeat 可访问的 JSON 文件路径的字符串,您已使用 IAM 创建此文件。
  • exclude_labels: (true/false 默认值 false) 不要从指标集中提取额外的标签和元数据信息,只提取指标。目前,仅支持标签和元数据提取compute 指标集中。
  • period: 为该模块收集频率指定的一个时间段。

示例配置编辑

  • compute 指标集已启用,用于从 elastic-observability 项目中的 us-central1-a 区域收集指标。

    - module: gcp
      metricsets:
        - compute
      zone: "us-central1-a"
      project_id: "elastic-observability"
      credentials_file_path: "your JSON credentials file path"
      exclude_labels: false
      period: 60s
  • computepubsub 指标集已启用,用于从 elastic-observability 项目中 us-central1 区域下的所有区域收集指标。

    - module: gcp
      metricsets:
        - compute
        - pubsub
      region: "us-central1"
      project_id: "elastic-observability"
      credentials_file_path: "your JSON credentials file path"
      exclude_labels: false
      period: 60s
  • compute 指标集已启用,用于从 elastic-observability 项目中以 us-west 开头的所有区域收集指标,其中包括 us-west1us-west2us-west3us-west4 下的所有区域。

    - module: gcp
      metricsets:
        - compute
        - pubsub
      region: "us-west"
      project_id: "elastic-observability"
      credentials_file_path: "your JSON credentials file path"
      exclude_labels: false
      period: 60s

身份验证、授权和权限。 编辑

Google Cloud Platform 中的身份验证和授权可以通过多种方式实现。对于 Metricbeat 的 Google Cloud Platform 模块的当前版本,唯一支持的方法是使用服务帐号 JSON 文件。包含私钥的典型 JSON 如下所示

示例凭据编辑

{
  "type": "service_account",
  "project_id": "your-project-id",
  "private_key_id": "a_private_key_id",
  "private_key": "-----BEGIN PRIVATE KEY-----your private key\n-----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "123456",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/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/metricbeat-testing%40your-project-id.iam.gserviceaccount.com"
}

通常,您需要创建服务帐号,并为其分配以下角色或每个角色所述的权限(适用于所有指标集)

  • 监控查看者:

    • monitoring.metricDescriptors.list
    • monitoring.timeSeries.list
  • 计算查看者:

    • compute.instances.get
    • compute.instances.list

您可以在 IAM 中几乎使用您的服务帐号和实例级别的访问权限来访问您的资源(例如,允许在实例中运行的所有内容都已授权使用计算 API)。该模块使用 Google Cloud Platform 库进行身份验证,因此许多可能性都是开放的,但该模块仅支持使用上面提到的方法。

Google Cloud Platform 模块:幕后 编辑

Google Cloud Platform 提供了 Stackdriver Monitoring API,用于从其服务中提取指标。 这些指标是逐个提取的

如果您还想 提取服务标签(将 exclude_labels 设置为 false,这是默认状态)。您还会对相应的服务进行新的 API 检查。服务标签需要新的 API 调用才能提取这些指标。在最坏的情况下,API 调用的数量将增加一倍。在最好的情况下,所有指标都来自同一个 GCP 实体,并且第一次 API 调用(在后续调用中被缓存)中包含了 100% 的所需信息。

如果 period 值设置为 5 分钟,并且指标类型的采样周期为 60 秒,那么此模块将每 5 分钟使用聚合从该指标类型收集一次数据。GCP 监控数据有长达 240 秒的延迟,这意味着最新的监控数据最多可能延误 4 分钟。请参阅 GCP 监控指标数据的延迟,了解更多详细信息。在 gcp 模块中,指标的收集基于此摄取延迟,这也是从 ListMetricDescriptors API 中获得的。

API 调用次数的粗略估计编辑

Google Cloud Platform 的定价取决于您对他们 API 的请求次数。以下是一些您可以用来估算预计定价的信息。例如,假设您启用了 Compute Metricset,并且您不想排除标签。您在一个特定的 GCP 项目、区域和区域中总共有 20 个实例正在运行。

例如,如果 Compute Metricset 提取 14 个指标(这是早期测试版中提取的指标数量)。每个指标都会尝试对计算 API 进行 API 调用以检索其元数据。由于您有 20 个不同的实例,因此在每次刷新周期中将执行的总 API 调用次数为:14 个指标 + 20 个实例 = 34 个 API 请求,每 5 分钟(如果这是您当前的周期)。每天 9792 个 API 请求,一个区域。如果您添加两个具有相同数量实例的区域,那么您每天将有 19584 个 API 请求(每个区域 9792 个)或每月大约 587520 个,用于 Compute Metricset。这需要对每个不同的 Metricset 进行计算,并略有不同。

指标集编辑

目前,我们在 gcp 模块中有 billingcomputegkeloadbalancingpubsubmetricsstorage 指标集。

billing编辑

此指标集从 GCP BigQuery 中提取计费指标。Cloud Billing 允许用户在全天自动将计费数据导出到 BigQuery。此指标集定期访问每日成本详细信息表,以导出计费指标以进行进一步分析。

billing 指标集附带一个预定义的仪表盘

metricbeat gcp billing overview

compute编辑

此指标集从 Google Cloud Platform 中的 Compute Engine 虚拟机中提取指标。 compute 指标集包含从 GCP Compute Monitoring API 导出的部分指标。还使用 Compute API 提取额外的标签和元数据。这足以获取与指标关联的大多数信息,例如计算标签和元数据以及指标特定的标签。

compute 指标集附带一个预定义的仪表盘

metricbeat gcp compute overview

gke编辑

此指标集提取 Kubernetes Engine 的指标。

gke 指标集包含 Cloud Monitoring Kubernetes 指标 导出的所有 GA 指标。

还使用 Compute API 提取额外的标签和元数据。

gke 指标集附带一个预定义的仪表盘

metricbeat gcp gke overview

loadbalancing编辑

此指标集从 Google Cloud Platform 中的 负载均衡 提取指标。 loadbalancing 指标集包含从 GCP 负载均衡监控 API 导出的所有指标。

loadbalancing 指标集附带两个预定义的仪表盘

HTTPS编辑

对于 HTTPS 负载均衡:image::./images/metricbeat-gcp-load-balancing-https-overview.png[]

L3编辑

对于 L3 负载均衡:image::./images/metricbeat-gcp-load-balancing-l3-overview.png[]

TCP/SSL/代理编辑

对于 TCP/SSL/代理负载均衡:image::./images/metricbeat-gcp-load-balancing-tcp-ssl-proxy-overview.png[]

pubsub编辑

此指标集从 Google Cloud Platform 中的 Pub/Sub 主题和订阅中获取指标。 pubsub 指标集包含从 GCP PubSub 监控 API 导出的所有 GA 阶段指标。

pubsub 指标集附带一个预定义的仪表盘

metricbeat gcp pubsub overview

metricsedit

metrics 指标集使用 Google Cloud Operations/Stackdriver,它提供对云驱动应用程序的性能、正常运行时间和整体运行状况的可见性。 它从 Google Cloud 中的不同服务收集指标、事件和元数据。 此指标集用于使用 ListTimeSeries API 从 Google Cloud 收集 监控指标

storageedit

此指标集从 Google Cloud Platform 中的 Storage 中获取指标。 storage 指标集包含从 GCP Storage 监控 API 导出的所有 GA 指标。

我们建议用户为该指标集定义 period: 5m,因为在 Google Cloud 中,存储监控指标每 5 分钟的样本周期写入一次,并有 10 分钟的摄取延迟。

storage 指标集附带一个预定义的仪表盘

metricbeat gcp storage overview

示例配置

Google Cloud Platform 模块支持 模块 中描述的标准配置选项。 以下是一个示例配置

metricbeat.modules:
- module: gcp
  metricsets:
    - compute
  region: "us-"
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  exclude_labels: false
  period: 1m

- module: gcp
  metricsets:
    - pubsub
    - loadbalancing
    - firestore
    - dataproc
  zone: "us-central1-a"
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  exclude_labels: false
  period: 1m

- module: gcp
  metricsets:
    - storage
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  exclude_labels: false
  period: 5m

- module: gcp
  metricsets:
    - metrics
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  exclude_labels: false
  period: 1m
  metrics:
    - aligner: ALIGN_NONE
      service: compute
      metric_types:
        - "instance/cpu/reserved_cores"
        - "instance/cpu/usage_time"
        - "instance/cpu/utilization"
        - "instance/uptime"

- module: gcp
  metricsets:
    - gke
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  exclude_labels: false
  period: 1m

- module: gcp
  metricsets:
    - billing
  period: 24h
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  dataset_id: "dataset id"
  table_pattern: "table pattern"
  cost_type: "regular"

- module: gcp
  metricsets:
    - carbon
  period: 24h
  project_id: "your project id"
  credentials_file_path: "your JSON credentials file path"
  dataset_id: "dataset id"
  table_pattern: "table pattern"

指标集

以下指标集可用