配置 influxDB 鑑權及 HTTP API 寫數據的方法

 

本文簡要描述如何爲 InfluxDB 開啓鑑權和配置用戶管理權限(安裝後默認不須要登陸),以及開啓鑑權後如何使用 HTTP API 寫數據。html

 

建立 InfluxDB 管理員帳號

建立 admin 賬號密碼並賦予全部數據庫權限shell

  1. 建立數據庫

    CREATE USER admin WITH PASSWORD ‘admin‘
  2. 賦權markdown

    GRANT ALL PRIVILEGES TO admin

其餘命令curl

  • 修改用戶(密碼)post

    SET PASSWORD FOR admin = ‘admin‘
  • 刪除用戶atom

    DROP USER admin
  • 撤消權限url

    REVOKE ALL  ON  mydb   FROM admin
  • 查看權限spa

    SHOW GRANTS FOR admin
    • 1

 

打開認證

vi /etc/influxdb/influxdb.conf
  • 1

把 [http] 標籤下的 auth-enabled 選項值改成 true.net

[http]  
enabled = true  
bind-address = ":8086"  
auth-enabled = true # ✨
log-enabled = true  
write-tracing = false  
pprof-enabled = false  
https-enabled = false  
https-certificate = "/etc/ssl/influxdb.pem"

 

重啓 InfluxDB

命令行 CLI 登陸

$ influx -username admin -password admin
Connected to http://localhost:8086 version 0.13.x
InfluxDB shell 0.13.x
>

 

或者

$ influx
Connected to http://localhost:8086 version 0.13.x
InfluxDB shell 0.13.x
> auth
username: admin
password:
>

HTTP API 查詢的方式變爲

curl -G "http://localhost:8086/query" -u admin:admin --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query" --data-urlencode "u=admin" --data-urlencode "p=admin" --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query?u=admin&p=admin&q=SHOW+DATABASES"

 

開啓鑑權後如何寫數據

使用insert命令行寫數據:

> INSERT cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000
  • 1

使用HTTP API寫數據:

  • 用戶名密碼寫在 URL 中

    curl -i -X POST "http://localhost:8086/write?db=mydb&u=admin&p=admin" --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
    • 1
  • 用戶名密碼寫在 HTTP 頭 Authorization 選項

    curl -i -X POST "http://localhost:8086/write?db=mydb" -u admin:admin --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
    • 1

除了命令關鍵字不一樣,數據部分基本相同,僅觀察一下數據部分:

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000
  • 1

這行數據含有兩個空格,將之分爲三個部分:

  • 第一部分: cpu_load_short,host=server01,region=us-west 
    第一部分稱爲key,key中包含了measurement name和tags(tags又分爲tag key和tag value,tags能夠有多個),例子中的「cpu_load_short」就是measurement name,「host」和「reginon」是tag key,「server01」和「us-west」是對應的tag value。在我看來,measurement name和MySQL數據庫的表名是等同的。另外,在tag value中的空格應以「/」加上空格表示,如有多個tag value,可使用逗號隔開,可是應以「/」加逗號表示。

  • 第二部分:value=0.64,value2=0.86 
    第二部分稱爲Field,一樣和tags的形式相同,都是鍵值對的形式,可是tags中的值必須是string類型,而Field中的值能夠爲Integer、float、Boolean、string類型,若爲Integer類型,則值後必須加「i」,不然該值爲float類型,好比value=23意味着這個值23是float類型,而value=23i,意味着值23是Integer類型。Boolean類型的值的表示方式有不少,直接寫成:t, T, true, TRUE, f, F, false或 FALSE均可以。

  • 第三部分(可選):1434055562000000000 
    第三部分稱爲Timestamp,是時間戳,若是該部分省略,則默認將當前時間的時間戳插入數據庫,不然按照用戶輸入的時間戳插入。

第一種寫數據方式 
產生 HTTP 包(使用 Chrome 插件 Postman 生成)

POST /write?db=mydb HTTP/1.1
Host: 192.168.6.93:8086
Authorization: Basic YWRtaW46YWRtaW4=
Cache-Control: no-cache
Postman-Token: d3ce583a-1e11-63ec-a818-034aeaa91f10

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055565000000000

 

第二種寫數據方式 
產生 HTTP 包

POST /write?db=mydb&u=admin&p=admin HTTP/1.1
Host: 192.168.6.93:8086
Cache-Control: no-cache
Postman-Token: 6773f66a-de4c-435d-6469-0a1194752a86

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055565000000000

參考: 訪問須要HTTP Basic Authentication認證的資源的各類語言的實現

相關文章
相關標籤/搜索