Grafana源码启动
因为项目用到Grafana,但是用iframe嵌入前端。想研究一下源码看有没有可能直接用组件嵌入,然后用API调用Grafana的服务。
Grafana backend
Grafana的后端服务是用Go写的,新语言,有待学习。
Grafana frontend
前端使用React、Angular编写的Typescript项目。框架没学习过,看看。
启动过程
安装Go
直接在Go官网下载最新的发行包,我是Win10上用,所以下的go1.22.1.windows-amd64.msi
。然后配置一下GOPATH和GOROOT,GOPROXY也要改一下,用的是七牛云提供的代理。GOPATH就是项目目录,根据网上的建议设置了bin(存放可执行对象)、pkg(存放packge对象)和src(存放源代码)三个文件夹。路径设置就不介绍了,网上一大堆文章介绍的。
获取源码
本来官方提供的是go get
命令,但是在1.18版本后该命令不能在module之外使用了,所以直接从github clone源码。
git clone https://github.com/grafana/grafana.git
编译
拿到源码以后,直接build是build不起来的。根据grafana的开发文档,需要先使用wire工具构建组件间的连接(生成一些代码)。该文件会生成在grafana/pkg/server/wire_gen.go
go install github.com/google/wire/cmd/wire@latest
..\..\bin\wire.exe gen -tags oss ./pkg/server ./pkg/cmd/grafana-cli/runner
然后就可以愉快地运行build。
go run build.go setup
go run build.go build
成功build完的话,就可以在grafana/bin/windows-amd64
里看到可执行文件了。
运行
直接运行可执行文件就可以启动grafana服务。如果需要调试,则需要安装Delve。
.\bin\windows-amd64\grafana-server.exe
# or
go install github.com/go-delve/delve/cmd/dlv@latest
# run and debug in vscode
这样就可以直接在VSCODE里打断点来debug后端程序。
前端构建和运行
看到官方是用yarn的,我们愉快地安装一下yarn。然后直接install一下,yarn会去下载package.json
里面的包,放到node_modules
里,并且做一个Link step。这里一开始是报错的,后来我就先去start一下,再回来install又好了,里面提示一些must be built because it never has been before or the last one failed
的报错,不懂。
npm install --global yarn
yarn install --immutable
然后在运行的时候会报错,说你得先运行一下前端build,然后才能启动。这个是我比较纳闷的,因为build命令运行的是webpack.prod.js
,是生产环境用的构建。但开发环境构建又依赖里面的一些assets,所以要先运行build。
yarn build
yarn start
这个时候前端就运行在3000端口了。打开localhost:3000
,我们可以看见令人欣喜的登陆页面。默认登录账号和密码是admin:admin,登陆后会要求修改初始密码。
Grafana的数据库连接
在服务编译运行过程中,如果不特别指定,它自带的SQLite3会把数据库文件放在grafana/data/grafana.db
,在一开始运行服务的时候就做很多migration的操作来初始化数据库。这些配置都是放在grafana/conf/defaults.ini
中,包括端口、域名、数据库配置、管理员登陆初始账号密码,包括iframe嵌入涉及的allow_embedding
等等。
启动部分就到此结束,后面的东西碰到了再记录。
标签:启动,yarn,grafana,源码,build,go,Grafana From: https://www.cnblogs.com/blanche07/p/18092467