國慶假期發生了兩件小事,其一是我默默度過 `35` 周歲生日,其二是玩了下` grafana` `併在節後第一天被工程師 M 稱贊:相當專業。為什麼學、如何做到、以及必要的提醒。 ...
國慶假期發生了兩件小事,其一是我默默度過 35
周歲生日,其二是玩了下grafana
`併在節後第一天被工程師 M 稱贊:相當專業。
1、我為什麼要玩 grafana
呢?
數月前我提交了一份數據後臺需求給工程師 M,他選用和部署了 grafana
這個第三方開源的工具,僅用兩三天就完成了這份需求。這效率相當快,令我對 M 和 grafana
印象深刻。但我仍不滿足,M提交的成品所有數據都圖形化的而我更想要表格樣式的數據。為了進一步整合其它數據進行統計分析,我還需手動導出數據,並寫了複雜的 python
腳本用 pandas
做統計分析,每周至少運行一次。我常常冒出新的數據需求,它們並不大,但走一遍需求評審、排期開發驗收的流程,似乎還挺麻煩的。
這些都還只算鋪墊,真正的導火索是國慶假期前的 sprint
總結會上提及我們幾個產品的數據將整合到 grafana
統一實現。 CTO 曾對我提及如果我懂些 sql 語句,可以自己寫。——哈?我懂點 sql 語句的吖,這不剛整理了一份筆記《【總結】python如何與mysql實現交互及常用sql語句》嘛。我處於 “sql 不過如此,放馬過來啊”的大無畏狀態-_-||
國慶假期來了,那就玩玩兒看唄。
2、短時間如何上手 grafana
?
M之前為了開發我的需求,已經完成了 grafana
的部署,並設置好了數據源
。這次他專門創建了一個練慣用的 dashboard
並開通編輯許可權給我。特別說明,我的編輯許可權僅有數據源的查詢權,沒有增刪改的許可權,這對數據源是安全的。另外,M 已有的實現也讓初次上手的我可以照葫蘆畫瓢。這些是我比完全零準備的 grafana 新手占便宜的地方。
我並不想把 M 已經開發的需求重新實現一遍,我想要實現自己的數據需求。——想要什麼數據,以什麼樣式呈現,我腦子裡的需求俯拾即是。
學習過程具體分為三個部分:
- A:熟悉和瞭解
grafana
在 dashboard 上如何添加、編輯圖表等模塊,就是瞭解這個工具如何使用。 - B:熟悉和瞭解 數據源(我們產品的資料庫),有哪些表,有哪些欄位之類。
- C:實現數據需求的 sql 語句該如何寫。
A 部分,搜了兩篇 grafana 如何使用
之類的文章,大概瀏覽下即可。總是照著別人整理的步驟圖按部就班,學習體驗不好。大部分時候,我都是直接鼓搗。這種開源的可視化的工具,自己嘗試一下就能快速熟悉起來。
B 部分,當個伸手黨,讓工程師幫忙把所有表格 describe 導出也 OK 的;M給我的是一份表格的類定義文件。通過 A 部分的探索,我很快發現,在 dashboard 上創建一個模塊,如果選擇折線圖類型,sql 語句編輯區可以任人挑選表格名稱,這樣有哪些數據表格就清楚了;如果選擇表格類型,並使用select * from table_name limit 50
,就能呈現該表的部分數據,這樣該表格有哪些欄位也就清楚了。
C 部分,我把 M 之前實現的 sql
語句單獨拷貝到 jupyter notebook
里,自己拆解為更基礎的知識點,然後一點點熟悉瞭解。一個小技巧是,對於新手來說 sql 語句的易讀相當重要,能直接降低複雜度。所以我採用 markdown
語法如下,語法呈現就很清晰了:
以上三個部分無需按順序進行。自己對哪個模塊更感興趣,就先開始哪個;過程中也可交叉輪換進行。接下來就是通過實現自己的數據需求,反覆重覆鞏固並深入 以上 3 個部分,直至產生令自己滿意的產出。為此投入的時間開銷24~48H
足夠啦,完全不耽誤假期陪家人、睡懶覺、看電影。
3、對職場分工保持清醒
最後需要強調一下,我很清楚自己並不想要取代工程師完成數據後臺的開發。比如:
1、一些複雜需求,我自己寫sql
,很難,學起來也慢。這些我會陸續收集羅列出來,走排期,請工程師幫忙,不會自己硬鑽進去。
2、即便最終我完成了非常多的圖表,但實際上我只考慮實現,不考慮性能(也暫無能力考慮),所以即便是我寫出來的功能,也需要工程師把關和優化。
即便如此,我直接接觸數據源並動手用 grafana
實現,也有很顯著的好處:
1、我更清楚原始數據已採集了哪些,哪些指標是我可以定義和統計的,哪些是需要工程師進一步支持的。
2、一些相對簡單的、對業務有幫助的數據監控/統計,我能直接實現。無需 整理描述需求-和工程師溝通-工程師理解後實現-我再驗收這樣複雜的過程。
3、作為需求的發起者,我那些不成熟的需求,自己動手過程中迭代起來也會非常效率。
當然這些想法是需要和工程師、上級溝通清楚的,這樣才不至於產生誤解吖。如果我的筆記對你有幫助,那就點贊或留言告訴我吧!