如何收听 GCE 事件
How to listen to GCE events
我希望能够监听 GCE 实例何时启动、停止、删除。这样我就可以为用户构建一个仪表板来查看机器的状态。我该怎么做?
您可以使用云函数来实现这样的工作流程。 Cloud Functions 不能直接 "listen" 到 GCE 事件,但它们可以在消息发布到特定 PubSub 主题时触发。
现在,GCE VM 事件实际上记录在 Cloud Logging 中,匹配特定过滤器的日志可以导出到 PubSub 主题。
所以在 Cloud Logging 中,您可以像这样设置一个高级日志过滤器:
resource.type="gce_instance"
jsonPayload.event_subtype="compute.instances.stop" OR jsonPayload.event_subtype="compute.instances.start"
此过滤器将过滤来自项目中所有 VM 的 stop
和 start
事件。您可以看到可用事件列表 here.
定义日志过滤器后,您可以 "create sink" 并将其设置为将过滤后的日志发送到您选择的 PubSub 主题。有关如何设置导出接收器的更多信息 here。
现在您的事件日志已发送到 PubSub 主题,您可以转到您的 PubSub topic list、select 您的主题并单击 "Trigger Cloud Function" 按钮。您将被引导完成设置云函数,该函数将被该主题中的每条新消息触发。建议的函数代码(以nodejs 8为例):
exports.helloPubSub = (event, context) => {
const pubsubMessage = event.data;
console.log(Buffer.from(pubsubMessage, 'base64').toString());
};
将记录消息数据,您可以在其中找到事件日志信息。然后您可以编写 Cloud Function 来执行您想要的任何过程,例如使用 VM 实例状态更新 Firestore 数据库。
我希望能够监听 GCE 实例何时启动、停止、删除。这样我就可以为用户构建一个仪表板来查看机器的状态。我该怎么做?
您可以使用云函数来实现这样的工作流程。 Cloud Functions 不能直接 "listen" 到 GCE 事件,但它们可以在消息发布到特定 PubSub 主题时触发。
现在,GCE VM 事件实际上记录在 Cloud Logging 中,匹配特定过滤器的日志可以导出到 PubSub 主题。
所以在 Cloud Logging 中,您可以像这样设置一个高级日志过滤器:
resource.type="gce_instance"
jsonPayload.event_subtype="compute.instances.stop" OR jsonPayload.event_subtype="compute.instances.start"
此过滤器将过滤来自项目中所有 VM 的 stop
和 start
事件。您可以看到可用事件列表 here.
定义日志过滤器后,您可以 "create sink" 并将其设置为将过滤后的日志发送到您选择的 PubSub 主题。有关如何设置导出接收器的更多信息 here。
现在您的事件日志已发送到 PubSub 主题,您可以转到您的 PubSub topic list、select 您的主题并单击 "Trigger Cloud Function" 按钮。您将被引导完成设置云函数,该函数将被该主题中的每条新消息触发。建议的函数代码(以nodejs 8为例):
exports.helloPubSub = (event, context) => {
const pubsubMessage = event.data;
console.log(Buffer.from(pubsubMessage, 'base64').toString());
};
将记录消息数据,您可以在其中找到事件日志信息。然后您可以编写 Cloud Function 来执行您想要的任何过程,例如使用 VM 实例状态更新 Firestore 数据库。