为 InfluxDB 实例创建并连接到 Timestream - Amazon Timestream

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

为 InfluxDB 实例创建并连接到 Timestream

本教程为 InfluxDB EC2 数据库实例创建了一个亚马逊实例和一个 Amazon Timestream。本教程向您展示如何使用 Telegraf 客户端将数据从EC2实例写入数据库实例。作为最佳实践,本教程在虚拟私有云中创建私有数据库实例 (VPC)。在大多数情况下VPC,相同的其他资源(例如EC2实例)可以访问数据库实例,但外部的资源VPC无法访问该实例。

完成本教程后,您的每个可用区中都有一个公有子网和私有子网VPC。在一个可用区中,EC2实例位于公有子网中,数据库实例位于私有子网中。

注意

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

下图显示了可访问性公开时的配置。

Network diagram showing VPC with public subnet, internet gateway, ENI, and Timestream-InfluxDB database.
警告

我们不建议使用 0.0.0.0/0 进行HTTP访问,因为您可以让所有 IP 地址通过访问您的公有 InfluxDB 实例。HTTP在测试环境中,这种方法在短时间内甚至是不可接受的。仅授权特定的 IP 地址或地址范围访问您的 InfluxDB 实例,使用 HTTP being for Webui 或访问权限。API

本教程使用创建了一个运行 InfluxDB 的数据库实例。 AWS Management Console我们将只关注数据库实例大小和数据库实例标识符。我们将使用其他配置选项的默认设置。此示例创建的数据库实例将是私有的。

您可以配置的其他设置包括可用性、安全性和日志记录。要创建公有数据库实例,您必须在连接配置部分选择将您的实例设为 “可公开访问”。有关创建数据库实例的信息,请参阅创建数据库实例...

如果您的实例不可公开访问,请执行以下操作:

  • 在实例上创建主机,通过该主机传输流量。VPC

  • 设置到实例的 ssh 隧道。有关更多信息,请参阅使用 S AWS ystems Manager 转发亚马逊EC2实例端口

  • 为了使证书生效,请将以下行添加到您的客户端计算机/etc/hosts的文件中:127.0.0.1。这是您的实例DNS的地址。

  • 使用完全限定的域名连接到您的实例,例如 https: //< DNS >: 8086

    注意

    Localhost 无法验证证书,因为 localhost 不是证书的一部分。SAN

下图显示了可访问性为私有时的配置:

Network diagram showing public and private subnets, security groups, and connections to external services.

先决条件

在开始之前,请完成以下各节中的步骤:

  • 注册一个 AWS 账户。

  • 创建管理用户。

步骤 1:创建 Amazon EC2 实例

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

  1. 登录 AWS Management Console 并打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在的右上角 AWS Management Console,选择要在其中创建实例的 AWS EC2区域。

  3. 选择 “EC2控制面板”,然后选择 “启动实例”。

  4. 启动实例页面打开后,在启动实例页面上选择以下设置。

    1. 在名称和标签下,在名称中输入 ec2-database-connect。

    2. 在 “应用程序和操作系统映像(亚马逊系统映像)” 下,选择亚马逊 Linux,然后选择亚马逊 Linux 2023 AMI。对于其他选项,保留默认选择。

    3. Instance type(实例类型)下,选择 t2.micro

    4. Key pair (login) [密钥对(登录)] 下,选择 Key pair name(密钥对名称)以使用现有密钥对。要为 Amazon EC2 实例创建新的密钥对,请选择创建新密钥对,然后使用创建密钥对窗口来创建密钥对。有关创建新密钥对的更多信息,请参阅《Amazon Linux 实例EC2用户指南》中的创建密钥对

    5. 在 “网络设置” 中允许SSH流量,请选择EC2实例的SSH连接来源。如果显示的 IP 地址对SSH连接来说是正确的,则可以选择 “我的 IP”。否则,您可以使用 Secure Shell (SSH) 确定用于连接到您VPC中的EC2实例的 IP 地址。要确定您的公有 IP 地址,可以在不同的浏览器窗口或选项卡中使用该服务 https://checkip.amazonaws.com。IP 地址的示例为 192.0.2.1/32。在许多情况下,您可以通过互联网服务提供商 (ISP) 或在没有静态 IP 地址的情况下从防火墙后面进行连接。如果是这样,请确保确定客户端计算机使用的 IP 地址范围。

      警告

      我们不建议使用 0.0.0.0/0 进行SSH访问,因为您可以让所有 IP 地址都使用访问您的公有实例。EC2 SSH在测试环境中,这种方法在短时间内甚至不可接受,仅授权特定的 IP 地址或地址范围使用访问您的EC2实例SSH。

步骤 2:创建一个 InfluxDB 数据库实例

适用于 InfluxDB 的 Amazon Timestream 的基本构建块是数据库实例。你可以在这个环境中运行 InfluxDB 数据库。

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

  1. 登录 AWS Management Console 并打开适用于 InfluxDB 的 Amazon Timestream 控制台,网址为。https://console.aws.amazon.com/timestream/

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

  3. 在导航窗格中,选择 InfluxDB 数据库

  4. 选择 “创建 Influx 数据库”。

    Empty InfluxDB databases list with option to create a new database.
  5. 数据库实例标识符中,输入 KronosTest -1。

  6. 提供 InfluxDB 基本配置参数:用户名组织存储桶名称和密码

    重要

    您将无法再次查看用户密码。如果没有密码,您将无法访问您的实例和获取操作员令牌。如果您不记录它,您可能需要更改它。请参阅 为您的 InfluxDB 实例创建一个新的操作员令牌

    如果您需要在数据库实例可用后更改用户密码,则可以修改数据库实例以执行此操作。有关修改数据库实例的更多信息,请参阅 更新数据库实例

    Form for creating an Influx database with fields for credentials and instance settings.
  7. 对于数据库实例类,请选择 db.influx. large。

  8. 对于数据库存储类别,请选择 infl ux Include IOPS d 3K

  9. 配置您的日志。有关更多信息,请参阅 设置在 Timestream Influxdb 实例上查看 InfluxDB 日志

  10. 在 “连接配置” 部分,确保您的InfluxDB实例与新创建EC2的实例位于同一个子网中。

    Connectivity configuration interface showing VPC, subnet, security group, and public access options.
  11. 选择 “创建 Influx 数据库”。

  12. 数据库列表中,选择您的新 InfluxDB 实例的名称以显示其详细信息。数据库实例在准备使用之前的状态为 “正在创建”。

当状态变为 “可” 时,您可以连接到数据库实例。根据数据库实例类和存储量,新实例可能需要等待 20 分钟时间才可用。

重要

目前,您无法修改现有实例的计算(实例类型)和存储(存储类型)配置。

第 3 步:将 Telegraf 数据发送到你的 InfluxDB 实例

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

  1. 查找您的数据库实例的终端节点(DNS名称)和端口号。

    1. 登录 AWS 管理控制台并打开亚马逊 Timestream 控制台,网址为。https://console.aws.amazon.com/timestream/

    2. 在 Amazon Timestream 控制台的右上角,选择数据库 AWS 实例的区域。

    3. 在导航窗格中,选择 InfluxDB 数据库

    4. 选择 InfluxDB 数据库实例名称以显示其详细信息。

    5. 在 “摘要” 部分,复制终端节点。另请注意端口号。您需要端点和端口号才能连接到数据库实例(InfluxDB 的默认端口号为 8086)。

  2. 接下来,选择 InfluxDB 用户界面

    InfluxDB database summary showing instance details, status, and endpoint information.
  3. 这将打开一个新的浏览器窗口,您应该会在其中看到登录提示。输入您之前用于创建 InfluxDB 数据库实例的凭证。

  4. 在导航窗格中,单击箭头并选择API代币

  5. 在此测试中,生成一个所有访问令牌。

    注意

    对于生产场景,我们建议创建具有特定访问权限的令牌,这些存储桶专为Telegraf的特定需求而构建。

    Dialog for generating an all-access API token with a warning and description field.
  6. 您的代币将出现在屏幕上。

    重要

    请务必复制并保存令牌,因为您将无法再次显示它。

  7. 按照亚马逊 Linux EC2 实例EC2用户指南中连接你的 Linux 实例中的步骤连接到你的 Linux 实例,连接到你之前创建的实例

    我们建议您使用连接到您的EC2实例SSH。如果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实例IPv4DNS的公共存储在 Linux 上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
  8. 在您的实例上安装最新版本的 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
  9. 配置你的 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
    2. 为CPU、MEM和配置基本输入DISK。

      [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = false [[inputs.mem]] [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs"]
    3. 配置输出插件以将数据发送到您的 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"
    4. 配置时间流目标。

      # 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 t start. describe_database_on_start = false mapping_mode = "multi-table" # allows multible 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
  10. 启用并启动 Telegraf 服务。

    $ sudo systemctl enable telegraf $ sudo systemctl start telegraf

第 4 步:删除亚马逊EC2实例和 InfluxDB 数据库实例

使用带有 InfluxUI 的 InfluxDB 数据库实例浏览 Telegraf 生成的数据后,删除您EC2和您的 InfluxDB 数据库实例,这样您就不再需要为它们付费。

要删除EC2实例,请执行以下操作:

  1. 登录 AWS Management Console 并打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择EC2实例,选择实例状态,然后终止实例

  4. 当系统提示您确认时,选择终止

有关删除EC2实例的更多信息,请参阅 Amazon EC2 用户指南中的终止您的实例

要删除没有最终数据库快照的数据库实例,请执行以下操作:

  1. 登录 AWS Management Console 并打开适用于 InfluxDB 的 Amazon Timestream 控制台,网址为。https://console.aws.amazon.com/timestream/

  2. 在导航窗格中,选择 InfluxDB 数据库

  3. 选择要删除的数据库实例。

  4. 对于 Actions,选择 Delete

  5. 完成确认并选择删除

(可选)使用亚马逊托管 Grafana 连接到您的数据库实例

您可以使用亚马逊托管 Grafana 创建控制面板并使用适用于 InfluxDB 的 Amazon Timestream 监控EC2实例的性能。Amazon Managed Grafana 是 Grafana 的完全托管服务,Grafana 是一个流行的开源分析平台,可让您查询、可视化您的指标、日志和跟踪并发出警报。