一分鐘 Get 時序數據庫 InfluxDB 的技能

1

通過上期分享《實踐指路明燈,源碼剖析flink-metrics》,對當下較火的流式處理框架 flink 的指標監控體系有了全局的認識,並結合 flink-metrics-xxxx 模塊進行深入分析,對 flink 是如何集成監控輪子瞭如指掌。


不過,源碼中的 flink-metrics-influxdb 模塊,你是否留意到?按照設計規範,不用多想,那肯定是 flink 指標監控對 influxdb 的集成。


那麼,influxdb ?influxdb 是啥?influxdb 你用過嗎?


今天稍微花一分鐘,帶你 Get 這門技能,放心不會傷腦。


圖看不清放大了去看

2

去說 InfluxDB 之前,先聊聊,什麼是時間序列數據(時序數據)?


時間序列數據就是在不同時間上收集到的數據,主要有兩個關鍵指標:監測時間和監測數值。生活中常見的時間序列數據,包括股票價格、網站的 PV/UV、服務器系統監控數據(比如 CPU 和內存佔用率)等等。


那時間序列數據應該存到哪兒?時間序列數據庫(TSDB)是啥?

A time series database (TSDB) is a software system that is optimized for storing and serving time series through associated pairs of time(s) and value(s)


https://en.wikipedia.org/wiki/Time_series_database


簡單去理解,時間序列數據可以存儲到 TSDB 中,因為 TSDB 是用於存儲和分析時間序列數據的數據庫。


如圖所示,在 DB-ENGINES 給出的最新的時間序列數據庫的排名中,InfluxDB 高居第一位,而臉熟的 Prometheus、Graphite 等也位居其中,下面就以 InfluxDB 作為突破口進行體驗。


3


3.1 磨刀霍霍。

首先,選擇您最中意的版本進行下載。

<code>https://portal.influxdata.com/downloads//<code>

本次以 v1.7.10 的 Mac 系統版本進行安裝。

<code>https://dl.influxdata.com/influxdb/releases/influxdb-1.7.10_darwin_amd64.tar.gz/<code>

下載解壓後的目錄全局概覽,不同安裝方式會不同,但是著重關注 usr/bin/ 目錄,後續操作的命令全在這裡啦。



然後,按照安裝手冊進行配置,若是為了體驗,默認配置也夠用啦。

<code>https://docs.influxdata.com/influxdb/v1.7/introduction/installation//<code>


3.2 披荊斬棘。

下載安裝已經完成,執行 ./influxd 命令啟動 InfluxDB。

一頓命令操作猛如虎,熟練工種。



熟練工種,命令多練就是啦,感受一下與傳統數據庫有啥不同?



另外,InfluxDB 也提供了 HTTP API 方式操作。



簡單整理了一下,/ping 可以獲取 InfluxDB 實例信息以及健康狀況;/write 提供插入數據的功能;/query 提供查詢數據的功能。


InfluxDB 提供 API 要比這多,用到之時再深入也未嘗不可。


3.3 撥雲見日


InfluxDB 與傳統數據庫有啥不同呢?

如圖示意,InfluxDB 中的 measurement 類似於傳統數據庫中的表,包含了列 time、tags 和 fields。

tag key/value 類似於傳統數據庫裡索引的列;

field key/value 類似於傳統數據庫裡沒有索引的列;

time 存著時間戳,類似於傳統數據庫的主鍵。


另外,有沒有什麼輪子,可以更好的展示 InfluxDB 中的數據呢?


InfluxDB 位居 DB-ENGINES 排名首榜,對應的展示數據的輪子還是很多的,例如官方的 Chronograf,以及提及多次的 Grafana 等等。


閒暇之餘,可以參考官方文檔去深入。

<code>https://docs.influxdata.com/influxdb/v1.7/introduction/getting-started//<code>


4


InfluxDB 本次就說到這裡,希望你們能有所獲。


下期,我們將結合源碼,去看看別人都是怎麼用 InfluxDB 的?並嘗試把 InfluxDB、Grafana 這些輪子組裝到一起,看看組裝之後的車子能否跑起來,敬請期待。