设置日志收集至SLS

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

通过将SAE应用的标准输出日志或文件日志收集至日志服务SLS,实现日志持久化存储与聚合分析。

前提条件

  • 已开通日志服务。未开通请登录日志服务控制台并按提示开通日志服务。

  • 确保应用中每个实例至少预留0.25 Core CPU250 MB内存的可用资源。

开启日志采集

操作路径: 

  1. 创建应用

    SAE应用列表中,在顶部选择目标地域和命名空间,点击创建应用应用基本信息页面进行配置后,单击下一步:高级设置

    对正在运行的应用进行变更

    警告

    重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。在左侧导航栏点击基础信息,在右上角点击部署应用

    对已停止的应用进行变更

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。点击基础信息,点击修改应用配置

  2. 展开日志配置区域,开启SLS日志服务

配置说明:

  • 选择SLS资源,用于存储SAE应用日志:

    • 新建SLS资源:系统将自动创建一个SLS Project,Project命名格式为sae-<随机字符串>

    • 使用已有的SLS资源:选择一个已有的SLS Project,Project所在地域必须与应用相同。

  • 日志标签日志标签用于标识和分类日志条目。开启自定义日志标签后,选择以下类型来配置KeyValue。如需配置多个KeyValue,点击添加

    • 自定义:输入变量名称变量值

    • 引用配置项:输入变量名称,然后选择已有的配置项名称

    重要

    此功能目前处于邀约测试阶段。如果您想使用此功能,请在钉钉群(群号:32874633)联系相关技术人员开通。

  • 采集日志类型

    • 文件日志(容器内日志路径):适用于应用将日志写入到文件中的场景。需要在日志源中配置容器内日志文件的绝对路径(含文件名),例如/tmp/cjsc.log。支持正则匹配,例如/path/to/your/files/*.log

    • 容器标准输出日志:适用于应用将日志打印到标准输出的场景。日志源显示为stdout.log

    • 点击+添加可以添加多条记录。

    • 如果使用已有的SLS资源,可以为每条记录配置logstoreNamelogtail

    重要
    • 请勿在日志源的存放路径中存放其他重要文件,避免目录内的文件被覆盖。例如,应用的可执行文件和数据已经存放在/home/admin/app/中,如果将日志的存放路径设置为/home/admin/,会导致该路径下的所有目录和文件被覆盖。为避免上述情况发生,可以将日志的存放路径设置为/home/admin/log/

    • 分批或灰度发布时,若仅变更ProjectLogstore,在所有批次部署完成前日志仍会被采集到旧目标,因为SLS不支持同一文件被采集到不同的ProjectLogstore中。

结果验证:

  1. SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。

  2. 点击日志管理 > 持久化日志 > 日志采集到SLS,查看SLS日志。

  3. 操作列点击文件日志,跳转到对应的日志库查看日志的详细内容。

去除日志内容的前缀

采集容器标准输出日志时,原始的日志内容包含多余的前缀,您可以选择以下方式去除日志内容的前缀。

方式一:自定义Logtail配置

重要

此功能仅对Logtail 2.0及以上版本有效。如果您想使用此功能,请在钉钉群(群号:32874633)联系相关技术人员升级SAE应用的Logtail版本。

  1. 展开对应的日志库,单击Logtail配置

  2. Logtail配置页面,单击对应的Logtail配置条目。

  3. 单击编辑,配置以下信息,其余参数保持默认。

    1. 展开处理配置区域,切分失败处理方式设置为保留单行

    2. 处理模式设置为SPL

    3. SPL语句的文本框中输入* | extend msg=regexp_replace(content, '(\S{33,36}\s\S+\sF\s)','') | project-away content

  4. 单击保存

  5. 新采集的日志内容已经去除前缀。

方式二:标准输出重定向

  1. 创建应用

    SAE应用列表中,在顶部选择目标地域和命名空间,点击创建应用应用基本信息页面进行配置后,单击下一步:高级设置

    对正在运行的应用进行变更

    警告

    重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。在左侧导航栏点击基础信息,在右上角点击部署应用

    对已停止的应用进行变更

    SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。点击基础信息,点击修改应用配置

  2. 展开启动命令区域,配置启动命令实现标准输出重定向:

    以镜像部署的应用为例,在原有启动命令之后增加 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

  3. 展开日志配置区域,采集日志类型设置为文件日志(容器内日志路径)日志源设置为日志文件存储路径,例如/home/admin/log/std.log

  4. 单击确定,等待应用部署完成。

  5. 新采集的日志内容已经去除前缀。

设置环境变量提升Logtail采集性能

您可以在SAE控制台通过设置环境变量的方式来配置Logtail启动参数。配置后,在开启日志收集服务的基础上,Logtail采集性能将得到提升,有效解决日志文件占用内存大、日志数据流量大和Logtail发送数据速率高等影响日志采集的瓶颈问题。

您需要在环境变量设置区域内,选择自定义引用配置项的方式,并填写变量名称变量值/变量引用。具体操作,请参见设置环境变量

  • 变量名称的填写规则

    在需要配置的Logtail环境变量前增加sls_前缀。如下图所示,例如您需要添加Logtail参数max_read_buffer_size,则配置的环境变量为sls_max_read_buffer_size。图例表示每条日志读取的最大值为524288,单位:Byte。更多参数,请参见设置Logtail启动参数

    image

  • 环境变量与Logtail启动参数对应关系

    具体信息,请参见环境变量说明

配额与限制

一个阿里云账号最多可创建200Logstore资源、50Project资源。日志服务基础资源的使用限制,会影响SAE应用的日志收集结果,例如导致日志保存时间过短、日志收集失败等。更多使用限制,请参见基础资源

计费说明

使用日志服务会产生额外费用,请参见SLS计费说明

常见问题

  • SAE日志功能是否支持滚动日志?

    支持。您可以通过给日志文件名称添加通配符的方式滚动日志。

    文件名称通配符支持星号(*)和问号(?)。

  • 查看文件日志时,在SLS控制台无数据展示,如何处理?

    通常SLS默认查询最近15分钟内的查询结果。如果SLS无数据显示,建议使用Webshell查看您的应用是否有文件日志信息。详细操作,请参见使用Webshell诊断应用

    • 如果有日志信息,请加入钉群(钉群号:32874633),联系产品技术专家进行咨询。

    • 如果没有日志信息,请检查您的应用信息。