使用 1.x 写入端点时,我无法解决来自 InfluxDB 2 的未经授权的响应。
设置:
从InfluxDB 2.0 docs中,它声明它具有一些 1.x 兼容性:
InfluxDB v2 API 包括与 InfluxDB 1.x 客户端库和 Grafana 等第三方集成一起使用的 InfluxDB 1.x 兼容性端点。
特别是,/write
被列为 1.x 兼容
因此,让我们对此进行测试并使用 1.x api 写入 2.0 服务器。首先,我们将使用用户名和密码启动一个 docker 映像
docker run -p 8086:8086 \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=myorg \
-e DOCKER_INFLUXDB_INIT_BUCKET=mydb \
influxdb:2.0
文档声明我们可以使用基本身份验证进行身份验证,因此以下示例(也来自他们的文档,只有身份验证切换到 curl 更符合人体工程学的--user
选项)应该可以工作:
curl -v --request POST http://localhost:8086/write?db=mydb \
--user my-user:my-password \
--data-binary "measurement,host=host1 field1=2i,field2=2.0 1577836800000000000"
不幸的是,返回 401 并带有以下有效负载:
{"code":"unauthorized","message":"Unauthorized"}
可能是什么问题?我在 docker 设置中提供了最少数量的必需参数,并且我从他们的文档中复制并粘贴了示例——没有太多可能出错的地方。
最终目标是拥有一个可以同时写入 1.x 和 2.x 的客户端,因为一些部署是 1.x,而其他部署是 2.x。阅读文档让我认为这是可能的,但遵循文档让我不这么认为。解决方案真的是同时嵌入 InfluxDB 1.x 和 2.x 客户端并要求用户在运行应用程序之前指定此版本吗?
Fwiw,添加更详细的日志记录不会产生额外的洞察力——只有相同的未经授权的行:
docker run -p 8086:8086 \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=my-user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \
-e DOCKER_INFLUXDB_INIT_ORG=myorg \
-e DOCKER_INFLUXDB_INIT_BUCKET=mydb \
-e INFLUXD_LOG_LEVEL=debug \
influxdb:2.0