時(shí)序數(shù)據(jù)庫(kù)influxdb

influxdb


簡(jiǎn)介


Influxdb是一個(gè)開(kāi)源的分布式時(shí)序、時(shí)間和指標(biāo)數(shù)據(jù)庫(kù),使用go語(yǔ)言編寫,無(wú)需外部依賴。

特性:

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

特點(diǎn):

  • schemaless(無(wú)結(jié)構(gòu)),可以是任意數(shù)量的列;
  • min, max, sum, count, mean, median 一系列函數(shù),方便統(tǒng)計(jì);
  • Native HTTP API, 內(nèi)置http支持,使用http讀寫;
  • Powerful Query Language 類似sql;
  • Built-in Explorer 自帶管理工具。

influxdb下載地址https://portal.influxdata.com/downloads

influxdb引擎淺析https://segmentfault.com/a/1190000005977485


下載安裝

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

配置

sudo vim /etc/influxdb/influxdb.conf

主要配置如下:


在配置文件中找到如下一項(xiàng)

reporting-disabled =true

如上所示,influxdb每隔24小時(shí),會(huì)收集你機(jī)器上的一些信息,然后上報(bào)到usage.influxdata.com,果斷關(guān)閉!

接下來(lái)為influxdb添加權(quán)限認(rèn)證,修改如下。

   [http]
       enabled = true

       bind-address = ":8086"

       auth-enabled = true 

       log-enabled = true

若需存儲(chǔ)collectd監(jiān)控系統(tǒng)的數(shù)據(jù)則需要開(kāi)啟collectd,配置如下:

   [[collectd]]
     enabled = true
     bind-address = ":25826" # the bind address
     database = "collectd" # Name of the database that will be written to

啟動(dòng)


執(zhí)行命令:

systemctl start influxdb

或者進(jìn)入/usr/bin/目錄下執(zhí)行influxd命令

又或者直接執(zhí)行/etc/init.d/influxdb start命令

設(shè)置開(kāi)機(jī)啟動(dòng)執(zhí)行systemctl enable influxdb命令


創(chuàng)建用戶


進(jìn)入/usr/bin目錄下執(zhí)行influx命令進(jìn)入influxdb數(shù)據(jù)庫(kù)

創(chuàng)建一個(gè)用戶名和密碼

CREATE USER admin with PASSWORD 'password' WITH ALL PRIVILEGES


在1.3以后,8083端口被棄用,admin模塊也失效,但是可以使用 Chronograf 專用的開(kāi)源web應(yīng)用,方便的可視化監(jiān)控?cái)?shù)據(jù),與grafana等可視化工具功能相同。

chronograf官方文檔https://docs.influxdata.com/chronograf/v1.3/guides/transition-web-admin-interface/

chronograf原理圖解https://www.influxdata.com/time-series-platform/chronograf/

Chronograf下載安裝:


wget https://dl.influxdata.com/chronograf/releases/chronograf_1.3.7.0_i386.deb

sudo dpkg -i chronograf_1.3.7.0_i386.deb

命令sudo systemctl start chronograf啟動(dòng)chronograf,啟動(dòng)之后就會(huì)默認(rèn)開(kāi)啟8888端口,在瀏覽器中輸入網(wǎng)址http://ip:8888/ 就可以連接到 chronograf 的web界面進(jìn)行下一步的操作。

查看端口命令:

sudo netstat -tupln

在1.3版本以前可以通過(guò)配置influxdb.conf配置文件下的admin模塊,開(kāi)啟8083端口,方便的通過(guò)web界面操作influxdb數(shù)據(jù)庫(kù),具體如下:

[admin]
  # Determines whether the admin service is enabled.
  enabled = true
  # The default bind address used by the admin service.
  bind-address = ":8083"

應(yīng)用場(chǎng)景


打造監(jiān)控系統(tǒng),相關(guān)內(nèi)容見(jiàn)https://linux.cn/article-5252-1.html

相關(guān)概念


InfluxDB 的數(shù)據(jù)存儲(chǔ)主要有三個(gè)目錄。默認(rèn)情況下是 meta, wal 以及 data 三個(gè)目錄。

data 目錄存放實(shí)際存儲(chǔ)的數(shù)據(jù)文件,以 .tsm 結(jié)尾。

meta 用于存儲(chǔ)數(shù)據(jù)庫(kù)的一些元數(shù)據(jù),meta 目錄下有一個(gè) meta.db 文件。

wal 目錄存放預(yù)寫日志文件,以 .wal 結(jié)尾。

數(shù)據(jù)保存策略(Retention Policies):
influxDB是沒(méi)有提供直接刪除數(shù)據(jù)記錄的方法,但是提供數(shù)據(jù)保存策略,主要用于指定數(shù)據(jù)保留時(shí)間,超過(guò)指定時(shí)間,就刪除這部分?jǐn)?shù)據(jù)。

連續(xù)查詢(Continuous Queries):
InfluxDB的連續(xù)查詢是在數(shù)據(jù)庫(kù)中自動(dòng)定時(shí)啟動(dòng)的一組語(yǔ)句,語(yǔ)句中必須包含 SELECT 關(guān)鍵詞和 GROUP BY time() 關(guān)鍵詞。
InfluxDB會(huì)將查詢結(jié)果放在指定的數(shù)據(jù)表中。
使用連續(xù)查詢是最優(yōu)的降低采樣率的方式,連續(xù)查詢和存儲(chǔ)策略搭配使用將會(huì)大大降低InfluxDB的系統(tǒng)占用量。而且使用連續(xù)查詢后,數(shù)據(jù)會(huì)存放到指定的數(shù)據(jù)表中,這樣就為以后統(tǒng)計(jì)不同精度的數(shù)據(jù)提供了方便。

influxDB 傳統(tǒng)數(shù)據(jù)庫(kù)中的概念
database 數(shù)據(jù)庫(kù)
measurement 數(shù)據(jù)庫(kù)中的表
points 表里面的一行數(shù)據(jù)

influxdb數(shù)據(jù)的構(gòu)成:Point由時(shí)間戳(time)、數(shù)據(jù)(field)、標(biāo)簽(tags)組成。

Series 相當(dāng)于是 InfluxDB 中一些數(shù)據(jù)的集合,在同一個(gè) database 中,retention policy、measurement、tag sets 完全相同的數(shù)據(jù)同屬于一個(gè) series,同一個(gè) series 的數(shù)據(jù)在物理上會(huì)按照時(shí)間順序排列存儲(chǔ)在一起。

Point屬性 傳統(tǒng)數(shù)據(jù)庫(kù)中的概念
time 每個(gè)數(shù)據(jù)記錄時(shí)間,是數(shù)據(jù)庫(kù)中的主索引(會(huì)自動(dòng)生成)
fields 各種記錄值(沒(méi)有索引的屬性)也就是記錄的值:溫度, 濕度
tags 各種有索引的屬性:地區(qū),海拔

簡(jiǎn)單命令


SHOW USERS --顯示用戶
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES --創(chuàng)建管理員權(quán)限的用戶
DROP USER "username" --刪除用戶
CREATE DATABASE mydb  --創(chuàng)建數(shù)據(jù)庫(kù)
SHOW DATEBASES  --展示所有數(shù)據(jù)庫(kù)
SHOW RETENTION POLICIES ON mydb  --查看保留策略
USE mydb  --使用數(shù)據(jù)庫(kù)
DROP DATABASE mydb --刪除數(shù)據(jù)庫(kù)
SHOW MEASUREMENTS  --查詢當(dāng)前數(shù)據(jù)庫(kù)中含有的表
SHOW CONTINUOUS QUERIES   --查看連續(xù)執(zhí)行命令
SHOW FIELD KEYS FROM mytable --查看當(dāng)前數(shù)據(jù)庫(kù)下的mytable表的字段
SHOW SERIES FROM mytable --查看key數(shù)據(jù)
SHOW TAG KEYS FROM mytable --查看key中tag key值
SELECT * FROM mytable --查詢當(dāng)前數(shù)據(jù)庫(kù)下mytable表的記錄
INSERT cpu,host=serverA,region=us_west value=0.64  --在cpu表中插入相關(guān)的數(shù)據(jù)
SELECT * FROM cpu ORDER BY DESC LIMIT 3 --查詢cpu表下最近的三條數(shù)據(jù)
DROP MEASUREMENT mytable  --刪除表
precision rfc3339 --把時(shí)間戳轉(zhuǎn)化為方便閱讀的時(shí)間格式

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容