読者です 読者をやめる 読者になる 読者になる

Taste of Tech Topics

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

Elastic Stack 5.0.0-alpha4リリース。CSVインポート機能とKibanaのモニタリングがお目見え! #elasticsearch

Elasticsearch Kibana

最近めっきり暑くなりましたが、皆さんいかがお過ごしでしょうか。
なにげに日傘男子の @ です。


さて、先日、Elastic Stack 5.0.0-alpha4がリリースされました。
なかなか良いペースでalphaもバージョンが上がっていて、この調子ならβ版のリリースも近いんじゃないのかなと思います。

さて、今日はそのalpha-4の新機能を紹介します。

Elastic Stack 5.0.0-alpha4の新機能

まず簡単にalpha4の主な新機能を紹介します。

https://www.elastic.co/jp/blog/elastic-stack-release-5-0-0-alpha-4

  • ElasticsearchのJavaクライアントに、HTTP/REST(9200番ポートのほう)対応版が追加されました。
  • KibanaでCSVファイルのインポートができるようになりました。
  • Kibanaのモニタリングができるようになりました。
  • Logstashから取れるメトリック情報の種類が増えました。

という感じです。
このうちKibanaの新機能である「CSVインポート」と「モニタリング」を試してみます。

1. Elastic/Kibanaのインストール

前回のエントリーとほとんど同じですが、ElasticsearchとKibanaのインストール手順を紹介します。
BeatsとLogstashは使わないので、インストール手順は省略します。

今回もサーバはAWSAmazon Linux 2016.03、インスタンスサイズはt2.smallを使っています。


まずJava8(OpenJDK)とdstatをインストールします。

sudo yum update -y
sudo yum remove -y java-1.7.0-openjdk
sudo yum install -y java-1.8.0-openjdk-devel
sudo yum install -y java-1.8.0-openjdk-debuginfo --enablerepo=*debug*
sudo yum install -y dstat

この辺は僕の好みで入れているのでスキップしても構いません。


yumでインストールするため、RPMの公開鍵をインポートして、リポジトリの定義を作成します。

sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/elastic.repo

elastic.repo

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://packages.elastic.co/elasticsearch/5.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=http://packages.elastic.co/kibana/5.0.0-alpha/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

[logstash-5.x]
name=Logstash repository for 5.x packages
baseurl=http://packages.elastic.co/logstash/5.0/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

勢いあまってLogstashの設定までしてしまっています。なおBeats 5.0系のリポジトリは、まだ用意されてなさそうです。


yumコマンドでElaticsearchとKibanaをインストールし、自動起動の設定をして、起動します。

sudo yum install -y elasticsearch
sudo yum install -y kibana

sudo chkconfig --add elasticsearch
sudo chkconfig --add kibana

sudo service elasticsearch start
sudo service kibana start

これでインストールは完了です。
ブラウザで http://(サーバのアドレス):5601/ にアクセスして、Kibanaの画面が出たら成功です。


画面遷移時に「Index Patterns: Please specify a default index pattern」というエラーメッセージが出るので、とりあえず「.kibana」をデフォルトindexにすることで警告はなくなります。
f:id:acro-engineer:20160603192241p:plain:w800


ところでKibana 5.0.0-alpha4では、なぜかログが /var/log/kibana に出力されなくなっています。

たぶんこのチケットで、
https://github.com/elastic/kibana/issues/7590

パッチもすでにマージ済みなので、
https://github.com/elastic/kibana/pull/7593/files

次のバージョンでは直るんじゃないかと思います。


これでElasticsearchとKibanaのセットアップは完了です。

2. CSVインポート機能を試す

CSVインポート機能はElasticsearchとKibanaさえセットアップすれば、特に追加のプラグインなどを入れずに利用することができます。
今回は、横浜市の5年間の気象データをCSV形式にしたものをインポートしたいと思います。

気象データは、気象庁のサイトからダウンロードしました。
http://www.data.jma.go.jp/obd/stats/etrn/index.php

ただ利用にあたり少し加工したので、加工後のCSVファイルもこちらに置いておきました。せろ忍者。
http://www.cero.ninja/t3blog/weather.csv


ではCSVインポート機能を試してみましょう。Kibanaの左メニューから「Management」を選択します。
f:id:acro-engineer:20160712104535p:plain:w800
Connect Dataに「Upload CSV」というメニューがあるため、これを選択します。

そうすると、CSVのアップロード画面が開きます。
f:id:acro-engineer:20160712104622p:plain:w800
ここでCSVファイルをドラッグ&ドロップします。

それだけでサッとCSVの中身が認識されました。
f:id:acro-engineer:20160712104643p:plain:w800


なおここでアップロードするCSVファイルですが、1行目が見出しになっていること、また日付はyyyy-MM-dd形式となっている必要があるようです。たとえばこんな感じ。

year-month-day,rain,max_temperature,min_temperature,daylight_hours,snow_depth,snow_ammount
2011-05-12,20.5,16.2,14.1,0.0,0,0
2011-05-13,0,24.0,16.1,5.4,0,0
2011-05-14,0,25.3,15.5,11.1,0,0

恐らくもう少し先のバージョンでは、Ingest Nodeの加工機能と連携して、CSVを加工するような機能も提供されるのではと思いますが、今のところは先にCSVファイルを修正しておく必要があります。


さて、CSVファイルが上手く読み込めたら「Next」を押して次の画面へ。
ここではindex名の指定や、それぞれのフィールドの型を選択します。
f:id:acro-engineer:20160712105630p:plain:w800
今回は日付を利用したtime-basedのデータで、日付以外のデータは全て数値なので、このまま読み込みます。

「SAVE」を押して読み込みを行ない、数秒待つと読み込みが成功したメッセージが表示されました。
f:id:acro-engineer:20160712105751p:plain:w800
1828行のCSVデータが読み込まれたようです。


discoverでindexを開き、期間を「Last 5 years」を指定すればデータが投入されたことを確認できます。
f:id:acro-engineer:20160712105859p:plain:w800
※若干、表示範囲とデータの範囲がズレているので件数が1766件(投入は1828件)になっていますが、まぁまぁ気になさらず。


もちろん、投入したデータを使ってグラフを作ることもできます。
f:id:acro-engineer:20160712110419p:plain:w800
簡単でしょう?


このCSVインポート機能のおかげで、Logstashの設定を書くことなく、データ投入を試せるようになりました。
これはちょっとElasticsearchを活用する人が増えそうな新機能じゃないですか?

3. X-Packの導入

次にKibanaのモニタリングを試してみます。
モニタリングを行なうためには、X-Packというプラグインセットをインストールする必要があります。
本来X-Packは商用ライセンスを購入しなくては使えないプラグインなのですが、alpha版である現在では自由に使うことができます。


X-Packをインストールする前に、Elasticsearch/Kibanaを止めておきます。

sudo service kibana stop
sudo service elasticsearch stop


elasticsearch-pluginコマンドで、ElasticsearchにX-Packプラグインをインストールします。

cd /usr/share/elasticsearch/
sudo bin/elasticsearch-plugin install x-pack

途中で一回質問が出ますが、力強く「y」を押して頂いて差し支えありません。


続いて、kibana-pluginコマンドでKibanaにX-Packプラグインをインストールします。
不安になるぐらいインストールに時間が掛かりますが、数分ぐらい待てばインストールが完了します。

cd /usr/share/kibana
sudo bin/kibana-plugin install x-pack

これでX-Packのインストールは完了しました。
以前は(というか現在は)MarvelやらShieldやらをアチコチにインストールしなくてはいけなかったのが、このインストールだけで済むのは楽ですね。

サービスを起動しましょう。

sudo service elasticsearch start
sudo service kibana start

そしてKibanaにアクセスすると・・・認証画面が表示されました。
これはSecurity(旧Shield)のプラグインが効いているためです。
f:id:acro-engineer:20160712112341p:plain:w800
特に何もアカウントを変更してない場合、ユーザー名「elastic」で、パスワード「changeme」でログインができます。

ログイン後すると、左メニューの項目が増えていたり、左下にユーザボタンやログアウトボタンが増えていることが分かります。
新機能のモニタリングを試すには、増えたメニューから「Monitoring」を選択します。
f:id:acro-engineer:20160712112635p:plain:w800
Monitoringの画面に、Elasticsearchだけでなく、Kibanaも出ています。

ここで右側のKibanaの「Instances: 1」のリンクをクリックすると、詳細なデータが確認できます。
f:id:acro-engineer:20160712113223p:plain:w800
ロードアベレージやメモリ消費量、リクエスト数などの基本的なリソース情報がグラフで確認できました。これでKibanaで異常が起きる前に予兆を掴んだり、あるいは問題が起きた時に(情報はElasticsearchに残っているため)後から問題をトレースすることもできるでしょう。

いずれは、ここにLogstashやBeatsシリーズも並ぶことになるでしょうね!

まとめ

  • Elasticsearch 5.0.0-alpha4は今すぐ試せるぞ。βもそう遠くない?
  • CSVインポート機能のおかげで設定レスでElasticsearchへのデータ投入ができるようになりました。
  • Kibanaをモニタリングできるようになりました。LogstashとBeatsも所望する!


次はGraphなんかを試してみたいですね。
それでは皆さん、日焼けなどしすぎないように、See you!

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


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

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
 
データ分析で国内に新規市場を生み出す新サービス開発者WANTED! - Acroquest Technology株式会社の新卒・インターンシップ - Wantedlywww.wantedly.com