歡迎體驗我發(fā)布的漢化Grafana7.2 Docker鏡像 DockerHub
可視化圖表
Grafana是一個通用的可視化工具。通過Grafana可以管理用戶權(quán)限,數(shù)據(jù)分析,查看,導(dǎo)出,設(shè)置告警等。
儀表盤Dashboard
通過數(shù)據(jù)源定義好可視化的數(shù)據(jù)來源之后,對于用戶而言最重要的事情就是實現(xiàn)數(shù)據(jù)的可視化。
面板 Panel
Panel是Grafana中最基本的可視化單元。每一種類型的面板都提供了相應(yīng)的查詢編輯器(Query Editor),讓用戶可以從不同的數(shù)據(jù)源(如Prometheus)中查詢出相應(yīng)的監(jiān)控數(shù)據(jù),并且以可視化的方式展現(xiàn)。
Grafana中所有的面板均以插件的形式進(jìn)行使用,當(dāng)前內(nèi)置了5種類型的面板,分別是:Graph,Singlestat,Heatmap, Dashlist,Table以及Text。
翻譯工作
上面簡單介紹了一下工具,主要是讓我們方便查看監(jiān)控的數(shù)據(jù)。這里我還是沒有更深入的去研究公式等圖形的設(shè)置。這里先主要寫一下翻譯方面的工作。
公司也考慮展示內(nèi)容為中文化比較好,這里Grafana沒有提供語言包的方式來處理多語言問題。在我查看代碼過程中,發(fā)現(xiàn)工具后臺是在GO里面寫死的很多導(dǎo)航,返回值等數(shù)據(jù)。前臺是在頁面上直接寫的很多內(nèi)容。所以我個人認(rèn)為無法使用語言包來直接處理多語言問題。那就只好自己來搞定了。
翻譯的內(nèi)容
更具代碼查看,主要分為兩大部分:
- 后端: go文件,主要內(nèi)容在/pkg 目錄下。
- 前端: /public 目錄下, 1. 系統(tǒng)頁面 2. 插件頁面 。
準(zhǔn)備工作
首先git clone Grafana庫
git clone https://github.com/chenweil/grafana.git
官方地址https://github.com/grafana/grafana
之后我們根據(jù)自己翻譯的版本來檢出自己的項目。
我的分之是 grafana-chs
我們在自己創(chuàng)建的分支就可以來處理我們的工作了。
前端調(diào)試環(huán)境
需要 npm,nodejs,yarn
終端執(zhí)行命令yarn install --pure-lockfile 初始化. 如果沒有報錯的情況,證明ok.
出現(xiàn)錯誤請先處理問題.
開啟調(diào)試環(huán)境時候,是開啟前端的熱加載來協(xié)助我們調(diào)試。
這里安裝完三個環(huán)境可能在執(zhí)行 yarn start 時報錯,這里如果你是在windows上,需要再安裝一下sass.(根據(jù)報錯來看問題,我這里遇到缺少sass問題)
當(dāng)我們yarn start 執(zhí)行后,等待一段時間,build at 時間證明準(zhǔn)備工作已完成,下面就需要我們在調(diào)試模式下測試了。
還需要一個調(diào)試的Grafana服務(wù)程序,這里是windows環(huán)境,所以直接從官方下載了zip包,執(zhí)行bin下的grafana-server.exe 來啟動服務(wù)。需要再conf文件夾修改一下public前端資源的配置,如果不修改那么你翻譯的信息是看不到的,服務(wù)會直接讀取的當(dāng)前的public,我們這需要讀取翻譯的public文件位置。
配置在windows服務(wù)程序的 /conf/defaults.ini
修改內(nèi)容:
app_mode = development # 開發(fā)模式
static_root_path = D:\grafana\public #這里配置到git拉取得位置的public
按照正常的操作 是需要開啟webpack-dev-server
我這里沒有這么設(shè)置,直接利用3000端口調(diào)試的。(當(dāng)我們yarn start 后,通過修改頁面可以看修改的內(nèi)容。)
翻譯前端文件
前面環(huán)境已經(jīng)搭建好之后,我們通過修改頁面文件展示內(nèi)容來翻譯。
例如翻譯登陸頁面:
/public/app/partials/login.html

把對應(yīng)的英文改為中文,保存后webpack會處理。處理完成刷新頁面可以看到結(jié)果。
前端翻譯文件不止html,還有ts,tsx等文件。這里如果不知道具體文件可以在public文件夾下,通過全局搜索頁面的單詞等信息定位到文件。
我沒有翻譯帶有test 的測試文件。
最后我們把需要的文件都翻譯之后,通過yarn build 生成文件。這些文件都存在生成的目錄/public/build中。把這些文件覆蓋到自己搭建的項目中完成漢文。
建議把整體public目錄替換。
重啟服務(wù)既可以看到中文版的頁面了。
后端環(huán)境
后端是用GO寫的。后端我沒有調(diào)試,不想前端那樣可以邊調(diào)邊看。我的辦法就是全部改完,build程序,啟動查看后端翻譯的結(jié)果。
所需,本人是在windows10下處理的,需要gcc,go。
翻譯后端文件
文件所在位置: /pkg/

首頁我們的導(dǎo)航,二級菜單這些不是前端控制的,這些是在 /pkg/api/index.go

其余還有很多文件,內(nèi)容包含:html數(shù)據(jù),返回值信息,debug信息等。如果你前端翻譯完成,那么后端對你來說也是很輕松的。
請注意一些參數(shù)或者判斷不要給翻譯了
當(dāng)翻譯完成后,需要build。
首先到項目根目錄,這里可以看到 build.go 文件。用這個來生成后端程序。 windows下可以build .exe程序。 時間很短,便于我們調(diào)試。
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了。
這里可能你會遇到一些錯誤,出現(xiàn)錯誤先解決錯誤再重新執(zhí)行 go run build.go setup,直到?jīng)]有錯誤。
環(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 )
還有方法是通過設(shè)置Module GOPROXY代理。大概意思就是當(dāng)構(gòu)建或運行你的應(yīng)用時,Go 會通過 GOPROXY 獲取依賴。
exec: "gcc": executable file not found in %PATH%
這個問題是我們環(huán)境沒有g(shù)cc,這個玩意兒需要下載一個軟件MinGW。
此地址提供的壓縮包文件。解壓可以使用,此網(wǎng)站也提供下載器安裝方式。這網(wǎng)站下載賊慢
解壓之后設(shè)置環(huán)境變量,當(dāng)前解壓完路徑是:C:\MinGW\mingw64在環(huán)境變量添加此目錄。
cmd 測試 gcc -v 有信息即ok。
沒有問題 執(zhí)行 go run build.go build
完成后,就可以得到bin文件,位置在 /bin/windows-amd64/ , 里面有g(shù)rafana-server.exe 程序。
在測試前端時候,用的那個windwos程序可以下崗了,把build之后的bin程序+md5文件一起復(fù)制到這目錄里。如果你不放心提前先備份一份。
之后按照測試前端那樣,打開服務(wù),訪問3000,查看自己漢化后端的成果吧。
生成docker鏡像
在windows可以直接加載public,bin生成之后替換原bin程序.
linux是類似,build出來的bin,需要在linux上build.
我們這里主要是想利用docker.
還沒完,我們剛才只是測試一下自己漢化的后端是否可以。如果測試完都可以之后,我們還是要把它build成鏡像,利用docker來運行服務(wù)。
如果你不想用docker,就考慮在build為linux程序。
生成docker鏡像可以分為兩種,一種是你所在linux/amd64中生成的鏡像,另一種是通用的鏡像。
第一種:
linux系統(tǒng)上省事一點
go run build.go setup
go run build.go build
第二種:
make build-docker-full 或者 docker build -t grafana/grafana:dev .
目前我通過生成鏡像方式發(fā)布到 DockerHub