我正在尝试收集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
答案 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'
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'