Description
This issue is to list the pros and cons of having a custom build of Chromium shipped with Kibana to support PDF/PNG reporting.
Background
PhantomJS was the original headless browser used by Kibana to support screenshot reports since Kibana 5.0. That had its share of issues that were hard to reproduce and diagnose. Eventually, the Chromium project released headless support for its browser and Kibana switched to using it as our Reporting browser. As a reaction to Chromium supporting headless, the PhantomJS project deprecated itself. Using Chromium goes back to 6.3, and for the first 2 minors, chrome-remote-interface
drove the integration. In 6.5, we switched to Puppeteer.
In first switching away from Phantom, we had the option to use a "stock" Chromium installation from the node module. Instead, we chose the alternative which is to supply our own Chromium installation. The Kibana team created build scripts that compile Chromium from source, using our own arguments files.
There is one main reason why we chose to ship a custom binary rather than use the default Chromium: in Linux, the default Chromium requires x11 which is not normally installed on a Linux server, and has a huge impact on how a server is provisioned in a self-deploy setup. (Note: even with the custom binary, Kibana Reporting imposes a few system requirements for the Linux server, such as fontconfig
and nss
)
Reasons to re-evaluate
Kibana Reporting has worked the way it has since version 6.3. Versions 6.3 and 6.4 used chrome-remote-interface
rather than Puppeteer, but the custom build process. was the same. Looking at the question now, there are unanswered questions:
- Why is the size of the custom binary shipped with the Kibana distro larger than Linux's default binary for Chromium?
- How would using the Puppeteer defaults affect the size of the Kibana Docker image?
- How would using Puppeteer defaults affect general stability of Kibana Reporting?
Activity