Kibanaで要望されつつもなかなか実装されない機能の一つに、Discover画面からのエクスポートがある。Githubでもissueとして長期的に要望されている。
その中で、次の通り機能実装版を提供してくれている方がいる。
If you are adventurous enough, you can implement it yourselves. It is fairly simple. For example this commit for version 5.1. Build instructions here.
Here is the screenshot:
今回は機能追加版のKibanaをビルドして動作確認をした。また、より簡単に導入できるようDockerコンテナを作成したので公開する。
- UPDATE 2017/7/17
- 前提条件
- 公開手順でビルドする
- Kibanaを起動する
- エクスポートしてみる
- Dockerコンテナで簡単に導入する
- まとめ - Kibana 5でDiscoverタブの検索結果をCSVエクスポートする
UPDATE 2017/7/17
この記事の内容は古くなっています。こちらの手順を推奨します。
前提条件
本記事の前提条件・知識は以下の通り。
- Elasticsearchをインストールして使用している。
- Kibanaの設定変更箇所が分かる。
- Dockerを通常使用できる。
ちなみに、私はDocker歴が非常に浅いため至らない点が多いですがご了承ください。また、本記事ではKibana5.2.3を使用していますので、Elasticsearchのバージョンも合わせる必要があります。
公開手順でビルドする
公開いただいている手順でエクスポート機能追加版のKibanaをインストール・設定する。
つまづいた点はいくつがあるが、どうにかビルドできた。
- 説明に記載はないが
git clone https://github.com/tongwang/kibana.git
する nvm install "$(cat .node-version)"
したときに存在しないと言われるときは~/.nvm/nvm.sh install "$(cat .node-version)"
する
Kibanaを起動する
Kibanaの設定はファイルは/etc/kibana/config/kibana.yml
。通常通りserver.port, server.host, server.name, elasticsearch.url, (kibana.indexもコメント外す必要あり?)等を設定する。
kibanaの起動方法は以下の通り。
cd /etc/kibana (when cloned kibana into /etc/) npm start
このときにProxy?がどうのこうのでアクセス出来ないことがあった。kibana.ymlでserver.host: 0.0.0.0
を指定していると0.0.0.0にリダイレクトされてしまった。起動オプションから--dev
を除外したらアクセス可能になった。
vi /etc/kibana/package.json - "start": "sh ./bin/kibana --dev", + "start": "sh ./bin/kibana",
各種設定後にnpm startして指定ポートにアクセスするとエクスポート機能付きKibanaにアクセスできる。再掲にはなるが、このようにexport付きの画面が表示される。
エクスポートしてみる
さっそくエクスポートしてみたが、CSVファイルをダウンロードできるものの出力されていない...
いろいろと試したところ、単純なDiscoverの状態ではだめで、左ペインでindexをAddした状態でないとエクスポートされないようだ。次の画面のようにカラムが表示されていればよい。
次の通りエクスポートできた。
Dockerコンテナで簡単に導入する
正直、git cloneして、ビルドして、と導入のハードルはやや高い(私自身が経験浅く難しかった)。また、Proxy環境では、Git(Port9418)の通信が発生するため、Proxyサーバの設定次第では通信できず、ビルドを完了できない。
導入を簡単にするために、ビルド済みのDockerコンテナを作成しました。ただし、Dockerhubへの自作コンテナpushも今回が初めてなので、全く最適化できていません...。容量もでかいですがご了承ください。(3GB程度)
https://hub.docker.com/r/daichi703n/kibana-exp-52/
導入手順
導入手順はこちらの通り。オフィシャルと同様、Elasticsearchのパスを起動オプションで指定できるようにしたいが、未実装。設定ファイルを編集ください。
docker pull daichi703n/kibana-exp-52 docker images // daichi703n/kibana-exp-52 があることを確認する docker run -d -p 5605:5601 --name some-kibana daichi703n/kibana-exp-52 /sbin/init docker ps -a // CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES // 2098d63548c3 daichi703n/kibana-exp-52 "/sbin/init" 3 minutes ago Up 3 minutes 0.0.0.0:5605->5601/tcp some-kibana docker exec -it some-kibana /bin/bash // dockerコンテナにログインする。 cd /etc/kibana/ vi ./config/kibana.yml //環境にあわせて調整 npm start // 以下のように表示されればOK > kibana@5.2.3 start /etc/kibana > sh ./bin/kibana log [15:41:48.351] [info][status][plugin:kibana@5.2.3] Status changed from uninitialized to green - Ready log [15:41:48.424] [info][status][plugin:elasticsearch@5.2.3] Status changed from uninitialized to yellow - Waiting for Elasticsearch log [15:41:48.457] [info][status][plugin:console@5.2.3] Status changed from uninitialized to green - Ready log [15:41:48.494] [warning] You're running Kibana 5.2.3 with some different versions of Elasticsearch. Update Kibana or Elasticsearch to the same version to prevent compatibility issues: v5.2.2 @ 192.168.1.81:9200 (192.168.1.81) log [15:41:49.815] [info][status][plugin:timelion@5.2.3] Status changed from uninitialized to green - Ready log [15:41:49.823] [info][status][plugin:elasticsearch@5.2.3] Status changed from yellow to green - Kibana index ready log [15:41:49.824] [info][listening] Server running at http://0.0.0.0:5601 log [15:41:49.825] [info][status][ui settings] Status changed from uninitialized to green - Ready
これでhttp://<サーバIP>:<Kibanaフォワーディングポート>
にアクセスすれば使用可能。ポート番号はコンテナ起動時 -p パラメータで変更可能。
まとめ - Kibana 5でDiscoverタブの検索結果をCSVエクスポートする
エクスポート機能が実装されたKibanaを導入して、DiscoverからCSVエクスポートできることを確認した。また、ビルド済みのDockerコンテナを作成したため、簡単に導入できる。