调试配置
当服务上线后,为了更精确的分析线上的结果,需要汇总各种信息。在线下可以通过打印日志进行调试,当服务上线后,无法灵活的进行打印。
本配置主要用于收集线上调试信息,并能灵活地开启将其打印到终端,或者输出到Datahub上进行更细致的分析,也可以输出到本地文件以供其它调用。目前 收集的是召回、过滤和粗排之后的items数据。
调试配置对应配置总览中的DebugConfs,DebugConfs是一个Map[string]object结构,其中key是场景,可以对不同的场景进行配置隔离。
"DebugConfs": {
"scene_name": {
"OutputType": "datahub",
"Rate": 0,
"DebugUsers": [
"1001"
],
"DatahubName": "dh_debug_log",
"KafkaName": "pairec_debug_log"
"FilePath": "/Users/username/pairec/debug_log/",
"MaxFileNum": 20
}
}
字段名 | 类型 | 是否必填 | 描述 |
OutputType | string | 是 | 调试日志的输出方式,取值如下:
|
Rate | int | 是 | 日志的采样比例,取值范围0-100。您可以根据线上服务的QPS进行适当调整。 注:当值为0时,不输出调试信息。 |
DebugUsers | []string | 否 | 只对某些UID进行日志记录。例如 "DebugUsers": [ "1001"],表示只对1001这个user记录日志,其他user不记录。 |
DatahubName | string | 否 | 当OutputType=datahub时,需要填写此参数。 来源于数据源配置中的DatahubConfs的自定义名称。 |
KafkaName | string | 否 | 当OutputType=kafka时,需要填写此参数。 来源于数据源配置中的KafkaConfs的实例名称。 |
FilePath | string | 否 | 当OutputType=file时,需要填写此参数。 会将debug日志输出到此路径,路径不存在时会自动创建。 |
MaxFileNum | int | 否 | 当OutputType=file时,可以选择性填写此参数。 设置FilePath路径中可保存的最大日志数量,默认为20。路径中每个日志文件大小限制为1 G,超过会进行文件轮转。 若文件数量超过MaxFileNum,会删除最旧的日志文件。 |
目前输出的信息包括如下:
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", 表示当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}",
"AccessKey": "${AccessSecret}",
"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的订阅关系。
字段名 | 类型 | 是否必填 | 描述 |
Endpoint | string | 是 | Datahub的访问地址,详情见Datahub概览的常用信息。
|
AccessId | string | 是 | 您的AccessID。 |
AccessKey | string | 是 | 您的AccessSecret。 |
ProjectName | string | 是 | Datahub的项目名称。 |
TopicName | string | 是 | Datahub的Topic名称。 |
Schemas | []map | 是 | Datahub的Schema详情。 |
如果您使用PAI-Rec控制台进行配置,为了保持安全性,${AccessKey}:${AccessSecret} 可以不用替换,引擎会自动替换。
Kafka 配置
在kafka配置中,需要配置对应的实例名称(对应DebugConfs中配置的KafkaName)、域名接入点BootstrapServers以及已经创建好的Topic名称。
"KafkaConfs": {
"pairec_debug_log": {
"BootstrapServers":"alikafka-post-cn-xxxxx-1.alikafka.aliyuncs.com:9093,alikafka-post-cn-xxxxx-2.alikafka.aliyuncs.com:9093,alikafka-post-cn-xxxxx-3.alikafka.aliyuncs.com:9093",
"Topic":"debug_log"
}
},
如果您使用PAI-Rec控制台进行配置,当服务部署到EAS时,专有网络配置的VPC和交换机需与当前Kafka实例保持一致。