如何使用Pipedream和InfluxDB创建低代码工作流程自动化

导航至

现代软件开发的一个重要部分是使用API。虽然使用第三方服务可以加快开发速度,但移动数据和连接东西可能相当无聊。幸运的是,有越来越多的工具可以帮助处理无聊的事情,让您可以专注于更有趣的事情。其中之一就是Pipedream。

在本教程中,您将学习如何将InfluxDB和Pipedream连接起来,创建一个灵活的警报和通知系统,该系统可以通过Pipedream提供的数百个不同的API进行扩展。

什么是Pipedream?

Pipedream是一个集成平台,旨在帮助开发者构建事件驱动的流程。用简单的话说,这意味着Pipedream通过提供与400多个不同的API提供商的集成,使得将多种不同的工具组合在一起变得简单。

您可以将Pipedream视为在编写自定义API集成和使用低代码或无代码平台(如Zapier或IFTTT)之间的一种折中方案。对于许多任务,您可以通过使用Pipedream提供的构建块显著加快开发时间,但如果需要,您也可以编写自己的自定义代码。Pipedream还提供了一些功能,通过其UI使测试和调试工作流程变得更加容易。

Pipedream的一些常见用例包括

  • 连接SaaS应用程序
  • 自定义通知和警报
  • 数据库自动化
  • 移动应用或JAMstack网站后端
  • 速率限制

Pipedream关键概念

在处理Pipedream时,有三个主要组件被使用

  • 工作流程 - 工作流程是包含您在使用Pipedream时对任何输入想要执行的所有操作的“容器”。
  • 触发器 - 触发器定义了工作流程如何开始。它们可以是基本的HTTP请求、预先安排的时间或由第三方应用程序触发。
  • 步骤 - 步骤是工作流程的构建块。在触发工作流程后按顺序运行。它们可以是Pipedream提供的预构建组件和操作,也可以是您的自定义代码。数据可以在每个阶段传递到下一个步骤。

设置InfluxDB

要遵循本教程,您需要一个正在运行的InfluxDB实例和免费的Pipedream账户。一旦您的InfluxDB实例运行起来,您需要创建一个桶,该桶将用于测试和向Pipedream发送警报以进行进一步操作。

您的桶创建完成后,您需要通过转到数据探索器并点击脚本编辑器按钮来插入一些示例数据

 Inserting sample data by going to the Data Explorer and clicking the Script Editor button

将以下Flux查询输入到编辑器中,并将bucketorg参数值更改为您刚刚创建的桶和您的账户组织名称,然后点击提交。

import "experimental/csv"

relativeToNow = (tables=<-) =>
  tables
    |> elapsed()
    |> sort(columns: ["_time"], desc: true)
    |> cumulativeSum(columns: ["elapsed"])
    |> map(fn: (r) => ({ r with _time: time(v: int(v: now()) - (r.elapsed * 1000000000))}))

csv.from(url: "https://influx-testdata.s3.amazonaws.com/noaa.csv")
  |> relativeToNow()
  |> to(bucket: "your-bucket-name", org: "org-name")

Flux query - InfluxDB Script Editor - InfluxDB

此查询将把NOAA水样数据集存储在您的桶中,并修改时间戳,使其相对于当前时间设置,这将使查询数据更容易。

设置Pipedream

在您的Pipedream仪表板中,单击工作流选项卡,然后单击蓝色“新建”按钮以添加新的工作流。您应该在屏幕上看到以下内容

Pipedream setup - dashboard

在本教程中,我们将使用HTTP API触发器,该触发器提供一个URL,每当向端点发送HTTP请求时,都会触发工作流。点击“HTTP API”触发器按钮后,您的工作流应如下所示

Pipedream workflow - HTTP API

接下来,您可以添加一个NodeJS步骤。在这种情况下,我们将保持简单,只使用console.log来查看从HTTP触发器传递的事件对象。在下一阶段创建我们的警报时,这将显示从发送到Pipedream的InfluxDB警报创建的对象。

Object created by the InfluxDB alert that is being sent to Pipedream.

最后,我们将发送电子邮件以在发生错误时通知我们。

Pipedream - alert email to notify about error

使用Pipedream的最佳好处之一在这里可见——UI会自动解析传递的事件,并允许您从事件对象中点击并抓取您想要的属性。您还可以重放过去的事件以尝试调试或修改工作流以查看结果如何改变,这使得开发更加顺畅。

一旦您将通知电子邮件格式化为您想要的样子,部署并保存您的工作流。请确保复制HTTP API触发器的URL,因为在下一步中我们需要它。

创建InfluxDB警报和检查

现在Pipedream已设置好并准备好接收请求,您可以进行下一步,即在InfluxDB中创建警报。转到“警报”选项卡,然后点击创建通知端点的按钮。选择“HTTP”作为目的地,为您的端点命名,然后粘贴您的Pipedream URL触发器的URL,并选择“POST”作为HTTP方法。

InfluxDB - create notification endpoint

现在转到“检查”选项卡并创建一个阈值检查。这将打开数据探索器视图,您可以在其中配置您要检查的桶和您要查询的字段。选择您之前存储数据的桶和您要发送警报的字段和位置。

InfluxDB - configure your check

在下一个选项卡中,您可以进一步配置您的检查。以下是一些需要注意的重要事项

  • 每隔一段时间 - 这将安排检查运行的频率。默认情况下,检查每分钟运行一次
  • 标签 - 设置标签将允许我们在创建通知规则时过滤某些检查。
  • 状态消息 - 该消息将与通知HTTP请求一起发送,可以自定义以包含字段值、列名等。您可以在文档中了解更多关于自定义此消息的信息。
  • 阈值 - 可以根据每个阈值级别的查询返回值设置条件。在下一步中,您将了解如何使用阈值级别来筛选发送通知警报的时间。

InfluxDB - further configure your check

对于本教程,您可以为查询和规则选择任何您想要的选项——只需确保您的阈值值被触发,以便您获得一些测试数据发送到Pipedream。

如果您计划在Pipedream中创建多个端点,您还需要为您的检查添加标签,以便您可以过滤到正确的端点。

如果您想对检查有更多的控制权,您还可以直接查看由UI自动生成的Flux脚本。返回到检查标签页,并单击您刚刚创建的检查的设置图标。单击编辑 并可以自定义Flux脚本。

InfluxDB checks - customize Flux script

您可以通过查看警报历史记录页面来确认您的检查是否运行正常。

InfluxDB - Alerts History

您需要做的最后一件事是创建一个通知规则。将条件设置为匹配您要监控的标签和阈值级别,然后选择您之前创建的通知端点。如果您不创建此规则,您的检查将运行并存储在_monitoring 桶中,但它们不会发生任何事情。

InfluxDB - Edit notification rule

结果

如果一切设置正确,那么您应该开始在您的Pipedream工作流程中看到事件出现。

Events - Pipedream workflow

如果检查我的电子邮件,我也可以看到消息正常到达。

Email - Pipedream workflow

如果您不打算长期使用这些警报,请确保在InfluxDB UI中禁用它们,这样它们就不会在后台持续运行,可能会产生费用或耗尽您的免费层限制。

其他用例

现在您已经设置了一个基本的工作流程来确认一切正常,您有大量选项可以通过Pipedream提供的许多集成来提升到下一个层次。在本节中,我将介绍一些关于Pipedream更高级使用的潜在想法。

扩展您当前的工作流程

目前,警报工作流程只会向您用来创建Pipedream账户的电子邮件地址发送电子邮件。如果您在生产环境中使用此类警报,您将想要确保通过API调用获取他们的联系信息,将警报发送给当前值班的人。

以下是一些可能有用的集成供您检查

  • Twilio - 向您的值班工程师发送短信。
  • Slack - 如果您有一个用于支持或SRE的频道,将消息发送到那里以通知他们警报可能是有意义的。
  • Zoom - Pipedream可以用于自动创建Zoom会议并发送事故响应链接。
  • 数据库集成 - Pipedream 与所有主要数据库(如 Postgres、MySQL 和 MongoDB)都进行了集成。数据可以被查询并作为工作流的一部分使用。额外的数据可以帮助为处理警报的人提供上下文。

需要注意的是,Flux 也通过其 标准库 包提供了对这些服务的集成,因此如果您不想/需要在使用 Pipedream 的工作流中使用多个步骤,可能更简单的方法是通过 Flux 与 API 进行通信。

条件工作流

Pipedream 目前在用户界面中不支持直接处理分支或条件工作流。目前的解决方案是创建一个由主工作流触发的新工作流。

您可以通过在主工作流中使用一个 JavaScript 步骤来读取传入的数据,并使用条件语句来确定应该运行哪个工作流。您可以在触发下一个工作流的 HTTP 请求的主体中发送来自当前工作流的数据。根据您的用例,您可以针对不同的条件创建多个不同的工作流。

丰富数据

在本教程的主要部分,InfluxDB 通过发送警报作为工作流的源和触发器。InfluxDB 也可以用作工作流的一个中间步骤。一个例子就是从外部来源收集和转换数据,然后再将其存储在 InfluxDB 中。

一个实际的例子是使用 Pipedream 的 Twitter 搜索触发器 步骤来获取您感兴趣查询的推文。让我们以您的公司名称为例——您可以将这些推文存储在 InfluxDB 中以跟踪随时间的变化,并根据过去一小时推文数量设置警报,如果与历史数据相比有突然增加,则通过另一个 Pipedream 工作流通知您的营销团队。这可以通过 Flux 提供的任何 内置分析函数 实现,这些函数适合您的用例。

您还可以使用 Pipedream 创建一个中间步骤来 检查推文的情感,以确定其是积极的还是消极的,并根据此定制工作流,并将额外数据与 InfluxDB 一起存储以进行更准确的分析。

计划任务

Pipedream 还有一个计划任务触发器,可用于定期运行的工作流。这可以用来抓取网站,处理数据,然后根据该数据触发额外的操作。

下一步

从本文和与 Pipedream 的工作中得到的最大收获应该是,您实际上只受限于您的想象力。拥有对数百种不同工具和服务的便捷访问,您几乎可以无限地组合它们。希望您可以从本文中学到一些东西,并用它来创造一些令人惊叹的东西。如果您想深入了解本文中提到的某些主题,我提供了一些额外的资源链接。