设置日志收集至SLS

重要

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

Serverless 应用引擎 SAE(Serverless App Engine)实时日志功能支持查看最新的500行日志信息。为满足更高的查阅需求,SAE还提供了文件日志收集功能,支持将业务文件日志(容器内日志路径)、容器标准输出日志(stdout)无限制行数地收集至SLS,便于您聚合分析。启用日志收集到SLS功能后,SAE将自动在部署、扩容时与SLS对接日志采集,您即可在SLS控制台根据关键字检索日志。

前提条件

注意事项

  • 一个阿里云账号最多可创建200个Logstore资源、50个Project资源。

    警告

    日志服务基础资源的使用限制,会影响SAE应用的日志收集结果,例如导致日志保存时间过短、日志收集失败等。更多使用限制,请参见基础资源

  • 应用开始创建后,系统自动检查SLS服务是否开启、内置资源是否充足。

    • 如果SLS服务未开启,请按提示开通。

    • 如果内置资源不足,请加入钉群(钉群号:32874633)申请提升额度。

  • 使用SLS会产生额外费用,文件日志收集功能按日志使用量计费。计费详情,请参见SLS计费说明

配置文件日志收集

在创建应用过程中配置文件日志收集

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > 微服务应用,在顶部菜单栏选择目标地域,然后在应用列表页面单击创建应用

  3. 应用基本信息配置向导,设置应用相关信息,然后单击下一步:高级设置

  4. 展开日志收集服务区域,打开开启SLS日志服务开关,并配置相关配置项。

    按需选择新建SLS资源使用已有的SLS资源,单击+添加并配置相关配置项。

    配置项

    说明

    以下配置项供选择新建SLS资源使用已有的SLS资源时通用。

    采集日志类型

    选择日志类型。

    • 文件日志(容器内日志路径):可以设置多条,默认显示。

    • 容器标准输出日志:仅可以设置一条。当您的vSwitch属于推荐可用区时,下拉列表才会显示该选项。更多信息,请参见切换安全组和vSwitch

    日志源

    输入日志源存放的文件目录。目录须包含日志的文件名,例如/tmp0/cjsc.log。容器标准输出无需设置此选项。文件名与路径支持正则匹配,同一目录下,如果日志文件数量多,且文件格式相同,可以输入例如/xxx/xxx/xxx/*.log的格式。

    重要

    请勿在日志源的存放目录中存放其他重要文件,避免目录内的文件被覆盖。

    以下配置项仅供选择使用已有的SLS资源时设置。

    使用已有的SLS Project

    选择需要存放日志的Project。

    logstore

    选择Logstore。

    logtail

    选择Logtail。更多信息,请参见什么是Logtail

  5. 点击创建应用

  6. 验证结果。

    应用部署完成后,SAE依据所配的日志收集规则收集日志并存放到指定的文件内。

    您可以在应用详情页面左侧导航栏,选择日志管理 > 持久化日志,在持久化日志页面查看所收集的日志信息。

    如果存在日志数据,表示日志收集配置成功,您可以依据日志信息进行相关业务分析。

在部署应用过程中配置文件日志收集

警告

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

更新应用配置的路径因实例数的不同而不同。本文以实例数大于等于1为例,介绍如何配置目标功能。当实例数等于0时的操作路径,请参见更新应用

  1. 登录SAE控制台

  2. 在左侧导航栏,选择应用管理 > 微服务应用,然后在顶部菜单栏选择目标地域。

  3. 应用列表页面,选择目标命名空间,然后单击目标应用名称。

  4. 基本信息页面右上角,单击部署应用

  5. 部署应用页面下方,展开日志收集服务区域,打开开通日志收集到SLS日志服务功能开关,并配置相关配置项。

    按需选择新建SLS资源使用已有的SLS资源,单击+添加并配置相关配置项。

    配置项

    说明

    以下配置项供选择新建SLS资源使用已有的SLS资源时通用。

    采集日志类型

    选择日志类型。

    • 文件日志(容器内日志路径):可以设置多条,默认显示。

    • 容器标准输出日志:仅可以设置一条。当您的vSwitch属于推荐可用区时,下拉列表才会显示该选项。更多信息,请参见切换安全组和vSwitch

    日志源

    输入日志源存放的文件目录。目录须包含日志的文件名,例如/tmp0/cjsc.log。容器标准输出无需设置此选项。文件名与路径支持正则匹配,同一目录下,如果日志文件数量多,且文件格式相同,可以输入例如/xxx/xxx/xxx/*.log的格式。

    重要

    请勿在日志源的存放目录中存放其他重要文件,避免目录内的文件被覆盖。

    以下配置项仅供选择使用已有的SLS资源时设置。

    使用已有的SLS Project

    选择需要存放日志的Project。

    logstore

    选择Logstore。

    logtail

    选择Logtail。更多信息,请参见什么是Logtail

  6. 配置完成后,单击确认

    说明

    如果您在应用部署时采用分批发布或者灰度发布策略,同时您配置的日志源不变,只改变日志收集的Project或者Logstore,那么在所有批次的部署流程成功完成之前,您的日志仍被收集到旧的Project与Logstore中。因为SLS不支持同一个文件被同时采集到不同的Project或Logstore中。

  7. 验证结果。

    应用部署完成后,SAE依据所配的日志收集规则收集日志并存放到指定的文件内。

    您可以在应用详情页面左侧导航栏,选择日志管理 > 持久化日志,在持久化日志页面查看所收集的日志信息。

    如果存在日志数据,表示日志收集配置成功,您可以依据日志信息进行相关业务分析。

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

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

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

  • 变量名称的填写规则

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

    image

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

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

SLS采集标准输出去除前缀

如果您需要对SLS日志内容做更多个性化的字段提取设置,例如,去除标准输出日志的前缀,可选择完整正则模式,并配置如下信息。

sc_sls_collect_logs_in_full_regex_mode

  • 行首正则表达式

    \d+-\d+-\d+T\d+:\d+:\d+.\d+\+\d+.*
  • 正则

    \d+-\d+-\d+T\d+:\d+:\d+.\d+\+\d+:\d+\s\w+\s\w\s(.*)

如果您还需要展开JSON,可以添加插件配置

sc_sls_plugin_configuration

{
  "global": {
    "DefaultLogQueueSize": 10
  },
  "processors": [
    {
      "type": "processor_split_log_regex",
      "detail": {
        "PreserveOthers": true,
        "SplitKey": "content",
        "SplitRegex": "\\d+-\\d+-\\d+T\\d+:\\d+:\\d+.\\d+\\+\\d+.*"
      }
    },
    {
      "type": "processor_regex",
      "detail": {
        "SourceKey": "content",
        "Regex": "\\d+-\\d+-\\d+T\\d+:\\d+:\\d+.\\d+\\+\\d+:\\d+\\s\\w+\\s\\w\\s(.*)",
        "Keys": [
          "newline"
        ]
      }
    },
    {
      "detail": {
        "SourceKey": "newline",
        "KeepSource": true,
        "ExpandDepth": 0,
        "NoKeyError": true,
        "ExpandConnector": "-"
      },
      "type": "processor_json"
    }
  ]
}

更多信息,请参见使用完整正则模式采集日志管理Logtail采集配置

常见问题

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

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

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

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

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

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

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