如何使用CloudFormation模板扩展InfluxDB的数据收集
作者:Nate Isley / 产品,用例,开发者
2020年6月23日
导航到
在之前的一篇文章中,我展示了如何从AWS Lambda调用InfluxDB API,但设置相当手动,结果不可移植。理想情况下,我们作为社区可以扩展并共享收集和处理时间序列数据的方法。为此,我想分享一个CloudFormation模板。
CloudFormation是AWS的基础设施即代码服务,允许您在配置文件中定义几乎任何AWS组件。结果是提供了一种具体、可重复的环境定义服务,这在许多场景中都非常有用。例如,如果有人意外删除了您的简单队列服务主题或一个EC2实例,您可以通过运行CloudFormation模板轻松地重新创建它们。
地理时序CloudFormation模板
CloudFormation模板创建了AWS堆栈,这些堆栈封装了模板中定义的AWS组件。AWS堆栈易于创建、更新、重新创建和删除。
下面我将介绍CloudFormation模板,该模板每小时从美国地质调查局(USGS)提取地震数据并将其写入InfluxDB。我不会尝试给您一个完整的CloudFormation教程,但如果您想使用此模板创建自己的,理解不同部分的分解是有帮助的。
- 前约20行定义了模板在安装时请求的变量。
- 第21行至120行处理Lambda部署的一个怪癖,即Lambda资产在部署之前必须在您的区域中。因为没有优雅的解决方案,这100行在您创建堆栈的区域中创建了一个S3存储桶,并将资源复制进去。
- 第121行至132行定义了一个具有运行Lambda的基本权限的角色。
- 第133行至144行定义了一个Python库层。Lambda层在解耦函数与其支持库方面非常实用。在这个层中,我打包了Python HTTP库、Python S2 Geometry库和InfluxDB Python客户端库。
- 第146行至165行定义了Lambda函数。Lambda是一个简短的Python脚本,被压缩在一个名为geo_lambda.zip的文件中。
- 第166行至188行定义了一个具有运行Lambda权限的事件规则。该规则将每小时运行一次Lambda。
部署Lambda堆栈
现在我们已经了解了模板,让我们来部署它。首先,登录您的免费AWS账户,搜索CloudFormation服务。确保您在要部署Lambda的区域中——我部署到错误区域的堆栈比我想承认的要多。以下截图显示了在弗吉尼亚北部区域(右上角)搜索CloudFormation的情况。
导航到CloudFormation后,点击“创建堆栈”按钮。选择“模板已就绪”和“Amazon S3 URL”选项,然后将以下URL复制并粘贴到“Amazon S3 URL”字段中
https://influxdata-lambda.s3.amazonaws.com/GeoLambda.yml
点击“下一步”,然后命名您的堆栈。提供以下InfluxDB详细信息
- 您的组织ID
- Lambda写入的桶的Bucket ID
- 具有写入桶权限的令牌
- 您的InfluxDB URL
还有两个其他参数(QSS3BucketName,QSS3KeyPrefix)具有默认值,您应该不要更改。这些参数是资产复制的辅助工具。
在指定堆栈详细信息页面上,留空字段,然后点击“下一步”。选择“我承认创建此堆栈将创建资源”,然后点击“创建堆栈”。
几分钟后,堆栈将部署到您的区域。要导航到您的新Lambda,请点击“服务 -> Lambda”。在Lambda函数页面上,您应该看到那里列出了您的新Lambda。CopyZipsFunction是辅助复制函数,GeoPythonLambda执行数据收集和写入工作。
根据我们设置的AWS规则,GeoPythonLambda应该每小时运行一次,但您应该测试并确认它是否正常工作。要测试,请点击“GeoPythonLambda”,然后点击“测试”。测试需要输入定义,但此Lambda没有输入要求,所以点击并通过并保存默认数据集。
在测试成功之后,您应该期待看到以下结果——绿色的 执行结果:成功。
数据点写入后,当您登录到您的 InfluxDB UI 时,您将能够探索地理位置地震数据。
还有其他什么吗?
顺便说一句,现在 Python 客户端库层资产已经存在于您的环境/区域中,您可以轻松创建新的 Lambda 并与客户端进行实验。创建一个新的 Python 3.8 Lambda 并选择 层 和 添加层。
在“添加层到函数”中,“my-layers”是运行时兼容层列表中的一个选项。
添加后,您可以在任何 Lambda 代码中导入并使用客户端库。
接下来是什么?
本博客介绍了如何通过 CloudFormation 在 AWS 上分发数据收集器。如果您有在 AWS 上运行的数据收集需求和负载,这个模板可以启动您的 AWS 堆栈创建工作。
除了数据收集讨论之外,这个 Lambda 还直接支持对 Flux 的新地理时间查询能力的深入审查。现在您已经将 USGS 地震数据报告在内,您可以使用 Flux 分析您的数据 随时间和空间的变化。