Taste of Tech Topics

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

Elastic Stack5.2の魅力的な新機能紹介

こんにちは!@と@です。
Elastic Stack 5.2が登場しました!

新しい機能が気がついたら追加されており、Elastic Stackの
進化の早さに驚かされてばかりです。

Elastic Stack5.2の特に魅力的な新機能である
ヒートマップ、Logstash Monitoring、そして、Heartbeatを紹介します。

ヒートマップ

ヒートマップがKibanaのVisualize機能で使えるようになりました。
ヒートマップを使うと、データを3つの軸で見れます。

例えば、商品と売上と時間の属性があった場合を考えてみましょう。
いつどんな商品の売上があがるのかを調べたい場合にヒートマップが便利です。
そのX軸を時間、Y軸を商品、売上を色で表示した場合に、
売上の高い部分の色を探すと、どの商品がいつ売上が高くなったかを確認できます。

実際にどんなグラフなのかはこの後見ていきましょう。

以前、Prelertの記事でご紹介させて頂いたfarequoteのデータを利用してヒートマップを作りました。
データの詳細はこちらを参照してください。
acro-engineer.hatenablog.com


1.「Visualize」で「Heatmap」を選択します。

Kibanaの「Visualize」タブで「Heatmap」を選択しましょう。

2. Dataタブで可視化における基本設定をします。

Dataタブで可視化の設定を行います。
この設定項目は、X軸とY軸の表示項目(整形)と色を塗る基準となる値です。

今回はDataタブで次の3つの項目を設定します。

  1. X軸の項目でDate Histogramを選択し、Fieldを@timestamp、IntervalをHourlyにします。
  2. Y軸の項目でSub AggregationをTermsとし、Fieldをairlineにしました。
  3. 最後にmetricsの項目でをresponsetimeの平均を設定します。

f:id:acro-engineer:20170202232916p:plain

ここまでの作業で、ヒートマップを表示することができました。
ただ、このヒートマップはまだ見づらいですよね・・・?
そこで、Optionタブからヒートマップの設定を変更します。

3. Optionタブで更に見やすい可視化をする。

Optionタブでは、ヒートマップを更に見やすくなる設定ができます。
設定を変更できる例として、着色する色、着色の値のレンジ、更には
対数スケール等の利用などもできます。

今回はCustom Rangesを設定し、Color Schemaを「Yellow to Red」に変更しました。
変更後のヒートマップは次の図になります。

f:id:acro-engineer:20170202233251p:plain

Color Schemaは色のベースや変化の設定を切り替える項目です。BlueやRedなどを設定できます。
また、Custom Rangesは着色する色のレンジを設定する項目です。
例えば、Fromを0、Toを100として設定すると、0から100までの色は同じ色で表現します。

これで、いつどのように変化したかをわかりやすく見れますね。

Logstash Monitoring

X-PackのMonitoring機能で、Logstashのモニタリングが可能になりました。
Kibanaの画面上から、Logstash・Elasticsearch・Kibanaの稼働状況を一貫して管理できます。

早速使ってみましょう。

1. X-Packをインストールする

Logstash Monitoringを利用するためには、LogstashにX-Packをインストールする必要があります。
下記のコマンドを実行することでLogstashにx-packをインストールすることができます。

logstash-plugin install x-pack
2. Logstashをモニタリングをするelasticsearchクラスタの情報を設定します。

logstash.ymlに次の3行を追記します。

xpack.monitoring.elasticsearch.url: "【elasticsearchのURL:ポート番号】"
xpack.monitoring.elasticsearch.username: "logstash_system"
xpack.monitoring.elasticsearch.password: "changeme"
3. Logstashを起動し、Kibana画面を確認する

Logstashを起動した状態で、KibanaのMonitoring画面を開いてみましょう。
f:id:acro-engineer:20170205222043p:plain

今までのバージョンでは、ElasticsearchとKibanaの情報しか表示されていなかったのですが、
Logstashの情報も追加されていることがわかります。


Nodesをクリックすれば、ノードの詳細情報を確認することができます。
スループットや、CPU使用率を1つの画面上で見ることができますね。
複数ノードのLogstashを使っている場合などは、一括で管理できて便利そうです。

f:id:acro-engineer:20170205222313p:plain

Heartbeat

Beatsシリーズに新しい機能が追加されました。その名も「Heartbeat」です。
Heartbeatはサーバの死活監視を行う製品です。
公式サイトによれば、次の4点の特徴があります。

  1. 非常に使いやすく、簡単に設定できます。
  2. HeartbeatのpingはICMP, TCP, HTTP, 更に TLS, 認証,プロキシにも対応しています。
  3. 監視対象の動的な追加、削除ができます。
  4. ElasticsearchやKibanaを利用して、状態を可視化できます。

監視対象の動的な追加、削除は良いですね。
Elasticsearchのクラスタを拡張するときに、監視を止めずに済みます。

それでは、早速実践してみましょう。今回試す構成は以下の通りです。
f:id:acro-engineer:20170207095158j:plain

Heartbeatが監視対象のElasticsearch(ポート番号9200)をhttpで死活監視し、
その結果をモニタリング用のElasticsearch(ポート番号9201)に投入する想定の構成です。

1.Heartbeatの設定

9200番のポートで起動した監視対象のElasticsearchにhttpリクエストを送信することで監視します。
「heartbeat.yml」がheartbeatディレクトリの中にあります。
このファイルはheartbeatの設定ファイルです。

heartbeat.ymlの17行目のurlsを監視対象のURLに変更してください。

  urls: ["http://192.168.0.1:9200"]

また、投入先をモニタリング用のElasticsearchにするのでheartbeat.ymlの48行目を変更してください。

  hosts: ["localhost:9200"]
2.Heartbeatの起動

Heartbeatを起動します。
オプションの-cでHeartbeatの設定ファイルを設定します。
(実際の運用では、サービス起動にするかと思いますが)

./heartbeat -c heartbeat.yml

Heartbeatが取得したデータが投入されるindex名は、デフォルト設定では「heartbeat-yyyy.MM.dd」になります。
Kibanaを使うことで、取得したデータを見ることができます。

3.Kibanaによる可視化

Heartbeatを使って投入したデータを簡易なDashboardで可視化してみました。

f:id:acro-engineer:20170206223036p:plain

Dashboardの内容は以下のようになっております。

中央一番上:ヒートマップでHTTPのRTT(HTTPリクエストの送信から受信まで)を可視化
左の円グラフ:HTTPステータスの円グラフ
右側:アクセスに成功したかどうか

このようにサーバの死活監視とその可視化を簡単にできます。

最後に

機能追加が速く、どんどん新機能が出てきており、今後も楽しみですね。
個人的には、ヒートマップで豊かになった表現力で、いろいろ可視化してみたいです。
Elastic Stack最高!

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

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

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

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