基于 SLS 监控报警
PAI-Rec Engine 引擎服务会部署在 EAS 上,在引擎服务过程中,会产生一系列日志,基于这些日志可以监控我们的引擎服务以及报警。这些功能是基于 SLS 实现的。服务部署在 EAS 有两种情况,使用公共资源组或者使用私有资源组。两种方式对于日志同步到 SLS 是不同的。总的来说,推荐使用私有资源组部署服务,这样直接通过 EAS 控制台就可以把日志同步到 SLS 上。如果使用公共资源组,无法通过 EAS 直接同步到 SLS 上。但是引擎提供了内置的功能,只需要配置就可以由引擎写入到 SLS 上。下面详细说明两种情况。
公共资源组日志同步到 SLS 上
部署在公共资源组的服务无法直接通过 EAS 同步到 SLS 上。PAI-Rec 引擎可以通过配置来写入到 SLS 上。
配置 SLS 数据源
{
"SlsConfs": {
"sls-log": { // 自定义的 sls 数据源名称
"AccessKeyId": "",
"AccessKeySecret": "",
"Endpoint": "cn-beijing-intranet.log.aliyuncs.com",
"ProjectName": "pairec",
"LogstoreName": "pairec_log"
}
}
}
AccessKeyId/AccessKeySecret 阿里云账号的 AK 信息
ProjectName sls project 名称
LogstoreName sls logstroe 名称
Endpoint 接口地址,可以从 sls 控制台上找到
日志对接 SLS 数据源
在 PAI-Rec 引擎服务中,本身会带有 LogConf 配置,我们只需要在 LogConf 上对接上 SLS 数据源名称即可。
{
"LogConf": {
"RetensionDays": 3,
"DiskSize": 20,
"SLSName": "sls-log", // 对接上 SLS 数据源名称,日志会自动写入 SLS
"LogLevel": "INFO"
}
}
私有资源组日志同步到SLS上
在 EAS 控制台进入到服务部署的资源组中
开启 SLS 开关,设置 project 和 logstore
登录到 SLS 控制台, 由于 EAS 默认的日志采集不符合我们的需求,我们手动增加 logtail 采集配置。设置采集方式
使用现有的机器组

选择机器组进入下一步

插入以下配置
{
"inputs": [
{
"detail": {
"Stderr": true,
"IncludeLabel": {
"io.kubernetes.container.name": "worker0"
},
"Stdout": true
},
"type": "service_docker_stdout"
}
],
"processors": [
{
"detail": {
"SourceKey": "content",
"Regex": "I(\\d+ \\d+:\\d+:\\d+.\\d+)\\s+\\d+ (\\w+.go):(\\d+)]\\s+\\[(\\w+)\\]\\s+requestId=([\\w-]+)\\s+event=(\\w+)\\s+uri=([/\\w+]+)\\s+cost=(\\d+)",
"Keys": [
"time",
"file",
"line",
"level",
"requestId",
"event",
"uri",
"cost"
],
"KeepSource": true,
"NoKeyError": false,
"NoMatchError": false
},
"type": "processor_regex"
}
]
}

配置完成后,稍等一会刷新就能看到 EAS 日志了。
开启索引
完成上面的步骤后,重启服务,再次打请求,可以在 SLS 控制台看到日志详情了。为了后续的监控报警方便,我们可以开启索引统计。
进入到属性设置界面

设置属性字段

监控报警
以上步骤配置完,我们可以直接在 SLS 上配置报警。

接口超时报警红线框中根据需要调整即可。查询统计:
*|select COUNT(*) as count where uri='/api/rec/internal/video_feed' and cost > 700
意思是接口 /api/rec/internal/video_feed 耗时大于 700 的数量。 URI 和 cost 可以相应的调整。报警描述:${alert_name}告警触发,条数:${count}
ERROR 数量报警查询统计:
ERROR not exposure_history_pkey not INFO | SELECT COUNT(*) as count
报警描述:${alert_name}告警触发,error数量:${count}
推荐条目数量不足有时候推荐服务返回的推荐列表小于接口中传入的 size 数量。我们可以监控这种异常。查询统计:
"length of items less than size"
报警描述:${alert_name}告警触发,影响请求数量:${__count__}