Skip to content
Go back

使用 n8n 搭建监控流量使用的工作流

Edit page

0x00 遇到的问题

也就是前几天,我使用的梯子在当前这个计费周期结束之前流量耗尽,这就意味着我不得不和我熟悉的互联网断开,短暂的生活在一个受限的网络环境中。最初,我觉得这段时间应该很容易度过,但很快就发现我过于乐观,那些我平时使用习惯的网站都把我拒之门外,展现在我面前的是一个个无法访问的冰冷页面。

这种感觉太糟糕了。

按照常理来说,每月 1000G 的流量怎么着都够用了,但可能因为有人开启了全局模式,导致流量没有节制的被消耗,这个问题是无解的,我无法阻止别人使用。但我可以换个思路,这种窘迫的局面,固然和流量耗尽有关,可如果能提前收到预警,也不至于被迫应对这个局面。所以解决办法就很明确,加一个流量耗尽的预警邮件。

0x01 思考解决方案

最简单的方法自然是在梯子的后台开启这个通知,但很不幸,我使用的服务没有提供这个功能。

紧接着,我考虑在 GitHub 上放一个脚本,使用 GitHub Action 定期运行脚本,使用 Headless Browser 的方法获取数据。可这个方案因为某些很客观的原因无法实施。

转机发生在今天。我发现可以通过一个接口获取流量的使用信息。这样一来问题就简单了,只要有个定时任务访问这个接口,解析接口返回的数据,获取到我需要的值和我预设的阈值做对比,超过仅给我发预警邮件,这样一来问题就算是迎刃而解。

简单思考后,运行定时任务的平台决定使用 n8n,有两个原因,一个是我本身就部署了私有化服务,其二,我之前一直想用 n8n 做点什么,但没有合适的需求,对于这次送上门的机会我肯定不会错过。

0x02 使用 n8n + mailtrap 设置预警

n8n 上手感觉挺容易的,只要搞懂不同节点的作用,然后将它们组合拼接起来就能搭建使用场景。因为之前研究过,所以这次就直接上手了。

关于我这次的需求,简单梳理下流程:

最后完成的效果如下:

11-01-2025-11-01-20.56.43@2x

本来只有一个判断条件,后面是保险起见我多加了一个配置,在用量过半的时候就发一次提醒邮件,这样冗余度会更高一些。

你也可以看到,这个自动化工作流的 Node 并不多,看起来没有多少工作量,我一开始也是这么想的,但没想到会在邮件发送的这一步耗费很长时间。

我在上面提到我使用的 mailtrap 发送邮件,但我想很多人都没有听过这个服务,我也是这次第一次知道。我最初的选择是 Mailgun。因为我前端时间想要部署 Ghost 写博客,其中一个环节就涉及到通过第三方邮件服务发送验证邮件,Ghost 的官方文档推荐的就是 Mailgun。我以前只知道 Mailgun 可以用来做邮件营销,没想到还可以处理这种事务性的工作。因此,这次需要使用邮件服务的时候,我第一个想起的就是 Mailgun。

但令我没想到的是,我刚一注册并通过邮件验证后,我的账户就被临时禁用了 😅。我只能浏览页面,但任何服务都无法使用。

(PS:说到这里插一句,Mailgun 好像是给企业用户使用的。并且验证账户的时候需要使用手机号,使用国内的手机号貌似无法收到短信)

我立刻建了一个工单询问 Mailgun 的客服发生了什么。客服的响应还挺快,很快我就收到了回复:

11-01-2025-11-01-21.07.48@2x

之前我一直吐槽国内的一些产品运营策略非常的恶心(比如微信),但经过前几周 WhatsAPP 莫名其妙的封禁和这次的 Mailgun 事情,我发现国外的产品也没好到哪去,唯一可能显得不那么让人烦躁的地方是可以联系上他们的工作人员帮忙解决问题。

说回 Mailgun,经过和客服的沟通,他们答应解除对我账户的禁用,但是还是增加了发送邮件的限制,直到我能提供更多可靠的信息后他们才能放开账户限制。

不过在问题还没解决的时候,我看了下 n8n 提供的发送邮件服务,想找一个替代品,这才选择了 mailtrap 这个服务。它和 Mailgun 很像,但用户量和知名度和 Mailgun 还有差距,所以在风控策略上不会像 Mailgun 那样严格。而且还有一个好消息,mailtrap 可以直接使用 Google 账户登录。

很快,我就搞定了 mailtrap 的注册和设置,并将其接入了 n8n 的 Action Node。

到这,整个服务就算是彻底的跑通了,接着这次机会,我也算是实践了一把 n8n,确实是一个非常强大的工作流编排工具,后续我也打算在其他服务里使用 n8n 做一些产品上的测试,以后有机会再分享啦。


Edit page
Share this post on:

Previous Post
找到你的「自由数字」
Next Post
使用 Keyboard Maestro 简化博客的更新流程