当您需要通过日志服务调用统计记录,并对采集到的函数计算调用进行实时查询与分析统计、通过可视化方式直观展示时,您可以通过制定自己的日志仓库,将函数调用信息统计实时导入该日志仓库,通过阿里云日志服务的查询分析,以及图表展示来实时了解函数调用的情况,并更好地掌控函数服务状态。

前提条件

收集导入日志

  1. 登录函数计算控制台,在顶部菜单栏,选择地域,例如华东1(杭州)
  2. 在左侧导航栏,单击概览
  3. 概览(图示中①)页面右下方的快速入口处,单击配置日志大盘(图示中②)。配置路径
  4. 配置日志大盘页面,单击新建关联2
  5. 自定义日志分析对话框,执行以下操作。3
    1. 日志工程日志仓库字段中,分别选择该地域中已经创建好的日志工程及日志仓库。
    2. 选择需要关联的服务,此处可以关联多个服务到同一个日志仓库。
    3. 角色创建方式下拉列表中,选择新建角色,单击点击授权
    4. 角色快捷创建页面,信息核对无误后,单击同意授权4
    5. 自定义日志分析对话框,单击确定

查询分析日志

  1. 在函数计算控制台的配置日志大盘页面,选择需要查询的日志,单击日志库列表下关联的日志仓库
  2. 在关联的日志仓库页面输入查询语句分析日志,示例如下:
    • 通过requestID来获得一个请求被调用的详细信息。
      requestID:e9870cbd-2ab2-6c78-3486-cd164015b889
    • 查询异步调用请求。
      mode:async and operation:InvokeFunction
    • 查询调用时长超过5000毫秒的请求信息。
      operation:InvokeFunction and durationMs > 5000

    日志字段详细说明如下表所示。

    字段 类型 说明 示例值
    accountID String 账号ID。 188********23420
    asyncInvocationFinished String 调用完成。 true
    concurrentCount Long 当前实际并发度。 10
    concurrentReqLimit Long 最大并发度。 100
    durationMs Double 函数执行,单位:毫秒。 5012.025
    errorType String 错误类型。 HandledError
    externalServiceVersion String 使用的服务版本请参见函数版本 1
    fcStatus Long 内部状态码。 200
    forwardedFor String 原始IP地址,使用CDN Trigger时该IP地址代表调用函数计算端的IP地址。 200.***.***.100
    functionErrors Long 非系统函数错误。 0
    functionName String 函数名。 ReservedFunction
    functionTimeoutInSec Long 函数超时限制,单位:秒。 300
    host String 请求Host。 1234567890.cn-shanghai.fc.aliyun-inc.com
    isDarkLaunch String 是否使用了别名和灰度版本,请参见以下文档: true
    ip String 请求客户端IP地址。 172.***.***.118
    isHTTPS String 是否使用HTTPS协议。 false
    isHTTPTrigger String 是否为HTTP Trigger触发。 false
    latency Double 函数调用延迟,单位:毫秒。 5017.347
    maxMemoryUsage Double 函数实例最大使用内存,单位:MB。 17.25
    memoryLimitInMB Long 函数实例内存使用限制,单位:MB。 512
    meteredRespSize Long 计费流量,单位:字节。 0
    method String HTTP请求方法。 POST
    mode String 调用类型的取值说明如下:
    • sync:同步
    • async:异步
    sync
    operation String 日志分类。 InvokeFunction
    path String 函数调用URL Path。 /2016-08-15/services/MeteringService/functions/ReservedFunction/invocations
    qualifier String 使用的服务版本信息,详情请参见函数执行时使用版本 版本号或者别名
    region String 集群所在地域。 cn-shanghai
    requestID String 函数Request ID。 e9870cbd-2ab2-6c78-3486-cd164015b889
    requestOriginalURI String 原始URI(使用域名绑定后无/2016-08-15等字样)。 /2016-08-15/services/MeteringService/functions/ReservedFunction/invocations
    requestSize Long 函数请求大小,单位:字节。 912
    resolveQualifierLatency Long 解析服务版本使用的时间。 0
    responseSize Long 函数返回大小,单位:字节。 0
    runtime String 函数Runtime。 python2.7
    serviceName String 服务名。 test-service-name
    status Long 客户端将收到的HTTP状态码。 200
    timestamp Long 函数开始处理请求时间戳,单位:秒。 1538137847
    userAgent String 请求端userAgent。 go-sdk-0.1

使用表盘与解读数据指标

  1. 登录函数计算控制台
  2. 在左侧导航栏,单击概览
  3. 概览(图示中①)页面右下方的快速入口处,单击配置日志大盘(图示中②)。配置路径
  4. 配置日志大盘页面,单击目标日志操作列下的分析日志,可以看到以下相关图表。
    5
    参数 说明
    计费调用次数 您的函数被执行的次数。除了正确执行,还包含函数内部异常的调用。
    资源使用量 函数实例内存×函数执行时间。
    公网流出流量 该部分流量仅计算函数返回所产生的计费流量,不包含函数内部通过TCP/UDP等Client发起的请求所产生的流量。
    流入流量 仅计算函数接受请求所产生的流入流量,该流量不计入费用。
    服务质量
    • 用户错误率:反映由于非系统原因导致函数执行失败的比例。非系统错误包括4xx错误(除去429流控错误)以及函数执行错误,正常值为0。
    • 流控错误率:反映流控导致函数执行失败的比例。流控错误包括非系统配额导致的流控(429)和函数计算系统原因导致的流控(503),正常值为0。
    • 系统错误率:反映函数计算系统导致函数执行失败的比例。系统错误包括5xx错误(除去503流控),正常值为0。
    计费执行及函数执行错误
    • 计费调用数:被实际执行并计费的函数调用。
    • 函数错误数:被实际执行了但由于非系统原因导致执行失败的函数调用。
    执行时间(毫秒) 平均值:单位时间内,函数的平均执行时间。
    函数并发度
    • 并发度限制:您在该地域下账户的并发度配额。
    • 实际并发度:单位时间内实际使用最大并发数。
    HTTP函数状态
    • 执行HTTP函数返回给客户端的状态码。
    • 不同状态段代表各段状态码的返回总数目,例如Status_4xx代表单位时间内HTTPStatus的总数,HTTPStatus的取值范围是[400,499]。
    Top N函数 默认按资源使用量从大到小排序。
    • 资源使用量(GB-秒):函数实例内存×函数执行时间。
    • 公网流出流量(GB):该部分流量仅计算函数返回所产生的计费流量,不包含函数内部通过TCP/UDP等Client发起的请求所产生的流量。
    • 执行次数:函数调用执行次数。
    • 函数错误数:函数错误数。
    • 最大内存(MB):函数实际使用内存的最大值。

定制个性化Dashboard指南

您可以通过使用查询分析语句,得到图表后,将其添加为一个新的Dashboard,方便后续查看。详情请参见:
注意 以下查询语句及图表制作仅供参考,若作为商业使用请谨慎对待。
  • 用户IP地址来源分析

    • 国内访问分布图

      使用以下查询分析语句,并选择统计图表类型中的中国地图

      operation:InvokeFunction | SELECT ip_to_province(IF(forwardedFor = '', ip, forwardedFor)) AS“省份”, approx_distinct(IF(forwardedFor = '', ip, forwardedFor)) AS“请求”GROUP BY“省份”LIMIT 50           
      中国地图
    • 世界访问分布图

      使用以下查询分析语句,并选择统计图表类型中的世界地图

      operation:InvokeFunction | SELECT ip_to_country(IF(forwardedFor = '', ip, forwardedFor)) AS“国家”, approx_distinct(IF(forwardedFor = '', ip, forwardedFor)) AS“请求”GROUP BY“国家”LIMIT 50  
      世界地图
    • 热力分布图

      使用以下查询分析语句,并选择统计图表类型中的热力图

      operation:InvokeFunction | SELECT ip_to_geo(IF(forwardedFor = '', ip, forwardedFor)) AS geo, count(1) AS count GROUP BY geo order BY count desc LIMIT 30         
      热力图
  • userAgent比例分析

    使用以下查询分析语句,并选择图表类型中的饼图

    operation:InvokeFunction | SELECT userAgent, COUNT(userAgent) AS count GROUP BY userAgent ORDER BY count DESC LIMIT 20
    用户饼图
  • HTTP函数热门访问链接TOP 20

    使用以下查询分析语句,并选择图表类型中的表格

    operation:InvokeFunction and isHTTPTrigger:true | SELECT requestOriginalURI, COUNT(requestOriginalURI) AS count GROUP BY requestOriginalURI ORDER BY count LIMIT 20

设定报警规则

为了更好地掌控函数健康程度,您可以通过添加钉钉机器人,结合日志服务的报警规则来监控健康服务状况。详情请参见设置告警