【问题标题】:insert multiple values with tags into influxdb将带有标签的多个值插入influxdb
【发布时间】:2016-08-28 19:30:03
【问题描述】:

我正在尝试收集 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"

添加一些说明:

如果我使用逗号(并设置一个值),那么它们是 all 标签,而不是字段:

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

【问题讨论】:

    标签: influxdb


    【解决方案1】:

    把你的标签放在测量名称后面,用逗号分隔,全行协议定义是这样的:

    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/

    【讨论】:

      【解决方案2】:

      测量后有一个空格“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 的主要方式。要写入数据,请将 POST 请求发送到 /write 端点。下面的示例将一个点写入 mydb 数据库。数据由测量cpu_load_short、标签值为server01和us-west的标签键host和region、字段值为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'
      

      【讨论】:

      • 如果我这样做,那么我不会将所有数据都作为“smartctl”,而是每个数据都是一个单独的“表”(正确的术语?)
      • 抱歉,请使用 'value' 重试
      • 数据插入了吗?在localhost:8086 Web 界面中测试并运行查询“select * from /smartctl.*/”
      • 是的,已插入。但不是我的问题中提到的方式(我在其中添加了说明)
      猜你喜欢
      • 2020-02-17
      • 2020-03-07
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      相关资源
      最近更新 更多