InfluxDB是用Go編寫的一個開源分佈式時序、事件和指標數據庫,無需外部依賴。它與Elasticsearch、Graphite等相似。比較適用於與事件緊密相關的數據,例如實時日誌數據、實時監控數據等,詳細信息能夠自行網上搜索。html
0x00 環境信息
基本信息:linux
- 系統:CentOS7.2
- IP地址:xx.xx.xx.xx
- 端口號:30040
- 運行環境:K8S測試集羣中
- InfluxDB版本:1.5.1(該版本再也不提供web界面)
- InfluxDB用戶名:admin
- InfluxDB密碼:admin
0x01 基本操做
InfluxDB支持三種方式的通訊方式:web
- InfluxDB客戶端命令行
- HTTP API
- 各編程語言庫
下面演示採用InfluxDB客戶端命令行方式。數據庫
一、鏈接、認證
在windows系統中使用InfluxDB客戶端命令行鏈接數據庫,並進行認證:
編程
注意,本地必須存在influxdb的一套指令程序,包括下面幾個:
windows
二、數據庫操做
- show databases 查看數據庫
- create database db_name 建立數據庫
- drop database db_name 刪除數據庫
- use db_name 選擇數據庫
其中db_name表示具體的數據庫名。
實際操做以下:服務器
三、measurement操做
InfluxDB中的measurement相似於關係數據庫中的數據表,後文中所有稱其爲數據表。編程語言
- show measurements 查看錶
- insert measurement_name,tags fields timestamp 由於沒有顯示的建立表語句,因此經過向表中插入數據來建立表
- drop measurement measurement_name 刪除表
其中,measurement_name表明具體的表名。在插入數據時有特定的格式要求,例如:分佈式
insert server_info,server_name=server1 cpu=intel,ram_capacity=64 timestamp
其中,從左到右依次爲表名、逗號、tags<key-value,可多個>、空格、fields<key-value,可多個>、空格、timestamp,其中多個tags之間使用逗號分隔,多個fields之間使用逗號分隔。測試
四、數據操做(增刪改查)
(1)新增數據
假設數據表格式以下面語句所示:
insert server_info,server_name=server1 cpu=intel,ram_capacity=64 timestamp
由上圖結果可知,在插入數據時,能夠不指定timestamp,此時數據庫會自動添加。
(2)查詢數據
查詢數據使用SQL語句實現,同關係型數據庫的查詢方式幾乎相同。如上圖中所示。
(3)修改和刪除數據
因爲InfluxDB是時序數據庫,因此未提供修改和刪除數據的操做。不過,數據刪除能夠經過數據保存策略(Retention Policies)來自動實現。
五、series操做
series表示數據表中特定tags對應的數據,好比上面的表server_info,該表中保存了多個服務器的數據,不一樣服務器經過tags中的server_name不一樣值來表示,假如如今表中數據以下:
則此時series則表示不一樣服務器的cpu、ram_capacity隨時間變化的一系列值。
六、帳號管理
- 查看帳號:show users
- 建立普通帳號:create user 「username」/username with password ‘password’,貌似建立的普通帳號並無什麼數據庫操做權限
- 建立管理和帳號:create user 「username」/username with password ‘password’ with all privileges
- 刪除帳號:drop user 「username」/username
- 設置帳號密碼:set password for username=’password’
其中,帳號支持兩種書寫方式:英文雙引號括起來、直接帳號字符串,而密碼則必須以英文單引號括起來,不然會出錯。