Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Kibanaの画面をPDF出力しよう!

こんにちは! ツカノ(@)です。

最近、STAP細胞のニュースで賑わっていますね。iPS細胞と比較する記事が多いですが、たまにはES細胞のことも思い出してあげてください(ES細胞だってノーベル賞を取っているんですよ~)。まぁ、IT業界的にESと言えば、Elasticsearchのことを指す訳ですが、こちらはトレンドなプロダクトで、Marvelが登場したりと、まだまだ広がっていく感じがします。
f:id:acro-engineer:20140131080117p:plain

Elasticsearch+Kibanaは本当に便利で、様々な方が取り組まれており、情報量も急速に増えています。ログをElasticsearchに簡単に入れておくことができ、Kibanaを使って簡単に可視化できるのは良いですよね。
f:id:acro-engineer:20140131085246p:plain

さて、可視化したら、それを後から見ることができるようにファイル化したくなるのが人の心。Kibanaで表示した画面もファイルに落としたいしたいですよね。特に「PDFでレポート出力して報告」なんてケースもあるかと思います。

そこで、今回はKibanaのissue#509を参考に、Kibanaの画面をPDFに出力する方法を紹介します。

実行時の流れは、以下のようになります。

  • KibanaのURLを指定して、PNG形式に出力する。
  • PNG形式をPDF形式に変換する。

では、インストールから順に説明します。以下の内容は、Linux系OSで利用できます。cygwin等を利用することで、Windows系でも利用できるかもしれませんが、未確認です。

1.PhantomJSをインストール

WebKitを使ってスクリーンショット等ができるライブラリPhantomJSをインストールします。
これでスクリーンショットPNG形式で出力することができます。
f:id:acro-engineer:20140131080307p:plain

以下のページからダウンロードしてください。
 Download | PhantomJS

ここでは、phantomjs-1.9.7-linux-x86_64.tar.bz2をダウンロードして使います。

tar jxvf phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo cp -p phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/bin

また、以下のページに記載されているrasterize.jsを、PDF化するためのコマンドを実行するディレクトリに置きます。(Webから貼り付け、というのはイケてないですが)
 Utilize phantomjs to render screenshots (schedule email of dashboards) · Issue #509 · elasticsearch/kibana · GitHub
ただし、環境などによっては、rasterize.js内の変数waitTimeでページをオープンしてからファイル出力するまでの待ち時間(デフォルトは10,000ミリ秒)を調整した方が良いかもしれません。

2.sam2pをインストール

ラスターイメージをPDF形式に変換するためのライブラリsam2pをインストールします。
これで、PNG形式のファイルをPDF形式に変換することができます。

以下のページからダウンロードしてください。
 Downloads - sam2p - convert raster (bitmap) images to PostScript, PDF and other formats - Google Project Hosting

ここでは、以下の2つのファイルをダウンロードして使います。

  • sam2p-0.49-linux-static.tar.gz
  • tif22pnm-0.14.tar.gz
tar xvfz sam2p-0.49-linux-static.tar.gz
cd sam2p-0.49-linux-static
sudo cp -p sam2p /usr/local/bin
tar xvfz tif22pnm-0.14.tar.gz
cd tif22pnm-0.14
./configure
./do.sh compile
sudo cp -p png22pnm /usr/local/bin

3.Kibanaの背景設定

Kibanaのスタイルはデフォルトでdark(黒背景)のため、そのままPDFに出力するとあまりキレイではありません。Kibanaの設定画面からスタイルをlight(白背景)に設定した方が見やすいです。

Kibanaの画面の右上から設定画面を表示する。
f:id:acro-engineer:20140131084641p:plain

スタイルを「light」に変更する。
f:id:acro-engineer:20140131084657p:plain

4.PDF化の実行

以下のコマンドを実行することで、Kibanaの画面をPDF化することができます。直接PDF出力でなく、PNGファイルに出力してそこからPDFに出力しています。

phantomjs rasterize.js <PDF化するKibanaのURLを指定> sample.png "A4"
sam2p sample.png <PDFファイル名を指定>

これで、PDF出力できました。

OSについているスクリーンキャプチャ機能と違って、スクロールが必要な箇所もちゃんと出力されるのは良いですね。
Elasticsearch+Kibanaの組み合わせは可視化するには良いですが、レポート出力がまだ弱い感じがします。しっかりしたレポート機能が出て欲しいですが、現状は、このような工夫が必要ですね。
 

Acroquest Technologyでは、キャリア採用を行っています。


  • 日頃勉強している成果を、Hadoop、Storm、NoSQL、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
  • 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
  • OSSの開発に携わりたい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
 キャリア採用ページ