将带有标签的多个值插入Influxdb

时间:2016-08-28 19:30:04

标签: influxdb

我正在尝试收集smartctl指标并将其推送到Influxdb。我很难为推入的值添加标签,以便标签和值位于正确的位置。

如果我这样做:

curl -POST 'http://localhost:8086/write?db=test' --data-binary 'smartctl Raw_Read_Error_Rate=19243395i,Spin_Up_Time=0i,Start_Stop_Count=149i,Reallocated_Sector_Ct=25i,Seek_Error_Rate=4735843653i,Power_On_Hours=41286i,Spin_Retry_Count=0i,Power_Cycle_Count=150i,End_to_End_Error=0i,Reported_Uncorrect=0i,Command_Timeout=12885098501i,High_Fly_Writes=0i,Airflow_Temperature_Cel=29i,G_Sense_Error_Rate=0i,Power_Off_Retract_Count=145i,Load_Cycle_Count=25668i,Temperature_Celsius=29i,Hardware_ECC_Recovered=19243395i,Current_Pending_Sector=0i,Offline_Uncorrectable=0i,UDMA_CRC_Error_Count=0i 1472412282915653274'

没有标签:

SHOW TAG KEYS FROM "smartctl" (empty result)

如何在同一个curl命令中添加标签,以便我得到类似的内容:

host=foo,disk_name="Seagate Blah"

添加一些说明:

如果我使用逗号(并设置一个值),则它们是所有标记,而不是字段:

curl -POST 'http://localhost:8086/write?db=test' --data-binary 'smartctl,Raw_Read_Error_Rate=19243395i,Spin_Up_Time=0i,Start_Stop_Count=149i,Reallocated_Sector_Ct=25i,Seek_Error_Rate=4735843653i,Power_On_Hours=41286i,Spin_Retry_Count=0i,Power_Cycle_Count=150i,End_to_End_Error=0i,Reported_Uncorrect=0i,Command_Timeout=12885098501i,High_Fly_Writes=0i,Airflow_Temperature_Cel=29i,G_Sense_Error_Rate=0i,Power_Off_Retract_Count=145i,Load_Cycle_Count=25668i,Temperature_Celsius=29i,Hardware_ECC_Recovered=19243395i,Current_Pending_Sector=0i,Offline_Uncorrectable=0i,UDMA_CRC_Error_Count=0i value=0 1472412282915653274'

(旁注:我也没看到我将设置为“smartctl”的值?)

我需要的是将上述所有内容设置为字段,但使用标记以便我可以确定他们报告的主机。所以我可以这样做:

select Temperature_Celsius from smartctl where host=foo

2 个答案:

答案 0 :(得分:7)

将标签放在测量名称后面,用逗号分隔,全线协议定义如下:

measurement,tag1=foo,tag2=bar value_a=1,value_b=2 timestamp

所以在你的情况下:

curl -POST 'http://localhost:8086/write?db=test' --data-binary 'smartctl,host=foo,disk_name="Seagate Blah" Raw_Read_Error_Rate=19243395i,Spin_Up_Time=0i,Start_Stop_Count=149i,Reallocated_Sector_Ct=25i,Seek_Error_Rate=4735843653i,Power_On_Hours=41286i,Spin_Retry_Count=0i,Power_Cycle_Count=150i,End_to_End_Error=0i,Reported_Uncorrect=0i,Command_Timeout=12885098501i,High_Fly_Writes=0i,Airflow_Temperature_Cel=29i,G_Sense_Error_Rate=0i,Power_Off_Retract_Count=145i,Load_Cycle_Count=25668i,Temperature_Celsius=29i,Hardware_ECC_Recovered=19243395i,Current_Pending_Sector=0i,Offline_Uncorrectable=0i,UDMA_CRC_Error_Count=0i 1472412282915653274'

另请参阅:https://docs.influxdata.com/influxdb/v1.6/write_protocols/line_protocol_tutorial/

答案 1 :(得分:0)

测量后有一个空格'smartctl'而不是','。尝试:

curl -POST 'http://localhost:8086/write?db=test' --data-binary 'smartctl,Raw_Read_Error_Rate=19 value=0.64 1472412282915653274'

Documentation表示:

HTTP API是将数据放入InfluxDB的主要方法。要写入数据,请向/ write端点发送POST请求。下面的示例将单个点写入mydb数据库。数据包括测量cpu_load_short,标记键主机和标记值为server01和us-west的区域,字段值为0.64的字段键值,以及时间戳1434055562000000000.

 curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'