

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建并连接到适用于 InfluxDB 的 Timestream 实例
<a name="timestream-for-influx-getting-started-creating-db-instance"></a>

本教程创建 Amazon EC2 实例以及适用于 InfluxDB 的 Amazon Timestream 数据库实例。本教程向您展示如何使用 Telegraf 客户端从 EC2 实例向数据库实例写入数据。作为最佳实践，本教程在虚拟私有云（VPC）中创建了私有数据库实例。在大多数情况下，同一 VPC 中的其他资源（例如 EC2 实例）可以访问数据库实例，但 VPC 之外的资源无法访问该实例。

完成本教程后，VPC 的每个可用区中都将出现公有和私有子网。在一个可用区中，EC2 实例将在公有子网中，而数据库实例将在私有子网中。

**注意**  
创建 AWS 账户不收取任何费用。但是，完成本教程后，您使用的 AWS 资源可能会产生费用。完成本教程后，如果不再需要这些资源，可以将其删除。

下图显示可访问性处于公开状态时的配置。

![](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/public.png)


**警告**  
我们不建议使用 0.0.0.0/0 进行 HTTP 访问，因为这可能导致所有 IP 地址通过 HTTP 访问您的公有 InfluxDB 实例。即使是在测试环境中短暂使用，此方法也绝不可接受。仅向特定 IP 地址或地址范围授权使用适用于 Web UI 或 API 访问的 HTTP 访问 InfluxDB 实例。

本教程使用 AWS 管理控制台创建运行 InfluxDB 的数据库实例。我们将仅关注数据库实例大小和数据库实例标识符。我们将使用其他配置选项的默认设置。此示例所创建的数据库实例将为私有实例。

您可以配置的其他设置包括可用性、安全性以及日志记录。要创建公有数据库实例，必须在**连接配置**部分选择将实例设置为**公开访问**。有关创建数据库实例的信息，请参阅[创建数据库实例](timestream-for-influx-configuring.md#timestream-for-influx-configuring-create-db)。

如果实例不可公开访问，请执行以下操作：
+ 在实例的 VPC 上创建主机，通过该主机可传输隧道流量。
+ 设置到实例的 SSH 隧道。有关更多信息，请参阅[使用转发 Amazon EC2 实例端口 AWS Systems Manager](https://aws.amazon.com/blogs/mt/amazon-ec2-instance-port-forwarding-with-aws-systems-manager/)。
+ 为使证书生效，请将以下行添加到客户端计算机的 `/etc/hosts` 文件中：`127.0.0.1`。这是实例的 DNS 地址。
+ 使用完全限定的域名连接实例，例如，*https://<DNS>:8086*。
**注意**  
Localhost 无法验证证书，因为 localhost 并非证书 SAN 的一部分。

下图显示可访问性处于私有状态时的配置。

![](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/private.png)


## 先决条件
<a name="timestream-for-influx-getting-started-creating-db-instance-prereq"></a>

在开始之前，请完成以下各节中的步骤：
+  注册一个 AWS 账户。
+ 创建管理用户。

## 步骤 1：创建 Amazon EC2 实例
<a name="timestream-for-influx-getting-started-creating-db-instance-step1"></a>

创建将用于连接到数据库的 Amazon EC2 实例。

1. 登录 AWS 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在的右上角 AWS 管理控制台，选择您要在其中创建 EC2 实例的 AWS 区域。

1. 选择 **EC2 控制面板**，然后选择**启动实例**。

1. 当**启动实例**页面打开时，选择以下设置：

   1. 在**名称和标签**下，对于**名称**，输入 `ec2-database-connect`。

   1. 在**应用程序和操作系统映像（Amazon 机器映像）**下，选择 **Amazon Linux**，然后选择 **Amazon Linux 2023 AMI**。对于其他选项，保留默认选择。

   1. 在 **Instance type**（实例类型）下，选择 **t2.micro**。

   1. 在 **Key pair (login)** [密钥对（登录）] 下，选择 **Key pair name**（密钥对名称）以使用现有密钥对。要为 Amazon EC2 实例创建新的密钥对，请选择 **Create new key pair**（创建新的密钥对），然后使用 **Create key pair**（创建密钥对）窗口来创建它。有关创建新密钥对的更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[为 Amazon EC2 实例创建密钥对](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html)。

   1. 对于**网络设置**中的**允许入站 SSH 流量**，选择 EC2 实例的 SSH 连接来源。如果显示的 IP 地址对于 SSH 连接是正确的，您可以选择 **My IP**（我的 IP）。否则，您可以确定要用来通过 Secure Shell（SSH）连接到 VPC 中的 EC2 实例的 IP 地址。要确定公有 IP 地址，请在新的浏览器窗口或标签页中，使用 [checkip.amazonaws.com/](https://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 数据库实例
<a name="timestream-for-influx-getting-started-creating-db-instance-step2"></a>

适用于 InfluxDB 的 Amazon Timestream 的基本构建块是数据库实例。这是将要在其中运行 InfluxDB 数据库的环境。

在此示例中，您将使用 db.influx.large 数据库实例类创建运行 InfluxDB 数据库引擎的数据库实例。

1. [登录 AWS 管理控制台 并打开适用于 InfluxDB 的 Amazon Timestream 控制台，网址为。https://console.aws.amazon.com/timestream/](https://console.aws.amazon.com/timestream/)

1. 在适用于 InfluxDB 的 Amazon Timestream 控制台的右上角，选择要在其中创建数据库实例的 AWS 区域。

1. 在导航窗格中，选择 **InfluxDB 数据库**。

1. 选择**创建 InfluxDB 数据库**。  
![](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/CreateInfluxDatabase.png)

1. 在**部署设置**部分中，选择**带只读副本的集群**。选择**查看订阅选项**，以开始订阅只读副本附加组件。有关更多信息，请参阅 [读取副本许可 AWS Marketplace只读副本许可术语](timestream-for-influx-rr-licensing.md)。

1. 在**数据库凭据**部分，在**数据库集群名称**中输入 KronosTest -1。

1. 提供 InfluxDB 基本配置参数：**初始用户名**、**初始组织名称**、**初始存储桶名称**以及**密码**。
**重要**  
您将无法再次查看用户密码。如果没有密码，您将无法访问实例和获取运算符令牌。如果您不记录它，您可能需要更改它。请参阅[为 InfluxDB 实例创建新的运算符令牌](timestream-for-influx-getting-started-operator-token.md)。  
如果需要在数据库实例可用后更改用户密码，则可以修改数据库实例以执行此操作。有关修改数据库实例的更多信息，请参阅[更新数据库实例](timestream-for-influx-managing-modifying-db.md)。  

![](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/CreateInfluxDatabaseDetails.png)


1. 在**实例配置**部分，选择 **db.influx.large** 数据库实例类。

1. 在**存储配置**部分，选择**已包含 Influx IO（3K）**作为**存储类型**。

1. 在**连接配置**部分，选择**IPv4****网络类型**。确保 InfluxDB 实例与新创建的 EC2 实例位于同一子网中。在**公有访问权限**下，选择**不可公开访问**，以将数据库实例设为私有。  
![](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/ConnectivityConfiguration.png)

1. 在**失效转移设置**和**参数组设置**部分中，保留默认值。

1. 在**日志传输设置**中配置日志并创建标签（可选）。有关日志的更多信息，请参阅[设置在 Timestream InfluxDB 实例上查看 InfluxDB 日志](timestream-for-influx-managing-view-influx-logs.md)。有关添加标签的更多详细信息，请参阅[向资源添加标签和标注](tagging-keyspaces-influxdb.md)。

1. 选择**创建 InfluxDB 数据库**。

1. 在**数据库**列表中，选择新 InfluxDB 实例的名称，以显示其详细信息。数据库实例具有**正在创建**状态，直到此实例就绪可供使用。

当状态变为**可用**时，即可连接到该数据库实例。根据数据库实例类和存储量，新实例可能需要等待 20 分钟时间才可用。

**重要**  
此时，无法修改现有实例的计算（实例类型）和存储（存储类型）配置。

## 步骤 3：访问 InfluxDB UI
<a name="timestream-for-influx-getting-started-creating-db-instance-step-3"></a>

要从适用于 InfluxDB 的 Timestream 私有数据库实例访问 InfluxDB UI，则必须从同一子网和安全组内进行连接。促进此连接的一种方法是在私有子网中创建堡垒主机。

堡垒主机是一种特殊用途的服务器，可充当关键系统的安全入口点，保护您的网络免受外部访问。该主机充当安全内部网络与外部世界之间的网关。

**注意**  
对于可公开访问的适用于 InfluxDB 的 Timestream 数据库实例，您可以通过控制台中实例详细信息页面上的 **InfluxDB UI** 按钮访问 InfluxDB UI。请注意，对于不可公开访问的实例，此按钮将处于禁用状态。  
如果有公共数据库实例，请通过控制台连接到 InfluxDB UI，并继续 [步骤 4：将 Telegraf 数据发送到 InfluxDB 实例](#timestream-for-influx-getting-started-creating-db-instance-step4)。

![显示私有 InfluxDB 数据库详细信息的摘要接口。InfluxDB UI 按钮已禁用。](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/InfluxDB-database-summary.png)


按照以下步骤创建和配置堡垒主机：

1. **创建堡垒主机：**要创建堡垒主机，可启动新的 EC2 实例或使用现有的 EC2 实例。确保该实例具备必要的网络设置，以便访问您尝试访问的用于创建适用于 InfluxDB 的 Timestream 实例的安全组。

1. **连接到 InfluxDB UI：**创建堡垒主机后，您可以使用控制台中显示的端点连接到 InfluxDB UI。端点的格式为 `<db-identifier>-<*>.timestream-influxdb.<region>.on.aws`。在中国，格式为 `<db-identifier>-<*>.timestream-influxdb.<region>.on.amazonwebservices.com.rproxy.govskope.ca.cn`。

1. **为堡垒主机配置本地转发：**要设置本地转发，请使用 AWS Systems Manager (SSM) 会话管理器。运行以下命令，{{bastion-ec2-instance-id}}替换为堡垒主机实例的 ID、{{endpoint}}上述控制台中显示的终端节点以及{{port-number}}您要使用的端口号：

   ```
   aws ssm start-session --target {{bastion-ec2-instance-id}} \
   --document-name AWS-StartPortForwardingSessionToRemoteHost \
   --parameters '{"host":["{{endpoint}}"], "portNumber":["{{port-number}}"], "localPortNumber":["{{port-number}}"]}'
   ```

   系统可能会提示您安装 SessionManagerPlugin。有关详细信息，请参阅[为 AWS CLI安装 Session Manager 插件](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)。

1. **访问 InfluxDB 用户界面：**完成上述步骤后，你可以通过 http://localhost: 访问 InfluxDB 用户界面。{{port-number}}您需要确认“不安全”消息。

1. **启用域名验证：**要启用域名验证，请在 `/etc/hosts` 文件（Linux）、`/private/etc/hosts`（Mac）或 `C:\Windows\System32\drivers\etc`（Windows）中添加以下行。

   ```
   127.0.0.1    {{endpoint}}
   ```

1. 现在，你可以使用 https://{{endpoint}}: 访问 InfluxDB 用户界面。{{port-number}}

## 步骤 4：将 Telegraf 数据发送到 InfluxDB 实例
<a name="timestream-for-influx-getting-started-creating-db-instance-step4"></a>

现在可以开始使用 Telegraf 代理将遥测数据发送到 InfluxDB 数据库实例。在此示例中，您将安装并配置 Telegraf 代理，将其性能指标发送到 InfluxDB 数据库实例。

1. 连接到 InfluxDB UI 后，会出现带有登录提示的新浏览器窗口。输入先前用于创建 InfluxDB 数据库实例的凭证。

1. 在左侧导航窗格中，点击箭头图标，并选择 **API 令牌**。

1. 对于此测试，选择**生成 API 令牌**。从下拉列表中选择**所有访问 API 令牌**。
**注意**  
对于生产场景，我们建议创建具有特定访问权限的令牌，这些令牌专为满足 Telegraf 的特定需求而构建，并仅限于访问所需的存储桶。  
![](http://docs.aws.amazon.com/zh_cn/timestream/latest/developerguide/images/kronos/AllAccessAPIToken.png)

1. 令牌将显示在屏幕上。
**重要**  
请务必复制并保存令牌，因为将不会再次显示。

1. 按照《Amazon Elastic Compute Cloud 用户指南》**中的[使用 SSH 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)中的步骤操作，连接到您之前创建的 EC2 实例。

   建议您使用 SSH 连接到 EC2 实例。如果 SSH 客户端实用程序安装在 Windows、Linux 或 Mac 上，则可以使用以下命令格式连接到该实例：

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例如，假设在 Linux 上 `ec2-database-connect-key-pair.pem` 存储在 `/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
   ```

1. 在实例上安装 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
   ```

1. 配置 Telegraf 实例。
**注意**  
如果 telegraf.conf 不存在或未包含 `timestream` 部分，可通过以下命令生成该部分：  

   ```
   telegraf —section-filter agent:inputs:outputs —input-filter cpu:mem —output-filter timestream config > telegraf.conf
   ```

   1. 编辑通常位于 `/etc/telegraf` 的配置文件。

      ```
      sudo nano /etc/telegraf/telegraf.conf
      ```

   1. 配置输入插件 CPUs、内存指标和磁盘使用情况。

      ```
      [[inputs.cpu]]
        percpu = true
        totalcpu = true
        collect_cpu_time = false
        report_active = false
      
      [[inputs.mem]]
      
      [[inputs.disk]]
        ignore_fs = ["tmpfs", "devtmpfs", "devfs"]
      ```

   1. 配置输出插件，以将数据发送到 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"
      ```

   1. 配置 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
      ```

1. 启用并启动 Telegraf 服务。

   ```
   $ sudo systemctl enable telegraf
   $ sudo systemctl start telegraf
   ```

## 步骤 5：删除 Amazon EC2 实例和 InfluxDB 数据库实例
<a name="timestream-for-influx-getting-started-creating-db-instance-step5"></a>

使用带有 InfluxDB UI 的 InfluxDB 数据库实例浏览 Telegraf 生成的数据后，请删除 EC2 和 InfluxDB 数据库实例，以免继续产生费用。

**删除 EC2 实例：**

1. 登录 AWS 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **Instances (实例)**。

1. 选中 EC2 实例名称旁边的复选框，然后选择**实例状态**。选择**终止（删除）实例**。

1. 当系统提示您确认时，选择**终止（删除）**。

有关删除 EC2 实例的更多信息，请参阅《Amazon Elastic Compute Cloud 用户指南》**中的[终止 Amazon EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

**删除无最终数据库快照的数据库实例：**

1.  [登录 AWS 管理控制台 并打开适用于 InfluxDB 的 Amazon Timestream 控制台，网址为。https://console.aws.amazon.com/timestream/](https://console.aws.amazon.com/timestream/)

1. 在导航窗格中，选择 **InfluxDB 数据库**。

1. 选择要删除的数据库实例。选择 **Delete**（删除）

1. 确认删除，并选择**删除**。