基于ScenarioID标签从InfluxDB查询标签值返回空值的问题
问题:InfluxDB查询ScenarioID标签值返回空,requestName正常
我通过脚本将遥测数据发送至InfluxDB,在Grafana中尝试通过标签值创建变量过滤数据时,查询ScenarioID标签值返回空结果,但相同方式查询requestName标签值却能正常工作,具体情况如下:
查询所有遥测数据
请求
http://localhost:8086/query?db=ApiGatewayManagement&q=SELECT * FROM JMeter_Result
输出
{ "results": [ { "statement_id": 0, "series": [ { "name": "JMeter_Result", "columns": [ "time", "ScenarioID", "errorCount", "httpstatuscode", "receivedBytes", "requestName", "responseMessage", "responseTime", "responsecode", "samplecount", "sentBytes", "status" ], "values": [ [ "2023-02-23T15:54:51.529Z", "ambratest_sprint_01", 0, "200", 7978228, "T01_LaunchApplication", "Number of samples in transaction : 1, number of failing samples : 0", 6673, "200", 1, 7000, "Success" ], [ "2023-02-23T15:54:58.315Z", "ambratest_sprint_01", 1, "401", 1565, "T02_Login", "Number of samples in transaction : 2, number of failing samples : 1", 570, "401", 1, 1168, "Failure" ], [ "2023-02-23T16:04:38.904Z", "ambratest_sprint_02", 0, "200", 7978237, "T01_LaunchApplication", "Number of samples in transaction : 1, number of failing samples : 0", 9591, "200", 1, 7000, "Success" ], [ "2023-02-23T16:04:48.635Z", "ambratest_sprint_02", 0, "200", 10923, "T02_Login", "Number of samples in transaction : 6, number of failing samples : 0", 1942, "200", 1, 3518, "Success" ] ] } ] } ] }
标签值查询尝试
查询ScenarioID标签值(返回空)
请求
http://localhost:8086/query?db=ApiGatewayManagement&q=SHOW TAG VALUES FROM "JMeter_Result" WITH KEY=" ScenarioID"
输出
{ "results": [ { "statement_id": 0 } ] }
查询requestName标签值(正常返回)
请求
http://localhost:8086/query?db=ApiGatewayManagement&q=SHOW TAG VALUES FROM "JMeter_Result" WITH KEY="requestName"
输出
{ "results": [ { "statement_id": 0, "series": [ { "name": "JMeter_Result", "columns": [ "key", "value" ], "values": [ [ "requestName", "T01_LaunchApplication" ], [ "requestName", "T02_Login" ] ] } ] } ] }
问题原因及解决办法
直接原因:查询语句中的空格错误
你查询ScenarioID的请求里,KEY=" ScenarioID"中ScenarioID前面多了一个空格。InfluxDB对标签名的匹配是严格区分字符的,多余的空格会导致系统找不到对应的标签,因此返回空结果。修正后的查询请求:
http://localhost:8086/query?db=ApiGatewayManagement&q=SHOW TAG VALUES FROM "JMeter_Result" WITH KEY="ScenarioID"额外验证:确认ScenarioID是标签而非字段
从你查询所有数据的输出看,ScenarioID出现在columns列表中,但InfluxDB的SELECT *会同时返回标签和字段。如果调整空格后仍无法查询到结果,需要检查写入数据的脚本,确认ScenarioID是被配置为**标签(Tag)**写入的,而不是字段(Field)。只有标签才能通过SHOW TAG VALUES查询,字段需要用SHOW FIELD KEYS或其他字段查询语句。如果是误设为字段,需要修改写入脚本,将ScenarioID设为标签后重新写入数据。
内容的提问来源于stack exchange,提问作者Jyoti Prakash Mallick
相关产品推荐
相关产品推荐

