前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用云函数将CDN的日志存储到COS中

使用云函数将CDN的日志存储到COS中

原创
作者头像
rexliao
修改2021-05-17 11:13:15
5.3K0
修改2021-05-17 11:13:15
举报
文章被收录于专栏:小秘籍小秘籍

教程简介

本文介绍如何使用腾讯云的云函数功能,创建两个函数,实现定时将CDN的日志存储到COS中。

主要步骤

本教程将介绍如何创建“存储”函数和“任务分发”函数,二者组合在一起并配置定制器触发,即可实现定时将CDN的日志存储到COS中。

主要分为四个大步骤:

A、准备云API的访问密钥和对象存储COS的相关信息

B、创建CDN日志转存函数(cdn-save-log-into-cos)

C、配置定时器

D、常见问题

教程正文

A、在创建云函数之前,你需要准备好以下资源

1、对象存储COS的存储桶Bucket。

请前往对象存储管理页面 ,进入【存储通列表】,查询或新建一个存储桶,进入存储桶查看【基本信息】,并记录下:

l存储桶空间名称 BucketName,例如 examples-1251002854

l存储桶所属地域 Region,例如 ap-chengdu

B、创建CDN日志转存函数(cdn-save-log-into-cos)

1、进入云服务函数的管理页面 https://console.cloud.tencent.com/scf,点击【新建】;

2、选择基于【模板函数】,并搜索关键字“CDN”,选择“CDN日志转存COS”模板;

3、函数名称填写【cdn-save-log-into-cos】,并点击下一步;

4、接着进行函数的信息配置:

  • 地域:请根据你的COS的地域,选择就近的区域;
  • 超时时间:根据你的业务情况,配置合适的超时时间;(例如日志文件非常大,那么建议配置更长的超时时间)
  • 异步执行:务必开启异步执行的选项。避免日志过多和过大,导致函数执行超时。

5、修改『函数代码』,填写COS和CDN配置信息:

6、函数创建完毕。

C、配置定时器

上述两个函数创建完毕后,跳转至函数的配置信息页面。

1、点击左侧菜单中的【触发管理】,并点击『创建触发器』;

2、选择触发方式为【定时触发】,填写任务名称(随意),触发周期为【每1小时】,并保存。

D、常见问题:

1、上面函数配置完毕后,效果是怎样的?

上传函数和触发器配置完毕后,会『每1小时』触发一次日志转存操作。由于CDN日志默认是12小时才稳定,未避免执行时差影响,因此会下载13小时前的日志文件,存储到COS中。

例如,触发时间为5月17日10:00,那么代码判断5月16日20:00~21:00(13个小时前)的CDN日志文件已经收集完毕,不再更新;因此下载该日志文件,存储到COS中。例如,域名 demo.qq.com 的日志存储路径为:

/20210516/20/2021051620-demo.qq.com.gz

2、我希望转存更多的日志,该怎么配置?

在代码文件index.py的第59和60行,有两个配置项,用来控制函数每次执行时下载多少日志。

代码语言:javascript
复制
CDN_LOG_STABLE_HOURS = 12+1
CDN_LOG_SAVE_HOURS   = 1

如果:想一次性保存过去30天的日志,该怎么配置?

将CDN_LOG_SAVE_HOURS调大即可,例如调整为720 (即24小时x30天)。但是请注意,保存大量的日志,会导致执行时间非常长,因此在函数创建时,必须开启『异步执行』选项,并设置更大的超时时间。如果真的执行超时了,也不要慌张,请再次执行即可。代码里有检测逻辑,对于已经上传了COS的日志包,会跳过;只上传新的日志包。

如果:业务上想更快获取最近的日志文件,不想等12个小时,该怎么配置?

将CDN_LOG_STABLE_HOURS调小即可,例如调整为 2 。效果示例是,在10:00这一刻执行代码,下载7:00~8:00的日志文件。

首先说明下,CDN日志是尽力快速收集日志的,但是受到各个地域节点的网络影响,无法100%立刻收集完毕,最长收集时间为12小时。当缩小该配置项,务必不要小于1,否则可能会导致日志文件非常不准(代码只上传1次,不会更新覆盖)。

如果设置为0,会怎样 ?那么,假设触发时间为5月17日10:00,那么代码判断5月17日9:00~10:00(即刚刚过去的这个小时)的CDN日志文件已经收集完毕;因此下载该日志文件,存储到COS中。但是在10:00这一刻,9:55~9:59的日志一般是还没收集到的,因此就会缺失这部分的日志内容。

以上步骤,全部配置完毕后,即完成了本教程的任务目标。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 教程简介
  • 主要步骤
  • 教程正文
    • A、在创建云函数之前,你需要准备好以下资源
      • B、创建CDN日志转存函数(cdn-save-log-into-cos)
        • C、配置定时器
          • D、常见问题:
            • 1、上面函数配置完毕后,效果是怎样的?
            • 2、我希望转存更多的日志,该怎么配置?
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档