influxdb
簡(jiǎn)介
Influxdb是一個(gè)開(kāi)源的分布式時(shí)序、時(shí)間和指標(biāo)數(shù)據(jù)庫(kù),使用go語(yǔ)言編寫,無(wú)需外部依賴。
特性:
- 時(shí)序性(Time Series):與時(shí)間相關(guān)的函數(shù)的靈活使用(諸如最大、最小、求和等);
- 度量(Metrics):對(duì)實(shí)時(shí)大量數(shù)據(jù)進(jìn)行計(jì)算;
- 事件(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