Compute Engine 虚拟机创建通知

Compute Engine VM Creation Notification

我想收到通知if/when is/are 在我的 GCP 基础设施中创建任何 VM。

但是像触发器这样的存储可用于计算。

还有如果有其他解决办法。

使用日志接收器和 PubSub 触发的云函数

首先,通过creating a Logging sink将相关日志导出到您选择的PubSub主题。使用以下日志过滤器包括在 VM 创建期间自动创建的日志:

resource.type="gce_instance"
protoPayload.methodName="beta.compute.instances.insert"
protoPayload.methodName="compute.instances.insert"

接下来,创建一个 Cloud Functions,每次将新日志设置为 PubSub 主题时都会触发该函数。您可以根据需要处理此新消息。

请注意,使用此选项您必须自己处理通知(例如,)。如果您想根据某些条件发送不同的通知,或者如果您想执行通知之外的其他操作,这将很有用。

使用基于日志的指标和 Cloud Monitoring 警报

您可以对该指标使用 Log-based metric filtering logs for Compute Engine VM creation and set an alert 以获得通知。

首先创建一个counter log-based metric和上一个方法类似的日志过滤器,它会在每次创建新的VM实例时向云监控报告一个数据点。

然后转到云监控并create an alert基于每次报告指标时触发的指标。

此选项最容易设置,并且开箱即用地支持各种通知渠道。

你有第三种解决方案。您可以使用 Cloud Run 而不是 Cloud Functions(迁移非常简单,如果您有问题请告诉我)。

通过 Cloud 运行,您可以使用触发器(eventArc 功能),这是一个基于 auditLog 日志的新功能(仍处于预览阶段)。它与 LundinCast 提出的第一个解决方案非常相似,但它是由 Cloud 运行 触发器功能自动设置的。

因此,在云上部署您的服务 运行。然后在 v1.compute.instancs.insert API、select 您所在的地区配置触发器,或者将触发器设置为全局触发器,仅此而已!!创建新实例时将触发您的服务。

如您在我的屏幕截图中所见,系统会要求您激活 auditLog 才能使用此功能。因为它是内置的,所以它会自动为您完成!

配合 LudninCast's 回答。

云运行 -- 如果这对我来说不是区域问题,我会使用它。虽然我从 POC 中得出了这个结论,但我确实做到了

  1. 设置简单。
  2. 容器化应用程序。可能需要维护更多代码。
  3. Public URL 用于应用程序。
  4. 开箱即用支持像我这样的要求。

云函数--

  1. 触发器的接收器设置对于初学者来说可能很耗时
  2. 易于编码和维护。