确定服务器用量以生成报告

在 Google Cloud Console 中,您可以使用 Stackdriver Logging 查看服务器以往的用量数据。例如,每次将特定节点中的虚拟机放置在物理服务器上时,您可以进行查看并获取物理服务器 ID。

准备工作

要在 Stackdriver Logging 上查看物理服务器的用量,请先启用 Stackdriver Logging API,然后再将虚拟机启动到单租户节点。这样您就可以从头开始收集数据了。如果您尚未启用日志记录功能,但已经启动了虚拟机,您仍然可以启用该服务,但您只能访问在日志记录功能启用后收集的数据。

启用 Stackdriver Logging API

获取服务器 ID

要获取您的单租户节点的物理服务器 ID,请执行以下操作:

  1. 在 Cloud Console 中,转到 Stackdriver Logging > 日志(日志查看器)页面。

    转到“日志查看器”页面

  2. 如果出现提示,请选择现有 Google Cloud 项目。

  3. 在第一个下拉菜单中,选择 GCE 虚拟机实例

  4. 在第三个下拉菜单中,选择时间限制以用于限制结果。

  5. 在文本框中输入 text:NotifyInstanceLocation

    过滤结果的屏幕截图

  6. 展开每个条目的结果并查找 serverIdserverId 是为您的单租户节点提供支持的物理机器的唯一标识符。为 n1-node-96-624 节点类型提供支持的物理服务器具有 56 个物理核心。

    服务器 ID 的屏幕截图

将许可数据导出到 BigQuery

您可以将系统事件信息导出到 BigQuery 数据集,以便确定每个核心或每个插槽的用量:

  1. 在第一个下拉菜单中,确保勾选 GCE 虚拟机实例
  2. 点击“日志查看器”页面顶部的创建导出作业
  3. 创建数据接收器,方法是:输入接收器名称,选择 BigQuery 作为接收器服务,然后选择 BigQuery 数据集。

创建后,数据接收器将接收所有后续的审核日志记录活动。这意味着 BigQuery 将接收所有未来的服务器用量数据。 请注意,在设置 BigQuery 集成之前收集的任何数据都将无法访问。

在 BigQuery 中确定服务器用量的示例查询

本部分假定您熟悉在 BigQuery 中运行查询的过程。

使用您的自定义映像,对 cloudaudit_googleapis_com_activity_[DATE] 表运行以下查询来确定实例列表:

-- QUERY TO IDENTIFY ALL INSTANCE IDs USING A SPECIFIC SOURCE IMAGE
SELECT resource.labels.instance_id, resource.labels.project_id, resource.labels.zone, disks.initializeparams.sourceimage
FROM `[MY_BYOL_PROJECT_SINK_NAME].cloudaudit_googleapis_com_activity_*`, UNNEST(protopayload_auditlog.request_instances_insert.disks) AS disks
WHERE disks.initializeparams.sourceimage LIKE '%[BYOL_IMAGE_NAME]%'

接着,使用虚拟机实例运行下列查询来确定每个实例的主机

-- QUERY TO IDENTIFY ALL SERVER IDs USED BY A PROJECT
SELECT protopayload_auditlog.metadata_audit_gceinstancelocationmetadata.serverid, protopayload_auditlog.metadata_audit_gceinstancelocationmetadata.timestamp,
56 AS physical_cores
FROM `[MY_BYOL_PROJECT_SINK_NAME].cloudaudit_googleapis_com_system_event_*`
GROUP BY 1,2

联合查询示例如下:

-- QUERY TO IDENTIFY ALL INSTANCE IDs USING A SPECIFIC SOURCE IMAGE
SELECT
resource.labels.instance_id, protopayload_auditlog.metadata_audit_gceinstancelocationmetadata.serverid as server_id, protopayload_auditlog.metadata_audit_gceinstancelocationmetadata.timestamp,
56 AS physical_cores,
2 AS physical_sockets
FROM `[MY_BYOL_PROJECT_SINK_NAME].cloudaudit_googleapis_com_system_event_*`
WHERE resource.labels.instance_id IN (
SELECT resource.labels.instance_id
FROM `[MY_BYOL_PROJECT_SINK_NAME].cloudaudit_googleapis_com_activity_*`, UNNEST(protopayload_auditlog.request_instances_insert.disks) AS disks
WHERE disks.initializeparams.sourceimage LIKE '%[BYOL_IMAGE_NAME]%')
GROUP BY 1,2,3
ORDER BY 1 ASC,3 ASC;

其中:

  • [MY_BYOL_PROJECT_SINK_NAME] 是您创建的数据接收器的名称。
  • [BYOL_IMAGE_NAME] 是用于自带许可的映像的名称。

如需了解如何使用通配符选择日期,以及有关在 BigQuery 上查询 Cloud Audit Logs 的其他有用提示,请参阅 Cloud Audit Logs 文档

后续步骤