influxdb

前言


influxdb是目前比較流行的時間序列數據庫。

  • 何謂時間序列數據庫?
    什么是時間序列數據庫,最簡單的定義就是數據格式里包含Timestamp字段的數據,比如某一時間環境的溫度,CPU的使用率等。但是,有什么數據不包含Timestamp呢?幾乎所有的數據其實都可以打上一個Timestamp字段。時間序列數據的更重要的一個屬性是如何去查詢它,包括數據的過濾,計算等等。

Influxdb

Influxdb是一個開源的分布式時序、時間和指標數據庫,使用go語言編寫,無需外部依賴。
它有三大特性:

  1. 時序性(Time Series):與時間相關的函數的靈活使用(諸如最大、最小、求和等);
  2. 度量(Metrics):對實時大量數據進行計算;
  3. 事件(Event):支持任意的事件數據,換句話說,任意事件的數據我們都可以做操作。

同時,它有以下幾大特點:

  • schemaless(無結構),可以是任意數量的列;
  • min, max, sum, count, mean, median 一系列函數,方便統計;
  • Native HTTP API, 內置http支持,使用http讀寫;
  • Powerful Query Language 類似sql;
  • Built-in Explorer 自帶管理工具。

Influxdb安裝


注:本文使用的influxdb version是1.0.2

在講解具體的安裝步驟之前,先說說influxdb的兩個http端口:8083和8086

  • port 8083:管理頁面端口,訪問localhost:8083可以進入你本機的influxdb管理頁面;
  • port 8086:http連接influxdb client端口,一般使用該端口往本機的influxdb讀寫數據。

OS X

brew update
brew install influxdb

Docker Image

docker pull influxdb

Ubuntu & Debian

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.0.2_amd64.deb
sudo dpkg -i influxdb_1.0.2_amd64.deb

RedHat & CentOS

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2.x86_64.rpm
sudo yum localinstall influxdb-1.0.2.x86_64.rpm

Standalone Linux Binaries (64-bit)

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_amd64.tar.gz  
tar xvfz influxdb-1.0.2_linux_amd64.tar.gz

Standalone Linux Binaries (32-bit)

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_i386.tar.gz
tar xvfz influxdb-1.0.2_linux_i386.tar.gz

Standalone Linux Binaries (ARM)

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_armhf.tar.gz
tar xvfz influxdb-1.0.2_linux_armhf.tar.gz

How to start?
安裝完之后,如何啟動呢?

sudo service influxdb start

到這里influxdb安裝啟動完成,可以訪問influxdb管理頁面:本地管理頁面,該版本沒有登錄用戶及密碼,可以自行設置讀寫的用戶名和密碼。

如何在命令行使用
安裝完畢之后,如何在命令行使用呢?

influxdb在命令行中使用

influxdb基本操作


名詞解釋

在具體的講解influxdb的相關操作之前先說說influxdb的一些專有名詞,這些名詞代表什么。

influxdb相關名詞
  • database:數據庫;
  • measurement:數據庫中的表;
  • points:表里面的一行數據。
influxDB中獨有的一些概念

Point由時間戳(time)、數據(field)和標簽(tags)組成。

  • time:每條數據記錄的時間,也是數據庫自動生成的主索引;
  • fields:各種記錄的值;
  • tags:各種有索引的屬性。

還有一個重要的名詞:series
所有在數據庫中的數據,都需要通過圖表來表示,series表示這個表里面的所有的數據可以在圖標上畫成幾條線(注:線條的個數由tags排列組合計算出來)
舉個簡單的小栗子:
有如下數據:

error_time

它的series為:

error_time_series

influxdb基本操作

  • 數據庫與表的操作
    可以直接在web管理頁面做操作,當然也可以命令行。
#創建數據庫
create database "db_name"
#顯示所有的數據庫
show databases
#刪除數據庫
drop database "db_name"
#使用數據庫
use db_name
#顯示該數據庫中所有的表
show measurements
#創建表,直接在插入數據的時候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
#刪除表
drop measurement "measurement_name"

  • 向數據庫中插入數據。
    • 通過命令行
use testDb
insert test,host=127.0.0.1,monitor_name=test count=1
  • 通過http接口
curl -i -XPOST 'http://127.0.0.1:8086/write?db=testDb' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1'

讀者看到這里可能會觀察到插入的數據的格式貌似比較奇怪,這是因為influxDB存儲數據采用的是Line Protocol格式。那么何謂Line Protoco格式?

Line Protocol格式:寫入數據庫的Point的固定格式。
在上面的兩種插入數據的方法中都有這樣的一部分:

test,host=127.0.0.1,monitor_name=test count=1

其中:

  1. test:表名;
  2. host=127.0.0.1,monitor_name=test:tag;
  3. count=1:field

想對此格式有詳細的了解參見官方文檔


  • 查詢數據庫中的數據。
    • 通過命令行
select * from test order by time desc
  • 通過http接口
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDb" --data-urlencode "q=select * from test order by time desc"

influxDB是支持類sql語句的,具體的查詢語法都差不多,這里就不再做詳細的贅述了。

  • 數據保存策略(Retention Policies)
    influxDB是沒有提供直接刪除數據記錄的方法,但是提供數據保存策略,主要用于指定數據保留時間,超過指定時間,就刪除這部分數據。

    • 查看當前數據庫Retention Policies
show retention policies on "db_name"
retention_policies
  • 創建新的Retention Policies
create retention policy "rp_name" on "db_name" duration 3w replication 1 default
-  rp_name:策略名;
- db_name:具體的數據庫名;
- 3w:保存3周,3周之前的數據將被刪除,influxdb具有各種事件參數,比如:h(小時),d(天),w(星期);
- replication 1:副本個數,一般為1就可以了;
- default:設置為默認策略
  • 修改Retention Policies
alter retention policy "rp_name" on "db_name" duration 30d default
  • 刪除Retention Policies
drop retention policy "rp_name"
  • 連續查詢(Continous Queries)
    當數據超過保存策略里指定的時間之后就會被刪除,但是這時候可能并不想數據被完全刪掉,怎么辦?
    influxdb提供了聯系查詢,可以做數據統計采樣。
    • 查看數據庫的Continous Queries
show continuous queries
continuous_queries.
  • 創建新的Continous Queries
create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
- cq_name:連續查詢名字;
- db_name:數據庫名字;
- sum(count):計算總和;
- table_name:當前表名;
- new_table_name:存新的數據的表名;
- 30m:時間間隔為30分鐘
  • 刪除Continous Queries
drop continous query cp_name on db_name
  • 用戶管理
    可以直接在web管理頁面做操作,也可以命令行。
#顯示用戶  
show users
#創建用戶
create user "username" with password 'password'
#創建管理員權限用戶create user "username" with password 'password' with all privileges
#刪除用戶
drop user "username"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容