Grafana源码启动

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等等。

启动部分就到此结束,后面的东西碰到了再记录。

posted @ 2024-03-24 17:37  喝了一碗白干  阅读(812)  评论(0)    收藏  举报