數據分析平臺的目標
產品上線有必定流量後都會有數據分析的需求,分析運營狀態、用戶行爲、應用運行狀況等等,爲產品改進提供數據支撐。可是數據分析可大可小:既可作到只提供概覽,也可作到對每條數據的分析;既可只分析業務指標像用戶增加狀況等,也可能要分析用戶行爲或者系統參數等。所以,搭建一個數據分析平臺以前必定要了解本身的需求才知道要作到什麼程度。
筆者在本文搭建的數據分析平臺,主要想達到5個目標:
- 瞭解產品狀態:包含業務指標、應用指標和系統指標三大部分。業務指標好比用戶增加狀況,新增訂單狀況;也有應用指標,好比用戶的搜索次數,登錄次數,應用運行狀態等;還會有系統指標,好比nginx,mysql,redis運行狀況,系統使用率等等;(見效果圖1)
- 異常行爲的詳細分析:當從第1步中發現有異常指標時,可能須要抽取出某一天,某個用戶,某個IP產生的全部記錄對它們分析;(見效果圖2)
- 集中對多個產品的分析:咱們本身的產品就超過有近10個,要了解產品狀態須要登錄每一個產品後臺顯然是太費勁了,因此須要集中管理;
- 靈活擴展:當須要對多個產品作數據分析時,不可能去期望每一個產品的數據指標都同樣,而是數據分析平臺要可以針對不一樣產品快速建立指標,好比免費的產品就沒有訂單相關的指標,而收費產品就有這些指標。
- 權限管理:業務指標和行爲指標一般是給運營和產品人員看的,而運營人員和產品人員要看的產品可能不是同一個,應該要有權限管理才能確保不一樣角色只看到屬於他們的內容。
解決方案
最初咱們想在各個產品集成數據分析功能,而後作一個集中式的數據分析平臺管理各個項目,實際分析後本身開發工做量過大,並不現實。轉而思考使用開源產品或者第三方平臺。可是單個數據分析平臺一般難以徹底知足咱們的全部目標,所以在思路上轉爲考慮將多個數據分析平臺組合在一塊兒。
在測試了多個開源產品和平臺之後,最終引入Grafana+ELK做爲數據分析的平臺。爲方便討論,咱們將數據分析分紅三大場景:概覽、分析和監控。解決方案之因此須要多個產品組合在一塊兒,是由於不一樣的產品對於不一樣角色,不一樣場景的側重點不一樣,一款產品要同時覆蓋運營、產品、開發這些角色對數據分析的需求不太現實 ,所以經過組合的方式解決此問題。
(圖片來源:《騰訊好文!如何設計內容精確、體驗友好的Dashboard?(上篇)》)
解決方案分爲三個部分:
- 產品自身後臺:只支持業務指標的概覽,不實現分析和監控功能。該部分並無解決目標問題,可是這個觀念能夠防止投入過多資源到產品後臺的開發上。
- Grafana:業務指標、應用指標以及系統指標的概覽和監控,和比較弱的分析功能。該平臺解決目標1,3,4,5。
- ELK:對異常行爲作詳細分析。儘管ELK也能夠支持概覽和監控,可是隻適合開發人員,而Grafana已經能解決目標問題,因此ELK主要承擔分析的職責。該平臺解決目標2。
效果圖
1.Grafana快速呈現業務指標和用用戶行爲指標效果圖:
2.異常行爲分析效果圖:
擴展閱讀:Grafana、ELK、七牛雲日誌智能管理平臺、BDP的區別
在調研各個數據分析平臺時,測試比較多的Grafana、ELK、七牛雲、BDP這幾個平臺。前兩個是開源平臺,後兩個是第三方平臺。爲何最終採用Grafana+ELK的組合呢?而不是採用BDP代替Grafana,七牛雲代替ELK呢,這就須要對它們之間的區別作個比較。
在比較不一樣的數據分析平臺時,借用下圖,從監控源、數據彩信、數據存儲、數據分析、數據展示(預警本文不討論)去分析它們的區別。
(圖片來自《建設DevOps統一運維監控平臺,先從日誌監控提及》一文)
- Grafana:Grafana的數據存儲可來自MySQL,也能夠是ElasticSearch或者Prothemous等各類類型的數據源。對這些數據源的支持使得Grafana能夠直接覆蓋各類監控源,採集業務指標、應用指標和系統指標天然就不在話下。再加上它自己的鑑權系統完善,若是隻選擇一個可視化平臺,它會是首選。Grafana缺點在於數據分析上不夠強大,好比全日誌檢索等,當發現異常須要對數據深刻分析時,就不方便了,這時就須要ELK了。
- ELK:ELK是日誌分析系統的開源方案,它在上面的各個方面都很強大。可是它的定位既決定了它的優勢,也決定了它的不足。它在數據分析很是強大,適合對異常行爲作深刻分析;可是用它作業務指標的呈現就顯得太過複雜了,好比只是統計有多少用戶和對用戶作分類,在Grafana中直接讀取MySQL數據庫便可,在ELK中就須要繞很長的路。另外,它沒有鑑權系統。這些缺點實際上是ELK的目標人羣是開發者決定的,它正好補了單純用Grafana的短板。
- 七牛雲日誌智能管理平臺:七牛雲是ELK的替代品,一開始我是想直接使用不搭建ELK。可是在調研了3天,因爲2個緣由放棄了:1.反覆配置後沒有獲得指望的效果 2.想要接入Grafana,發現只能使用官方提供的服務,不能接入自行搭建的Grafana。若是使用中有較多問題,那我會傾向於使用開源方案,ELK碰到問題時能夠經過上網搜索自行解決;可是使用第三方平臺就只能依賴於官方支持了。可是對於缺乏開發資源的公司,採用第三方平臺會是更好選擇。
- BDP:BDP是第三方的數據分析平臺,分析它是想確認它是否可以代替Grafana,或者部分代替Grafana。因爲BDP主要解決業務層面的數據分析,因而這裏從業務指標和非業務指標兩方面去比較。
-
- 業務指標:BDP主要定位就是處理業務數據,主要目標人羣是非IT,以及對外呈現。因此它在處理純業務數據上功能上是強於Grafana的,好比多來源的數據合併、報表十分豐富、導出精美排版的PDF等等。若是要作對外宣傳的報表,或者將多個來源的業務數據並在一塊兒,我認爲它比Grafana更合適。可是在大部分狀況下,咱們主要仍是使用單個產品分析,或多產品的重疊比較。這個時候,對於開發者而言,BDP須要先導入表、對錶拼接(SQL語法弱致使的,好比SELECT *不支持,更不用說JSON_VALUE等新特性)、以及過濾項的拖拉並不如模板變量好用,因此在大部分的業務指標上,它並不如Grafana有效率。
- 非業務指標:好比ES中的nginx日誌、監控mysql運行數據、系統運行時的CPU等等,在監控源上BDP並不支持,Grafana則支持多種類型的時序數據庫。因此非業務指標的話,BDP並不適合與Grafana比較。
- 綜上,我把BDP當成對Grafana的補充,而不是替代關係。
參考