InfluxDB是用Go編寫的一個開源分布式時序、事件和指標數據庫,無需外部依賴。它與Elasticsearch、Graphite等類似。比較適用於與事件緊密相關的數據,例如實時日志數據、實時監控數據等,詳細信息可以自行網上搜索。
0x00 環境信息
基本信息:
- 系統:CentOS7.2
- IP地址:xx.xx.xx.xx
- 端口號:30040
- 運行環境:K8S測試集群中
- InfluxDB版本:1.5.1(該版本不再提供web界面)
- InfluxDB用戶名:admin
- InfluxDB密碼:admin
0x01 基本操作
InfluxDB支持三種方式的通信方式:
- InfluxDB客戶端命令行
- HTTP API
- 各編程語言庫
下面演示采用InfluxDB客戶端命令行方式。
1、連接、認證
在windows系統中使用InfluxDB客戶端命令行連接數據庫,並進行認證:

注意,本地必須存在influxdb的一套指令程序,包括下面幾個:

2、數據庫操作
- show databases 查看數據庫
- create database db_name 創建數據庫
- drop database db_name 刪除數據庫
- use db_name 選擇數據庫
其中db_name表示具體的數據庫名。
實際操作如下:

3、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之間使用逗號分隔。
4、數據操作(增刪改查)
(1)新增數據
假設數據表格式如下面語句所示:
insert server_info,server_name=server1 cpu=intel,ram_capacity=64 timestamp

由上圖結果可知,在插入數據時,可以不指定timestamp,此時數據庫會自動添加。
(2)查詢數據
查詢數據使用SQL語句實現,同關系型數據庫的查詢方式幾乎相同。如上圖中所示。
(3)修改和刪除數據
由於InfluxDB是時序數據庫,所以未提供修改和刪除數據的操作。不過,數據刪除可以通過數據保存策略(Retention Policies)來自動實現。
5、series操作
series表示數據表中特定tags對應的數據,比如上面的表server_info,該表中保存了多個服務器的數據,不同服務器通過tags中的server_name不同值來表示,假如現在表中數據如下:

則此時series則表示不同服務器的cpu、ram_capacity隨時間變化的一系列值。
6、賬號管理
- 查看賬號: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’
其中,賬號支持兩種書寫方式:英文雙引號括起來、直接賬號字符串,而密碼則必須以英文單引號括起來,否則會出錯。


