本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
通过将SAE应用的标准输出日志或文件日志收集至日志服务SLS,实现日志持久化存储与聚合分析。
前提条件
已开通日志服务。未开通请登录日志服务控制台并按提示开通日志服务。
确保应用中每个实例至少预留0.25 Core CPU和250 MB内存的可用资源。
开启日志采集
操作路径:
创建应用
在SAE应用列表中,在顶部选择目标地域和命名空间,点击创建应用。在应用基本信息页面进行配置后,单击下一步:高级设置。
对正在运行的应用进行变更
警告重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。在左侧导航栏点击基础信息,在右上角点击部署应用。
对已停止的应用进行变更
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。点击基础信息,点击修改应用配置。
展开日志配置区域,开启SLS日志服务。
配置说明:
选择SLS资源,用于存储SAE应用日志:
新建SLS资源:系统将自动创建一个SLS Project,Project命名格式为
sae-<随机字符串>。使用已有的SLS资源:选择一个已有的SLS Project,Project所在地域必须与应用相同。
日志标签:日志标签用于标识和分类日志条目。开启自定义日志标签后,选择以下类型来配置Key和Value。如需配置多个Key和Value,点击添加。
自定义:输入变量名称和变量值。
引用配置项:输入变量名称,然后选择已有的配置项名称和键。
重要此功能目前处于邀约测试阶段。如果您想使用此功能,请在钉钉群(群号:32874633)联系相关技术人员开通。
采集日志类型:
文件日志(容器内日志路径):适用于应用将日志写入到文件中的场景。需要在日志源中配置容器内日志文件的绝对路径(含文件名),例如/tmp/cjsc.log。支持正则匹配,例如/path/to/your/files/*.log。
容器标准输出日志:适用于应用将日志打印到标准输出的场景。日志源显示为
stdout.log。点击+添加可以添加多条记录。
如果使用已有的SLS资源,可以为每条记录配置logstoreName和logtail。
重要请勿在日志源的存放路径中存放其他重要文件,避免目录内的文件被覆盖。例如,应用的可执行文件和数据已经存放在
/home/admin/app/中,如果将日志的存放路径设置为/home/admin/,会导致该路径下的所有目录和文件被覆盖。为避免上述情况发生,可以将日志的存放路径设置为/home/admin/log/。分批或灰度发布时,若仅变更Project或Logstore,在所有批次部署完成前日志仍会被采集到旧目标,因为SLS不支持同一文件被采集到不同的Project或Logstore中。
结果验证:
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。
点击,查看SLS日志。
在操作列点击文件日志,跳转到对应的日志库查看日志的详细内容。
去除日志内容的前缀
采集容器标准输出日志时,原始的日志内容包含多余的前缀,您可以选择以下方式去除日志内容的前缀。
方式一:自定义Logtail配置
此功能仅对Logtail 2.0及以上版本有效。如果您想使用此功能,请在钉钉群(群号:32874633)联系相关技术人员升级SAE应用的Logtail版本。
展开对应的日志库,单击Logtail配置。
在Logtail配置页面,单击对应的Logtail配置条目。
单击编辑,配置以下信息,其余参数保持默认。
展开处理配置区域,切分失败处理方式设置为保留单行。
处理模式设置为SPL。
SPL语句的文本框中输入
* | extend msg=regexp_replace(content, '(\S{33,36}\s\S+\sF\s)','') | project-away content。
单击保存。
新采集的日志内容已经去除前缀。
方式二:标准输出重定向
创建应用
在SAE应用列表中,在顶部选择目标地域和命名空间,点击创建应用。在应用基本信息页面进行配置后,单击下一步:高级设置。
对正在运行的应用进行变更
警告重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。在左侧导航栏点击基础信息,在右上角点击部署应用。
对已停止的应用进行变更
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。点击基础信息,点击修改应用配置。
展开启动命令区域,配置启动命令实现标准输出重定向:
以镜像部署的应用为例,在原有启动命令之后增加
2>&1 | tee -a /home/admin/log/std.log(其中,/home/admin/log/std.log为日志文件存储路径,可根据实际需求自定义)。例如,镜像中原始启动命令为
CMD ["./main"],则启动命令配置为./main 2>&1 | tee -a /home/admin/log/std.log。如果镜像环境不支持
tee命令,或者无需在控制台查看实时日志,则可以将2>&1 | tee -a /home/admin/log/std.log替换为> /home/admin/log/std.log 2>&1。展开日志配置区域,采集日志类型设置为文件日志(容器内日志路径),日志源设置为日志文件存储路径,例如
/home/admin/log/std.log。单击确定,等待应用部署完成。
新采集的日志内容已经去除前缀。
设置环境变量提升Logtail采集性能
您可以在SAE控制台通过设置环境变量的方式来配置Logtail启动参数。配置后,在开启日志收集服务的基础上,Logtail采集性能将得到提升,有效解决日志文件占用内存大、日志数据流量大和Logtail发送数据速率高等影响日志采集的瓶颈问题。
您需要在环境变量设置区域内,选择自定义或引用配置项的方式,并填写变量名称和变量值/变量引用。具体操作,请参见设置环境变量。
变量名称的填写规则
在需要配置的Logtail环境变量前增加sls_前缀。如下图所示,例如您需要添加Logtail参数max_read_buffer_size,则配置的环境变量为sls_max_read_buffer_size。图例表示每条日志读取的最大值为524288,单位:Byte。更多参数,请参见设置Logtail启动参数。

环境变量与Logtail启动参数对应关系
具体信息,请参见环境变量说明。
配额与限制
一个阿里云账号最多可创建200个Logstore资源、50个Project资源。日志服务基础资源的使用限制,会影响SAE应用的日志收集结果,例如导致日志保存时间过短、日志收集失败等。更多使用限制,请参见基础资源。
计费说明
使用日志服务会产生额外费用,请参见SLS计费说明。
常见问题
SAE日志功能是否支持滚动日志?
支持。您可以通过给日志文件名称添加通配符的方式滚动日志。
文件名称通配符支持星号(*)和问号(?)。
查看文件日志时,在SLS控制台无数据展示,如何处理?
通常SLS默认查询最近15分钟内的查询结果。如果SLS无数据显示,建议使用Webshell查看您的应用是否有文件日志信息。详细操作,请参见使用Webshell诊断应用。
如果有日志信息,请加入钉群(钉群号:32874633),联系产品技术专家进行咨询。
如果没有日志信息,请检查您的应用信息。