日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過HTTP API寫入數據

更新時間:

有很多方法可以向TSDB For InfluxDB?寫入數據,包括通過命令行界面(command line interface)和客戶端(client libraries)。在這一章中,我們將向您展示如何使用內嵌的HTTP API寫入數據。

說明

本章節中的示例使用了curl,一種通過URL來傳輸數據的命令行工具。

通過HTTP API發送POST請求到/write路徑是數據寫入TSDB For InfluxDB?的主要方式。假設已經成功創建好數據庫mydb,現在我們來探索如何通過HTTP API將數據寫入mydb

單點寫入

下面的例子展示了如何將一個數據點寫入mydb數據庫。其中,該數據點的measurement為cpu_load_short,有兩個tag,tag key分別為hostregion,對應的tag value分別為server01us-west,field key是value,field value是0.64,timestamp是1434055562000000000

curl -i -XPOST 'https://<網絡地址>:3242/write?db=mydb&u=<賬號名稱>&p=<密碼>' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
  • <網絡地址>是您購買的TSDB For InfluxDB?實例的地址。

  • <賬號名稱>和<密碼>分別是您設置的用戶賬號和密碼。

  • TSDB For InfluxDB?默認使用端口3242

  • 數據寫入的時候,需要設置參數db的值,該值必須是一個已有的數據庫。如果您沒有通過參數rp來設置數據保留策略的話,那么數據會寫到db默認的數據保留策略中。

想要獲得完整的參數信息,請參閱文檔HTTP API

我們稱POST的主體內容,包含你想要存儲的時序數據,為行協議(Line Protocol),它的組成部分有measurement、tags、fields和timestamp。TSDB For InfluxDB?要求時序數據必須有measurement。嚴格來講,tag是可選的,但是大多數時序數據都會包含tag,用于區分數據的來源,使查詢變得簡單和高效。tag key和tag value都必須是字符串。field key也是必須的,并且必須是字符串,field value默認的數據類型是float。時間戳放在行的最后,是一個從UTC 1970年1月1日起到現在的納秒級的Unix時間,它是可選的,如果沒有明確給出時間戳,TSDB For InfluxDB?會把服務器本地的納秒級的Unix時間當作數據點的時間戳。在TSDB For InfluxDB?中,任何時間戳都是UTC時間(協調世界時)。

多點寫入

通過用換行符來分隔多個數據點,可以將它們同時發送到多個時間序列,這種批量發送的方式可以獲得更高的性能。

下面的例子展示了將3個數據點寫入數據庫mydb

  • 第一個點屬于measurement為cpu_load_short、tag為host=server0的時間序列,timestamp是服務器本地的時間戳。

  • 第二個點屬于measurement為cpu_load_short、tag為host=server02,region=us-west的時間序列,有明確的時間戳,timestamp為142256854370290025

  • 第三個點跟第二個點的時間戳一樣,但是該數據點屬于measurement為cpu_load_short、tag為direction=in,host=server01,region=us-west的時間序列。

curl -i -XPOST 'https://<網絡地址>:3242/write?db=mydb&u=<賬號名稱>&p=<密碼>' --data-binary 'cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257'

文件寫入

curl通過@filename的方式,將文件中的數據點寫入TSDB For InfluxDB?。文件中的數據需要滿足行協議的語法。

以下是格式正確的文件(cpu_data.txt)的一個示例:

cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257

通過以下命令將文件cpu_data.txt里的數據寫入數據庫mydb

curl -i -XPOST 'https://<網絡地址>:3242/write?db=mydb&u=<賬號名稱>&p=<密碼>' --data-binary @cpu_data.txt
說明

如果您的一個文件中有超過5000個數據點,建議將該文件拆分成多個文件,以便將數據批量寫進TSDB For InfluxDB?,因為HTTP請求默認在5秒后超時,雖然寫入請求超時后,TSDB For InfluxDB?依舊會嘗試將這些數據點寫入數據庫,但是并不保障數據一定會寫入成功。

Schemaless(無模式)的設計

TSDB For InfluxDB?是一個Schemaless的數據庫。您可以在任意時間添加新的measurement、tags和fields。

注意

如果您嘗試寫入跟之前類型不同的數據(例如,field原來接收的是整型數據,現在卻寫了一個字符串進去),TSDB For InfluxDB?會拒絕這些數據。

關于REST的說明

TSDB For InfluxDB?使用HTTP作為方便且廣泛支持的數據傳輸協議。

現代Web的API都基于REST的設計,因為它解決了一個共同的需求。隨著終端數量的增加,對組織系統的需求變得越來越迫切。REST是一個工業界認定的用來組織大量終端的標準。這種一致性對于API的開發者和消費者都有好處:每個參與者都知道期望的是什么。

然而,REST只是一個慣例。TSDB For InfluxDB?是一個簡單、易懂的系統,只提供三個API端點,使用HTTP作為InfluxQL的傳輸方法。所以TSDB For InfluxDB? API并不試圖完全符合RESTful的標準。

HTTP返回值概要

  • 2xx:如果您發送寫請求后返回信息HTTP 204 No Content,說明數據成功寫入TSDB For InfluxDB?了!

  • 4xx:表示TSDB For InfluxDB?不知道您發的是什么請求。

  • 5xx:系統過載或著嚴重受損。

下面舉幾個返回錯誤的例子:

  • field value原來是布爾類型的,現在寫入浮點數:

curl -i -XPOST 'https://<網絡地址>:3242/write?db=<數據庫名稱>&u=<賬號名稱>&p=<密碼>' --data-binary 'tobeornottobe booleanonly=true'

curl -i -XPOST 'https://<網絡地址>:3242/write?db=<數據庫名稱>&u=<賬號名稱>&p=<密碼>' --data-binary 'tobeornottobe booleanonly=5'

系統會返回:

HTTP/1.1 400 Bad Request
Content-Type: application/json
Request-Id: [...]
X-Influxdb-Version: 1.7.x
Date: Wed, 01 Mar 2017 19:38:01 GMT
Content-Length: 150

{"error":"field type conflict: input field \"booleanonly\" on measurement \"tobeornottobe\" is type float, already exists as type boolean dropped=1"}
  • 將數據寫入到一個不存在的數據庫:

curl -i -XPOST 'https://<網絡地址>:3242/write?db=atlantis&u=<賬號名稱>&p=<密碼>' --data-binary 'liters value=10'

系統會返回:

HTTP/1.1 404 Not Found
Content-Type: application/json
Request-Id: [...]
X-Influxdb-Version: 1.7.x
Date: Wed, 01 Mar 2017 19:38:35 GMT
Content-Length: 45

{"error":"database not found: \"atlantis\""}

后續任務

現在您已經知道了如何使用TSDB For InfluxDB?內置的HTTP API來寫入數據,下一步,我們將在文檔通過HTTP API查詢數據中學習如何將數據讀出來。若想獲取更多關于如何使用HTTP API寫入數據的信息,請查閱文檔HTTP API

InfluxDB? is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB?.