Google 日志 Stackdriver Sink/Router

问题描述

我正在尝试在 BigQuery 中成功创建两个表 ga_sessionsevents 时启动 Google Cloud Function(这些表可以在 3- 4 小时)。

我编写了以下日志堆栈驱动程序接收器/日志路由器,订阅了发布/订阅主题(这反过来启动了谷歌云功能)。但是,它不起作用。如果我为 ga_sessionsevents 单独使用接收器/路由器,它可以正常工作,但是当我将它们组合在一起时,它就不起作用了。

所以我的问题是如何从日志堆栈驱动程序中获取两个不同的事件,将它们组合在一起并将它们传递给发布/订阅主题

   protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.datasetId="my_dataset"
    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.projectId="my-project"
    protoPayload.authenticationInfo.principalEmail="firebase-measurement@system.gserviceaccount.com"
    protoPayload.methodName="jobservice.jobcompleted"
    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId:"events"
    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.writedisposition:"WRITE_TruncATE"
    protoPayload.serviceData.jobCompletedEvent.job.jobStatus.state:"DONE"
    NOT protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId:"events_inTraday"

    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.datasetId="my_dataset"
    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.projectId="my-project"
    protoPayload.authenticationInfo.principalEmail="analytics-processing-dev@system.gserviceaccount.com"
    protoPayload.methodName="jobservice.jobcompleted"
    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId:"ga_sessions"
    NOT protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId:"ga_sessions_inTraday"

预先感谢您的帮助/指导。

解决方法

这里的技巧是创建一个指标,当两个条件都满足时,它实际上会显示 1。

尝试创建一个新的基于日志的指标并切换到“query editor”。您可以在那里使用 MQL language 创建自己的指标。

要能够从两个“指标”创建单个指标,您需要使用 something like this

  { fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization ;
    fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores
  } | join | div

这里有一些关于如何创建 alerting policy using MQL 的有用信息。 alerting policy 的代码如下所示:

{ fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization ;
  fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores
} 
| join | div
| condition val() >1 

这只是一个示例,用于证明很可能创建指标来监控 BigQuery 表的创建,但您必须自己进行测试。