如何本地运行K6脚本并将数据发送到远程InfluxDB实例(不使用Docker)
k6对接远程InfluxDB 404报错解决方案
核心问题说明
- 报错日志中的
output=InfluxDB1为k6的输出适配器类型标记,代表当前使用的是适配InfluxDB 1.x版本的输出组件,不是地址配置错误的提示,无需对此处产生疑惑 - 404报错的核心原因是你手动在地址中添加了
/write后缀,k6的InfluxDB输出组件会自动补全写入接口路径,手动添加后会导致最终请求路径变为https://my_influxdb_url/write/write,触发404;同时缺少必填的数据库名参数、鉴权参数传递格式不符合要求
解决方案
无需额外编写yaml配置文件,可直接通过以下两种方式完成配置:
方式1:命令行直接传参(适合快速测试)
直接按照k6要求的格式拼接参数即可,模板如下:
k6 run --out influxdb=https://[用户名]:[密码]@[InfluxDB域名或IP]/[数据库名] sampleScript.js
举个实际使用示例:
假设你的数据库名为k6_test,用户名为k6_user,密码为k6_pass,远程地址为my_influxdb_url,命令如下:k6 run --out influxdb=https://k6_user:k6_pass@my_influxdb_url/k6_test sampleScript.js
方式2:环境变量传参(适合生产场景,避免密码明文出现在命令行历史)
依次配置以下环境变量即可:
# 仅填写根地址,不要加/write后缀 export K6_INFLUXDB_ADDR=https://my_influxdb_url # 填写你的数据库名 export K6_INFLUXDB_DB=DB_NAME # 填写你的用户名 export K6_INFLUXDB_USERNAME=USERNAME # 填写你的密码 export K6_INFLUXDB_PASSWORD=PASSWORD
配置完成后直接执行命令即可:k6 run --out influxdb sampleScript.js
异常排查项
如果修改配置后仍报错,可按以下顺序排查:
- 确认你的远程InfluxDB为1.x版本,若为2.x版本需使用
--out influxdbv2参数,参数规则与1.x不同 - 本地执行
curl https://my_influxdb_url/health验证网络连通性,确认无防火墙、代理、白名单限制 - 确认配置的数据库名已在远程InfluxDB中提前创建,无拼写错误
- 确认使用的用户账号有对应数据库的写入权限
内容的提问来源于stack exchange,提问作者Esepee
相关产品推荐
相关产品推荐

