Influxdb


第一章 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 下載位置

DownLoad

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

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配置選項

configure

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子句支持指定數據的幾種格式

第五章 influxdb優化選項參數配置

influxdb config


免責聲明!

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



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