开通日志功能

函数计算支持与日志服务进行集成,为函数配置日志后,函数计算会自动收集日志,并把日志投递到指定的日志库。您可以在函数计算控制台查看单请求日志、实例日志、函数日志,也可以在日志服务控制台利用日志分析能力对日志进行自定义检索。

配置日志功能

使用函数计算控制台配置日志

前提条件

操作步骤

  1. 登录函数计算控制台,在左侧导航栏,单击函数

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。

  3. 在函数详情页面,选择配置 > 日志,单击编辑,在日志面板设置以下配置项,然后单击部署

    image

    说明
    • 如果您在创建函数时启用日志功能,函数计算控制台会自动创建以aliyun-fc-cn-<region_id>开头的日志项目和该日志项目下的默认日志库。该日志项目每个地域仅创建一个,不会重复创建,如系统查询到该地域下曾经自动创建过日志项目,将直接使用。

    • 如果您在创建函数时未启用日志功能,更新函数时需要手动选择自定义日志项目日志库

    • 控制台会自动启用日志分割规则请求级别指标实例级别指标,并创建查询日志需要的全部索引。

    配置项

    是否必填

    说明

    日志功能

    是否启用日志服务,取值说明如下:

    • 启用:启用后,函数计算会将日志导入到您的日志项目。您可以在函数计算控制台、日志服务控制台查询与检索日志,追踪并定位问题。

    • 禁用:不启用日志功能,无法持久化函数日志,无法对问题进行追踪和定位。

    配置方式

    选择自动配置自定义配置。如果选择自定义配置日志项目日志库必填。

    日志项目

    指定存储函数调用日志的目标日志项目。

    日志库

    指定存储函数调用日志的目标日志库。

    日志分割规则

    是否启用日志分割规则。取值说明如下:

    • 启用:启用后,函数计算将按日志分割规则进行切分,切分成多个日志段,并逐条写入日志服务。

      默认的日志分割规则为 ^.{0,2}\d{4}-\d{2}-\d{2},即匹配符合xxxx-xx-xx格式的日期,其中x代表数字。该规则将按照行首是否带有日期进行切分,例如您的日志行首是2023-10-10,则该日志将被认为是一块日志的首行,首行和接下来连续不带日期的日志将被作为一条日志写入到日志服务。

    • 禁用:不启用日志分割规则,默认使用 \n 进行日志切分。

    请求级别指标

    是否将请求指标的日志导入日志库,强烈建议启用此功能。

    取值说明如下:

    • 启用:启用后,函数每次调用执行的指标信息如函数执行时间、函数占用内存、是否执行出错、是否出现冷启动、冷启动各个步骤耗时等信息将投递到您在日志配置时选择的Logstore。函数计算的调用日志中可以基于这些指标展示请求列表,您也可以基于指标对请求进行自定义筛选,比如筛选全部错误请求,筛选出现冷启动的请求。

    • 禁用:无法查看请求执行的详细信息。

    实例级别指标

    是否启用实例级别指标功能。取值说明如下:

    • 启用:启用后,函数实例的指标数据将会投递到您在日志配置时选择的Logstore。您可以查看函数实例维度的性能指标,如实例的CPU、内存、网络IO等指标。函数计算会基于实例级别指标数据提供实例粒度的观测能力,为您提供函数实例端到端的监控排查路径。更多信息,请参见实例级别指标

    • 禁用:无法查看实例指标的详细信息。

使用Serverless Devs工具配置日志

前提条件

操作步骤

  1. 创建代码目录,目录结构如下所示。

    .
    ├── code
    │   └── index.js
    └── s.yaml

    s.yaml文件示例如下。

    示例中字段logConfig用于配置日志功能,其中logstore和project需修改为您账号下已存在的日志项目和日志库。您也可以直接设置logConfig:auto,函数计算平台将自动创建logstore和project,您无需再指定。

    edition: 3.0.0
    name: hello-world-app
    access: "default"
    vars: # 全局变量
      region: "cn-hangzhou"
    
    resources:
      hello_world:
        component: fc3 # 组件名称
        props:
          region: ${vars.region}             
          functionName: "start-nodejs-****"
          description: 'hello world by serverless devs'
          runtime: "nodejs16"
          code: ./code
          handler: index.handler
          memorySize: 128
          timeout: 30
          logConfig: # logstore和project需按照实际修改,您也可以使用logConfig:auto,自动创建project和logstore
            enableInstanceMetrics: true
            enableRequestMetrics:  true
            logBeginRule: DefaultRegex
            logstore: 'your-logstore'
            project: 'your-project'
  2. 执行以下命令部署应用。

    sudo s deploy -y

    执行成功后,您可以登录函数计算控制台查看函数已部署,以及日志功能已启用。

后续步骤

将函数调用日志投递到日志服务后,您可以在日志服务中执行查询分析、下载、投递、加工、告警等操作。具体操作,请参见云产品日志通用操作