我是GCP的初学者,正在尝试自定义此serverless pixel tracking architecture 来自GCP教程。
除了App Engine和Compute Engine之外,其他所有内容的构建方式都相同。在我的示例中,我不需要它们。
我的目标是在之后保存像素跟踪参数
my.tracking-pixel.com/error?[参数]
使用PubSub上的专用错误主题进入BigQuery表。
到日志记录的无服务器像素跟踪管道已启动并正在运行。之后,我创建了一个导出接收器,将像素跟踪中的数据发布到错误主题中。
然后,我按照教程指南from here创建了一个DataFlow实体来订阅我的错误主题,并将该主题中的消息提取到我的BigQuery表中。
我的示例表方案如下所示。它只接收类型为String的消息。
Field name Type Mode
msg STRING NULLABLE
现在使用JSON格式发布消息非常容易
{
"msg":"hello world"
}
或通过使用Google控制台使用属性字段的发布消息页面。然后我的表就正确更新了。
现在,我想从跟踪中传递参数并将其吸收到我的表中。
我尝试了以下语法,但没有成功。
使用键值映射。
my.tracking-pixel.com/error?msg=hello
使用JSON格式。
my.tracking-pixel.com/error?{"msg":"hello"}
在DataFlow中,我看到我的数据在检查 输入和输出集合:
此外,我发现BigQuery正在创建一个错误孪生表,用于记录错误代码。
这是我的有效载荷字符串
{httpRequest={cacheLookup=true, remoteIp=X, requestMethod=GET, requestSize=42, requestUrl=https://my.tracking-pixel.com/error?insertId=4&msg=new1234, responseSize=789, status=200, userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36},
insertId=17ktmayg1nsocji, jsonPayload={@type=type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry, statusDetails=response_sent_by_backend},
logName=projects/tracking/logs/requests,
receiveTimestamp=2019-08-20T08:39:25.712461786Z,
resource={labels={backend_service_name=, forwarding_rule_name=lbl-collect-pixel-forwarding-rule, project_id=tracking, target_proxy_name=lbl-collect-pixel-target-proxy, url_map_name=lbl-collect-pixel, zone=global},
type=http_load_balancer},
severity=INFO,
spanId=fa0cc3cdcb7e2592,
timestamp=2019-08-20T08:39:24.922424036Z,
trace=projects/tracking/traces/b335b1acfa78ad5447500cdcda747aa1}
这是我的错误消息
{
"errors" : [ {
"debugInfo" : "",
"location" : "logName",
"message" : "no such field.",
"reason" : "invalid"
} ],
"index" : 0
}
DataFlow试图在仅具有msg属性的表中添加logName属性。
现在,如何更改跟踪参数的提取尝试,以使DataFlow正确地将其解析为所需的消息格式并将其插入表格中?
谢谢您的帮助。
干杯, wiroot