第一章 InfluxDB的認識
InfluxDB是TICK堆棧中的時間序列數據庫
InfluxDB用作涉及大量時間戳數據的任何用例的數據存儲,包括DevOps監控,應用指標,IoT傳感器數據和實時分析。通過配置InfluxDB來保持數據在定義的時間長度,自動過期並從系統中刪除任何不需要的數據,從而節省機器上的空間。InfluxDB還提供了一種類似SQL的查詢語言,用於與數據交互。
高性能
InfluxDB是專門針對時間序列數據編寫的定制高性能數據存儲。它允許高吞吐量,壓縮和實時查詢同一數據。InfluxDB完全寫在Go中,它編譯成一個沒有外部依賴關系的單個二進制文件。InfluxDB提供高性能的寫入和查詢HTTP / S API,並支持數據采集協議(如Telegraf,Graphite,collectd和OpenTSDB)的插件。
類似SQL的查詢
InfluxDB提供InfluxQL作為與數據交互的類SQL查詢語言。對於來自其他SQL或類SQL環境的用戶來說,它已經被精心設計,同時還提供特定於存儲和分析時間序列數據的功能。InfluxQL還支持正則表達式,算術表達式和時間序列特定功能,以加快數據處理速度
采樣與數據保留
InfluxDB可以處理每秒數百萬個數據點。長時間使用這些數據可能會造成存儲問題。一個自然的解決方案是對數據進行縮減; 保持高精度原始數據只有有限的時間,並將較低精度,總結數據存儲更長時間或永遠。InfluxDB提供了兩個功能 - 連續查詢(CQ)和保留策略(RP) -幫助您自動執行數據下采樣和過期舊數據的過程
第二章 軟件程序包的下載安裝
2.1 下載位置
2.2 安裝Telegraf
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.5-1_amd64.deb
sudo dpkg -i telegraf_1.3.5-1_amd64.deb
2.3 安裝InfluxDB
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.3.2_amd64.deb
sudo dpkg -i influxdb_1.3.2_amd64.deb
2.4 安裝Chronograf
wget https://dl.influxdata.com/chronograf/releases/chronograf_1.3.6.1_amd64.deb
sudo dpkg -i chronograf_1.3.6.1_amd64.deb
2.5 安裝Kapacitor
wget https://dl.influxdata.com/kapacitor/releases/kapacitor_1.3.1_amd64.deb
sudo dpkg -i kapacitor_1.3.1_amd64.deb
了解一些名詞概念
tag
:influxdb中的標簽,與表名在一起作為數據庫的索引,可以看作是表名稱K-V結構field
:用於存放數據的部分,可以存在多個值使用逗號
分開,K-V結構,k相當於列名稱,v相當於插入此條數據的列的值timestamp
:時間戳,可以自己制定也可以由系統自己指定,如果不指定,默認就是系統當前的時間戳
注意:在插入新的數據時tag,field,timestamp需要有空格
分開series
:序列,所有在數據庫中的數據,都需要通過圖表來展示,而這個series表示這個表里面的數據,可以在圖表上畫成幾條線Retention policy
:數據保留策略,可以定義數據保留的時長,每個數據庫可以有多個數據保留策略,但只能有一個默認策略Point
:點,表示每個表里某個時刻的某個條件下的一個field的數據,因為體現在圖表上就是一個點,於是將其稱為point,point的組成:point=timestamp+field+tags
第三章 Influxdb的環境配置
3.1 安裝influxdb
3.2 Influxdb端口
8003
:此端口之前是influxdb提供的web管理頁面的端口,1.3版本之后被棄用8086
:TCP端口8086用於通過InfluxDB的HTTP API進行客戶端 - 服務器通信8088
:TCP端口8088用於RPC服務進行備份和還原
注意 :除了上述端口,InfluxDB還提供可能需要自定義端口的多個插件。所有端口映射都可以通過配置文件修改,該配置文件位於/etc/influxdb/influxdb.conf默認安裝位置
3.3 時間同步
InfluxDB使用主機在UTC的本地時間為數據和協調目的分配時間戳。使用網絡時間協議(NTP)來同步主機之間的時間; 如果主機的時鍾與NTP不同步,寫入InfluxDB的數據的時間戳可能不正確
3.4 Influxdb的配置
influxd config
:用於查看默認的配置influxd -config PATH/TO/CONFIGFILE
:將進程指向正確的配置文件INFLUXDB_CONFIG_PATH
:通過環境變量設置配置文件的路徑並啟動influxdb
注意 :influxdb首先檢查-config
選項,然后檢查環境變量
3.4.1 influxDB配置選項
3.5 influxdb數據目錄的權限
chown influxdb:influxdb /PATH/TO/DATA
第四章 CLI/SHELL
InfluxDB的命令行界面(influx)是HTTP API的交互式shell。用於influx手動或從文件寫入數據,以交互方式查詢數據,並查看不同格式的查詢輸出。
4.1 啟動influx
which influx
find / -iname influx
influx
- 啟動influxd數據庫進程
- 啟動influx終端shell連接數據庫
注意 : CLI和InfluxDB版本應該相同。如果沒有,它可以導致解析查詢問題。
4.2 influx參數
influx --help
influx -execute 'SELECT * FROM "h2o_feet" LIMIT 3' -database="NOAA_water_database" -precision=rfc3339
-import
- DDL(數據定義語言):包含用於創建相關數據庫和管理保留策略的InfluxQL命令。如果您的數據庫和保留策略已經存在,您的文件可以跳過本節
- DML(數據操作語言):列出相關數據庫和(如果需要)保留策略,並包含行協議中的數據。
-execute
-format
Usage of influx:
-version
Display the version and exit.
-host 'host name'
Host to connect to.
-port 'port #'
Port to connect to.
-socket 'unix domain socket'
Unix socket to connect to.
-database 'database name'
Database to connect to the server.
-password 'password'
Password to connect to the server. Leaving blank will prompt for password (--password '').
-username 'username'
Username to connect to the server.
-ssl
Use https for requests.
-unsafeSsl
Set this when connecting to the cluster using https and not use SSL verification.
-execute 'command'
Execute command and quit.
-format 'json|csv|column'
Format specifies the format of the server responses: json, csv, or column.
-precision 'rfc3339|h|m|s|ms|u|ns'
Precision specifies the format of the timestamp: rfc3339, h, m, s, ms, u or ns.
-consistency 'any|one|quorum|all'
Set write consistency level: any, one, quorum, or all
-pretty
Turns on pretty print for the json format.
-import
Import a previous database export from file
-pps
How many points per second the import will allow. By default it is zero and will not throttle importing.
-path
Path to file to import
-compressed
Set to true if the import file is compressed
Examples:
# Use influx in a non-interactive mode to query the database "metrics" and pretty print json:
$ influx -database 'metrics' -execute 'select * from cpu' -format 'json' -pretty
# Connect to a specific database on startup and set database context:
$ influx -database 'metrics' -host 'localhost' -port '8086'
第五章 示例數據
5.1 導入示例數據到influxdb
樣本數據是國家海洋和大氣管理局(NOAA)運行海洋學產品和服務中心的公開數據。數據包括2015年8月18日至2015年9月18日期間兩站(Santa Monica,CA(ID 9410840)和Coyote Creek,CA(ID 9414575))每6秒收集的水位(ft)的15,258次
influx -precision rfc3339 #按照rfc3339格式啟動influxdb
CREATE DATABASE NOAA_water_database #創建示例數據數據庫
curl https://s3.amazonaws.com/noaa.water-database/NOAA_data.txt -o NOAA_data.txt #下載示例數據到本地
influx -precision rfc3339 -database NOAA_water_database #連接數據庫
SHOW DATABASES #測試數據庫數據
第六章 InfluxQL
6.1 查詢數據庫
influxQL中有用的查詢及聲明*
基礎 | 配置查詢結果 | 查詢格式的條件 |
---|---|---|
select語句 | ORDER BY time DESC | Time Syntax |
where子句 | The LIMIT and SLIMIT Clauses | Regular Expressions |
group by子句 | The OFFSET and SOFFSET Clauses | Data Types and Cast Operations |
into子句 | The Time Zone Clause | Merge Behavior |
. | . | Multiple Statements |
. | . | Subqueries |
select語法
SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]
select子句支持指定數據的幾種格式
select *
查詢所有的字段和標簽SELECT "<field_key>"
查詢一個特定的字段SELECT "<field_key>","<field_key>"
查詢多個字段SELECT "<field_key>","<tag_key>"
查詢一個特定的字段和標簽,當SELECT子句包含標簽時至少必須指定一個字段。- select語句的使用方法
- select語句算術表達式的使用方法
- select語句函數的使用方法
- select cast的使用方式
- select語句正則表達式的使用方式