最近在公司系统里做了一个内嵌grafana页面的功能,用于查看集群日志。但grafana作为一个单页面应用,加载框架资源,耗费了很长很长时间,以至于你起身去接杯水回来,页面还没有加载完毕。 本着精益求精的思想,想着提升加载速度。 一番搜索下来。发现在grafana7.4.0以后就支持了配置cdn来加载前端资源。 于是乎,说干就干。用我的两台服务器,一台部署grafana,一台将grafan前端资源部署起来当做cdn。 不要问我为什么不用阿里云的oss+cdn?主要是没钱。刷一下页面就是几毛钱,一般人谁受的了。其实原理是一样的。cdn可以用ip代理,可以用nginx代替。只是网络依然很慢。除非你服务器带宽很高。 顺便提一句 我们集群带宽只有5M。 废话少说。let do it 首先启动grafana 7.4.1版本的镜像,并映射配置文件
docker run -d -p 3000:3000 --name grafana -v /home/fizz/grafana/grafana.ini:/etc/grafana/grafana.ini grafana/grafana:7.4.1
更多关于grafana容器的配置请查询 此处
文件 /home/fizz/grafana/grafana.ini是 grafana的配置文件。具体内容会在文末给出。这个文件你也可以下载windows版本,在安装目录 E:\GrafanaLabs\grafana\conf\defaults.ini 找到。
在这里主要配置一个cdn_url 我们配置为 cdn_url = http://115.159.52.223:8081
那么我们需要将grafana 7.4.1版本的release(即发布的包,容器)放到服务器上。 使用户能够通过
http://115.159.52.223:8081/grafana-oss/7.4.1/public/build/moment~app.f8f20cc62ef273db5b3b.js
这里请一定注意 配置的是 cdn_url = http://115.159.52.223:8081 访问资源的链接是 http://115.159.52.223:8081/grafana-oss/7.4.1/.....
这里提供一下我的做法,以供参考。
- 下载windows 7.4.1的grafana 安装到 E:\GrafanaLabs
- 取出
public放到115服务器地址/home/fizz/nginx/www/grafana-oss/7.4.1,如我的 E:\GrafanaLabs\grafana\public - 在服务器启动配置映射目录启动ngxinx镜像,命令
docker run -p 8081:80 -d -v /home/fizz/nginx/www:/usr/share/nginx/html nginx - 取出
E:\GrafanaLabs\grafana\conf\defaults.ini放到210服务器目录/home/fizz/grafana/grafana.ini并修改cdn_url = http://115.159.52.223:8081 - 在210 服务器启动grafana 命令
docker run -d -p 3000:3000 --name grafana -v /home/fizz/grafana/grafana.ini:/etc/grafana/grafana.ini grafana/grafana:7.4.1 - 打开 grafana地址
http:// ip:3000
打开控制台,发现前端资源都已经变成配置的cdn资源了
但有个美中不足的地方是页面的字体资源报跨域。不过这个配置跨域很简单就能解决。这边不再累述。
有关grafana的cdn pr可以查看这个地址
另外官方文档这里有一个错误需要指出。就是在配置cdn路径后, grafana访问前端资源的路径是
http://cdn.myserver.com/grafana-oss/7.4.0/public/build/app.<hash>.js 而不是 http://cdn.myserver.com/grafana-oss/v7.4.0/public/build/app.<hash>.js 文档中在版本前多了一个 v
配置文档的地址: github.com/grafana/gra…
改天不忙的时候 给他们提一个pr