InfluxDB 2 迁移路径:Instrumentation

导航至

InfluxDB 2 和我们的 SaaS 产品 InfluxDB Cloud 2 即将推出。在我们最终完成我们精彩的更新,为您提供您应得的 InfluxDB 2 体验的同时,我们将与您讨论迁移路径。

本文是系列文章的一部分。本期将介绍如何使用 InfluxDB 1 客户端库将应用程序中现有的 Instrumentation 迁移到 InfluxDB 2,而无需更改代码。

官方迁移路径

InfluxDB 2 将附带 InfluxDB 1 的兼容模式,但这将在今年晚些时候推出 — 更接近我们 InfluxDB 2 的第一个 GA 版本。这意味着当使用 v2 时,您仍然可以使用 v1 的客户端库,至少在有限的范围内是这样。由于目前还不可用,我们可以使用 Telegraf 做一些非常类似的事情;这就是我今天想谈论的。

但在我们开始之前,让我们先谈谈客户端库。

客户端库

我们的 CTO Paul Dix 之前曾提到,我们将创建、维护和支持我们自己的 InfluxDB 2 官方客户端库!虽然在 GitHub 上的 InfluxData 旗下有一些 InfluxDB 1 的客户端库,但这些库通常由外部贡献者维护,并且 API 可能差异很大。对于 InfluxDB 2,我们将在客户端库的进展和维护中发挥更积极的作用。

当然,这些目前也无法使用;但在 2.0 发布时(或临近发布时),我们计划支持 dotNet、Go、Java、JS、PHP、Python 和 Ruby。

那么,在此期间,您如何开始为 InfluxDB 2 Instrumentation 您的应用程序呢?

介绍 Telegraf

嗯... 显然 Telegraf 无需介绍... 但是,通常情况下,人们不太了解可用插件的宽度和广度。例如:您是否知道 Telegraf 有一个名为 influxdb_listener? 的输入插件?此插件允许 Telegraf 提供 InfluxDB 1 /write 兼容代理。

???? 哇哦 ????

注意事项

在您过于兴奋之前,有几件事值得注意。首先,它实际上只是 /write 路径。如果您出于该目的使用任何客户端库,这将不允许您从 InfluxDB 读取数据。CREATE DATABASE 请求将响应 200 OK,但实际上在远程 InfluxDB 服务器上没有执行任何操作;只有 Telegraf 插件可以确定您可以写入哪个数据库。稍后会详细介绍。

迁移路径

让我们深入细节,看看您当前、假定的和估计的架构。

写入 InfluxDB 1<figcaption>写入 InfluxDB 1</figcaption>

非常简单。您的应用程序中有一个我们的客户端库,并且您正在使用它直接写入 InfluxDB 1。

现在,我们希望尽可能少地更改组件。因此,我们将引入 Telegraf 来充当中间层并代理我们的请求,而不是写入 InfluxDB 1。根据您发送到 InfluxDB 的数据量,您可以自行决定如何部署此 Telegraf。

常见场景包括

  • 每个主机(或 DaemonSet)上的 Telegraf
  • Telegraf Sidecar(Kubernetes)
  • 集中式 Telegraf 服务

通过 Telegraf 使用 InfluxDB 1 客户端库写入 InfluxDB 2<figcaption>通过 Telegraf 使用 InfluxDB 1 客户端库写入 InfluxDB 2</figcaption>

如果您在容器中运行 Telegraf,请务必查看我的 自带 Telegraf 工作。

配置 Telegraf

第一步是启用 influxdb_listener plugin 并对其进行配置。您可以使用以下方法执行此操作

[[inputs.influxdb_listener]]
  ## Address and port to host HTTP listener on
  service_address = ":8086"

这是最简单的设置,没有身份验证,但我们不建议以这种方式运行 InfluxDB。因此,为了配置身份验证,您可以在 Telegraf 配置中提供 TLS 和基本身份验证详细信息

[[inputs.influxdb_listener]]
  ## Set one or more allowed client CA certificate file names to enable mutually authenticated TLS connections
  tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"]
  ## Add service certificate and key
  tls_cert = "/etc/telegraf/cert.pem"
  tls_key = "/etc/telegraf/key.pem"
  ## Optional username and password to accept for HTTP basic authentication.
  ## You probably want to make sure you have TLS configured above for this.
  basic_username = "foobar"
  basic_password = "barfoo"

现在,当您运行 Telegraf 时,它将在配置的端口上接受 InfluxDB 1 写入请求。

???? 太棒了!????

现在配置我们的 InfluxDB 2 输出。同样,Telegraf 使这变得很简单

[[outputs.influxdb_v2]]
    ## The URLs of the InfluxDB cluster nodes.
    ## Multiple URLs can be specified for a single cluster, only ONE of the
    ## urls will be written to each interval.
    urls = ["http://127.0.0.1:9999"]

    ## Token for authentication.
    token = ""

    ## Organization is the name of the organization you wish to write to.
    organization = ""

    ## Destination bucket to write into.
    bucket = ""

简单!

但是等等,还有更多!

为什么要止步于此?您是否知道可以使用 Telegraf 进行组合写入?没有必要完全迁移到 InfluxDB 2,因为在我们仍在 alpha 测试阶段时,谁会这样做,对吧

为什么不写入 InfluxDB 1、InfluxDB 2 和 InfluxDB Cloud 2 ... 而无需更改任何代码呢?

为此,只需配置多个输出插件即可。

[[outputs.influxdb_v2]]
    # As above
[[outputs.influxdb_v2]]
    # Configure for Cloud 2 (See your settings page)
[[outputs.influxdb]
    # As you currently have right now

????????????

您已经拥有了,这是一种无痛的方式来试用 InfluxDB 2,而无需更改一行代码。

下次见 ????????????

?? 您是否知道我们的 SaaS 产品 Cloud 2 有一个很棒的免费层级? ??