Grafana使用日志11--将dashboard导出为pdf

背景

在QA团队做负载测试的时候,需要产出负载报告,这时候他们要求直接从Grafana导出报告,因此才有了这篇文章

实现

使用第三方: https://github.com/IzakMarais/reporter

安装grafana-reporter

1
2
3
4
5
6
sudo yum install go -y
sudo yum install -y git
sudo yum install -y texlive-latex
sudo yum install texlive texlive-science -y
/usr/local/go/bin/go install -v github.com/IzakMarais/reporter/cmd/grafana-reporter@latest
nohup go/bin/grafana-reporter &

配置nginx

我们需要配置 nginx 以允许访问 8686 端口。同时,我们需要设置超时时间,因为此功能将耗时较长。

1
2
3
sudo vi /etc/nginx/conf.d/grafana.conf

sudo nginx -s reload

安装必要软件包

1
2
sudo yum -y install libX11 libXcomposite libXcursor libXdamage libXext libXi libXtst cups-libs libXScrnSaver libXrandr alsa-lib pango atk at-spi2-atk gtk3
sudo yum install alsa-lib-devel -y

安装Grafana插件

1
2
sudo grafana-cli plugins install grafana-image-renderer
sudo systemctl restart grafana-server

生成API Key

我们需要一个密钥来访问可以生成PDF的网址,如果不使用此密钥,API将返回401错误

401的另一种解决方案

我们可以更改Grafana的配置,此操作将允许任何人无需登录即可访问Grafana,因此不建议这样做。

1
2
3
4
5
6
7
[auth.anonymous]
# enable anonymous access
enabled = true
# specify organization name that should be used for unauthenticated users
org_name = Main Org.
# specify role for unauthenticated users
org_role = Viewer

修改ALB timeout

不要忘记这一部分!请将超时时间改为300秒(与nginx配置相同),不然会在ALB端报超时并断开连接
** 这个是针对AWS的说法,对于其他云平台可能名字不一样

点击此按钮后,等待大约2分钟(取决于面板数量,面板越多,所需等待时间越长)。

然后我们将在浏览器中看到PDF文件,如果想要下载,可以点击顶部的“下载”按钮(在Microsoft Edge中该按钮可能显示为“保存”)。

问题记录

Error obtaining render:500 Internal Server Error

原因

根据Grafana的配置,Grafana实际上已经超时,但该功能并未超时,这将导致该功能无法连接到Grafana,因此会出现类似的错误报告。

解决方案

我们需要在调用生成 PDF 功能的 Grafana 链接末尾添加参数 timeout=600。这将把 Grafana 的超时时间设置为 600 秒,不容易导致超时,并且将有足够的时间生成 PDF。

备注

此功能将使用大量内存,因此如果我们的Grafana服务器仅有2G内存,此功能将导致OOM(内存溢出)。因此,如果我们想要使用此功能,必须将内存扩容至至少4G。