1. 程式人生 > 程式設計 >24H玩轉 Grafana 被工程師稱相當專業,如何做到?

24H玩轉 Grafana 被工程師稱相當專業,如何做到?

國慶假期發生了兩件小事,其一是我默默度過 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 語法如下,語法呈現就很清晰了:

image

以上三個部分無需按順序進行。自己對哪個模組更感興趣,就先開始哪個;過程中也可交叉輪換進行。接下來就是通過實現自己的資料需求,反覆重複鞏固並深入 以上 3 個部分,直至產生令自己滿意的產出。為此投入的時間開銷24~48H 足夠啦,完全不耽誤假期陪家人、睡懶覺、看電影。

image

3、對職場分工保持清醒

最後需要強調一下,我很清楚自己並不想要取代工程師完成資料後臺的開發。比如:

  1. 一些複雜需求,我自己寫sql,很難,學起來也慢。這些我會陸續收集羅列出來,走排期,請工程師幫忙,不會自己硬鑽進去。

  2. 即便最終我完成了非常多的圖表,但實際上我只考慮實現,不考慮效能(也暫無能力考慮),所以即便是我寫出來的功能,也需要工程師把關和優化。

即便如此,我直接接觸資料來源並動手用 grafana 實現,也有很顯著的好處:

  1. 我更清楚原始資料已採集了哪些,哪些指標是我可以定義和統計的,哪些是需要工程師進一步支援的。

  2. 一些相對簡單的、對業務有幫助的資料監控/統計,我能直接實現。無需整理描述需求-和工程師溝通-工程師理解後實現-我再驗收這樣複雜的過程。

  3. 作為需求的發起者,我那些不成熟的需求,自己動手過程中迭代起來也會非常效率。

當然這些想法是需要和工程師、上級溝通清楚的,這樣才不至於產生誤解吖。如果我的筆記對你有幫助,那就點贊或留言告訴我吧!