influxdb[2]-讀寫數據


InfluxDB提供多種數據寫入方式,包括命令行、客戶端、插件等。Cli寫入數據已在上文中描述,本文主要介紹使用HTTP接口讀寫數據。

使用HTTP接口創建數據庫

接口地址:/query

POST,參數qCREATE DATABASE <new_database_name>,示例:

curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb1"

HTTP/1.1 200 OK
Content-Type: application/json
Request-Id: 658c7410-ea97-11eb-8030-525400d9065e
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.6
X-Request-Id: 658c7410-ea97-11eb-8030-525400d9065e
Date: Thu, 22 Jul 2021 02:49:12 GMT
Transfer-Encoding: chunked

{"results":[{"statement_id":0}]}

寫單條數據

接口地址:/write,具體格式如下:

curl -i -XPOST 'http://localhost:8086/write?db=mydb1' --data-binary 'cpu,host=server01,region=us-west value=0.69 1626858254189591692'

HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: f606e8f7-ea97-11eb-8031-525400d9065e
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.6
X-Request-Id: f606e8f7-ea97-11eb-8031-525400d9065e
Date: Thu, 22 Jul 2021 02:53:15 GMT

HTTP 204 No Content`,說明寫入成功。

批量寫入

curl -i -XPOST 'http://localhost:8086/write?db=mydb1' --data-binary 'cpu,host=server02 value=0.67
cpu,host=server02,region=us-west value=0.55 1626858254189591692
cpu,host=server03,region=us-west value=2.0 1626858254189591692'

HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: e9c4ad08-ea98-11eb-8032-525400d9065e
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.6
X-Request-Id: e9c4ad08-ea98-11eb-8032-525400d9065e
Date: Thu, 22 Jul 2021 03:00:04 GMT

批量寫入文件

curl -i -XPOST 'http://localhost:8086/write?db=mydb1' --data-binary @cpu_data.txt

給一個正確的文件(cpu_data.txt)的例子,數據的格式需要滿足InfluxDB行格式:

cpu,host=server02 value=0.67
cpu,host=server02,region=us-west value=0.55 1626858254189591692
cpu,direction=in,host=server01,region=us-west value=2.0 1626858254189591692

查詢數據

接口地址:/query

curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb1" --data-urlencode "q=SELECT * FROM \"cpu\" WHERE \"region\"='us-west'"

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "cpu",
                    "columns": [
                        "time",
                        "host",
                        "region",
                        "value"
                    ],
                    "values": [
                        [
                            "2021-07-21T09:04:14.189591692Z",
                            "server02",
                            "us-west",
                            0.55
                        ],
                        [
                            "2021-07-21T09:04:14.189591692Z",
                            "server03",
                            "us-west",
                            2
                        ],
                        [
                            "2021-07-22T02:53:15.355312874Z",
                            "server01",
                            "us-west",
                            0.69
                        ]
                    ]
                }
            ]
        }
    ]
}

多個數據

接口地址:/query

在一次API調用中發送多個InfluxDB的查詢語句,可以簡單地使用分號分隔每個查詢

curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb1" --data-urlencode "q=SELECT \"value\" FROM \"cpu\" WHERE \"region\"='us-west';SELECT count(\"value\") FROM \"cpu\" WHERE \"region\"='us-west'"

其它參數

時間戳格式

在InfluxDB中的所有數據都是存的UTC時間,時間戳默認返回RFC3339格式的納米級的UTC時間,例如2021-07-22T02:53:15.355312874Z,如果你想要返回Unix格式的時間,可以在請求參數里設置epoch參數,其中epoch可以是[h,m,s,ms,u,ns]之一。例如返回一個秒級的epoch:

curl -G 'http://localhost:8086/query?pretty=true'  --data-urlencode "epoch=s" --data-urlencode "db=mydb1" --data-urlencode "q=SELECT * FROM \"cpu\" WHERE \"region\"='us-west'"

{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "cpu",
                    "columns": [
                        "time",
                        "host",
                        "region",
                        "value"
                    ],
                    "values": [
                        [
                            1626858254,
                            "server02",
                            "us-west",
                            0.55
                        ],
                        [
                            1626858254,
                            "server03",
                            "us-west",
                            2
                        ],
                        [
                            1626922395,
                            "server01",
                            "us-west",
                            0.69
                        ]
                    ]
                }
            ]
        }
    ]
}

最大行限制

分塊(chunking)

HTTP返回值概要

  • 2xx:如果寫數據后收到HTTP 204 No Content,說明寫入成功
  • 4xx:表示InfluxDB不知道你發的是什么。
  • 5xx:系統過載或是應用受損。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM