LoginSignup
16
5

More than 5 years have passed since last update.

Kibanaの小技!bundlesフォルダの活用でローカル画像を埋め込む

Last updated at Posted at 2018-12-19

株式会社 日立製作所 謝洋

免責事項/Disclaimer

  • 本記事は、あくまで執筆者の見解であり、所属企業及びElastic社の公式なドキュメントではありません。
  • 本記事の作成に利用したElasticsearchとKibanaのバージョンは6.5.1です。これ以外のバージョンで操作を再現できることを保証しません。
  • 本記事で利用した絵文字画像の著作権は、Twitterの絵文字ライブラリ(twemoji)に属します。

1. はじめに

KibanaはElastic Stack(OSS)のコンポーネントとしてElasticsearchと連携して使用するデータ可視化ツールです。Kibanaでは、データをグラフや表で可視化すること以外に、インターネットで公開されている画像を表示することもできます。例えば、下記のDiscovery画面にインターネット画像またはインターネット画像のURLを表示することができます。
discovery_1.png
また、下記の図のようにMarkdownで作成した画面にもインターネット画像を表示することができます。
markdown_1.png

このように、[http:]URL表記によりKibanaの画像にインターネット画像を貼り付け画面を華やかに飾ることができます。しかし、[file:]URL表記を記述することができないため、ローカル画像を表示することができません。そこで本記事ではbundlesフォルダを活用し、Kibanaの画面にローカル画像を表示する方法をご紹介します。

2. bundlesフォルダとは

bundlesフォルダは、Kibanaのインストールフォルダの配下にあるoptimize/bundlesフォルダを指します。bundlesフォルダの中身は、htmlの外部ファイルであるcssやjsのファイルなどです。

bundlesフォルダの中身を確認
[root@host bundles]# pwd
/usr/share/kibana/optimize/bundles
[root@host bundles]# ls
(略)
commons.bundle.js                       space_selector.bundle.js
commons.style.css                       space_selector.entry.js
dashboardViewer.bundle.js               space_selector.style.css
dashboardViewer.entry.js                src
(略)

見た目はKibanaの構成ファイルを格納する普通のフォルダですが、このフォルダは1つの特徴があります。まず下記のようにbundlesフォルダの中に画像ファイルをコピーしてみます。

画像ファイルをbundlesにコピー
[root@host bundles]# pwd
/usr/share/kibana/optimize/bundles
[root@host bundles]# cp ~/gorilla.png .
[root@host bundles]# ls ./*.png
./gorilla.png

次にKibanaのリンクの後ろに、bundles/gorilla.pngを追加しブラウザで開くと、下記の画面が表示されます。Security機能が有効になっている場合、Kibanaにアクセスできるアカウントにログインすることが求められます。
gorilla.png
bundlesフォルダの中に置いているファイルは、Kibanaにアクセスする権限があるユーザでブラウザからアクセスできることが分かりました。これにより、bundlesフォルダに置いている画像ファイルをDiscoveryまたはMarkdownからアクセスすることも可能となります。詳細を次の活用例の章で詳しく説明していきます。

3. 活用例

本章では、bundlesフォルダに置いている画像ファイルをDiscoveryとMarkdownで表示する方法を説明します。操作を再現できるように、データセットの用意から説明します。

3.1. データセットの準備

3.1.1. 画像ファイルの準備

下記の手順で画像をbundlesフォルダに入れておきます。

  1. bundlesフォルダの下に、名前がimagesのフォルダを作成します。

    imagesフォルダの作成
    [root@host bundles]# pwd
    /usr/share/kibana/optimize/bundles
    [root@host bundles]# mkdir images
    [root@host bundles]# ls | grep images
    images
    
  2. imagesフォルダの下に下記の画像をコピーします。
    images.png

    imagesフォルダに画像をコピー
    [root@host bundles]# pwd
    /usr/share/kibana/optimize/bundles
    [root@host bundles]# cd images
    [root@host images]# cp ~/images/*.png .
    [root@host images]# ls
    baseball.png    cn.png  gb.png  soccer.png  title.png
    basketball.png  fr.png  jp.png  tennis.png  us.png
    

3.1.2. インデックスの作成

下記の手順でKibanaにリンクしているElasticsearch側の準備作業を実施します。

  1. Elasticsearchでインデックスplayersを作成します。

    インデックスplayersを作成
    PUT players
     {
      "settings": {
        "number_of_shards":1,
        "number_of_replicas":0
      },
      "mappings": {
        "list": {
          "properties":{
            "id": {
              "type":"keyword"
            },
            "name": {
              "type":"keyword"
            },
            "nationality": {
              "type":"keyword"
            },
            "gender": {
              "type":"keyword"
            },
            "event": {
              "type":"keyword"
            }
          }
        }
      }
    }
    
  2. 下記に示す通り、5人分の選手情報をインデックスplayersに登録します。

    1番目の選手情報を登録
    PUT players/list/1
    {
      "id" : "1",
      "name": "Watanabe",
      "gender": "male",
      "event": "baseball",
      "nationality": "jp"
    }
    
    2番目の選手情報を登録
    PUT players/list/2
    {
      "id": "2",
      "name": "Johnson",
      "gender": "male",
      "event": "basketball",
      "nationality": "us"
    }
    
    3番目の選手情報を登録
    PUT players/list/3
    {
      "id": "3",
      "name": "Li",
      "gender": "female",
      "event": "tennis",
      "nationality": "cn"
    }
    
    4番目の選手情報を登録
    PUT players/list/4
    {
      "id": "4",
      "name": "Robert",
      "gender": "female",
      "event": "tennis",
      "nationality": "fr"
    }
    
    5番目の選手情報を登録
    PUT players/list/5
    {
      "id": "5",
      "name": "Jones",
      "gender": "male",
      "event": "soccer",
      "nationality": "gb"
    }
    

3.1.3. Index Patternsの設定

下記の手順でKibanaにて[Index Patterns]の設定作業をします。

  1. [Management]->[Kibana]->[Index Patterns]画面を開き、下記に示す手順でIndex patternsを作成します。 create_index_pattern_1.png create_index_pattern_2.png
  2. [Management]->[Kibana]->[Index Patterns]画面を開き、下記に示す手順でフィールド[event]のフォーマットを編集します。 edit_field_format_1.png edit_field_format_2.png edit_field_format_3.png
  3. ステップ2を繰り返し、[event]と同じ設定方法で[gender]および[nationality]フィールドのフォーマットを編集します。 edit_field_format_4.png

3.2. Dashboardの作成

3.2.1. Discovery画面の作成

下記に示す手順で名前が[player_list]の[Search]画面を作成します。
create_search_1.png
create_search_2.png

3.2.2. Markdown画面の作成

[Visualize]画面を開き、下記に示す手順で名前が[title]の[Markdown]画面を作成します。
create_markdown_1.png
create_markdown_2.png
create_markdown_3.png

3.2.3. Dashboardの作成

[Dashboard]画面を開き、下記に示す手順で名前が[ball_game_tournament]のDashboardを作成します。
create_dashboard_1.png
create_dashboard_2.png
create_dashboard_3.png
1.png
1.png
1.png

ダッシュボードを全画面で表示してみます。ローカル画像ファイルが表示されていることを確認できました。
1.png

4. おわりに

本記事ではbundlesフォルダを活用することで、ローカル画像をKibanaの画面に表示する方法を説明しました。皆さんもこのbundlesフォルダの活用を参考にして多種多彩なDashboardを作成してみては如何でしょうか。

16
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
5