要获得与亚马逊 Timestream 类似的功能 LiveAnalytics,可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建并连接到适用于 InfluxDB 的 Timestream 实例
本教程为 InfluxDB EC2 数据库实例创建了一个亚马逊实例和一个 Amazon Timestream。本教程向您展示如何使用 Telegraf 客户端将数据从 EC2 实例写入数据库实例。作为最佳实践,本教程在虚拟私有云(VPC)中创建了私有数据库实例。在大多数情况下,同一 VPC 中的其他资源(例如 EC2 实例)可以访问数据库实例,但是 VPC 之外的资源无法访问该实例。
完成本教程后,VPC 的每个可用区中都将出现公有和私有子网。在一个可用区中, EC2 实例将位于公有子网中,数据库实例将位于私有子网中。
注意
创建 Amazon 账户不收取任何费用。但是,完成本教程后,您使用的 Amazon 资源可能会产生费用。完成本教程后,如果不再需要这些资源,可以将其删除。
下图显示可访问性处于公开状态时的配置。
警告
我们不建议使用 0.0.0.0/0 进行 HTTP 访问,因为这可能导致所有 IP 地址通过 HTTP 访问您的公有 InfluxDB 实例。即使是在测试环境中短暂使用,此方法也绝不可接受。仅向特定 IP 地址或地址范围授权使用适用于 Web UI 或 API 访问的 HTTP 访问 InfluxDB 实例。
本教程使用 Amazon Web Services 管理控制台创建运行 InfluxDB 的数据库实例。我们将仅关注数据库实例大小和数据库实例标识符。我们将使用其他配置选项的默认设置。此示例所创建的数据库实例将为私有实例。
您可以配置的其他设置包括可用性、安全性以及日志记录。要创建公有数据库实例,必须在连接配置部分选择将实例设置为公开访问。有关创建数据库实例的信息,请参阅创建数据库实例。
如果实例不可公开访问,请执行以下操作:
在实例的 VPC 上创建主机,通过该主机可传输隧道流量。
设置到实例的 SSH 隧道。有关更多信息,请参阅使用转发 Amazon EC2 实例端口 Amazon Systems Manager
。 为使证书生效,请将以下行添加到客户端计算机的
/etc/hosts文件中:127.0.0.1。这是实例的 DNS 地址。使用完全限定的域名连接实例,例如,https://<DNS>:8086。
注意
Localhost 无法验证证书,因为 localhost 并非证书 SAN 的一部分。
下图显示可访问性处于私有状态时的配置。
先决条件
在开始之前,请完成以下各节中的步骤:
-
注册一个 Amazon 账户。
-
创建管理用户。
步骤 1:创建亚马逊 EC2 实例
创建用于连接数据库的 Amazon EC2 实例。
-
登录 Amazon Web Services 管理控制台 并打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在的右上角 Amazon Web Services 管理控制台,选择要在其中创建实例的 Amazon EC2 区域。
-
选择EC2 控制面板,然后选择启动实例。
-
当启动实例页面打开时,选择以下设置:
-
在名称和标签下,对于名称,输入
ec2-database-connect。 -
在应用程序和操作系统映像(Amazon 机器映像)下,选择 Amazon Linux,然后选择 Amazon Linux 2023 AMI。对于其他选项,保留默认选择。
-
在 Instance type(实例类型)下,选择 t2.micro。
-
在 Key pair (login) [密钥对(登录)] 下,选择 Key pair name(密钥对名称)以使用现有密钥对。要为 Amazon EC2 实例创建新的密钥对,请选择创建新密钥对,然后使用创建密钥对窗口来创建密钥对。有关创建新密钥对的更多信息,请参阅亚马逊弹性计算云用户指南中的为您的亚马逊 EC2 实例创建密钥对。
-
对于 “网络设置” 中的 “允许 SSH 流量”,选择 EC2 实例的 SSH 连接来源。如果显示的 IP 地址对于 SSH 连接是正确的,您可以选择 My IP(我的 IP)。否则,您可以使用安全外壳 (SSH) 确定用于连接您的 VPC 中的 EC2 实例的 IP 地址。要确定公有 IP 地址,请在新的浏览器窗口或标签页中,使用 checkip.amazonaws.com/
上的服务。IP 地址的一个示例为 192.0.2.1/32。在许多情况下,您可能通过互联网服务提供商(ISP)进行连接,或者在不使用静态 IP 地址的情况下从防火墙之后进行连接。如果是这样,请确保确定客户端计算机使用的 IP 地址范围。警告
我们不建议使用 0.0.0.0/0 进行 SSH 访问,因为这样可以让所有 IP 地址使用 SSH 访问您的公共 EC2 实例。即使是在测试环境中短暂使用,此方法也绝不可接受。仅授权特定的 IP 地址或地址范围使用 SSH 访问您的 EC2 实例。
-
步骤 2:创建 InfluxDB 数据库实例
适用于 InfluxDB 的 Amazon Timestream 的基本构建块是数据库实例。这是将要在其中运行 InfluxDB 数据库的环境。
在此示例中,您将使用 db.influx.large 数据库实例类创建运行 InfluxDB 数据库引擎的数据库实例。
-
在适用于 InfluxDB 的 Amazon Timestream 控制台的右上角,选择要在其中创建数据库实例的 Amazon 区域。
-
在导航窗格中,选择 InfluxDB 数据库。
-
选择创建 InfluxDB 数据库。
-
在部署设置部分中,选择带只读副本的集群。选择查看订阅选项,以开始订阅只读副本附加组件。有关更多信息,请参阅 读取副本许可 Amazon Web Services Marketplace。
-
在数据库凭据部分,在数据库集群名称中输入 KronosTest -1。
-
提供 InfluxDB 基本配置参数:初始用户名、初始组织名称、初始存储桶名称以及密码。
重要
您将无法再次查看用户密码。如果没有密码,您将无法访问实例和获取运算符令牌。如果您不记录它,您可能需要更改它。请参阅为 InfluxDB 实例创建新的运算符令牌。
如果需要在数据库实例可用后更改用户密码,则可以修改数据库实例以执行此操作。有关修改数据库实例的更多信息,请参阅更新数据库实例。
-
在实例配置部分,选择 db.influx.large 数据库实例类。
-
在存储配置部分,选择已包含 Influx IO(3K)作为存储类型。
-
在 “连接配置” 部分,选择 “IPv4网络类型”。确保您的 InfluxDB 实例与新创建 EC2 的实例位于同一个子网中。在公有访问权限下,选择不可公开访问,以将数据库实例设为私有。
-
在失效转移设置和参数组设置部分中,保留默认值。
-
在日志传输设置中配置日志并创建标签(可选)。有关日志的更多信息,请参阅设置在 Timestream InfluxDB 实例上查看 InfluxDB 日志。有关添加标签的更多详细信息,请参阅向资源添加标签和标注。
-
选择创建 InfluxDB 数据库。
-
在数据库列表中,选择新 InfluxDB 实例的名称,以显示其详细信息。数据库实例具有正在创建状态,直到此实例就绪可供使用。
当状态变为可用时,即可连接到该数据库实例。根据数据库实例类和存储量,新实例可能需要等待 20 分钟时间才可用。
重要
此时,无法修改现有实例的计算(实例类型)和存储(存储类型)配置。
步骤 3:访问 InfluxDB UI
要从适用于 InfluxDB 的 Timestream 私有数据库实例访问 InfluxDB UI,则必须从同一子网和安全组内进行连接。促进此连接的一种方法是在私有子网中创建堡垒主机。
堡垒主机是一种特殊用途的服务器,可充当关键系统的安全入口点,保护您的网络免受外部访问。该主机充当安全内部网络与外部世界之间的网关。
注意
对于可公开访问的适用于 InfluxDB 的 Timestream 数据库实例,您可以通过控制台中实例详细信息页面上的 InfluxDB UI 按钮访问 InfluxDB UI。请注意,对于不可公开访问的实例,此按钮将处于禁用状态。
如果有公共数据库实例,请通过控制台连接到 InfluxDB UI,并继续 步骤 4:将 Telegraf 数据发送到 InfluxDB 实例。
按照以下步骤创建和配置堡垒主机:
-
创建堡垒主机:要创建堡垒主机,您可以启动新 EC2 实例或使用现有实例。确保该实例具备必要的网络设置,以便访问您尝试访问的用于创建适用于 InfluxDB 的 Timestream 实例的安全组。
-
连接到 InfluxDB UI:创建堡垒主机后,您可以使用控制台中显示的端点连接到 InfluxDB UI。端点的格式为
<db-identifier>-<*>.timestream-influxdb.<region>.on.aws。在中国,格式为<db-identifier>-<*>.timestream-influxdb.<region>.on.amazonwebservices.com.cn。 -
为堡垒主机配置本地转发:要设置本地转发,请使用 Amazon Systems Manager (SSM) 会话管理器。运行以下命令,
bastion-ec2-instance-id替换为堡垒主机实例的 ID、endpoint上述控制台中显示的终端节点以及port-number您要使用的端口号:aws ssm start-session --targetbastion-ec2-instance-id\ --document-name AWS-StartPortForwardingSessionToRemoteHost \ --parameters '{"host":["endpoint"], "portNumber":["port-number"], "localPortNumber":["port-number"]}'系统可能会提示您安装 SessionManagerPlugin。有关详细信息,请参阅为 Amazon CLI安装 Session Manager 插件。
-
访问 InfluxDB 用户界面:完成上述步骤后,你可以通过 http://localhost: 访问 InfluxDB 用户界面。
port-number您需要确认“不安全”消息。 -
启用域名验证:要启用域名验证,请在
/etc/hosts文件(Linux)、/private/etc/hosts(Mac)或C:\Windows\System32\drivers\etc(Windows)中添加以下行。127.0.0.1endpoint 您现在可以使用 https://
endpoint: 访问 InfluxDB 用户界面。port-number
步骤 4:将 Telegraf 数据发送到 InfluxDB 实例
现在可以开始使用 Telegraf 代理将遥测数据发送到 InfluxDB 数据库实例。在此示例中,您将安装并配置 Telegraf 代理,将其性能指标发送到 InfluxDB 数据库实例。
-
连接到 InfluxDB UI 后,会出现带有登录提示的新浏览器窗口。输入先前用于创建 InfluxDB 数据库实例的凭证。
-
在左侧导航窗格中,点击箭头图标,并选择 API 令牌。
-
对于此测试,选择生成 API 令牌。从下拉列表中选择所有访问 API 令牌。
注意
对于生产场景,我们建议创建具有特定访问权限的令牌,这些令牌专为满足 Telegraf 的特定需求而构建,并仅限于访问所需的存储桶。
-
令牌将显示在屏幕上。
重要
请务必复制并保存令牌,因为将不会再次显示。
-
按照亚马逊弹性计算云用户指南中使用 SSH 连接您的 Linux 实例中的步骤连接到您之前创建的实例。 EC2
我们建议您使用 SSH 连接到您的 EC2 实例。如果 SSH 客户端实用程序安装在 Windows、Linux 或 Mac 上,则可以使用以下命令格式连接到该实例:
ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name例如,假设
ec2-database-connect-key-pair.pem它存储在 Linux/dir1上,而您的 EC2 实例的公 IPv4 有 DNS 是ec2-12-345-678-90.compute-1.amazonaws.com。SSH 命令将如下所示:ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com -
在实例上安装 Telegraf 的最新版本。要执行此操作,请使用以下命令:
cat <<EOF | sudo tee /etc/yum.repos.d/influxdata.repo [influxdata] name = InfluxData Repository - Stable baseurl = https://repos.influxdata.com/stable/\$basearch/main enabled = 1 gpgcheck = 1 gpgkey = https://repos.influxdata.com/influxdata-archive_compat.key EOF sudo yum install telegraf -
配置 Telegraf 实例。
注意
如果 telegraf.conf 不存在或未包含
timestream部分,可通过以下命令生成该部分:telegraf —section-filter agent:inputs:outputs —input-filter cpu:mem —output-filter timestream config > telegraf.conf-
编辑通常位于
/etc/telegraf的配置文件。sudo nano /etc/telegraf/telegraf.conf -
配置输入插件 CPUs、内存指标和磁盘使用情况。
[[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = false [[inputs.mem]] [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs"] -
配置输出插件,以将数据发送到 InfluxDB 数据库实例并保存更改。
[[outputs.influxdb_v2]] urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] token = "<your_telegraf_token" organization = "your_org" bucket = "your_bucket" timeout = "5s" -
配置 Timestream 目标。
# Configuration for sending metrics to Amazon Timestream. [[outputs.timestream]] ## Amazon Region and credentials region = "us-east-1" access_key = "<AWS key here>" secret_key = "<AWS secret key here>" database_name = "<timestream database name>" # needs to exist ## Specifies if the plugin should describe on start. describe_database_on_start = false mapping_mode = "multi-table" # allows multiple tables for each input metrics create_table_if_not_exists = true create_table_magnetic_store_retention_period_in_days = 365 create_table_memory_store_retention_period_in_hours = 24 use_multi_measure_records = true # Important to use multi-measure records measure_name_for_multi_measure_records = "telegraf_measure" max_write_go_routines = 25
-
-
启用并启动 Telegraf 服务。
$ sudo systemctl enable telegraf $ sudo systemctl start telegraf
第 5 步:删除亚马逊 EC2 实例和 InfluxDB 数据库实例
使用带有 InfluxDB 用户界面的 InfluxDB 数据库实例浏览 Telegraf 生成的数据后,删除您 EC2 和您的 InfluxDB 数据库实例,这样您就不再需要为它们付费。
要删除 EC2 实例,请执行以下操作:
登录 Amazon Web Services 管理控制台 并打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择 Instances (实例)。
-
选中 EC2 实例名称旁边的复选框,然后选择实例状态。选择终止(删除)实例。
-
当系统提示您确认时,选择终止(删除)。
有关删除 EC2 实例的更多信息,请参阅亚马逊弹性计算云用户指南中的终止亚马逊 EC2 实例。
删除无最终数据库快照的数据库实例:
-
在导航窗格中,选择 InfluxDB 数据库。
-
选择要删除的数据库实例。选择 Delete(删除)
-
确认删除,并选择删除。