歡迎體驗我發(fā)布的漢化Grafana7.2 Docker鏡像 DockerHub
可視化圖表
Grafana是一個通用的可視化工具毕箍。通過Grafana可以管理用戶權限励幼,數據分析熙卡,查看掏湾,導出,設置告警等飞盆。
儀表盤Dashboard
通過數據源定義好可視化的數據來源之后娄琉,對于用戶而言最重要的事情就是實現數據的可視化。
面板 Panel
Panel是Grafana中最基本的可視化單元吓歇。每一種類型的面板都提供了相應的查詢編輯器(Query Editor)车胡,讓用戶可以從不同的數據源(如Prometheus)中查詢出相應的監(jiān)控數據,并且以可視化的方式展現照瘾。
Grafana中所有的面板均以插件的形式進行使用匈棘,當前內置了5種類型的面板,分別是:Graph析命,Singlestat主卫,Heatmap, Dashlist,Table以及Text鹃愤。
翻譯工作
上面簡單介紹了一下工具簇搅,主要是讓我們方便查看監(jiān)控的數據。這里我還是沒有更深入的去研究公式等圖形的設置软吐。這里先主要寫一下翻譯方面的工作瘩将。
公司也考慮展示內容為中文化比較好,這里Grafana沒有提供語言包的方式來處理多語言問題凹耙。在我查看代碼過程中姿现,發(fā)現工具后臺是在GO里面寫死的很多導航,返回值等數據肖抱。前臺是在頁面上直接寫的很多內容备典。所以我個人認為無法使用語言包來直接處理多語言問題。那就只好自己來搞定了意述。
翻譯的內容
更具代碼查看提佣,主要分為兩大部分:
- 后端: go文件,主要內容在/pkg 目錄下荤崇。
- 前端: /public 目錄下拌屏, 1. 系統頁面 2. 插件頁面 专筷。
準備工作
首先git clone Grafana庫
git clone https://github.com/chenweil/grafana.git
官方地址https://github.com/grafana/grafana
之后我們根據自己翻譯的版本來檢出自己的項目酝惧。
我的分之是 grafana-chs
我們在自己創(chuàng)建的分支就可以來處理我們的工作了瑰抵。
前端調試環(huán)境
需要 npm署惯,nodejs,yarn
終端執(zhí)行命令yarn install --pure-lockfile
初始化. 如果沒有報錯的情況,證明ok.
出現錯誤請先處理問題.
開啟調試環(huán)境時候箕慧,是開啟前端的熱加載來協助我們調試亦渗。
這里安裝完三個環(huán)境可能在執(zhí)行 yarn start 時報錯又兵,這里如果你是在windows上带兜,需要再安裝一下sass.(根據報錯來看問題枫笛,我這里遇到缺少sass問題)
當我們yarn start 執(zhí)行后,等待一段時間刚照,build at 時間證明準備工作已完成刑巧,下面就需要我們在調試模式下測試了。
還需要一個調試的Grafana服務程序无畔,這里是windows環(huán)境啊楚,所以直接從官方下載了zip包,執(zhí)行bin下的grafana-server.exe 來啟動服務浑彰。需要再conf文件夾修改一下public前端資源的配置恭理,如果不修改那么你翻譯的信息是看不到的,服務會直接讀取的當前的public郭变,我們這需要讀取翻譯的public文件位置颜价。
配置在windows服務程序的 /conf/defaults.ini
修改內容:
app_mode = development # 開發(fā)模式
static_root_path = D:\grafana\public #這里配置到git拉取得位置的public
按照正常的操作 是需要開啟webpack-dev-server
我這里沒有這么設置,直接利用3000端口調試的诉濒。(當我們yarn start 后周伦,通過修改頁面可以看修改的內容。)
翻譯前端文件
前面環(huán)境已經搭建好之后未荒,我們通過修改頁面文件展示內容來翻譯专挪。
例如翻譯登陸頁面:
/public/app/partials/login.html
把對應的英文改為中文,保存后webpack會處理片排。處理完成刷新頁面可以看到結果寨腔。
前端翻譯文件不止html,還有ts率寡,tsx等文件脆侮。這里如果不知道具體文件可以在public文件夾下,通過全局搜索頁面的單詞等信息定位到文件勇劣。
我沒有翻譯帶有test 的測試文件靖避。
最后我們把需要的文件都翻譯之后,通過yarn build
生成文件比默。這些文件都存在生成的目錄/public/build
中幻捏。把這些文件覆蓋到自己搭建的項目中完成漢文。
建議把整體public目錄替換命咐。
重啟服務既可以看到中文版的頁面了篡九。
后端環(huán)境
后端是用GO寫的。后端我沒有調試醋奠,不想前端那樣可以邊調邊看榛臼。我的辦法就是全部改完伊佃,build程序,啟動查看后端翻譯的結果沛善。
所需航揉,本人是在windows10下處理的,需要gcc金刁,go帅涂。
翻譯后端文件
文件所在位置: /pkg/
首頁我們的導航,二級菜單這些不是前端控制的尤蛮,這些是在 /pkg/api/index.go
其余還有很多文件媳友,內容包含:html數據,返回值信息产捞,debug信息等醇锚。如果你前端翻譯完成,那么后端對你來說也是很輕松的坯临。
請注意一些參數或者判斷不要給翻譯了
當翻譯完成后焊唬,需要build。
首先到項目根目錄尿扯,這里可以看到 build.go 文件求晶。用這個來生成后端程序。 windows下可以build .exe程序衷笋。 時間很短芳杏,便于我們調試。
build前辟宗,先steup一下爵赵,執(zhí)行 go run build.go setup
。
$ go run build.go setup
Version: 6.3.4, Linux Version: 6.3.4, Package Iteration: 1568870230
go install -v ./pkg/cmd/grafana-server
github.com/grafana/grafana/pkg/api
github.com/grafana/grafana/pkg/cmd/grafana-server
如果沒有報錯泊脐,那么證明是可以執(zhí)行build了空幻。
這里可能你會遇到一些錯誤,出現錯誤先解決錯誤再重新執(zhí)行 go run build.go setup
容客,直到沒有錯誤秕铛。
環(huán)境不同,此處僅供參考缩挑。
我遇到一下錯誤:
-
error loading module requirements
這個問題一查一大把但两,原因就是你需要的模塊下載不到,地址被墻供置。
解決方式: 其中一種:go.mod 添加replace() 替換地址谨湘。下面并非全部用到,我是偷懶全粘上。replace ( golang.org/x/build => github.com/golang/build v0.0.0-20190416225751-b5f252a0a7dd golang.org/x/crypto => github.com/golang/crypto v0.0.0-20190411191339-88737f569e3a golang.org/x/exp => github.com/golang/exp v0.0.0-20190413192849-7f338f571082 golang.org/x/image => github.com/golang/image v0.0.0-20190417020941-4e30a6eb7d9a golang.org/x/lint => github.com/golang/lint v0.0.0-20190409202823-959b441ac422 golang.org/x/mobile => github.com/golang/mobile v0.0.0-20190415191353-3e0bab5405d6 golang.org/x/net => github.com/golang/net v0.0.0-20190415214537-1da14a5a36f2 golang.org/x/oauth2 => github.com/golang/oauth2 v0.0.0-20190402181905-9f3314589c9a golang.org/x/perf => github.com/golang/perf v0.0.0-20190312170614-0655857e383f golang.org/x/sync => github.com/golang/sync v0.0.0-20190412183630-56d357773e84 golang.org/x/sys => github.com/golang/sys v0.0.0-20190416152802-12500544f89f golang.org/x/text => github.com/golang/text v0.3.0 golang.org/x/time => github.com/golang/time v0.0.0-20190308202827-9d24e82272b4 golang.org/x/tools => github.com/golang/tools v0.0.0-20190417005754-4ca4b55e2050 golang.org/x/xerrors => github.com/golang/xerrors v0.0.0-20190410155217-1f06c39b4373 google.golang.org/api => github.com/googleapis/google-api-go-client v0.3.2 google.golang.org/appengine => github.com/golang/appengine v1.5.0 google.golang.org/genproto => github.com/google/go-genproto v0.0.0-20190415143225-d1146b9035b9 google.golang.org/grpc => github.com/grpc/grpc-go v1.20.0 gopkg.in/asn1-ber.v1 => github.com/go-asn1-ber/asn1-ber v0.0.0-20181015200546-f715ec2f112d gopkg.in/fsnotify.v1 => github.com/Jwsonic/recinotify v0.0.0-20151201212458-7389700f1b43 gopkg.in/gorethink/gorethink.v4 => github.com/rethinkdb/rethinkdb-go v4.0.0+incompatible gopkg.in/ini.v1 => github.com/go-ini/ini v1.42.0 gopkg.in/src-d/go-billy.v4 => github.com/src-d/go-billy v4.2.0+incompatible gopkg.in/src-d/go-git-fixtures.v3 => github.com/src-d/go-git-fixtures v3.4.0+incompatible gopkg.in/yaml.v2 => github.com/go-yaml/yaml v2.1.0+incompatible k8s.io/api => github.com/kubernetes/api v0.0.0-20190416052506-9eb4726e83e4 k8s.io/apimachinery => github.com/kubernetes/apimachinery v0.0.0-20190416092415-3370b4aef5d6 k8s.io/client-go => github.com/kubernetes/client-go v11.0.0+incompatible k8s.io/klog => github.com/simonpasquier/klog-gokit v0.1.0 k8s.io/kube-openapi => github.com/kubernetes/kube-openapi v0.0.0-20190401085232-94e1e7b7574c k8s.io/utils => github.com/kubernetes/utils v0.0.0-20190308190857-21c4ce38f2a7 sigs.k8s.io/yaml => github.com/kubernetes-sigs/yaml v1.1.0 go.uber.org/atomic => github.com/uber-go/atomic v1.3.2 )
還有方法是通過設置Module GOPROXY代理紧阔。大概意思就是當構建或運行你的應用時,Go 會通過 GOPROXY 獲取依賴坊罢。
exec: "gcc": executable file not found in %PATH%
這個問題是我們環(huán)境沒有gcc,這個玩意兒需要下載一個軟件MinGW擅耽。
此地址提供的壓縮包文件活孩。解壓可以使用,此網站也提供下載器安裝方式秫筏。這網站下載賊慢
解壓之后設置環(huán)境變量诱鞠,當前解壓完路徑是:C:\MinGW\mingw64
在環(huán)境變量添加此目錄挎挖。
cmd 測試 gcc -v 有信息即ok这敬。
沒有問題 執(zhí)行 go run build.go build
完成后,就可以得到bin文件蕉朵,位置在 /bin/windows-amd64/
崔涂, 里面有grafana-server.exe 程序。
在測試前端時候始衅,用的那個windwos程序可以下崗了冷蚂,把build之后的bin程序+md5文件一起復制到這目錄里。如果你不放心提前先備份一份汛闸。
之后按照測試前端那樣蝙茶,打開服務,訪問3000诸老,查看自己漢化后端的成果吧隆夯。
生成docker鏡像
在windows可以直接加載public,bin生成之后替換原bin程序.
linux是類似,build出來的bin,需要在linux上build.
我們這里主要是想利用docker.
還沒完,我們剛才只是測試一下自己漢化的后端是否可以别伏。如果測試完都可以之后蹄衷,我們還是要把它build成鏡像,利用docker來運行服務厘肮。
如果你不想用docker愧口,就考慮在build為linux程序。
生成docker鏡像可以分為兩種类茂,一種是你所在linux/amd64中生成的鏡像耍属,另一種是通用的鏡像。
第一種:
linux系統上省事一點
go run build.go setup
go run build.go build
第二種:
make build-docker-full
或者 docker build -t grafana/grafana:dev .
目前我通過生成鏡像方式發(fā)布到 DockerHub