快速修复:更新Telegraf配置以向InfluxDB 3.0发送数据
作者:Dan Dobbs / 产品
2023年6月29日
导航到
我们最近推出了一款新的InfluxDB版本,从头开始重写以提高整体性能。与任何此类努力一样,开发者需要对其应用程序进行一些调整,以便集成新数据库。我们甚至在内部面临了这一挑战。
我们有许多Telegraf实例正在向InfluxDB的旧版本发送数据。我们不想立即关闭这些数据管道,因此我们需要将数据输出到1.x/2.x和3.0版本的InfluxDB实例。我们需要的只是一个简单的方法来实现这一点,而不会造成任何中断或问题。
作为我们内部迁移到InfluxDB Cloud Dedicated的一部分,我们需要更新我们的Telegraf作家,从向InfluxDB的旧实例发送数据到向新的专用实例发送数据。经过一些实验,我们了解到,只需向我们的Telegraf配置中添加一个新的outputs.influxdb
条目(引用我们的InfluxDB Cloud Dedicated集群),就可以轻松实现这一点。让我们来探索这个过程。
基本的Telegraf配置文件由全局代理设置、收集数据的输入插件和发送数据到目的地的输出插件组成。通过添加一个新的outputs.influxdb
插件条目(除了已经指向旧版InfluxDB的配置中的条目),我们可以将我们正在收集的所有数据发送到我们的新的InfluxDB Cloud Dedicated集群,而无需进行其他配置更改。
示例
我们的Telegraf配置已经设置好,用于向1.x实例发送数据
[[outputs.influxdb]]
urls = ["http://our_old_db:8086"]
database = "telegraf"
username = "telegraf_user"
password = "MY_PRECIOUS"
retention_policy = ""
write_consistency = "any"
timeout = "5s"
因此,配置所需的所有内容只是一个新的输出插件,带有正确的凭据以验证专用集群。但是,您在哪里获取这些凭据呢?
作为入站的一部分,客户将获得自己的唯一集群URL和账户ID。然而,他们需要根据需要创建自己的数据库和令牌。您可以在这里找到文档,但我们将在此提供快速演练和示例。
首先,请联系InfluxData支持以获取适用于您的操作系统的最新管理客户端的下载信息。下载并解压缩文件,然后执行命令influxctl init
。以下内容应类似出现;填写值以匹配您的环境
[root@server1]# ./influxctl init
info Welcome to the interactive prompt to set up profile!
info Name: using a profile name other than 'default' requires
info specifying the `--profile` option for all commands.
> What is the name of the profile? [default]:
info Account ID: This was provided as a UUID
> What is the account ID: account-UUID-goes-here
info Cluster ID: This was provided as a UUID
> What is the cluster ID: clusterID-goes-here
info profile default successfully created and ready for use
完成此步骤后,我们现在可以添加数据库并创建令牌。
- 使用
./influxctl login
命令与系统进行身份验证。此命令应打开网络浏览器或显示一个链接,允许您使用提供的Auth0凭据与集群进行身份验证。 - 使用
./influxctl database create
命令创建您的新数据库[techops@server1]$ ./influxctl database create telegraf database "telegraf" successfully created
- 使用
./influxctl token create
命令创建新的数据库令牌,并指定要授予令牌的数据库权限
这创建了一个具有读取和写入能力的./influxctl token create -–read-database telegraf -–write-database telegraf "R/W token for telegraf"
telegraf
数据库令牌,描述为R/W token for telegraf
。成功的执行应如下所示warn please copy the token and store in a safe place warn this is the *only time* you will see the token apiv1_abcdefghijkl123456789
使用提供的令牌字符串来填充Telegraf配置文件中新的输出插件中的token
配置选项
[[outputs.influxdb_v2]]
urls = ["https://my_url.a.influxdb.io"]
token = "apiv1_abcdefghijkl123456789"
bucket = "telegraf"
重新启动Telegraf代理,现在数据应会流向现有的1.x数据库以及新的InfluxDB Cloud Dedicated数据库!检查日志以确定没有错误,然后使用以下查询作为示例来测试您的数据库
[root@server1]# curl --get https://my_test_url.a.influxdb.io/query --header "Authorization: Token apiv1_abcdefghijkl123456789" --data-urlencode "db=telegraf" --data-urlencode "q=show measurements"
{"results":[{"statement_id":0,"series":[{"name":"measurements","columns":["name"],"values":[["cpu"],["disk"],["diskio"],["influxdb"],["influxdb_ae"],["influxdb_cluster"],["influxdb_cq"],["influxdb_database"],["influxdb_entitlements"],["influxdb_hh"],["influxdb_hh_database"],["influxdb_hh_node"],["influxdb_hh_processor"],["influxdb_httpd"],["influxdb_localStore"],["influxdb_memstats"],["influxdb_qc_all_active"],["influxdb_qc_all_duration_seconds"],["influxdb_qc_compiling_active"],["influxdb_qc_compiling_duration_seconds"],["influxdb_qc_executing_active"],["influxdb_qc_executing_duration_seconds"],["influxdb_qc_memory_unused_bytes"],["influxdb_qc_queueing_active"],["influxdb_qc_queueing_duration_seconds"],["influxdb_qc_requests_total"],["influxdb_queryExecutor"],["influxdb_rpc"],["influxdb_runtime"],["influxdb_shard"],["influxdb_subscriber"],["influxdb_tsm1_cache"],["influxdb_tsm1_engine"],["influxdb_tsm1_filestore"],["influxdb_tsm1_wal"],["influxdb_write"],["kapacitor"],["kapacitor_edges"],["kapacitor_ingress"],["kapacitor_load"],["kapacitor_memstats"],["kapacitor_nodes"],["kapacitor_topics"],["mem"],["net"],["netstat"],["ping"],["processes"],["swap"],["syslog"],["system"]]}]}]}
[root@server1]$ curl --get https://my_test_url.a.influxdb.io/query --header "Authorization: Token apiv1_abcdefghijkl123456789" --data-urlencode "db=telegraf" --data-urlencode "q=SELECT time, host, usage_user from cpu group by host limit 1" --header "Accept: application/csv"
name,tags,time,host,usage_user
cpu,host=data3,1684005120000000000,data3,2.4729520867069734
cpu,host=data4,1684005120000000000,data4,2.4318349298448556
cpu,host=meta0,1684005120000000000,meta0,0.2734107997271841
cpu,host=meta1,1684005110000000000,meta1,0.20491803264512043
cpu,host=meta2,1684005120000000000,meta2,0.06738544474608282
恭喜!您现在正在向您的InfluxDB Cloud Dedicated集群写入数据!希望这篇简短教程对您有所帮助。有关与InfluxDB Cloud Dedicated合作的信息,请参阅我们的文档。虽然这篇文章特别提到了Cloud Dedicated产品,但同样的流程也适用于InfluxDB Cloud Serverless。