新聞中心
前言
Grafana 有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤dashboard和圖形編輯器。此篇文章主要來記錄學(xué)習(xí) 如何使用mysql打造屬于我們的可視化監(jiān)控儀表盤。

目前成都創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、義縣網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
安裝grafna
采用如下命令直接安裝grafna。或是下載.tar.gz包自行安裝。
- sudo apt-get install -y apt-transport-https
- sudo apt-get install -y software-properties-common wget
- wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
- sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
- sudo apt-get update
- sudo apt-get install grafana
在一個Dashboard中一個最基本的可視化單元為一個Panel(面板)。
每一個Panel可以配置自己查詢的數(shù)據(jù)源以及數(shù)據(jù)查詢方式。當(dāng)然這里我們使用Mysql作為數(shù)據(jù)源,其查詢方式就是Sql語句。
擴展一下思路:由于每個Panel是完全獨立的,因此在一個Dashboard中,往往可能會包含來自多個Data Source的數(shù)據(jù)。也就是說A panel你可以從mysql中查詢數(shù)據(jù),B panel你可以從es中查詢,很靈活的自由組合。
grafna啟動相關(guān)命令
- 查看grafna狀態(tài)
- sudo systemctl status grafana-server
- 重啟grafna
- service grafana-server restart
配置grafna等操作,可以參看官方文檔:
https://grafana.com/docs/grafana/latest/installation/configuration/
運行一個官網(wǎng)的案例
Grafana還專門為Dashboard提供分享服務(wù),你也可以把自己做得漂亮的界面上傳上去供大家參考交流,傳送門是:
https://grafana.com/dashboards
在這里,我使用的是Id為7991的監(jiān)控面板。
添加mysql數(shù)據(jù)源
首先,從左側(cè)的菜單欄配置項中選中數(shù)據(jù)源。
grafna支持的數(shù)據(jù)源比較多,這里我們手動搜索一下mysql。
選中之后,填寫完具體的數(shù)據(jù)庫地址和密碼后,保存即可。
導(dǎo)入面板
解決報錯
導(dǎo)入面板后后提示Templating init failed Error 1146: Table 'my2.status' doesn't exist錯誤,這是因為我們還有一個工作沒做完,監(jiān)控mysql時需要在mysql server運行的機器上安裝my2.status表,根據(jù)官網(wǎng)面板的說明,找到github倉庫地址:
https://github.com/meob/my2Collector
在數(shù)據(jù)庫中執(zhí)行my2.sql 就能成果導(dǎo)入了,效果如下:
從說明我們可以看到, My2Collector (my2)是一個簡單的、自我包含的MySQL統(tǒng)計信息收集器,my2每10分鐘自動執(zhí)行一次存儲程序來收集Mysql的一些性能數(shù)據(jù)。
版本支持
my2可以連接到任何版本的MySQL,MariaDB,Percona或其他fork,但是...對于舊的MySQL,發(fā)布的許多統(tǒng)計信息均不可用。
my2使用的計劃作業(yè)自MySQL 5.1(2008)起可用。
PROCESSLIST表從5.1.7開始可用。
而GLOBAL_STATUS從5.1.12開始可用。
PERFORMANCE_SCHEMA在5.5版本中引入,在5.6版本中得到了極大的增強。
不同的MySQL版本之間有很多細微的差別:My2意識到并做了兼容,嘗試收集所有可用信息,對于MySQL 8.0,提供了一個不同的腳本,my2在啟用了性能模式的MySQL 5.7,MySQL 8.0和MariaDB 10.x中發(fā)揮了最大作用。
實戰(zhàn),基于Mysql業(yè)務(wù)表來創(chuàng)建監(jiān)控
最簡單的列表展示
在 面板中選擇table類型的 panel。
編寫查詢的sql語句,可以使用具體的別名。
多個折線圖
特別注意時間序列:
返回列名中需要有time或time_sec的列,作為unix時間戳或任何sql原生日期。
特別注意,這里的時間轉(zhuǎn)換函數(shù):用法
- - $__time(column) -> UNIX_TIMESTAMP(column) as time_sec
- - $__timeEpoch(column) -> UNIX_TIMESTAMP(column) as time_sec
- - $__timeFilter(column) -> column BETWEEN FROM_UNIXTIME(1492750877) AND FROM_UNIXTIME(1492750877)
- - $__unixEpochFilter(column) -> time_unix_epoch > 1492750877 AND time_unix_epoch < 1492750877
- - $__unixEpochNanoFilter(column) -> column >= 1494410783152415214 AND column <= 1494497183142514872
- - $__timeGroup(column,'5m'[, fillvalue]) -> cast(cast(UNIX_TIMESTAMP(column)/(300) as signed)*300 as signed)
- by setting fillvalue grafana will fill in missing values according to the interval
- fillvalue can be either a literal value, NULL or previous; previous will fill in the previous seen value or NULL if none has been seen yet
- - $__timeGroupAlias(column,'5m') -> cast(cast(UNIX_TIMESTAMP(column)/(300) as signed)*300 as signed) AS "time"
- - $__unixEpochGroup(column,'5m') -> column DIV 300 * 300
- - $__unixEpochGroupAlias(column,'5m') -> column DIV 300 * 300 AS "time"
由上面的規(guī)則可知,如果數(shù)據(jù)里面的數(shù)據(jù)類型是bigint。那么時間篩選就需要使用:
- $__unixEpochFilter(data_time/1000)
柱狀圖
只需要在折線圖的配置基礎(chǔ)上,將model改為Bars即可展示柱狀圖。
Graph里面的選項有:General(常規(guī)選擇)、Metrics(指標(biāo))、Axes(坐標(biāo)軸)、Legend(圖例)、 Display(顯示樣式)、Alert(告警)、Time range(時間范圍)
Grafana是一款采用 go 語言編寫的開源應(yīng)用,主要用于大規(guī)模指標(biāo)數(shù)據(jù)的可視化展現(xiàn),是網(wǎng)絡(luò)架構(gòu)和應(yīng)用分析中最流行的時序數(shù)據(jù)展示工具,目前已經(jīng)支持絕大部分常用的時序數(shù)據(jù)庫。
希望這篇文章能給你帶來幫助。
本文題目:后端程序員也可以用Grafana做出漂亮可視化界面!
文章網(wǎng)址:http://www.5511xx.com/article/dpgohdo.html


咨詢
建站咨詢
