
こちらの記事でKibanaのDiscoverタブからExportできる機能追加版をビルドしたが、正直かなり手間がかかった。
時間が経ち、同様機能をパッチとして作成した方がいるようなので、使ってみた。
Kibana Exportパッチの使い方
作成者から紹介されている使用方法はこちらの通り。内容を確認したところ、パッチはsrcディレクトリの内容となっていた。それを置き換えた上でoptimizeを削除し、起動時に再作成する。(自動的に)
cd ${KIBANA_HOME}
tar -zcvf optimize-backup.tar.gz
rm -rf optimize
wget https://github.com/fbaligand/kibana/releases/download/v5.4.0-csv-export/csv-export-patch.tar.gz
tar -zxvf csv-export-patch.tar.gz
rm -f csv-export-patch.tar.gz
bin/kibana
Dockerでデプロイする
Kibanaは既に動かしている環境があり、競合を避けるために、Dockerコンテナとしてパッチ適用版のKibanaをデプロイする。
Docker-Composeで以下の通りデプロイできるようにした。なお、Elasticseach関連のパラメータは環境変数から読み込むようにはしておらず、configディレクトリをマウントする形にしている。
$ tree
.
├── README.md
├── docker-compose.yml
└── kibana_5.3
├── Dockerfile
└── config
└── etc
├── kibana.log
└── kibana.yml
ベースイメージはシンプルにCentOSから作成する。ElasticオフィシャルはX-Packインストールなど、多機能で起動が重いと感じている。なお、既存のElasticsearchがVer.5.3.0のため、Kibanaもバージョンを揃えている。パッチは各バージョン向けにリリースされているので、該当のバージョンを使用する。
$ sudo vi ./kibana_5.3/Dockerfile FROM centos RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch RUN echo $'[kibana-5.x]\n\ name=Kibana repository for 5.x packages\n\ baseurl=https://artifacts.elastic.co/packages/5.x/yum\n\ gpgcheck=1\n\ gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch\n\ enabled=1\n\ autorefresh=1\n\ type=rpm-md' > /etc/yum.repos.d/elastic.repo RUN yum install -y kibana-5.3.0-1 WORKDIR /usr/share/kibana RUN curl -OL https://github.com/fbaligand/kibana/releases/download/v5.3.0-csv-export/csv-export-patch.tar.gz RUN tar -xzvf ./csv-export-patch.tar.gz RUN chown kibana:kibana -R ./src RUN rm -rf ./optimize/* CMD /usr/share/kibana/bin/kibana
docker-composeファイルはこのようにかなりシンプル。
$ sudo vi ./docker-compose.yml
version: '2.1'
services:
kibana:
build: kibana_5.3
container_name: kibana_5.3_export
ports:
- 5605:5601
networks:
- kibana_net
volumes:
- ./kibana_5.3/config/etc/:/etc/kibana/
networks:
kibana_net:
設定ファイルは個別に作成して、コンテナ起動時にマウントする。logging設定はマウントディレクトリをひとつにするために同一ディレクトリに出力。
$ sudo vi ./kibana_5.3/config/etc/kibana.yml server.port: 5601 server.host: "0.0.0.0" server.name: "kibana.designet.local" elasticsearch.url: "http://192.168.1.81:9200" logging.dest: /etc/kibana/kibana.log
起動時に若干時間を要する
起動時にはoptimizeの処理で数分の時間を要する。私の環境では下記の通り90秒程度でKibanaが上がってきた。(logをSTDOUTしている状態)
$ sudo docker-compose up
Starting kibana_5.3_export ...
Starting kibana_5.3_export ... done
Attaching to kibana_5.3_export
kibana_5.3_export | {"type":"log","@timestamp":"2017-07-16T17:17:12Z","tags":["info","optimize"],"pid":1,"message":"Optimizing and caching bundles for kibana, timelion and status_page. This may take a few minutes"}
kibana_5.3_export | {"type":"log","@timestamp":"2017-07-16T17:18:43Z","tags":["info","optimize"],"pid":1,"message":"Optimization of bundles for kibana, timelion and status_page complete in 90.28 seconds"}
kibana_5.3_export | {"type":"log","@timestamp":"2017-07-16T17:18:43Z","tags":["status","plugin:kibana@5.3.0","info"],"pid":1,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
エクスポート動作概要
パッチ適用版だと、このようにExportが可能になっている。なお、Discoverタブの中でもカラム選択してSaveしOpenすることでExportが可能となる。そうしないと_sourceのみが表示されてしまう。

ここから以下のようにCSVでのエクスポートができる。
"@timestamp",action,"if_src","if_dst",proto,direction,"ip_src","ip_local","port_src",nat,"ip_dst","port_local","port_dst" "July 17th 2017, 00:40:00.000",Built,outside,management,tcp,outbound,"172.217.27.68"," - ",443," - ","192.168.1.104",,"53,574" "July 17th 2017, 00:40:00.000",Built,management,outside,tcp," - ","192.168.1.104"," - ","53,574",dynamic,"222.159.141.103",,"53,574" "July 17th 2017, 00:40:00.000",Built,management,outside,tcp," - ","192.168.1.104"," - ","53,575",dynamic,"222.159.141.103",,"53,575"
まとめ - Kibana5にパッチ適用しDiscoverタブからCSVエクスポートする
Kibana5でパッチを適用しDiscoverタブから検索結果をCSVエクスポートできるようにした。シンプルな操作でエクスポート機能を追加できるため、非常に有用なパッチと評価している。