新玩具:基于腾讯云 SCF 的 HTTP 探活函数 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
mreasonyang
V2EX    分享创造

新玩具:基于腾讯云 SCF 的 HTTP 探活函数

  •  
  •   mreasonyang
    MrEasonYang 2021-07-27 00:39:14 +08:00 3448 次点击
    这是一个创建于 1588 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简介

    基于 Golang 开发了一款简单易用的 HTTP 拨测云函数,入口函数与腾讯云 Serverless SCF SDK 绑定。

    与目前腾讯云中默认的拨测函数不同的是,url-tester-func 支持将非 200 响应码作为预期值且通知机制由邮件变更为了 Telegram Bot 。使用者借助腾讯云提供的免费 Serverless 调用配额即可搭建一套简单的 HTTP 接口探活服务。

    功能

    • 周期性探测指定 HTTP 地址是否可正常响应,并将非正常的探测结果发送至指定 Telegram 对话中以实现近乎实时地异步监控网站状态
    • 基于腾讯云 Serverless SCF,部署简单且零成本

    FAQ

    1. 和 UptimeRobot 等网站比有什么优势?本质上还是个实现简单的小玩具,一定要说优势的话可能就是可以自主部署并方便做二次定制吧~
    2. 服务费用开销如何?目前各个厂商的 Serverless 产品都配有每月至少 100w 次的免费调用配额,以本函数的使用场景看通常是不会造成任何费用的
    3. 只支持腾讯云吗?目前个人用腾讯云的产品比较多,未来也会逐渐支持其他厂商的,欢迎 star 关注~

    使用指引

    第 1 条附言    2021-07-27 13:31:53 +08:00

    费用附加说明

    在实际使用中,是否会产生费用其实是与探测的「地址数量」和探测的「频次」是正相关的。

    腾讯云 SCF 在公测结束后,对免费额度进行了调整,本工具比较容易触发的费用模式主要是「外网出流量计费」,可以参考官方的文档

    由于外网出流量计出不计入,所以探测的逻辑中只有在发起 HTTP 请求时会被计量,接受响应则不会。因此在「地址数量」和「频次」均不高的时候,造成的费用非常低,在账单中会被校准为 0 元。但大规模使用的场景下则会累积较大量的外网出流量,造成事实上的费用,目前的费用标准是 0.8 元/GB 。

    那么用量的「高」和「低」该如何判断呢?这里以我个人的使用经验来给大家举例作为参考:

    • 函数量:1 个
    • 监测地址数:5 个
    • 监测频次:每 5 分钟请求一次
    • 发送 TG 量:由于我手下有个站点不太稳定,通常一个月会产生 100+ 的发送量

    腾讯云账单如下,即产生 0.06 元费用,校准后实际收费为 0 元: CleanShot 2021-07-27 at 13.24.54@2x.png

    大家可以此为根据,假设流量和示例是线性关系来判断自己的用量是否会产生费用。

    第 2 条附言    2021-08-01 14:33:45 +08:00
    已支持「 Server 酱」和「 Qmsg 酱」,除了 Telegram 也可以选择微信或 QQ 为通知渠道啦~

    使用后者的话可以按需选择部署在国内的 Region 了
    第 3 条附言    2022-05-30 21:00:37 +08:00
    自 2022 年 6 月起,腾讯云的 serverless 产品将原免费额度策略改为新用户限定在前 3 个月内免费,3 个月后采取最低套餐消费模式进行收费。这样的收费策略通常会导致本文这类监控应用的投入产出比变差,请谨慎选择和使用。
    16 条回复    2021-08-01 14:31:20 +08:00
    madlifer
        1
    madlifer  
       2021-07-27 00:50:34 +08:00 via Android
    能否获取该网页的 http 代码 比如 404 403 和网页内容关键词监控?
    mreasonyang
        2
    mreasonyang  
    OP
       2021-07-27 01:08:04 +08:00
    @madlifer 目前在功能上对非 200 的情况都是支持的,包括 4XX/5XX 以及超时、握手失败等都可以监控到并发送提醒。但对于响应码是 200 但 body 包含错误信息的情况还不支持。这个场景确实也挺常见,后面会支持下
    ihipop
        3
    ihipop  
       2021-07-27 09:35:57 +08:00 via Android
    @mreasonyang 没看代码但是腾讯云 fc 可以访问 telegram 的 api ?
    docx
        4
    docx  
       2021-07-27 09:47:12 +08:00 via Android
    腾讯云函数 SCF 的免费配额并不包含外网出流量。频繁监测将造成扣费。
    ihipop
        5
    ihipop  
       2021-07-27 10:01:58 +08:00 via Android
    @ihipop 原来是部署在海外,那测国内就不太稳定了。最近回国经常 reset
    orqzsf1
        6
    orqzsf1  
       2021-07-27 10:20:00 +08:00
    借楼问下,这样不会有出流量吗?要结算费用的吧
    PerFectTime
        7
    PerFectTime  
       2021-07-27 10:42:27 +08:00
    流量要钱
    mreasonyang
        8
    mreasonyang  
    OP
       2021-07-27 12:05:18 +08:00 via iPhone
    @dzyou2007 理论上外网出确实有费用,但由于目前只算出不算入,而这个探测场景的出流量很小,所以只监测几个网站的话每个月的账单都会被校准为 0 元。当然如果确实监测内容很多且频繁的话就需要搞个轻量机器反代下了。
    mreasonyang
        9
    mreasonyang  
    OP
       2021-07-27 12:07:17 +08:00 via iPhone
    @ihipop 嗯嗯,TG 只能海外了。后面要是有时间可以支持下 Server 酱 ,这样就能在国内部署了
    mreasonyang
        10
    mreasonyang  
    OP
       2021-07-27 12:09:37 +08:00
    @orqzsf1 个人使用的场景很难达到收费阈值。不过大量使用的话仍然需要搞个轻量机器反代解决外网出的计费问题。可以参考给楼上的回复
    madlifer
        11
    madlifer  
       2021-07-27 12:13:05 +08:00
    给个工具型产品思路:

    现在 VPS 行业用的 WHMCS 销售系统,一些服务器资源如果已经卖空的情况下,打开购买页面会显示“out of stock”字样,如果有购买了该款服务器的客户没有续费,会把资源重置后自动 /手动上架。

    因为目前 VPS 商家大部分都会做一些活动型服务器,价格很便宜,就有人需要监控 购买页面的开放情况,如果可以购买,发送提醒,或者尽量能够做到自动抢购。

    如果要获得比较高的 GithubStar 数量的话,可以尝试做一下这个产品

    之前有人根据我的建议做过类似的东西,技术上通过 curl 查找网址页面关键字“out fo stock”方式实现。

    往往做这样一个网站需要监控很多条,甚至用户自定义添加监控。但数量多了随之而来的问题就是查询很慢。间隔几分钟才能循环一次。

    解决方案只能是通过给 URL 标号,一台服务器从 0 标号开始循环,第二台服务器从 10 、20 标号循环,成本就比较高。

    如果能通过 serverless 的方式来做的话成本应该能降下去不少,感兴趣的话可以联系我做前台的产品设计,我也比较有兴趣。
    docx
        12
    docx  
       2021-07-27 12:17:10 +08:00
    @mreasonyang

    只是看你在费用方面没提到流量,而得出结论不会造成任何费用,所以做一点补充,以免不知情的人误解。

    流量很小的情况下确实会被计费精度抹零。
    这个只有在高频率,或多站点,或同地域还存在其他项目访问外网导致累计时进位才会出现扣费。
    mreasonyang
        13
    mreasonyang  
    OP
       2021-07-27 12:24:31 +08:00   1
    @dzyou2007 明白,这个其实和用量有关,稍后我 append 下说明,在文档中也会加上提示。感谢提醒
    mreasonyang
        14
    mreasonyang  
    OP
       2021-07-27 13:06:53 +08:00 via iPhone
    @madlifer
    完全理解这个场景,我个人也有这种使用诉求。
    不过从实现上来看这个需求更像是标准的爬虫,应该还会涉及到一些反反爬的操作,和本文这个小工具的初衷不太一致。
    后面会考虑下看看要不要开个新项目来做,到时候一起合作呀,哈哈
    madlifer
        15
    madlifer  
       2021-07-27 13:45:32 +08:00
    @mreasonyang 可以加个绿色 bWFkbGlmZXIxMzM3
    mreasonyang
        16
    mreasonyang  
    OP
       2021-08-01 14:31:20 +08:00
    @ihipop 已支持 Server 酱和 Qmsg 酱,可以部署在国内给微信和 QQ 发通知啦~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1038 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:34 PVG 07:34 LAX 15:34 JFK 18:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86