原文出自【聽雲技術博客】:http://blog.tingyun.com/web/article/detail/600前端
斷斷續續寫了將近一個月,聽雲初版數據庫管理平臺終於寫完了,期間來來回回的改了好屢次小毛病,如今已經部署到生產環境上去了。golang
在剛開始的時候,後端的數據庫集羣只有10多個節點組,平常的巡檢工做並不會花費太多的時間和精力。隨着業務的增加,在較短期內後端集羣擴展到數百節點時,這時的平常巡檢若是仍是人肉完成,講道理,最終可能就是不作巡檢或者是緣分巡檢,哪天想起來了搞一下。顯然這不是咱們的風格。那麼如何解放咱們花在巡檢上的時間和精力,咱們決定寫一個工具來幫咱們完成巡檢工做,咱們要作的就是登錄上這個系統,look and check。web
在這個版本中實現的功能並非不少,大都是針對目前工做中的痛點來開發的,架構也很簡單,分爲報表和數據收集兩個部分,數據收集程序主要從兩個地方收集數據,一個是線上的數據庫中收集一些指標數據,一個是調用雲廠商的api取DB的容量信息。sql
該系統的開發語言是golang,netop是咱們部門的簡稱,因此索性就叫NetopGO。前端頁面是改的jumpserver的頁面,數據搬運工真心寫不動前端。shell
Web開發框架使用的beego。講道理,jumpserver的前端模版真的是一款很優秀易上手的模版,beego就更不用說了,powerful、beautiful and amazing!直接上圖,標清有碼,嘿嘿嘿。數據庫
一、儀表盤後端
這裏主要是一些數據概覽,各類總量、截至到當前的本月數據量變化趨勢。每一個業務庫本月的數據容量變化狀況,還有前一天慢查詢數量排名top12。儀表盤上提供快速跳轉的連接,只須要點擊相關的數字便可。好比點擊DB總數,就會跳轉到DB列表的頁面。api
二、用戶權限瀏覽器
劃分三種權限:admin、dba和guest。若是當前用戶的權限不足,訪問受限頁面會提示沒有權限或頁面上的部分按鈕不可用。安全
三、主機管理
這裏主要是主機列表管理和業務組列表管理。主機列表依賴業務組列表。這部分對來賓和數據庫管理員是有權限控制的,好比這個guest用戶登陸上來以後查看主機列表只有readonly用戶的遠程登陸可用,其餘功能受限,點擊遠程登錄會彈出一個webshell,以下圖:
四、DB管理
DB管理是這個版本的重心,首先看DB列表
這裏有全部線上的實例,而且每一個實例都有圖表和慢sql的入口連接,點擊圖表,會跳轉到圖表的頁面:
圖表目前只有數據量(天天統計)、QPS&TPS(每10分鐘統計)和慢查詢個數(天天統計)的變化曲線。監控不是這個系統的重點,目前基本上全部的生產環境監控都是另一個平臺再支撐。我但願系統可以爲我展現全部實例的數據量變化趨勢、qps&tps狀況,固然最重要的是慢查詢的詳細狀況。若是在列表中點擊慢查詢,就會跳轉到慢查詢列表頁面,以下圖:
這個頁面中會對慢sql作簡單的彙總和統計,同時提供查看sql和具體執行計劃的功能,好比點擊查看執行計劃,就會向生產環境的數據庫作一個即時的執行計劃分析並返回結果,這樣抓到慢sql就不用打開黑窗口(xshell)登錄到後端數據庫上去看執行計劃,直接在前端頁面就能查看。以下
Schema列表,這個頁面一樣有比較大的信息量,包含了全部業務庫的列表,這個列表主要是給數據查詢窗口使用的,動態的增刪schema列表,就至關於動態的增刪數據源。同時展示了每一個業務庫當前的數據容量大小,很是直觀。
因爲咱們後端的數據庫使用了分區表,分區是由存儲過程自動維護的,因此咱們對每一個業務庫後端的分區增刪狀態在這裏作了展示,點擊分鐘按鈕就會跳轉到分區監控列表頁面,可以清晰的看到哪些節點的添加分區沒有成功,若是添加失敗,就會顯示紅色的Failed字樣。小時和天表也是同樣的。
日常的工做中會有不少數據查詢的場景,研發和測試的同事那麼多,若是全部的請求都對準dba一我的的話,也是一個頭疼的問題,因此在NetopGO中開了一個查詢的窗口,實現了權限劃分、查詢sql審計記錄和自動後端識別的功能。動態增刪數據源,Schema列表中添加一個數據源,在查詢窗口裏能夠當即顯示並進行查詢。若是後端容許的話,dba能夠作任何操做,好比 insert操做,以下
若是後端是代理的話,即使是dba角色也只能支持查詢,以下
若是是來賓賬號,全部的數據庫都只能是查詢權限,以下
若是查詢成功,會跳轉到結果頁面,若是列不少,超出了表格的寬度,下方是會有滾動條出現的。以下
目前,出於信息安全的考慮,並無支持數據導出功能,不過正在考慮給dba視角添加一個結果導出功能。
在數據查詢窗口中執行的sql,不管是否成功,都會被記錄到審計日誌裏面,查看審計日誌能夠訪問審計日誌頁面,以下:
列表中會展現每條sql的執行用戶、schema、狀態和具體執行的sql。其餘同事正在查詢的時候你就看這個列表,十分有快感。
五、升級記錄功能
升級記錄功能並無引入工做流,因此只是一個簡單的記錄,目前實現了應用升級記錄、數據庫升級記錄和故障記錄的功能,可是你們都但願不要手工錄入,最好是提流程系統本身記錄。這個從目前的環境來看,可能難以實現。
不過從我本身的體驗來講,這種記錄方式相比以前已經有很大改善。以數據庫升級記錄爲例,之前的升級記錄是放在一個nfs共享目錄下的一個excel表中,目錄比較深,跟sql文件的存檔目錄不在一個目錄下,每次記錄須要翻兩次n級的目錄,並且若是要找以前的一個升級sql,也不太好找,由於文件比較多,因此DB升級記錄功能是這樣的
在記錄升級記錄的時候直接把sql文件上傳到服務器端的目錄,而後列表中提供查看附件的入口,以下
點擊詳細內容,會跳轉到以下頁面
點擊附件,若是是在Chrome瀏覽器上,會直接在一個新的窗口中顯示出文本內容,若是是其餘瀏覽器,會直接下載這個文件。附件直接在瀏覽器上訪問真的很方便。Chrome下點擊附件
這個版本實現的功能基本上就這些了,接下來打算在查詢窗口的頁面中支持對後端中間代理下的集羣作DDL和DML的變動,中間件自己是沒有辦法支持這些的,因此咱們實現的思路就是在查詢窗口中選定schema以後,sql會被提交到代理後端全部的分片上去執行,並最終返回執行狀態,從而達到驗證的目的。目前咱們是使用的腳原本完成,有點low。這個版本已經作了至關多的準備工做,因此實現這個功能並不會很難。目前來看NetopGO綁定了太多咱們本身的業務場景,後續若是功能完善以後,會在通用性上下點功夫,作一個開源的版本出來。