Taste of Tech Topics

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

Elastic Stack 5.0 alpha 3で、いよいよ登場Metricbeat! #elasticsearch

Hello world, @ です。

突然ですが、SpringOneのスピーカーになることが決まりました!
SpringOneは、毎年行われるSpring界隈で最大のイベントです。今年8月にラスベガスで開催されます。
springoneplatform.io

発表内容は、Elasticsearchを用いたSpring Bootアプリケーション(というかマイクロサービス)の可視化です。
Schedule: Let's Visualize Your Spring Boot Applications - SpringOne Platform

どういう内容になるか、ご期待ください! 要するに、まだちゃんと考えていません!


さて、そんな前振りをしつつ、今日はElastic Stack 5.0のalpha版のお話です。
Elasticsearch / Kibana / Logstash / BeatsのElasticスタックは、次のリリース時にバージョンが「5.0」で統一されます。
先日、そのalpha 3がリリースされたため、これをインストールして試してみます。

Elastic Stack 5.0 alphaの特徴

これまでこのブログでは、Elastic Stack 5.0 alphaについて話題にしてこなかったため(更新サボっててすみません!)、簡単に各バージョンの見どころを書いておきます。

alpha 1

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

  • 5.0 alpha 最初のリリース。
  • ElasticsearchのIngest Node(Logstashのfilterのような文字列加工機能)が使えるようになりました。
  • Kibanaが新しいデザインになりました。
  • Logstashのメトリクス情報を取得できるようになりました。
  • Beatsから直接Kafkaに出力できるようになりました。
alpha 2

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

  • ElasticsearchとLogstashがIPv6アドレスを扱えるようになりました。
  • Kibanaにsenseが標準搭載されました。
alpha 3

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

  • Beatsシリーズに「Metricbeat」が追加されました。
  • Kibana + X-Packに、ユーザ管理画面が追加されました。
  • Logstashにプラグインジェネレータが搭載されました。


という感じです。
基本的には、alpha版はお試しという位置づけなので、最新のものを使っていれば良いと思います。

1. 前準備

それでは、インストールを行ないましょう。
今回はAWSで、Amazon Linux 2016.03のt2.smallで試しました。

まずは前準備として、Java8(OpenJDK)とdstatをインストールします。
この辺りは僕の好みなのでスキップしても構いませんが、Javaで問題があった時に解析できるようにopenjdk-develとopenjdk-debuginfoを入れることと、リソースの確認ツールとして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

これで準備は完了です。

2. ElasticsearchとKibanaをyumでインストール

Amazon LinuxCentOS/RHEL)にElasticスタックをインストールする方法は3つあります。

  1. アーカイブをダウンロードして解凍する
  2. rpmをダウンロードしてインストールする
  3. yumコマンドでインストールする

運用のしやすさを考えれば2か3がよく、特に3のyumでインストールをしておけば、アップデートの際にもyum updateで済むので、今回はそれでインストールします。

まずは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

なおBeatsだけは5.0系のリポジトリが見つからなかったため、yumインストールを諦めました。

ElaticsearchとKibanaをインストールして、自動起動の設定をしておきます。

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

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

ちなみにElasticsearch 5.0 alpha 2では、依存モジュールの問題で、Amazon Linux上でyumインストールしようとすると失敗する問題がありましたが、alpha 3では修正されています。

インストールが終わったら、ElasticsearchとKibanaのサービスを立ち上げます。

sudo service elasticsearch start
sudo service kibana start

このあとブラウザで http://(サーバのアドレス):5601/ にアクセスして、Kibanaの画面が出たら成功です。
f:id:acro-engineer:20160603190541p:plain:w800
雰囲気がちょっと変わりましたね!


ちなみに、ここで他の画面を表示しようとすると「Index Patterns: Please specify a default index pattern」というエラーメッセージが表示されます。デフォルトのindexが指定されていないというエラーです。
何のためのエラーなのか、僕もいまひとつ理解していないのですが(←ちゃんとしろ!)とりあえずサイズの小さい「.kibana」をデフォルトindexにすることにしています。
f:id:acro-engineer:20160603192241p:plain:w800
これで設定しておけば、エラーは起きなくなります。

3. Beatsを使ってリソース情報を可視化

続いて、Beatsをセットアップをします。
Beatsの5.0 alpha 3では目玉機能として、Metricbeatが追加されました。
www.elastic.co

MetricbeatはApache、nginx、MySQL、Redisなどのサーバ状態を収集してElasticsearchに転送するものです。それに伴ってTopbeatが廃止され、Topbeat相当の機能がMetricbeatに移植されました。


今回は、このMetricbeatとPacketbeatをインストールして、リソース情報を可視化します。
先にも書きましたがBeatsはyumでインストールできないため、rpmパッケージをダウンロードしてインストールします。

curl -L -O https://download.elastic.co/beats/metricbeat/metricbeat-5.0.0-alpha3-x86_64.rpm
sudo rpm -vi metricbeat-5.0.0-alpha3-x86_64.rpm
sudo chkconfig --add metricbeat

curl -L -O https://download.elastic.co/beats/packetbeat/packetbeat-5.0.0-alpha3-x86_64.rpm
sudo rpm -vi packetbeat-5.0.0-alpha3-x86_64.rpm
sudo chkconfig --add packetbeat

まずはMetricbeatでTopbeat相当の情報だけを取得するようにします。
デフォルトの設定のままでも動作するのですが、せっかくなので標準でOFFにされている情報も取得するようにします。

sudo vi /etc/metricbeat/metricbeat.yml

metricbeat.ymlの -core と -diskio と -fsstat がコメントアウトされているので、それぞれアンコメントします。

metricbeatのサービスを起動します。

sudo service metricbeat start

これでElasticsearchに情報が流れ始めます。

Elasticsearchに正しく情報が入っているかどうかはElasticsearchの /_cat/indices にアクセスして確認します。

curl localhost:9200/_cat/indices

次のようにMetricbeatのindexができていれば、Elasticsearchへの転送は成功です。

yellow open metricbeat-2016.06.03 5 1 89 0 19.2kb 19.2kb
yellow open .kibana 1 1 2 0 3.8kb 3.8kb


またElastic Stack 5.0から、Beatsのダッシュボードを作成するためのスクリプトが、各Beatsのkibanaフォルダに置かれるようになりました。rpmでインストールした場合は /usr/share/(Beats名)/ がインストールフォルダとなります。ここにある import_dashboards.sh を実行すると、ダッシュボードが作成できます。
これを使って、Metricbeatのダッシュボードを作成しましょう。

cd /usr/share/metricbeat/kibana
sudo ./import_dashboards.sh

これでMetricbeatのダッシュボードが、Kibanaに作成されました。
Kibanaにアクセスして、左メニューからダッシュボードを開き、上部のメニューの「Open」から「Metricbeat System Statistics」を開くと、収集した情報が表示されます。
f:id:acro-engineer:20160603192721p:plain:w800
こんな感じのダッシュボードが数分でできるのは、本当にお手軽でいいですよね。


ついでに、Packetbeatも同じように設定しておきましょう。Packetbeatはネットワークインタフェースに流れるパケットをキャプチャして、アクセスを解析するツールです。ApacheやnginxなどのHTTPや、MySQLPostgreSQL、MongoDBなどのパケットに対応しています。

このPacketbeatを使って、ElasticsearchとKibanaに対するHTTPアクセスを収集します。
設定ファイルを書き換えて、HTTPに使うポート番号を指定します。

sudo vi /etc/packetbeat/packetbeat.yml

packetbeat.yml

packetbeat.protocols.http:
  ports: [5601, 9200]

5601と9200が、それぞれKibanaとElasticsearchのHTTP待ち受けポート番号です。


Packetbeatのサービスを起動して、またダッシュボードもMetricbeatと同じように作成しておきます。

sudo service packetbeat start

cd /usr/share/packetbeat/kibana
sudo ./import_dashboards.sh

これでPacketbeatのダッシュボードができました。
「Packetbeat HTTP」というダッシュボードを開くと、HTTPアクセス記録を確認できます。
f:id:acro-engineer:20160603193916p:plain:w800
特にアクセスログ解析をしたわけでもなく、パケットに流れる情報だけでこのようなダッシュボードを作れるのは、ホント便利ですね。

4. Logstashでログ情報の収集

せっかくなので、Logstash 5.0 alphaも試してみましょう。Logstashを使ってKibanaのアクセスログを収集します。

インストールはyumコマンドで行ないます。

sudo yum install -y logstash

Logstashは5.0 alpha 3から /etc/init/logstash.conf に自動起動設定が置かれるため、chkconfigを行なわなくとも自動起動されるようになります。

設定ファイルを修正して、Kibanaのログファイル(JSON形式)を読み込んで、Elasticsearchに転送するようにします。

sudo vi /etc/logstash/conf.d/kibana.conf

kibana.conf

input {
  file {
    codec => "json"
    path => "/var/log/kibana/kibana.stdout"
    start_position => "beginning"
    sincedb_path => "/var/log/logstash/since_kibana"
  }
}

output {
  elasticsearch {
    index => "kibana_access-%{+YYYY.MM.dd}"
    document_type => "%{type}"
  }
}

書式などはこれまでと変わっていません。

serviceコマンドではなく、initctlコマンドを用いてLogstashを起動します。

sudo initctl start logstash

こういう仕組み(Upstart)を知らなかったので、若干、戸惑いました。

LogstashからElasticsearchに正しく情報が入っていることを、index一覧を見て確認します。

curl localhost:9200/_cat/indices

次のようにkibana_access-yyyy.MM.ddというファイルが出来ていれば成功です。

yellow open .kibana 1 1 100 1 166.6kb 166.6kb
yellow open packetbeat-2016.06.03 5 1 20384 0 7.2mb 7.2mb
yellow open metricbeat-2016.06.03 5 1 20126 0 5.9mb 5.9mb
yellow open kibana_access-2016.06.03 5 1 324 0 496.9kb 496.9kb

あとはKibana上でindex定義をしたり、ダッシュボードを作成すれば良いのですが、手順は割愛します。

まとめ

  • Elasticスタック 5.0 alphaも、yumでインストールできます。
  • Beats 5.0 alpha 3でMetricbeatが追加され、Topbeatはなくなりました。
  • 各Beatsのフォルダ内にある「kibana」フォルダのスクリプトを使ってダッシュボードが作れます。
  • Logstash 5.0 alpha 3はUpstartで起動するため、若干、起動の仕方が変わりました。


紹介しきれなかった5.0の新機能や、X-Packなんかは、また改めて紹介したいと思います。

それではまた、
See you!

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


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

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