配置日志

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

背景信息

日志服务是阿里云提供的针对日志类数据的一站式服务。通过日志服务存储函数日志,需要在函数中配置日志项目和日志库,并授予函数访问日志服务的权限。函数日志会打印到配置的日志库中。

计费说明

函数计算不会为配置日志功能收取额外的费用,日志投递到日志服务,日志服务会收取相关费用。更多信息,请参见计费概述

配置日志功能

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

前提条件

操作步骤

  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

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

查看调用日志

在函数详情页面,单击日志页签,查询当前函数的调用记录。

说明

您可以在函数详情页面,单击版本别名页签,选择要查询的函数版本或别名,单击后进入对应的版本或别名的详情页面,单击日志页签查询对应的日志。

调用请求页签或关键词搜索页签均可以查看函数调用日志的内容。二者的区别如下所示:

  • 调用请求

    列表显示函数调用时间、请求ID、调用结果、实例ID和函数的版本、别名等信息。

    • 您可以单击对应的Request ID,查看请求详情和日志详情。

    • 您可以单击对应的实例 ID,查看实例的指标使用情况,例如CPU使用情况、内存使用情况和网络流量等。

    • 您可以单击操作列的查看日志查看日志详情,或单击操作列的高级日志跳转到日志服务控制台查询和分析日志。

  • 关键词搜索

    列表显示函数调用时间、日志内容、和函数的版本、别名等信息。您可以单击操作列的日志上下文查找这条日志的若干条上下文日志,或单击操作日志库跳转到日志服务控制台查询和分析日志。

    您可以在搜索框输入关键词查询您所需的日志信息。例如您需要搜索包含文本hello world的日志,可以在搜索框输入关键词hello world,搜索结果为所有包含该关键词的日志行。更多关于查询关键词的语法,请参见查询语法

相关文档

您还可以通过调用SDK/API为函数配置日志,具体操作,请参见CreateFunction - 创建函数