【CLS日志服务 & SCF云函数实践】优雅地处理数据(超详细)

2023-10-25 18:49:13 浏览数 (1)

前言

从上次SCF云函数API实践文章发布到现在已经过去3个月了,这篇文章主要介绍通过api快速操作scf,但是这篇文章并没有介绍如何处理scf产生的数据,本篇文章相当于是之前的续集,讨论cls处理scf的数据以及cls一个非常牛叉的功能,这里先按下不表。

我们都知道创建scf函数的时候可以绑定对应cls的日志主题,这样可以将scf运行产生的所有数据保存至对应cls,但是很多小伙伴都遇到一个头疼的问题,就是我都删除scf了但cls为什么莫名其妙扣费每天都会扣个几分钱,这个是因为相对应的日志主题并没有删除,但是cls计费的项目是比较复杂的,从下图可以看出有非常多的计费项目:

CLS的购买

腾讯云为了解决这么多复杂的计费推出了资源包,如果不买资源包按量计费每天都会扣费,这里放出资源包的抵扣规则:

对于我来说一个月10U的额度完全够用,我一个月使用1G左右的日志存储180日,使用资源包大概每天0.1U左右,一个月不超过4U供大家参考一下。

刚开始购买cls有个2折优惠,如果您是重度腾讯云用户建议2年拉满,10U两年也就48,我现在都有点后悔买一年了哈哈哈,活动链接:https://curl.zijiebao.com/wB8UJwtA

基础操作

好了,接下来进入正题,首先我们需要创建一个scf,这里进入scf控制台:

https://console.cloud.tencent.com/scf/list

创建函数

这里以广州为例,咱点击新建创建一个scf哈

这里建议切换一下时区,不然函数获取的时区都是默认的utc,选择您喜欢的运行环境,这里用的py39。函数代码可以先不写,用默认的,日志配置可以点击新建日志集

创建日志主题

注意地域要和刚刚scf创建的地域一致,再点击创建日志主题

填写上日志主题和日志集,建议日志集自己起一个名字,防止与其他的弄混淆

这个标签功能也非常好用,可以在这里创建标签,后面东西多了容易区分彼此。标签管理页https://console.cloud.tencent.com/tag/taglist

标签

新建标签可以看到

返回去选择刚刚创建的标签

再点击确定完成日志主题的创建,我们可以在刚刚的标签界面看到标签下绑定的资源了

可以通过标签管理资源这个功能非常不错,点击资源id可以直接调到对应的管理界面,这里给腾讯云点个赞!

回到scf的配置日志的界面,点一下刷新

选择刚刚创建的日志,就可以点击完成啦。

至此函数创建完毕!

点击进入函数配置界面

这里我用的旧版编辑器,注意哈,旧版的加载速度快,但是没有新版的那么华丽,但是启动快,在云端编辑器上只有5G的存储,并且这个存储是这个地域公用的,并且不会自己清除,这就会导致安装的模块会占用大量空间,这里推荐用scf的层功能,将包单独存储到cos上面,这里简单介绍一下层的操作方法

配置层

从scf控制台切换到层

点击新建,选择对应的运行环境,再上传模块包

这里捋一下层和云函数的关系,以python3.7为例,当代码用到的模块有一些很大的包(opencv-python,torch),就不适合和scf代码放在一起,这样会显得代码包很臃肿并且每次更新代码非常慢,因为云函数部署代码需要把东西都压缩再放入指定的容器中就会相当耗时,这时候放入层,其实就是对环境模块的补充,因为这个环境也就是包本身是一直处于容器之中,这样每次更新只需要更新代码即可,这样更新速度就相当可观了。

层包的制作简单介绍一下,其实就是将site-package里面的包打包成zip即可,下面是目录结构:

注意,这里的cos上传也是按地域来的,如果包大小大于50M就需要到相应地域创建cos对象上传包之后再来这里配置上传即可。

运行函数

回到函数代码,我们可以运行一下测试

可以看到其产生的日志

查看日志

我们可以回到cls的检索分析,选择对应的日志集和日志主题查看刚刚的日志

这里推荐用交互模式,比较直观

这里我填上刚刚打印的内容,确定再点击最右边搜索的按钮可以看到

版面配置

这里内容太多了,如果我们只想看print产生的内容可以点击右上的默认配置,点击管理配置

只选SCF_Message 再点击应用

可以看到非常的简洁了

正片开始

数据咱已经准备好了,但是通过日志面板查看太常规了,我们注意到在日志面板有监控告警的面板:

配置通知内容模板

这个地方说白了就是可以处理日志里面的内容并发送相应的警告,点入通知渠道组并新建可以看到

咱先添加规则,按图勾选

在渠道类型可以选择通知的渠道

这里注意哈,通知的电话和短信是免费使用的,不需要担心因此产生的费用:https://cloud.tencent.com/document/product/614/51741

也就是说咱们可以通过短信或者电话来展现数据,研究发现,电话的模板比较单一,这里推荐使用短信

确定后可以点击测试通知渠道可以看到短信非常快啊就发过来了

不难看出这个内容模板就可以配置短信的内容滴,这里先按默认设置,后面我会详细介绍如何配置它。

配置告警策略

回到刚刚cls的控制台,咱按图新建告警策略

注意地域选择和之前配置scf和cls日志的一致哈

填好测试名称和对应的日志主题

监控语句

这里到第一个难点,就是监控日志的监控语句

简单解释一下,分析语句和之前cql检索分析的语法一致,比如我之前在scf里面print了hello world,那么我就可以这样子看到所有带hello world相关的内容

在监控语句的前半部分就是cql相当于把数据初筛出来,我们输入后发现

需要有包含SQL语句以定义告警指标,其实就是为了方便后面

这个触发条件去取相应的值,这里我们以hello world出现的次数为例子

点击预览后我们发现hello world出现了一次,我这里去scf加了几条print并运行

再返回来点击预览,发现

非常不错,成功的统计了hello world出现的次数。这里只以统计次数为例,实际上还有非常多的功能,可以搭配各种各样的语句实现其功能,这里是cql语法规则,大家有需要可以看看https://cloud.tencent.com/document/product/614/47044

这里配置触发条件,我们需要短信展示hello world的出现次数,因此可以键入

代码语言:txt复制
$1.time > 0

这里可以配置等级可以看个人需求,设置一个区间显示不同等级,当然也可以通过不同等级走不同的消息通知内容。

执行周期可以选择固定时间和固定频率,这个没有什么好说的,这里方便测试可以选一个近点来测试

多维分析这里我们用不到,其实就是对日志数据进行额外的分析,通过示例不难看出

告警通知

在这里可以依据需求来设定告警的频率,这里以告警hello world显示的次数为例,直接选择一天告警一次

关联通知选择之前创建的

附加内容相当于是给通知多一个传参的隧道,可以将多维处理的log放入,这里次数其实在QueryResult里面就有了,不需要加额外的参数了,可以参考告警通知变量文档:https://cloud.tencent.com/document/product/614/74718

所以这里附加通知内容我删去了,至此完成告警策略的配置

配置通知内容模板

没一会儿,短信就来了

可以看到有多内容咱都不需要,咱进入通知内容模板

代码语言:txt复制
新建选择短信页,填入以下内容
代码语言:txt复制
名称:{{.Alarm}}
当前数据:{{.QueryResult[0][0].time}}

告警恢复可以不用填,保存后,进入通知渠道组,编辑刚刚添加的渠道

代码语言:txt复制
点击编辑的图标

选择刚刚创建的内容模板,保存后再确定哈,不然是不生效的!

然后,我们去告警策略把时间往后调一分钟,等待短信到来

完美!成功的将hello world的次数以短信的方式显示,关键还是免费的,也就是说可以通过此方式来创建各种可能的通知。

短信这个地方可能唯一不好的地方就是标题标题不能改,但是微信的渠道是可以自定的,如果有兴趣可以按上面的语句试试。

语句说明

这个部分主要补充上文中提到的语句

$1.time > 0

这个$1其实就是对应监控语句中的第一条,如果有个多个监控语句可以定义为$1, $2...依此类推

{{.QueryResult0.time}}

这个.QueryResult是监控语句的结果,但是是以数据的形式,在告警通知变量文档中说的很详细:https://cloud.tencent.com/document/product/614/74718#QueryResult

这里我们要取到第一条执行语句里面的第一行:所以是.QueryResult0,而后面的.就和取对象的值一样,类似于js可以以.也可以[]取。

总结

总体来说,这一套告警流程还是非常清晰,基本涵盖了各种情况,cls除了处理scf产生的数据,像别的产品cos、cdn、api等等都是可以通过cls处理,玩法可以说是非常多!大家就可以根据自身需要来定制自己的数据处理方案咯。

至此本文填补了之前scf文章数据处理的坑啦,非常感谢大家看到这里,同时祝愿咱腾讯云越来越好呀~

0 人点赞