亚马逊AWS官方博客

使用 Amazon Timestream 运行和管理开源 InfluxDB 数据库

即日起,您可以在 Amazon Timestream 中使用 InfluxDB 作为数据库引擎。借此,您可以利用 InfluxDB 和开源 API(包括收集时间序列观测结果的开源 Telegraf 代理)轻松运行近乎实时的时间序列应用程序。

现在,Timestream 提供两个数据库引擎选择:Timestream for LiveAnalytics 和 Timestream for InfluxDB。

如果您的用例需要近乎实时的时间序列查询或 InfluxDB 中的特定功能(例如使用 Flux 查询),您应该使用 Timestream for InfluxDB 引擎。如果您需要每分钟摄取超过数十 GB 的时间序列数据,并在几秒钟内对数 PB 的时间序列数据运行 SQL 查询,则选择现有的 Timestream for LiveAnalytics 引擎更合适。

借助 Timestream 对 InfluxDB 的支持,您可以使用自动配置的托管实例,以获得最佳性能和可用性。此外,您可以通过为 InfluxDB 数据库配置多可用区支持来提高弹性。

Timestream for InfluxDB 与 Timestream for LiveAnalytics 各有所长,前者可实现低延迟,而后者可用于大规模时间序列数据的摄取。

Timestream for InfluxDB 入门
下面我将演示如何开始使用。

首先,创建一个 InfluxDB 实例。导航到 Timestream 控制台,再转到 Timestream for InfluxDB 中的 InfluxDB 数据库,然后选择创建 Influx 数据库

在下一页上,填写 InfluxDB 实例的数据库凭证

另外,在实例配置中指定所需的实例类以及存储类型和容量。

在下一部分中,可以选择一个多可用区部署,从而将数据同步复制到不同可用区中的备用数据库,也可以选择只使用单个 InfluxDB 实例。采用多可用区部署时,如果检测到故障,Timestream for InfluxDB 将自动故障转移到备用实例,从而避免数据丢失。

然后,在连接配置中配置连接到 InfluxDB 实例的方式。在这里,可以灵活地定义网络类型、虚拟私有云(VPC)、子网和数据库端口。还可以灵活地将 InfluxDB 实例配置为可公开访问,方法是指定公有子网并将公共访问设置为可公开访问,从而允许 Amazon Timestream 将公共 IP 地址分配给 InfluxDB 实例。如果选择此选项,则请确保采取了充分的安全措施保护您的 InfluxDB 实例。

此演示将 InfluxDB 实例设置为不可公开访问,这也意味着只能通过本节中定义的 VPC 和子网访问它。

数据库连接配置完毕后,便可以定义数据库参数组和日志传输设置。在参数组中,可以定义要用于 InfluxDB 数据库的特定可配置参数。在日志传输设置中,还可以定义向之导出系统日志的 Amazon Simple Storage Service(Amazon S3)存储桶。要详细了解 Amazon S3 存储桶所需的 AWS Identity and Access Management(IAM)策略,请访问此页面

配置完毕后,选择创建 Influx 数据库

创建 InfluxDB 实例后,可以在详细信息页面上看到更多信息。

创建 InfluxDB 实例后,还可以访问 InfluxDB 用户界面(UI)。如果将 InfluxDB 配置为可公开访问,则可以通过在控制台中选择 InfluxDB UI 访问 UI。在上面的设置中,InfluxDB 实例配置为不可公开访问。在这种情况下,需要通过与我的 InfluxDB 实例位于同一 VPC 内的 Amazon Elastic Compute Cloud(Amazon EC2)实例使用 SSH 隧道访问 InfluxDB UI。

打开详细信息页面中的端点 URL,导航到 InfluxDB UI,并使用在创建过程中配置的用户名和密码。

通过访问 InfluxDB UI,现在可以创建一个令牌来与 InfluxDB 实例进行交互。

还可以使用 Influx 命令行界面(CLI)创建令牌。在创建令牌之前,需要先创建配置,从而实现与 InfluxDB 实例的交互。以下是创建配置的命令示例:

influx config create --config-name demo  \
    --host-url https://<TIMESTREAM for INFLUX DB ENDPOINT> \
   --org demo-org  
   --username-password [USERNAME] \
   --active

创建 InfluxDB 配置后,需要创建操作员、全访问或读/写令牌。以下是创建全访问令牌的示例,该令牌用于向所定义组织中所有资源授予权限:

influx auth create --org demo-org --all-access

获得用例所需的令牌后,可以使用多种工具(例如 Influx CLI、Telegraf 代理和 InfluxDB 客户端库)开始将数据摄取到 InfluxDB 实例中。这里使用 Influx CLI 以行协议格式编写示例家庭传感器数据,您也可以从 InfluxDB 文档页面获取这些数据。

influx write \
  --bucket demo-bucket \
  --precision s "
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200
"

最后,便可使用 InfluxDB UI 查询数据了。导航到 InfluxDB UI 中的 Data Explorer 页面,创建一个简单的 Flux 脚本,然后选择提交

Timestream for InfluxDB 使您可以更轻松地使用 InfluxDB 开发应用程序,同时继续使用现有工具与数据库进行交互。通过采用多可用区配置,您可以提高 InfluxDB 数据的可用性,并且无需操心底层基础设施。

AWS 与 InfluxDB 的合作
为庆祝此次发布,InfluxData 创始人兼首席技术官 Paul Dix 对此次合作发表了如下评论:

“开源的未来在于通过简单的入口点和实用的用户体验覆盖最广泛的社区,并由公共云驱动。Amazon Timestream for InfluxDB 实现了这一愿景。我们与 AWS 的合作将开源的 InfluxDB 变成了实时洞察时间序列数据的利器,使开发人员能够更轻松地在 AWS 上构建和扩展其时间序列工作负载。”

注意事项
以下是您需要了解的一些附加信息:

可用性 – Timestream for InfluxDB 现已在以下 AWS 区域正式推出:美国东部(俄亥俄州、弗吉尼亚北部)、美国西部(俄勒冈州)、亚太地区(孟买、新加坡、悉尼、东京)和欧洲(法兰克福、爱尔兰、斯德哥尔摩)。

迁移场景 – 要从自我管理的 InfluxDB 实例迁移,您只需将备份从现有 InfluxDB 数据库恢复到 Timestream for InfluxDB 即可。如果您需要从现有的 Timestream LiveAnalytics 引擎迁移到 Timestream for InfluxDB,则可以使用 Amazon S3。请参阅将数据从自我管理的 InfluxDB 迁移到 Timestream for InfluxDB 页面,详细了解如何针对各种用例进行迁移。

支持的版本 – Timestream for InfluxDB 目前支持 InfluxDB 的开源 2.7.5 版本

定价 – 要了解有关定价的更多信息,请访问 Amazon Timestream 定价页面。

演示 – 要了解 Timestream for InfluxDB 的实际使用,请观看我的同事 Derek 提供的演示:

 

使用 Timestream for InfluxDB 开始构建具有毫秒响应时间的时间序列应用程序和控制面板。要了解更多信息,请访问 Amazon Timestream for InfluxDB 页面。

祝大家构建顺利!
Donnie