influxDB+Grafana初體驗

菩提樹下的煮茶小童子發表於2018-02-20

之前在公司的時候,檢視某些介面的負載以及訪問頻率等狀況會用到grafana這個很好的後臺UI控制元件。操作起來很是方便,於是趁著假期,也來簡單學習一下,過程中遇到了挺多的坑,順便填一下,方便後來人。

簡要概述

influxdb是一個目前來說比較流行的時間序列資料庫。通俗來講,就是以時間線貫連相通的資料庫。 說起來可能有點不太容易理解,我個人覺得對比學習可能是一個更好的學習方法。下面按我自己的理解來描述下,說得不恰當的地方,歡迎批評指正。

  • 平常我們使用的關係型資料庫,規格嚴謹,格式統一。可以想象成是:301倉庫(資料庫名稱)218房間(表名),中的一排排貨架(表記錄),這就是關係型資料庫的典型的格式了。而相對

  • 對於時間序列資料庫,也還算比較類似。其還算比較完善的類SQL語法,給它加分不少,開發者只需要記憶少量的關鍵名詞,就可以很好的使用了。時間序列資料庫的形式可以這麼想象: 301管線(資料庫名稱) 中包裹了很多條電路線(measurements,可以認為是關係型資料庫的表名), 由一個個**點(Points)**組成。

說起來是點,其實有點寬泛。剖開來看,點的組成有下面這些內容:

  • 時間: 由influxDB自動生成。記錄著每條記錄(Points)的生成時間。
  • field: 欄位,各種記錄的值。key-value的value為數值型。
  • tags: 需要被新增索引的key-value。一般經常被查詢到的欄位要設定為tag。

還有一個特殊的名詞series,所有在influxDB資料庫中的資料,都需要通過圖表來表示,series表示這個表裡面的所有的資料可以在圖示上畫成幾條線(線條的個數規則是由tags排列組合計算出來)。

環境

因為不想在自己的windows上再裝那麼多軟體了,於是就安裝在了Ubuntu伺服器上。然後通過influxDB和Grafana自帶的web介面,使用HTTP連結進行操作就可以了。

influxDB的安裝

在Ubutu上,包管理器的存在讓安裝influxDB變得很方便了。

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.0.2_amd64.deb
sudo dpkg -i influxdb_1.0.2_amd64.deb
複製程式碼

啟動influxDB服務。

service influxdb start
複製程式碼

管理頁面

influxDB服務啟動後,有兩個比較特殊的埠需要了解一下,具體如下:

  • 8083: TCP port 8083 is used for InfluxDB’s Admin panel
  • 8086: TCP port 8086 is used for client-server communication over InfluxDB’s HTTP API

英文解釋的已經很清晰了,如果還是嫌棄不理解,白話來講就是,8083是管理員操作influxDB的服務監聽埠,8086是通過HTTP(也就是web頁面)操作influxDB的服務監聽埠。

簡單操作

網上有太多的例子,我也沒必要在這重複造輪子,碼字。因此附上一個連結,就不再過多描述了。

https://docs.influxdata.com/influxdb/v0.10/introduction/getting_started/

通過命令列

看完下面的截圖,順便聯想下mysql這種關係型資料庫的常見操作。基本上就沒什麼問題了

通過命令列操作influxdb

通過web頁面

如果是在本地開啟了influxdb服務,在有UI的情況下,可以通過輸入http://localhost:8086 來訪問web頁面來管理服務。因為我是在伺服器上開的服務,所以本地通過瀏覽器輸入對應的IP就行。

通過web後臺操作influxdb資料庫

其他的CRUD什麼的,就不說了。有興趣的,直接看官方文件就好。https://docs.influxdata.com/influxdb/v0.10/guides/

安裝grafana

跟influxDB一樣,我還是在我的伺服器上安裝,然後在本地遠端訪問。在Ubuntu上的安裝方式如下:

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.6.3_amd64.deb 
sudo dpkg -i grafana_4.6.3_amd64.deb 
複製程式碼

因為是GO語言編寫,沒有其他的相關依賴,所以其他OS的安裝方式也都很簡單,詳細可以參考下方文件。https://grafana.com/grafana/download

啟動grafana服務。

service grafana-server start
複製程式碼

值得一提的是,執行這個命令最好不要在/root目錄下,因為日誌的需要,這些目錄可能會有限制,因此需要注意一下。

簡單應用grafana

服務啟動後,就可以訪問如下連結進行管理了。http://localhost:3000 預設的使用者名稱密碼是admin,admin。因為我只在伺服器上啟動了服務,所以我在本地需要使用ip的方式進行訪問。

新增DataSource

除了資料庫型別以及HTTP代理之外,其他的按照自己的實際情況進行填寫就好。填寫完畢可以通過Save&Test進行測試。

新增DataSource

新增DashBoard

資料來源新增完畢後,下一步就是讓資料以合適的形式顯示出來。因此就需要DashBoard。 官網(http://docs.grafana.org/guides/getting_started/)上也有詳細的教程,但是有些步驟用文字還是稍顯蒼白。新增完合適的展示型別(Graph,Table等等)後,有可能你找不到對應的編輯資料來源來展示資料。這裡填下坑,雙擊圖表的title,然後選擇edit即可。如下圖:

編輯圖表,展示資料

需要注意的是,有可能select的資料,沒能按照我們所預期的樣子來進行展示,這個時候要考慮下,資料來源內的資料是不是適合你選擇的DashBoard型別。其他也就沒什麼問題了。

總結

本來打算,使用InfluxDB寫一個TODO list,後來發現這個場景並不適合。然後就簡單的學習了下相關的內容,很淺。不過也算是填補一下知識的一塊短板吧。多瞭解點,總歸是沒錯的。

淺知拙見,寫的不恰當的地方,還望批評指正,多多指教下。