場(chǎng)景
文章開(kāi)頭,先做個(gè)小調(diào)查:平常工作中遇到需要追蹤或者分析公司日常業(yè)務(wù)數(shù)據(jù)的時(shí)候【比如需要分析系統(tǒng)每日用戶增長(zhǎng)情況】,你們一般是使用怎么樣的分析手段呢?大家可以先想想自己是怎么做的,這樣的做法是否繁瑣,有沒(méi)有更好的方案。
在沒(méi)遇到 Grafana 之前,遇到產(chǎn)品需要這個(gè)數(shù)據(jù)的時(shí)候,由于公司人力有限,沒(méi)有開(kāi)發(fā)人員開(kāi)發(fā)數(shù)據(jù)平臺(tái),所以一般有幾種處理方案:
- 第一種方案,如果本身 APP 端有接入一些第三方數(shù)據(jù)統(tǒng)計(jì)平臺(tái)【友盟、Bugly】,則可以讓產(chǎn)品直接在這些平臺(tái)看數(shù)據(jù),
缺點(diǎn)是:這種平臺(tái)的數(shù)據(jù)一般是指下載 APP 的,并非是真實(shí)的平臺(tái)注冊(cè)數(shù); - 第二種方案,平臺(tái)的精確的注冊(cè)數(shù)據(jù):每次寫一下 Sql 語(yǔ)句按天分組直接從數(shù)據(jù)庫(kù)導(dǎo)出產(chǎn)品需要時(shí)間內(nèi)的用戶注冊(cè)情況,然后導(dǎo)出一個(gè) Excel 表格給到產(chǎn)品,產(chǎn)品在做成可視化的折線圖之類的來(lái)分析波動(dòng)情況;
- 第三種方案,可能相對(duì)少一些重復(fù)工作,用 Python 腳本程序自動(dòng)導(dǎo)出可視化結(jié)果圖;
Grafana 登場(chǎng)
木有錯(cuò),今天要介紹的主角是:Grafana,它是什么呢?Grafana 是一個(gè)通用的可視化 Go 編寫的開(kāi)源工具,通用的意思也就是說(shuō)你可以添加各種數(shù)據(jù)源【不過(guò)得是目前支持的數(shù)據(jù)源,具體支持哪些數(shù)據(jù)源,后面會(huì)講到】,安裝部署也是非常非常的簡(jiǎn)單,基本是一條命令即可部署,以 mac 系統(tǒng)為例:
brew update
brew install grafana
brew services start grafana
是的,就是這么簡(jiǎn)單,經(jīng)過(guò)三條命令,我們本地的系統(tǒng)已經(jīng)部署好了,這時(shí)訪問(wèn):http://127.0.0.1:3000即可訪問(wèn)到部署好的 grafana,默認(rèn)賬號(hào)密碼是:admin/admin,進(jìn)去之后我們可以像堆積木一樣一步步增加我們業(yè)務(wù)的數(shù)據(jù)看板,支持各種形式的展示方式:表格、曲線、餅狀圖等。
我們先來(lái)一個(gè)圖,看一下官方的 LiveDemo 數(shù)據(jù)圖,一睹驚艷的展示方式【哈,驚不驚艷的不重要,重要的是實(shí)用】:

第一步:安裝 Grafana
由于我的環(huán)境是 mac,所以這里只列出 mac 上通過(guò) brew 的方式安裝詳情(其他系統(tǒng)安裝可以參考官方給出的詳細(xì)操作方式
):
~ ? brew install grafana
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/grafana-6.3.3.mojave.bottle.tar.gz
Already downloaded: /Users/zhangdeyi/Library/Caches/Homebrew/downloads/2087dc91f087ca0d1314958797e3ef2696c575f081afb810393f74648d47942b--grafana-6.3.3.mojave.bottle.tar.gz
==> Pouring grafana-6.3.3.mojave.bottle.tar.gz
Warning: grafana dependency icu4c was built with a different C++ standard
library (libc++ from clang). This may cause problems at runtime.
==> Caveats
To have launchd start grafana now and restart at login:
brew services start grafana
Or, if you don't want/need a background service you can just run:
grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /usr/local/share/grafana --packaging=brew cfg:default.paths.logs=/usr/local/var/log/grafana cfg:default.paths.data=/usr/local/var/lib/grafana cfg:default.paths.plugins=/usr/local/var/lib/grafana/plugins
==> Summary
?? /usr/local/Cellar/grafana/6.3.3: 3,635 files, 171.8MB
第二步:添加數(shù)據(jù)源
安裝完之后,可以根據(jù)自己的實(shí)際情況,先添加自己業(yè)務(wù)的數(shù)據(jù)源,一般常用的數(shù)據(jù)源是 MySQL:

初次安裝只包含了這些數(shù)據(jù)源類型:

當(dāng)然也可以安裝一些其他數(shù)據(jù)源的
plugins 來(lái)支持更多的:數(shù)據(jù)源
第三步: 新增我們的業(yè)務(wù) Dashboard
有了數(shù)據(jù)源之后,就可以增加業(yè)務(wù) Dashboard,入口:主頁(yè) --> ?號(hào) --> Create Dashboard,比如我把 Dashboard 命名成 MyCoreData,一個(gè) Dashboard 可以由不同展示類型的 Panel 組成:

平常我用得比較多的是
Graph,這個(gè)展示形式比較方便看出業(yè)務(wù)數(shù)據(jù)的波動(dòng)情況:
點(diǎn)擊操作菜單的 Edit 即可進(jìn)入面板的編輯模式,這個(gè)模式可以對(duì)面板重命名,編寫業(yè)務(wù)SQL,展示細(xì)節(jié)調(diào)整,編輯面板如下所示:

- General tab 可以設(shè)置面板的標(biāo)題信息、表述信息等;
- Metrics tab 可以選擇數(shù)據(jù)源,編寫SQL 語(yǔ)句:有兩種模式,一種是手動(dòng)選操作,另外一種是直接編寫 SQL 模式【推薦用這種模式】,點(diǎn)擊
Show Help可以查看提供的內(nèi)置函數(shù):
內(nèi)置的函數(shù)
編寫完 SQL 之后,展示形式是這樣的(時(shí)間選擇的是這個(gè)月的):
Graph 展示形式
這種展示形式已經(jīng)大致能看出趨勢(shì),是否可以有更好的展示形式呢,答案是有的,點(diǎn)擊Legendtab 可以設(shè)置展示一些更加詳細(xì)的形式,比如用table的形式,展示出total、avg,current這些值,最終效果如下所示:
更加形象的展示
當(dāng)然還有其他更細(xì)節(jié)的設(shè)置,可以自行探索,其他的面板展示形式也可以自行探索;
第五步:分配賬號(hào),并管理好不同賬號(hào)的查看權(quán)限
很棒!經(jīng)過(guò)前面一步的:增加業(yè)務(wù) Dashboard,接下來(lái)我們就可以分配賬號(hào)給產(chǎn)品和Boss們,并根據(jù)不同的角色分配不同的 Dashboard 查看權(quán)限。
使用 admin 賬號(hào)登錄,可以分配不同的賬號(hào)權(quán)限,入口:左邊的設(shè)置按鈕 --> Server Admin --> Users --> Add new user,

具體 Dashboard 的權(quán)限設(shè)置入口:以管理員賬號(hào)訪問(wèn)某個(gè) Dashboard --> 右上角的設(shè)置按鈕 --> Permissions 按鈕 --> Add Permission 即可管理這個(gè) Dashboard 的訪問(wèn)權(quán)限:

最后想說(shuō)的
好啦!當(dāng)我們搭建好這樣一個(gè)平臺(tái)之后,我們不再需要重復(fù)之前的繁瑣的導(dǎo)數(shù)據(jù)工作,而且產(chǎn)品和 Boss 也可以開(kāi)心愉快的實(shí)時(shí)查詢公司的各項(xiàng)業(yè)務(wù)數(shù)據(jù),我們只需要專注在上面添磚加瓦:增加各個(gè)業(yè)務(wù)數(shù)據(jù)的細(xì)分 Dashboard。
今天的安利 Grafana 的文章先寫到這里,寫得相對(duì)比較糙,不少細(xì)節(jié)沒(méi)怎么介紹,不過(guò)今天的主要目的也是為了給大家演示一下如何用這個(gè)平臺(tái)來(lái)提升自己的工作效率,方便同事之間的數(shù)據(jù)溝通工作。
最后的最后,如果你所在的團(tuán)隊(duì)或者公司還沒(méi)有一個(gè)比較完備的數(shù)據(jù)平臺(tái),真心推薦你們可以搭建探索一下(跟進(jìn)業(yè)務(wù)數(shù)據(jù),或者監(jiān)控服務(wù)器運(yùn)行情況都是可以的),如果在探索過(guò)程中有遇到什么問(wèn)題,可以在文章的后面留言,我這邊會(huì)盡量為大家解答。
好啦,祝大家周末愉快,準(zhǔn)備出門吃小龍蝦去啦~~~~~


