Taste of Tech Topics

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

Kibana Canvasを使ってみた

こんにちは。
@です😊

Elastic Stack 6.0 GAがリリースされて半月ほど経ちました。
皆さん既に使ってみたでしょうか?
このブログにも6.0の紹介記事(Elastic Stack 6.0GAがリリースされました。 - Taste of Tech Topics)があるので、是非そちらも読んでみてください。


さて、今回の記事の本題はKibana Canvasです!
3月にサンフランシスコで行われたElastic{ON}での発表から9ヶ月が経ち、
「これはお蔵入りコースか...😅」とも思いましたが、ついにtechnical preview版が公開されました!


....ということで、さっそく触ってみます!

バージョン情報など

  1. macOS High Sierra 10.13.1
  2. elasticsearch-6.0.1
  3. kibana-6.0.1
  4. logstash-6.0.1

目次

  1. 概要
  2. インストール
  3. ELKの起動
  4. データ投入
  5. Canvas作成
  6. まとめ

概要

今回は、logstashを使って、twitter上のつぶやきをelasticsearchに取り込み、Kibana Canvasを用いて可視化します。

インストール

まず手始めにELK(elasticsearch, logstash, kibana)をインストールします。

インストール手順はこの記事では割愛します。
基本的にはダウンロードしたものを解凍するだけなので簡単です。

私の環境では、拡張プラグインであるx-packもインストールしているので、同じ手順を試す場合はインストールすることをお勧めします。
(x-packが入っている場合のみ必要な手順には「x-pack時のみ」と書き添えます)

インストール手順がわからない方は、これらのリンクが参考になります。
Installation | Elasticsearch Reference [6.0] | Elastic
Installing X-Pack | X-Pack for the Elastic Stack [6.0] | Elastic


ちなみに私の環境では

sh elasticまわりの最新バージョンダウンロードして色んなプラグイン入れてくれる.sh 6.0.1

を実行すれば全てインストールが完了します。

ファイル名はさておき、Elastic Stackはバージョンアップの頻度が高いので自動化しておくと便利です。

ELKの起動

rpmやhomebrewなどでインストールした場合は、本記事と起動方法などが異なります。
適宜読み替えて実行するか、zipまたはtar.gzからのインストールをお試しください。
Windowsの方は以下コマンド内の "/" を "\"で読み替えて実行してください。

・elasticsearchの起動

さて、まずはelasticsearchの起動です。
解答したディレクトリ内で下記のコマンドを実行し、elasticsearchを起動します。

bin/elasticsearch

・デフォルトユーザーのパスワード設定(x-pack時のみ)

Elastic Stack 6.0以降では、
今までと異なりデフォルトユーザーのパスワードを自分で設定する必要があります。
elasticsearchを起動した状態でelasticsearchのディレクトリ内から下記のコマンドを実行します。
("auto"の部分を"interactive"にすると、自分でパスワードを決めることができます。)

bin/x-pack/setup-passwords auto

これで、"elastic"・"kibana"・"logstash_system" の3ユーザーのパスワードが設定されます。


Canvasのインストール

Canvasをインストールするには、kibanaのディレクトリ内で、下記のコマンドを実行します。
(最初のオプションをつけないとヒープのold領域が足りずにインストールに失敗するようです)

NODE_OPTIONS="--max-old-space-size=4096" ./bin/kibana-plugin install \
https://s3.amazonaws.com/download.elasticsearch.org/kibana/canvas/kibana_canvas-0.1.1653.zip

・kibanaの設定(x-pack時のみ)

kibanaの設定にelasticsearchの認証情報を登録します
kibanaディレクトリのconfig/kibana.ymlを下記のように書き換えます。

編集前

39 #elasticsearch.username: "user"
40 #elasticsearch.password: "pass"

編集後

39 elasticsearch.username: "kibana"
40 elasticsearch.password: "自分で設定したパスワード"

・kibanaの起動

kibanaディレクトリ内で下記のコマンドを実行します。

bin/kibana

起動したらブラウザでhttp://localhost:5601にアクセスしてみます。
(kibanaの起動時にプラグインの初期読み込みなどがあるので、起動に5分ほどかかる場合もあります。)

f:id:acro-engineer:20171211234945p:plain:w800
上の画像のような画面が表示されれば、正しく起動できています。
ユーザー名:elastic
パスワード:自分で設定したパスワード

でログインします。

f:id:acro-engineer:20171211235653p:plain:w800
ログインするとCanvasがインストールされているのがわかりますね😊

データ投入

Canvasは、サンプルのデータソースを提供しているため、機能を試すだけならデータを登録しなくてもすぐに試すことができますが、
それではつまらないので、今回は敢えてtwitterのデータをelasticsearchに取り込んでみます。


twitter applicationの登録

twitterAPIを使ってデータを取得するためには、Twitter Application Managementからアプリケーション登録をする必要があります(無料)。

登録に際してはこちらの記事を参考にさせていただきました。
yosiakatsuki.net


・indexの設定(mapping)

続いて、indexのデータ型などを定義します。
今回はKibanaのDev Toolsを使って下記の設定をしています。

PUT tweets
{
  "settings": {
    "index.mapping.total_fields.limit": 10000
  }, 
  "mappings": {
    "doc": {
      "properties": {
        "text":{
          "type": "text",
          "fielddata": true
        }
      }
    }
  }
}


ここで、

"index.mapping.total_fields.limit": 10000

はindexあたりのフィールド数上限を拡大するため

"fielddata": true

は、text型のデータをaggregationするために付与した設定です。

※両方とも、リソース消費や負荷などを抑えるための初期設定を解除する設定です。本来慎重に変更すべき設定値といえます。


・logstashの設定

logstash-6.0.1のフォルダ直下に、sample.confという名称で、下記の設定ファイルを作成します。

input{
  twitter{
    consumer_key => "xxxxxxxxxxxxxxxxxxxxx"
    consumer_secret => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    oauth_token => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    oauth_token_secret => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    keywords => "nowplaying"
    full_tweet => true
    languages => "ja"
  }
}
output{
  elasticsearch{
    hosts => "localhost:9200"
    index => "tweets"
    user => "elastic"       #x-pack時のみ
    password => "xxxxxx"    #x-pack時のみ
  }
}

この設定では、"nowplaying"という文字列を含む、日本語のツイートを取得し、elasticsearchに送信します。
index名は"tweets"になります。

それでは実際にlogstashを実行してみます。
logstash-6.0.1のフォルダ内で下記のコマンドを実行します。

bin/logstash -f sample.conf

(実はバージョン6.0からlogstashのpipeline管理が改善されたのでそちらも紹介したいのですが、それは別の機会に...)

※logstashを起動したコマンドラインツールのウィンドウはしばらくそのままにしておいてください。
(logstashを終了するとデータ投入が止まってしまいます)


・データの確認

logstashを起動したことで、elasticsearchにtweetが取り込まれているはずです。
kibana上で確認してみましょう。

まずはindex patternを作成します。
f:id:acro-engineer:20171212011823p:plain:w800

次にDiscoverで確認すると....
f:id:acro-engineer:20171212012641p:plain:w800
上手くツイートが取れています。
#JUDY AND MARYいいですねー😇(年齢がバレる)

これでようやくデータが入ったので、実際にCanvasを触ってみましょう!

Canvas作成

Canvasの構成

ざっとCanvasの作成画面を見てみると、
Canvasは基本的に3種類の要素で成り立っているようです。
f:id:acro-engineer:20171212013642p:plain:w800
粒度の大きい順に、「Workpad」「Page」「Element」となっています。
ちょうどMicrosoft Excelの「ブック」「シート」「オブジェクト」に対応しているイメージです。


elementsにも幾つか種類があるようですね。
作成時にはこれらのelementから必要な物を選択して、pageに追加することになります。
f:id:acro-engineer:20171212014454p:plain:w800

・elementを追加する

今回はまずMarkdownを例にとって試してみます。
Markdownを選択したところデフォルトのひな形となるelementが配置されました。
f:id:acro-engineer:20171212014740p:plain:w800

elementの内容を編集したい場合は、
画面右側のエディット画面から変更するか、
画面下部にある"Code"という部分をクリックして直接コードを編集します。
(画面の基本構成は他の種類のelementでも同様です)
f:id:acro-engineer:20171212015350p:plain:w800

フォントを変えたり背景色を変えたりもできます。
f:id:acro-engineer:20171212020204p:plain:w800


他のelementも追加してみます。
折角tweetを収集したのでdatatableを使ってみましょう。

datatableを追加すると、最初に表示されるデータはサンプルデータです。
indexしたデータを表示させたい場合は、
画面最下部の"Datasource"をクリック→"Change Datasource"→"elasticsearch"
と進んで、index名を設定してください。

f:id:acro-engineer:20171212020511p:plain:w800

f:id:acro-engineer:20171212020848p:plain:w800

tweetの内容が反映されました。
作ってて楽しくなってくるレベルですね。😁
f:id:acro-engineer:20171212021151p:plain:w800


従来のダッシュボードでは右上に固定されていたtime filterの配置も、
Canvasなら自由自在です!
f:id:acro-engineer:20171212021647p:plain:w600


特に驚いたのは散布図です。
今まではLine Chartで「散布図のような何か」を作るのがせいぜいでしたが、
下の写真にあるような散布図を簡単に作成できるようになりました。これは嬉しい😆
f:id:acro-engineer:20171212022122p:plain:w800


全画面表示やauto refreshもサポートしています。
f:id:acro-engineer:20171212023159p:plain:w800

こんな具合に、柔軟にelementを配置することができ、豊かな表現が可能になりました。
(@のデザインセンスについては何も言わないでください。)

まとめ

今までのKibana Dashboardはカスタマイズ性に乏しく、痒いところに手が届かないというのが正直な印象でした。
それだけに、Canvasの登場は多くのユーザーにとって大きな意味を持っていると思います。
デザインセンスがある人が使いこなせば、相当強力な可視化ツールとなるのではないでしょうか。

記事内で紹介できなかった機能も多々あります。
是非ご自分で一度触ってみてください😄

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

  • ビッグデータHadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
  • マイクロサービスDevOpsなどの技術を使ったり、データ分析機械学習などのスキルを活かしたい。
  • 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。

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

Elasticsearchを仕事で使いこみたいデータ分析エンジニア募集中! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com