调试配置
当服务上线后,为了更精确的分析线上的结果,需要汇总各种信息。在线下可以打印日志调试,当服务上线后,无法灵活的进行打印。本配置主要收集线上调试信息,并能灵活的开启,或打印到终端,或者输出到 DataHub 上进行更细致的分析。
目前主要收集的是召回、过滤、粗排之后的 items 数据。
DebugConfs
主体配置如下:
{
"DebugConfs": {
"feed": { // 场景名称
"OutputType": "datahub",
"Rate": 0,
"DebugUsers": [
"10631522"
],
"DatahubName": "dh_debug_log"
}
}
}
OutputType 输出类型,目前包含两种, 1. console 控制台输出 2. datahub 输出到 datahub 中。 输出到 datahub 中,一定要配置 DatahubName
Rate 日志的采样比例。 合法值在 0 - 100 之间。很多时候,线上 QPS 高的话,可以适当的调整采样比例,来使线上服务影响最小。当为 0 时, 默认不输出调试信息
DebugUsers 针对某些 uid 列表进行日志打印
DatahubName 当输出到 datahub 上需要配置此值。此 name 需要能从 DatahubConfs 里能找到
目前输出的信息包括如下:
request_id 请求标识
module 标识哪个模块的日志,目前包括 recall, filter, general_rank
scene_id 场景id
exp_id 实验id
request_time 请求时间戳,秒为单位
uid 用户id
retrieveid 召回id
items item list 列表,格式为 "item1:score1,item2:score2", 这里 score 可以理解为,当 module = recall 时, score 为召回得分。 module=general_rank, score 为粗排得分
目前在某个 module 下, items 是分 retrieveid 进行输出的。比如有5个召回源,那么在 module = recall 时, 会有5条记录,每条记录对应一路召回。同样,filter, general_rank 也是按此逻辑打印。
DataHub 配置
在 DataHub 配置中,可以不用创建 topic, 只要指定 topic , schemas , 引擎会自动创建。
{
"DatahubConfs": {
"dh_debug_log": {
"Endpoint": "http://dh-cn-beijing-int-vpc.aliyuncs.com",
"AccessId": "",
"AccessKey": "",
"ProjectName": "",
"TopicName": "pairec_debug_log",
"Schemas": [
{
"Field": "request_id",
"Type": "string"
},
{
"Field": "module",
"Type": "string"
},
{
"Field": "scene_id",
"Type": "string"
},
{
"Field": "request_time",
"Type": "integer"
},
{
"Field": "exp_id",
"Type": "string"
},
{
"Field": "items",
"Type": "string"
},
{
"Field": "retrieveid",
"Type": "string"
},
{
"Field": "uid",
"Type": "string"
}
]
}
}
}
当运行服务时,引擎会自动创建此 Topic: pairec_debug_log, 并使用上面的 schema。 当在 datahub 控制台,看到有日志输出时,可以自行创建 MaxCompute 与 DataHub 的订阅关系。