(レポート)Elastic{ON} Tour Tokyo 基調講演 #elasticon

2016.12.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、藤本です。

本日は Elastic{ON} Tour Tokyo に参加してきました。基調講演&製品紹介のレポートです。

ようこそ

セールスディレクター 須田 孝雄

IMG_1811

須田さんより本日のアジェンダ、概要の説明

ELKからElastic Stackへ

Elastic co-founder & CTO Shay Banon

IMG_1812

Elastic Stack の歴史
  • 2010年:Elasticsearch の開発開始
  • 2012年:Elasticsearch で会社設立
  • 2013年:Kibana、Logstash の開発開始
  • 2014年:Elasticsearch GA をリリース、Marvel をリリース
  • 2015年:Elastic に社名変更、Found の提供開始、Packetbeat をリリース
  • 2016年:ELK(Elasticsearch、Logstash、Kibana) を Elastic Stack に名称変更

現在、Elastic Stack は 7,500 万ダウンロードの実績がある。より多くの方に利用していただくため、Elastic Stack の開発はユーザーエクスペリエンスを重要視している。

Elastic Stack

Elastic Stack は Elasticsearch、Logstash、Kibana、Beats の各プロダクトの総称。(ELK ⇛ Elastic Stack)

バージョン番号の統一

Elastic Stack は各プロダクトを 5.0 からバージョンを統一。今までは Elasticsearch、Logstash、Kibana、Beats のバージョン番号、リリースタイミングがバラバラだった。それにより利用者は Elasticsearch、Logstash、Kibana、Beats を導入する時にどのバージョンを組み合わせが互換性があるのか判断が難しかった。Elastic Stack 5.0 で各種プロダクトのバージョン番号を合わせることで利用者は同一バージョンを利用すればよく判断に悩む必要がなくなった。

X-Pack

Marvel、Shield、Watcher、Graph のコマーシャルプラグインを一つのプラグインとして X-Pack という名前で統合した。X-Pack をインストールすれば、全てのコマーシャルプラグインを利用可能となった。

Elastic Cloud

Elastic社が提供する Elastic Stack の SaaS。Elastic Stack、X-Pack ともに Elastic Cloud で利用可能。もちろんバージョン5 を利用できる。

Elasticsearch のユースケース

ebay

ECサイトのバックグラウンドで Elasticsearch を利用している。Elasticsearch は全文検索だけだけではなく、Facet(Aggregation) により集計結果を表示している。

verizon

ログ検索のユースケース。検索だけではなく、大量のデータをインデキシングできる必要がある。1日に1.2TB以上のログをインデキシングし、検索を可能としている。

BNP PARIBAS

セキュリティの分析ユースケース。20PBのデータを蓄積・可視化し、データの分析を行っている。

Elastic Cloud

Elastic Cloud は現在 AWS にホスティングしている。今後は、AWS だけではなく、GCP、Azure、IBM Cloudなどにもホスティングすることを予定している。

Elastic Cloud Enterprise のアルファ版がリリースされた。クラウドだけでなく、Elastic Cloud をオンプレに持ち込むことが可能となった。2017年第1四半期のリリースを目標としている。

Prelertとのインテグレーション

Prelert は自動機械学習エンジンを提供。異常検知のユースケース。Elasticsearch で蓄積したデータで機械学習を行い、その結果を Kibana で可視化することができる。

Elasticsearch 5.0: 知っておくべきこと

Product Manager Shane Connelly

IMG_1820

Elasticsearch の開発で重視していること

  • Developer Friendly
    • 開発者が利用しやすい API の提供
  • Speed
    • 継続的なパフォーマンスの改善。新しいアルゴリズムを積極的に導入
  • Scalability
    • Elasticsearch クラスタの管理者の負担を軽減。リアルタイムでスケールすることが可能

5.0 新機能

Numb3rsのサポートを強化

数値の扱いを強化。パフォーマンス効率、ディスク効率を改善。

  • BKD Tree というデータ構造でインデキシング
  • IPv6 のアドレスを IPアドレスとして扱う事ができるようになった
  • scaled_floathalf-floatなど数値を柔軟に扱うことができる
パフォーマンス改善

Elasticsearch の 1系、2系、5系と継続的なパフォーマンス改善を実施。

IMG_1823

インデキシング、マージのパフォーマンスが特に改善されている。

Painless

新しいスクリプト言語。今までも Groovy、Python などの言語によるスクリプトをサポートしていた。より高速、セキュアなスクリプトを提供するために Elasticsearch のスクリプトとして利用できる言語を開発した。Syntax は Javascript、Groovy に似ており、それら言語を触ったことがある開発者であれば、触れるのは難しくない。

時系列インデックスの自動管理

日付が分かれるインデックスは日付単位で分ける運用を推奨していた。

よりディスク効率、パフォーマンス効率のよいインデキシングを提供するために 2つの API の提供を開始した。

  • Rollover APIs
    • インデキシングを任意のタイミングで変更することができる。Index-01 → Index-02 → Index-03などと Alias によるローテーション。利用者は Alias へインデキシングするため、インデックスが変わっても意識する必要はない。
  • Shrink APIs
    • シャードをマージすることで、パフォーマンス効率を上げる。
Resiliency and Safety

Elasticsearch を初めて扱う方でも運用時のトラブルが少なくなるようにサービス起動時のBootstrap Checks の Circuit Breaker、Safeguard により、トラブルになりそうなところをチェックしてくれる。

例えば、ファイルディスクリプタの枯渇。OS の設定・カスタマイズは難しい。Bootstrap Checks で兆候を検知し、予防する。

ロードマップ

  • Resiliency and Safety の向上
  • 範囲フィールド、地理情報の提供
  • アップグレードをより簡単にする
    • 1系から 2系へのアップグレードより、2系から 5系へのアップグレードの方が簡単になった
    • 今後(例えば、5系から 6系)では更に簡単にできるようにする予定

Kibana 5: Elastic Stackへの入り口

Developer Evangelist Jun Ohtani

IMG_1830

Kibana の歴史

  • Kibana 3
    • Discover、Visualize、Dashboardを一画面で実装していた
  • Kibana 4
    • Discover、Visualize、Dashboard を分割
    • Discover でデータを探して、Visualizeでグラフ化して、Dashboard にグラフを並べることができるようになった
    • Monitoring、Graph、Timelion、Sense の プラグイン
  • Kibana 5
    • Sense が Console に名称変更
    • X-Pack の User 情報を追加

デモ & 5.0 新機能

  • デザイン・カラーリングの変更が大きい

  • メニューを開閉できるようになり、画面をより広く使えるようになった

  • Discover

    • データの範囲を選択可能
    • データのスキーマを確認できる
    • データを簡単に絞り込むことができる
    • Discover から Visualize を作成可能
  • Dashboard
    • 区切りの線がなくなり、より柔軟にグラフの配置が可能となった
  • Console
    • Elasticsearch の API を簡単に叩くことができる
    • サジェストにより API の組み立てが簡単
  • Timelion
    • Visualize は一つのグラフに一種類のデータしか描画することができない
    • Timelion は一つのグラフに複数の種類のデータを描画することができる

ロードマップ

  • 開発者、技術者以外の方にも利用できるように実装している
  • Kibana のプラグイン開発に関するブログ(ガイドライン?)を公開予定

データの投入: BeatsとLogstash

Logstash Developer Aaron Midenstein

IMG_1832

Beats & Logstash

ログ、ネットワーク、セキュリティなどのデータをあらゆるソースから取り込みたい

  • Beats と Logstash の棲み分け
    • Beats は Logstash に置き換わるものではない
    • Beats は目的に特化したライトウェイト
    • Logstash は多機能、柔軟なヘビーリフティング
プラットフォームの例

IMG_1834

あらゆるデータを様々な方法で Elasticsearch へ運ぶことができる。かっこいい。

Beats: 5.0 新機能

Beats Processors

Beats がアウトプットするデータを絞り込むことができるようになった。それによって、パフォーマンス、ディスク効率を改善。

Packetbeat

TCP/IP層での処理をサポートされた。

Kafka出力のサポート

出力先の指定にApache Kafkaへの出力がサポートされた。

Metricbeat

Topbeat を置き換えた。Topbeat は Unixのtopコマンドの結果のようなデータを取り込むことができた。Metricbeat はtop(OSのメトリクス)に限らず、ミドルウェアのメトリクスの取り込みも拡張した。

Beats: デモ

Metricbeat で取り込んだデータを Kibana で可視化するユースケース。

  • Elastic Cloud で Elasticsearch クラスタを起動
  • Metricbeat のダッシュボードを生成するスクリプトは用意されている
    • コマンド一発で、Kibana に対してダッシュボードの定義をインポート
  • 出力先の Elasticsearch を Elastic Cloud で立ち上げたクラスタのエンドポイントに設定して、Metricbeat を起動
  • Dashboard を見れば、CPU使用率、メモリ使用率など、端末のステータスを可視化により解析が早くなる。

IMG_1835

とにかく簡単。

Beats: ロードマップ

  • Beats のプロダクトを増やしていく
    • heartbeats を開発中。単純な接続性のモニタリング
  • Metricbeat のモジュールがふえていく
  • より簡単に始められるようにする
  • 設定管理をElasticsearchで行う
  • Kibanaとのインテグレーションでモニタリング

Logstash: 新機能

Monitoring API

Logstash の処理はブラックボックスだった。ステータスを取得する API を実装した。Logstash の Hot Threads API に ホットスポットの処理を特定することができる。

Log4j2 の実装

Logging 設定をオンラインで変更可能、プラグイン単位でロギング設定が可能、Logstash の再起動は必要ない。

JRuby → Java への書き換え

今までは JRuby による実装。パフォーマンス効率があまり良くなかった。Logstash 5系でパイプラインのコアをJavaで書き直した。全体で 20% 以上のパフォーマンス向上を図った。主要、よく利用されるプラグインから順次、Java実装し直している。Beats のインプットプラグインを実装し直し、50% の向上を図った。現在、Date のフィルタープラグインを実装し直し、250% の向上を見受けられた。

プラグインの追加・アップデート
  • Kinessis のインプットプラグインをリリース
  • Google protocol buffer のインプットプラグインをリリース
  • Dissect フィルタープラグインをリリース
    • セパレート文字だけによるメッセージのスキーマ変換。Grokよりも 2倍 〜 3倍のパフォーマンス向上。Dissect が適用なスキーマ変換は Dissect を、Dissect を適用できないスキーマ変換は Grok を利用するのがいい。
  • IPv6 のアドレスを GeoIP2で解析になった
  • Kafka 0.10サポート
    • Basic認証対応
    • SSL/TLS暗号化に対応

Logstash: ロードマップ

  • ディスクによるデータの永続化
    • 先日リリースした 5.1.1 でサポート
    • パイプラインのデータをディスクにキューイングすることで、障害でのデータ消失を防ぐ
  • Logstash の構成管理も Elasticsearch で行えるようにする
    • Logstash 起動時に Elasticsearch から設定を取得する
  • Kibana とのインテグレーションでモニタリングの可視化
  • 複数のパイプラインを一つのJVMで処理
    • 今は1パイプライン1JVM
  • デッドレターキューの実装
    • Elasticsearch のダウン時、取り込みデータとフィルターの不整合時でもデータの消失を防止

Elasticsearch-Hadoop

Hadoop と Elasticsearh の連携。

Elasticsearch-Hadoop: 新機能

  • Spark 2.0 に対応
  • Ingest Node に対応
  • 5.0からパラレル処理ができるようになった
    • 今まではScan Scroll でシリアル処理

X-Pack: Elastic Stackを拡張する

Elastic Co−Founder, Tech Lead Uri Boness

IMG_1844

Elastic Stack は拡張性を重視。Elastic Stack はプラグインといった形で拡張可能。

X-Pack

X-Pack は各種コマーシャルプラグインを 1パッケージに。Elasticsearch、Kibana に X-Pack をプラグインとしてインストールするだけで、全てのコマーシャルプラグインを利用可能となった。

デモ & 機能紹介

Elastic Cloud からクラスタを展開すれば、Kibana は X-Pack が有効化されている。X-Pack のセキュリティでログイン画面が提供されています。

セキュリティ

セキュリティは認証機能を提供する。ユーザー名、パスワードによる認証。Kibana からユーザー管理が可能。またユーザーにロールを割り当てることでアクセス制御できる。

レポーティング

ダッシュボードをPDFとしてエクスポートすることができる。

グラフ

データの関連性を可視化できる

例えば、アクセスログで管理系ページの URL とアクセス元 IP アドレスから攻撃を分析。一つのIPアドレスが複数の管理系ページへ多くアクセスが発生していることがひと目見て分かる。

IMG_1847

写真だと分かりづらいけど、青い丸が IPアドレス、緑の丸が URL。一つの青い丸(IPアドレス)だけ、管理系ページへのURLに多くアクセスが発生している。

モニタリング

Elastic Stack のモニタリングを Kibana の UI に実装。今までは Elasticsearch クラスタに対応。X-Pack から Kibana のモニタリングも対応。Logstash のモニタリングも対応予定。

Watcher

監視、通知機能。監視、通知の設定はトリガー、インプット、コンディション、アクションで構成。例えば、Elasticsearch クラスタのステータスを定期的に取得し、異常があったら、メールで通知する。トリガーに 10秒毎、インプットに _cluster/health を取得、コンディションに Red ステータスかどうかを確認、アクションに メールアドレス通知を設定することで実装できる。

ロードマップ

セキュリティ
  • 認証連携の拡充。kerberos 認証、SAML 認証に対応予定
モニタリング
  • Logstash、Beats に対応予定
  • 過去データの確認だけでなく、異常を予兆できるようにする
アラート
  • Kibana とのインテグレーション
    • Kibana で設定
Graph
  • ユーザーエクスペリエンスの改善
Repoirting
  • CSV形式や、画像(png)での出力

Prelert: Elastic Stack を利用した異常検知

Solutions Architect Kosho Owa IMG_1850

Elasticsearch は大量のデータを検索によりソリューションを提供、Prelert は大量のデータをMachine Learningによりソリューションを提供。Elasticsearch にインデキシングされたデータからモデルを生成し、通常でないデータを可視化することができる。

デモ

EC サイトでの異常検知のユースケース。

EC での売り上げデータを Elasticsearch にインデキシングしている。1分あたりの売り上げデータ件数を Kibana で可視化する。傾向として、日中帯は多くの取り引きが行われていて、夜間帯の取り引きは少ない。

ある日の日中帯の少しの期間で取り引き件数が非常に少なくなっている。目で見てなんとなく分かる程度。夜間帯も取り引き件数が少ないため、しきい値だけでは検知できない。

Prelert なら過去データからモデルを作成(教師なし学習)することで、期待する結果と、実際のデータがかけ離れていることからこれらの異常事態を検知することができる。

Kibana とのインテグレーションによりUIを提供。Kibana(Webブラウザ)から設定や、異常の確認が可能。

ロードマップ

  • 2017年上半期のリリースを目標
    • 現在はベータ版を提供

その他

ランチ

無償のカンファレンスなのに弁当付きという豪華さ。しかも、今年も今半のすき焼き重!

IMG_1865

お土産

Elastic 社のライトニングケーブルをいただきました。コードは革。オサレ。もちろん、Android ユーザーへは MicroUSB ケーブルを選ぶこともできましたー。

IMG_1866

まとめ

内容てんこ盛りで色々と取りこぼしているかと思いますが、レポートです。Elastic Stack はリリースも早く、新機能を追いかけるのは大変です。ロードマップでも面白そうな機能がたくさんですね。個人的には Elastic Cloud Enterprise が楽しみです!