Taste of Tech Topics

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

Elastic{ON} 2018 初日セッションレポート Logstashのクラスタ化 #elasticonjp

こんばんは。@です。

AMA(Ask Me Anything)でElastic社のエンジニアの方と直接話せるのは良いですね。
いろいろと助かります。
f:id:acro-engineer:20180301185445j:plain:w400


今日参加したセッション

さて、Elastic{ON} 2018もいよいよ、セッションが始まりました。
いろいろ聞きたいことはあるのですが、私は次のセッションに参加しました。

  1. Bigger, Faster, Stronger: Leveling Up Enterprise Logging
  2. Reinventing Fermilab's Scientific Computing Grid Accounting with the Elastic Stack
    • フェルミ研究所(アメリカにある物理学の研究所)のセッションです。加速器素粒子の解説、、じゃなくて、科学計算で利用するスーパーコンピュータをElastic Stackで監視する話でした。
  3. Deep Learning & Accelerating the NLP Journey in the Unstructured World at Credit Suisse
    • クレディ・スイス社によるセッションです。Elastic Stackを使って組まれた通信監視を行うプラットフォームの話。ディープ・ラーニングを利用して誤検知を減らす話も出てきました。
  4. What's the Latest in Logstash
    • Elastic社によるセッションです。5.0以降のLogstashの機能の振り返りと、今後追加される機能についての説明がありました。
  5. The Seven Deadly Sins of Elasticsearch Benchmarking
    • Elastic社によるセッションです。Elasticsearchのベンチマークを行うときに失敗しがちな内容について説明がありました。
  6. Site Search with Swiftype
    • Elastic社によるセッションです。昨年、ElasticにジョインしたSwiftypeの話です。
  7. Scaling Log Aggregation at Fitbit
    • 42Lines社によるセッションです。Elasticsearchを3年以上運用し、アップグレード、スケールアウトを行ってきた流れに関する話です。

Elasticsearchベンチマーク7つの大罪

これらの中でも、「The Seven Deadly Sins of Elasticsearch Benchmarking」は好きなセッションでした。
性能測定とか運用周りは仕事がら興味がありますが、「Elasticsearchベンチマーク7つの大罪」というタイトルも興味をかき立てますね。

「ちゃんとプロダクション環境と同じ条件でベンチマークを行いましょう」から始まって、性能測定時に押さえておくべき内容が解説されました。
f:id:acro-engineer:20180301165124j:plain:w700

また、このようなベストプラクティスを取り込んだ「rally」というベンチマークツールがあり、Elasticsearchのベンチマークを行う際には、これを使う事が推奨されていました。
github.com

Logstashのクラスタ

他には、「What's the Latest in Logstash」も興味を惹かれました。
前半は5.0以降の新機能の振り返り。
Persistent Queueとか、もう遠い昔の機能のような気がしてましたが、割と最近なんですよね。

後半は今後追加される機能についての説明。
Logstashのパイプライン管理はサーバサイド(Elasticsearch)で集中的に管理できるようになりました。
今後は、Grok PatternやGeoIP Databaseなど、Logstashのローカルディスクに保持していたものが、サーバサイドで管理できるようになるそうです。
f:id:acro-engineer:20180301173037j:plain:w700

サーバサイドでいろいろ管理できるようになるのは嬉しいですが、今回の目玉はLogstashのクラスタ化(?)です。
これまで、Logstashが複数台起動していても、協調して動作する機能はありませんでした。
そのため、例えば、障害が発生してLogstashがフェイルオーバーしたときに、どこまでイベントを送信したのか管理することは難しい問題でした。
今後は、Logstashのクラスタ化が進み、このような問題も解決されていくようです。
f:id:acro-engineer:20180301170906j:plain:w700

今後も、どんどん機能追加されていくようで、運用しやすくなっていきそうですね!

さて、明日はいよいよ最終日。
楽しみなセッションが続きます。
それではまた~。

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


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

 

Elastic{ON} 2018 初日セッションレポート オーバーウォッチの運用チームに知見をもらった! #elasticonjp

いよいよ2月も終わって3月になりましたが、皆さんいかがお過ごしでしょうか。
こちらサンフランシスコも先ほど日付が変わって3月となり、サンガツフランシスコ!! ・・・みたいな感じのボケも考えたのですが、どうにも滑りが悪いですね、@ です。
Elastic{ON}では、今日から通常セッションが始まりました。

今日参加したセッション

私が本日参加したセッションは次の通りです。

  1. Watching Overwatch at Activision Blizzard
  2. Guide to Finding a Doctor in Spanish
  3. Reliable by Design
  4. BoF: Custom Kibana Graphs with Vega
    • Vegaを使ってKibanaのVisualizationを自作する
  5. BoF: Ingesting Data From Oracle Databases
  6. Visualizing Content Performance with Elastic at Canadian Broadcasting Corporation (CBC)
    • カナダの放送局CBCで、パフォーマンスを可視化した事例
  7. Ask Me Anything
    • 検索スコアのboostについて
    • Parent Childについて

ユーザー事例やニッチめの話など、なかなか他では聞けない話を中心に聞いて回りました。この中でも特に印象深かった「オーバーウォッチの話」と「Ask Me Anything」について、詳しくレポートします。

オーバーウォッチ運用チームの、KPI収集と改善活動を垣間見た

Blizzard社のオンラインゲーム「オーバーウォッチ」の運用チームが、どのようにゲームサーバのモニタリングをしているかなど紹介するセッションです。
Blizzardと言えばDiabloシリーズやWarcraftシリーズ、最近ではカードゲームのハースストーンなどでも有名です。学生時代、Diabloに手を出したがばかりにオンラインゲーム沼にハマってしまった私としては、このセッションは見逃せませんでした。

ツイートまとめ: https://twitter.com/hashtag/ecjp_overwatch?f=tweets


オーバーウォッチの運用チームは、サーバのメトリクス情報やサービスの状態をsyslogやbrubeck (https://github.com/github/brubeck) などで収集し、それをKafka経由でElasticsearch / Cassandra / HDFSに保存しています。
f:id:acro-engineer:20180301180559j:plain:w700
Elasticsearchには直近の1週間分のデータのみ保存し、それより過去のデータはHDFSに保存しているとのこと。私も過去の案件で同じようなことをやったので、このあたりはだいぶ共感できます。

またBEAMSという自作ツールで、収集したデータからアラートなどを飛ばす仕組みも作っていました。
f:id:acro-engineer:20180301180517j:plain:w700
BEAMSは、データの加工やルールの定義、アラートの内容などをブラウザから簡単に設定できるシステムのようですね。
f:id:acro-engineer:20180301180533j:plain:w700
ちょうど、Logstash + Watcherをまとめたような位置づけでしょうか。


さて、面白いのは、ここからです。

このようなデータプラットフォームを整備したことで、オーバーウォッチの運用チームは様々な情報を可視化・分析できるようになりました。その一例が、ゲームプレイ中の切断です。どの時間に、どれぐらいの頻度で、どの地域で切断が起きているかなどを可視化することで、サーバ障害やその影響範囲などを探ることができます。
f:id:acro-engineer:20180301180726j:plain:w700
このような可視化やアラートを整備することで、オーバーウォッチの運用チームは2017年に起きた134の大きめの障害のうち、78%をアラートで気づくことができたそうです。また障害のうち30%は、モニタリングの改善にフィードバックすることもできました。

この数字がキッチリ出てくるところが、良いですよね。

システムの運用中に発生する障害は、必ずしもリアルタイムに検知できるわけではなく、時にはお客様からの連絡やクレームで初めて気づくことだってあります。ただその際に、どうすればリアルタイムに検知できるのかを考えて運用にフィードバックするという改善活動を行い、またリアルタイムに検知できた/できなかった件数をKPIとして計測することで、改善の効果を確認することができます。このような活動が、オンラインゲームのように難しいシステムを安定稼働させるうえで欠かせなかったのだと思います。

そんなのはSREの人にとっては当たり前のこと(SRE本などにも書いてあること?)なのかも知れませんが、私にとってはすごく良い知見になりました。面白かったです!

やっぱりAMAは最高だな!

Elastic{ON}名物のAsk Me Anythingブース、通称AMA。
このブースは、Elasticsearchの開発者やサポートチームに直接質問をすることができるもので、言い換えればElasticsearchのコンサル(すごくお値段が高いんだヨ!)を無料で受けられるようなコーナーです。
そんなわけで人気があり、どうしても休憩時間などは大変な混雑になってしまいます。そこでいくつかのセッションをキャンセルし、セッション時間中にAMAブースに立ち寄ることにしました。正味、セッションに出るよりもコスパが良いと思うんですよね。


さて、AMAブースで聞いた1つめの質問が、Elasticsearchの検索スコアを調整する「boost」をどのように利用するべきかという話。機能ではなく、いかに利用して運用していくかという質問です。
f:id:acro-engineer:20180301180642j:plain:w400
このようなオープンクエスチョンに対しても、開発者自身の経験や見聞きしたユースケースなどから、取りうる戦略をアドバイスしてもらいました。またElasticsearch 6.2で実験的に導入された機能も使える可能性があるなど、見落としていた新機能なども教えてもらうことができました。


もう一つ質問したのが、ElasticsearchでRDBMSのような親子関係を扱うための「parent-child relationship」の話。この機能は5.xを最後にdeprecatedになり、6.xからはjoin datatypeを使うことが推奨されています。ただその互換性や将来性に疑問があったため、この機能の開発者(!)に直接質問をぶつけてみました。
f:id:acro-engineer:20180301180623j:plain:w700
この機能の将来性や、この機能とElasticsearch SQLの関係性など、いくつか話を重ねた後で、ふと「SQLのhavingに相当するクエリって、Elasticsearchで実現する方法ないですよね」と聞いたところ、「裏技だけど、あるよ」と言って教えてくれました。私的にはこの裏技が本日最大の衝撃でした。細かすぎて伝わらない内容ですがw
こちらはまた日本に帰ってから試してみたいと思います。


・・・という感じで、質問する側にもそれなりの知識や問題意識が必要になるとは言え、これぐらい深めの話を聞けるのが、AMAブースの特徴です。そもそも開発者と1対1と話せること自体、かなり豪華ですよね。本当に貴重な機会ですし、こう言いうのも何ですが、すごく効率がよくてありがたいです!

そうは言っても英語ディスカッションだけのBoFは辛い

そういえばBoFについては触れてなかったのですが、Elastic{ON}のBoFは、こんな感じの座談会形式で行われます。
f:id:acro-engineer:20180301180702j:plain:w700
資料なしで英語のディスカッションのみなので、さすがにこれは英語力が追いつかずに苦しかったです。

一方で、AMAブースは筆談や図を交えながら話せば何とかなりますし、こちらのペースに合わせて話してもらえるため、コミュニケーション面ではあまり困りませんでした。
明日もいくつかセッションに参加する予定ですが、しっかりAMAブースにも行って、まだまだ課題を解決したいと思います!


Stay elastic,
see you!

Elastic{ON} 2018 初日セッションレポート Kibanaは優しさの強化と再構築 #elasticonjp

こんばんは。@です。

初日のセッションがあっという間に終わってしまいました。
セッションに参加しつつ、デモブースやAMAを回っていると時間が足りない!というのが正直な感想です。

Elastic社のAaronさんとAMAにて記念写真。
f:id:acro-engineer:20180301181529j:plain:w400

今日参加したセッション

私が本日参加したセッションと概要は次の通りです。

  1. What's Evolving in Elasticsearch
    • Elasticsearchの5.x => 6.x => 7.xの進化について、Indexing, Search, Security, Administrationの4つのテーマからお届け。
  2. What's Cooking in Kibana
    • Kibana 6.xで今後追加される機能と 7.xで訪れる(またもや?)大きな変更点について。
  3. What's Brewing in Beats
    • 新しく追加されるInfra UIとFilebeat、MetricbeatによるKubernetes(k8s)の可視化とAuditbeatについて。
  4. Monitoring Anything and Everything with Beats at eBay
    • eBayがBeatsを活用しながらどのようにMonitoringを実現していったか。
  5. APM with the Elastic Stack
    • 6.2でGAとなったAPMの全体と新たに追加される待望のReal User Monitoring(RUM)と今後の予定。
  6. Creating Canvas for Real-Time Infographics in Kibana
    • Canvasの(だいぶ動くようになった)現在状況をデモを交えながらお届け。


その中から、今回は現在のElastic Stackがどのような状況にあるかを勝手に想像したくなる「What's Cooking in Kibana」についてのレポートをお送りします。

Kibanaの新機能は飛び道具的なものではなく、運用を助けるもの

紹介されたKibanaに対する追加機能は、「その辺りを埋めに来たか」という印象を持ちました。
と言うのも、目新しい新機能はあまりなく、今実際に運用している中であったら嬉しい機能や
どんなユーザ、ユースケースでもまずは必要になりそうな汎用的な機能をソリューションに近い形で提供していく方針が感じ取れたからです。

そんな中での新Visuailze「Waffle map」

上記のように書きましたが、新たに追加になる新Visualizeに「Waffle map」があります。
今回のイベントの中で既に何度も目にしたこの表現は新しいVisualizeであり、確かにk8sの複数のPodの状態を表現するのに向いていますね。

f:id:acro-engineer:20180301181207j:plain:w400

地道な改善

Kibana 6.0から追加されたKQL(Kibana Query Language)のAutoCompleteがFiled、Operator、Valueに対して効くというのはとても便利そうでした!

f:id:acro-engineer:20180301181151j:plain:w400

Index ManagementのUI改善では、Indexの設定やMappingがまとめて見られることに加え、GUIによってIndexのClose、forcemerge、flush、Deleteなどが行えるようになっており、ユーザにとっての身近なUIに進化しています。

f:id:acro-engineer:20180301181225j:plain:w400

新たに追加されるAppsのInfra UIとLogging UI

Infra UIとLogging UIはどんなユーザ、ユースケースでもまずは必要でしょう?というメッセージが聞こえてくる感じの新しいKibanaアプリ(プラグイン)です。

Infra UIはMetricbeatで集めた情報からサーバ毎のメトリックを可視化してくれます。Beatsのセッションでも紹介されていましたがk8sの場合には、さらにk8s用に拡張された画面になるようです。

f:id:acro-engineer:20180301181128j:plain:w400

Logging UIもまずはログを集めたらtail -fのように眺めたいし、検索やフィルタしたいよね、という声に応える内容となっています。これまでは仕方が無くDiscoverをログ検索に使っていたユーザは多いと思いますが、そのようなユーザにとって優しいプロダクトを目指す方向性を強く感じます。

f:id:acro-engineer:20180301181115j:plain:w700

運用を強力にサポートする Index Lifecycle Management & Rollups

ElasticseachのセッションにおいてIndex Lifecycke Managementの機能を提供するという説明があったのですが、それはKibanaのManagement UIでサポートされます(X-Packとして)。さらにキーノートでも紹介されたRollupについても合わせてManagement UIでサポートするようで、これまでCuratorなどを駆使して運用で対応してきたものが標準機能(ただしX-Pack)で提供されるようになるのは非常に嬉しいです。

f:id:acro-engineer:20180301181247j:plain:w400

ただし、紹介された画面のキャプチャを見る限りではKibana 7.xでの提供になるようです(セッション内では提供時期の説明はなく、キャプチャからの私の予想です)。

でも、Kibanaはやっぱり大きく変わるってさ

そんな中で紹介されたのが、新しいデザインの変更です。Kibana 6でもKibana全体に渡る大きなデザイン変更があったわけですが、Kibana 7.xでもさらに全体的なデザイン変更があります。

f:id:acro-engineer:20180301181302j:plain:w400

アクセシビリティに考慮したというKibana6のデザインはなんだったの?と思わなくないですが、その背景にはEUIと呼ぶElastic UI Frameworkを提供し、このEUIベースで画面コンポーネントを作り直しているからのようです。

f:id:acro-engineer:20180301181316j:plain:w400

これまでKibanaの独自Visualizeやプラグインの開発は、マイナーレベルのバージョンまで合わせる必要があり、バージョンアップがあれば都度ビルドしてリリースする必要がありました。
そのような開発の制約を無くしたいという点は、うちもKibanaプラグインを開発することが多いので非常に嬉しい限りですが、Kibana6への対応も大変だったのに、また・・・と涙目になる気持ちもあります (TT

f:id:acro-engineer:20180301181335j:plain:w400

しかも、今後はReact + RxJS + TypeScriptが開発のコアになるそうで、同じ恩恵を得るためには今のAngularJSからの移行を考える必要がありそうです(プラグインの開発は今まで通りAngularJSでもできるよ!でもReactをオススメするよ!とスピーカーの方は話していました >< )。

f:id:acro-engineer:20180301181350j:plain:w400

まとめ

というわけで、Kibanaのセッションレポートをお届けしました。
Elastic Stackは全体としては成熟してきた状態に入っており、Kibanaはよりユーザに優しいプロダクトとなるべく今まで埋まっていなかった隙間を埋めてきているという印象を受けました。

飛び道具的な機能はCanvasやVegaがあるとも言えますしね。

今後は汎用的なソリューションに近いものはInfra UIやLogging UIのようにKibanaが提供し、よりソリューションとして特化したものはSwiftypeのように外側アプリケーションやSaaSとして提供されるのだと感じました。

その他「What's Evolving in Elasticsearch」や「What's Brewing in Beats」の内容も紹介したいものがあるのですが、長くなってしまいますので、どこか勉強会などでフィードバックしたいと思います!

明日はもう最終日です!
Stay tuned!

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


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

 

Elastic{ON} 2018 キーノートレポート Elastic goes more open! #elasticonjp

いよいよ始まりました、Elastic{ON} 2018 サンフランシスコ。キーノートセッションで開幕です。
日本では花粉症に悩まされ、サンフランシスコに来たら治るのかなと思ったら全く症状が変わらず、風邪ひいてるのかも知れない @ です。もしかして風邪ひいてても気づかないタイプ?

さて、昨年まではPier 48という桟橋の上にある倉庫で行われていたElastic{ON}ですが、今年はMarriott Marquisというホテルで開催され、人権を取り戻した感じの 以前にも増して豪華なイベントとなりました。さらにキーノートはThe Masonicというイベント会場で行われます。まずはこのキーノートのレポートをお送りしたいと思います。

f:id:acro-engineer:20180228181220p:plain:w700

盛りだくさんのキーノート

キーノートは2時間を(大幅に)超えるボリュームで、10以上のデモが行われました。

ツイッターのリアルタイム実況はこちらを見てください。
togetter.com

発表された内容をかいつまんで紹介すると、次のような感じです。

  1. Rollup API : 定期的に過去のデータを集計する
  2. Machine Learning : 未来予測もできるようになった(ビットコインの予測はできないよ!)
  3. Canvas : 感銘を与えるUI、そしてSQL
  4. Infra UI : Dockerやk8sの監視もできる
  5. APM : アプリの監視をすぐに始められる
  6. Security : セキュリティ問題の可視化とML。あと、Mr.ROBOTのハッキングがガチすぎる
  7. Geo : 地図をレイヤーとして扱って、ポイントを重ねられるのが便利そう(小学生並みの感想)
  8. Search : Swiftype App Searchは、Web UIで簡単に検索のカスタマイズができる
  9. Elastic Cloud : 用途別にノードの性能を変えられるようになった
  10. X-Pack : X-PackのコードもGithubで公開!!

このうち、特に印象深かった「Canvas」と「Infra UI」、そして「X-Pack」について紹介します。

Canvas meets SQL

Canvasは、Kibanaの新しいUIのひとつです。現在はTechnology Preview版が公開されています。
f:id:acro-engineer:20180228181308j:plain:w700
紹介でも「from realism to IMPRESSionism」と書かれていたように、単にデータを見せるだけではなく、印象を与えるためのUIと言えるでしょう。顧客や上位管理層へのプレゼンやデモで利用されることを想定しているのでしょう。とりあえず見た目がカッコイイと、それだけで説得されたような気分になります。

また、このデモではCanvasだけでなく、新機能であるSQLも利用されていました。
次の画像では、少し見づらいですが画面の下のほうにSQLがあり、その検索結果をチャートにプロットしています。
f:id:acro-engineer:20180228181317j:plain:w700
selectとgroup byを使って集計するクエリですね。

ふつうのselectだけのものもプロットしています。
f:id:acro-engineer:20180228181326j:plain:w700

SQLは使い慣れてるし、これがあればElasticsearchの独自クエリを学習しなくて良いし便利だよな」というぐらいに捉えていたのですが、このCanvasSQLのデモには、また別の可能性を感じました。
データの絞り込みや集計を直感的に書けるSQLを使い、その結果をリアルタイムで可視化することで、どのようなデータがどのように分布しているかがすぐに分かります。たとえばアクセスログなどに対しても、SQLで検索してすぐ可視化できるわけです。

これって相当のおおごとなんじゃないですかね。

実際にどこまでできるのか、またSQLがどれぐらい使えるようになるのかは分かりません。そもそもSQL機能のリリース時期も不明です。ただその可能性を感じずにはいられないデモでした。

k8sを監視できるとかヤバいでしょ

さらっとデモが始まったのに、衝撃的だったのがInfra UI。ツイッターで遊んでたら、いきなりkubernetes (k8s) のモニタリングが始まっていました。遊ぶなよって話ですが。
f:id:acro-engineer:20180228181030j:plain:w700
f:id:acro-engineer:20180228181051j:plain:w700
Infra UIは、k8sのpod(コンテナ的なやつ)の全体やリソース状況などを、リアルタイムにモニタリングできる機能です。もちろんk8sだけでなく、個別のサーバやサービスの状況、またDockerもモニタリングができるようです。
これまでインフラのモニタリングは、自分で構成や監視項目を考えて情報収集を行っていましたが、このInfra UIを利用することで、より早くモニタリング環境を構築できるようになりそうです。

また写真を取りそびれたのですが、このInfra UIとMachine Learning (ML) を組み合わせて、一部のコンテナで問題が起きていることを検出して、それを取り除くデモも行っていました。簡単にモニタリングできますよ、というだけでなく、MLとの連携で「異常検知も素早く始められる」ということが、Elasticsearchの強みなのだなと再認識させられました。

X-Packのソースコードをオープン化!

このキーノートで一番盛り上がったのは、CanvasでもSQLでも、Infra UIでもなく、最後にShay Banonが「X-Packのコードをオープン化する」と発表した時でした。
f:id:acro-engineer:20180228181548j:plain:w700

ElasticsearchはOSSのプロダクトですが、いくつかの有償版の機能(X-Pack)のソースコードは非公開でした。当たり前ですよね。むしろ「有償版の機能のソースを公開するバカがいるかよ!」という話ですが、そのバカがここにいたんです。

ソースコードを公開することで、X-Packの機能がより認知され、フィードバックやコントリビュートなども得られるようになる一方で、リスクやデメリットなどもあると思います。ただElasticsearchやX-Packを使っているエンジニアとして、この方針はすごくありがたいです。正直な話、X-Packのいくつかの機能はソースコードJavadocが公開されていないせいで、利用しづらいと感じたこともありました。

この件についてShay Banonがブログを書いているので、ぜひ読んでみてください。
Doubling Down on Open | Elastic
あくまでもソースが公開されるだけであって、これまで有償だった機能(Machine Learningとか)が無償利用できるわけではない、という事だけは強調しておきたいと思います。

キーノート全体の感想

今年のキーノートは、何か凄く目玉となる新機能があったわけではなく、初公開の機能と、出たばかりの機能やユースケースを、いくつか取り揃えて紹介するという内容でした。また全体を通じて「立ち上げのスピード感」と「Machine Learningの自然な利用」を強調してきたなと感じました。

「立ち上げのスピード感」とはElasticsearchを使って「すぐに」監視や検索を始められることです。Infra UIがk8sをすぐにモニタリングできるなどが良い例でしょう。これはElasticsearchがミドルウェアやプラットフォームから、「ソリューション」に近くなっている様子を感じます。

また「Machine Learning (ML) の自然な利用」とは、Infra UIやAPMなどで、MLを使った問題の自動検出を行っていたところです。とても自然な流れで行っていました。そうやって使えるように、MLをうまくコモディティ化していると感じます。

この辺りの戦略面については話すと長くなりそうなので、また機会を改めて書きたいと思いますね。


そんなわけで、大きな目玉はないものの、有償プロダクトであるX-Packのソースコードをオープンにするという爆弾が投じられたElastic{ON}ですが、まだ始まったばかり。残りの2日間も、積極的に情報を集めてきます。


Stay elastic,
see you!

Elastic{ON} 2018 San Francisco 始まります! #elasticonjp

みなさん、こんばんは。@です。

今は、Elastic社の年間通して最大のイベント、Elastic{ON} 2018 San Franciscoに参加すべく、社員4名でサンフランシスコに来ています!
今日はKeynoteが夕方16時から開催され、興奮冷めやらぬまま先ほどホテルに帰ってきたところです。

そんなKeynoteの内容は@に任せるとして、私はKeynote開始前までの様子をレポートします。

REGISTRATION

会場の入り口と受付からしてカッコイイ感じで、テンションが上がってきました。

f:id:acro-engineer:20180228160435j:plain:w400

受付でチェックインをしていると、スタッフの方が「Acroquestの人?会えて嬉しいわ♪」とEQの高い対応をしてもらいました ( w

f:id:acro-engineer:20180228160215j:plain:w400

受け取った名札がこちら。

f:id:acro-engineer:20180228160917j:plain:w400

いよいよ始まる、という感じです!!!

AMA(Ask Me Anything)

今日のメインはKeynoteなのですが、会場の方ではお昼からAMAとランチあるからおいでよ!という流れになっており、
私たちも早速会場に行ってみました。

開始早々だったので、まだこんな感じですが、この時間帯が終わる頃には人がいっぱいになっていました。

f:id:acro-engineer:20180228161205j:plain:w700

会場の中ではスポンサーブースやデモ、そしてAMAブースがあり、かなり賑わっていましたね。

f:id:acro-engineer:20180228161506j:plain:w400

こちらはつい先日公開されたVegaのデモ。こちらは特に人だかりができていました!

f:id:acro-engineer:20180228161401j:plain:w400


私の本命はAMAブースです。

Kibanaのある手法について質問したかったので、Kibanaのエキスパートいますか?とカウンターで訪ねて紹介してもらい、ノートPC片手に、実現方法について教えてもらいました。

英語の不安はありましたし、実際に話す中で、半分も(英語は)理解できていませんが、コードとホワイトボードメモを使えばなんとかなる、という感じです。
無事に目的の内容について教えてもらえたので、早速試してみよう!と良いスタートが切れました。

その後も構築面で聞きたかった話も教えてもらえました。

普段保守サポートでお世話になっているElasticのスタッフの方にも「困っていることありませんか?」と声をかけてもらい、助けて頂きました。
ありがとうございます!

そんなわけで、明日からは複数のセッションが開始になりますので、またその様子をお届けします!
Stay tuned!

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


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

 

Elastic APM + ML(Machine Learning) でwebアプリの異常検知をしてみる

こんにちは。
今年もバレンタインチョコがもらえなかった
新人エンジニアの佐々木@です。

Elasticsearch 6.0で Elastic APM が追加され、前回(※)6.0の時点で alpha 版の概要やセットアップ方法を説明しました。
(※前回については当社、樋口の記事を参照ください)

APMはアプリケーションのパフォーマンス状況を収集して、分析するソフトウェアです。
収集対象は、nodejs,flask,Django,Ruby on rails(beta),Rack(beta),Javascript(alpha)が今はサポートされています。

2018/02/10 時点の最新である 6.2では、Elastic APMもGA になり、
画面が改善されパフォーマンスの分析がしやすくなっています。

そこで、今回も動かして試してみたいのですが、樋口と同じでは芸がないので、
Elastic ML(Machine Learning)と組み合わせて異常検知を試してみたいと思います。

後でも説明しますが、APMで取得するデータは Elasticsearch の index に入っているので、
APMの結果を Alerting や Elastic ML の対象にすることが可能です。

今回の対象Webアプリは去年悔しい思いをしたISUCONの参照実装を使用したいと思います。
(※ISUCONについてはこちらを参照してください)
構成イメージとしてはこのようになります。
f:id:acro-engineer:20180211234231p:plain

今回はあくまで異常検知ですので、Webアプリのリクエスト数を見て
「いつものパターンと異なる場合」に検知させたいと思います。
(使用する題材はISUCONでも、チューニング目的ではありませんので、あしからず)

そこで、今回はElastic APMとMLを組み合わせて、Webアプリの異常検知をしてみます。

ISUCONのwebアプリにElastic APMを適用する

ISUCONの参照実装にElastic APMを適用させます。
まず、この環境ですが、Vagrantが配布されているので簡単にセットアップすることができます。
github.com

ISUCON7予選1台構成を今回使用します。
APMのagentを適用するためには、ソースコード(webapp/nodejs/index.js)の先頭に次のコードを挿入します。

var apm = require('elastic-apm-node').start({
  appName: 'isubata',

  secretToken: '',
})

試しに、Webアプリを起動させてベンチマークを回してみます。
Kibanaからこのようにリクエストの頻度やレスポンスにかかった時間などが見ることができます。

f:id:acro-engineer:20180129081415p:plain
f:id:acro-engineer:20180129081405p:plain

また、それぞれのパスへのリクエストの詳細を、トランザクションとしてみることができます。

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

KibanaからWebアプリのパフォーマンス情報を見ることができます。
冒頭で説明したように、APMで取得したデータは、 Elasticsearch の index に入っています。
デフォルトの設定の場合、apm-<バージョン番号>-<日付>という形の index で登録されています。

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

そのため、APMの結果にAlertingやMachineLearningを実行することが可能です。
次の章では、実際にElastic MLを使って、APMのデータに対して異常検知を行います。

Elastic MLで異常検知

まず、Elastic MLの対象にするために、Kibanaのindex-patternにapm-*を追加する必要があります。
そして、Elastic MLの設定としては、Single Metricの
 aggregation: high count
 bucket span: 15m
としました。

その次に、Elastic MLで異常検知するために、まずは正常なパターンを学習させます。
今回は、一定周期でアクセス数が増減するようなクライアントを用意して、
一定時間Webアプリにリクエストを発行します。
すると、こんな感じに正常な値の範囲を学習してくれます。

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

青い部分が正常な値の範囲です。本当は周期も学習させたかったんですが、学習データが足りなかったですね。
それでも、正常なリクエスト数の範囲を学習して収束するしていることがわかります。

それでは、大量にリクエストを発行して異常を起こしてみましょう。
するとElastic MLからは以下のように急増したアクセスを検知している様子が見えます。
f:id:acro-engineer:20180210115828p:plain

まとめ

Elastic APMとElastic MLを使って、Webアプリの異常検知にチャレンジしてみたところ、
無事大量のリクエストを検知することができました。

今回は、アクセス数から異常検知をしてみましたが、
レスポンスタイムなど、別の観点からでも異常検知できそうですね。
それではまた。

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


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

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

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

Elastic Stack 6.2がリリースされました

こんにちは@です。

ついにElastic Stack 6.2.0がリリースされました。
マイナーバージョンアップとは思えないほど、非常に多くの追加機能があったのでまとめ記事を書いてみます😊
また、このバージョンからJava9に対応しました!

6.2.0のリリースについては、Elastic社公式のブログも出ています。
英語の記事とはなりますが、是非読んでみてください。
Elastic Stack 6.2.0 Released | Elastic

概要

さて、今回の記事では追加機能を全て紹介することはできないので、
下記の項目に絞って紹介しようと思います。

  • APM
  • Machine Learning
  • Kibanaの新ビジュアライゼーション「Vega」
  • BeatsシリーズのMonitioring
  • Add Data Tutorial

APM

f:id:acro-engineer:20180207233341p:plain:w700

APM (Overview | Getting Started with APM [6.2] | Elastic)
は以前からbeta版として公開されていましたが、ついにGA版として公開されました。

今回のリリースで、利用できるエージェントの種類が増加し、RubyJavaScriptへの対応を開始しました。
もともとpythonとNode.jsに対応していましたが、より多くの言語で利用できるようになりました。
JavaScriptは使う機会は何かと多いので、なかなか嬉しい発表です。
RubyJavaScriptのエージェント自体はα版のようです。ご注意ください。
 
また、APMサーバおよびエージェントはオープンソースなので、自分でカスタマイズすることも可能です。
今後対応する言語やフレームワークが増えていくことでしょう。

APMの詳細な紹介は別の記事に譲ろうと思います。
α版を試した記事を過去に書いていますので、そちらもご覧いただければと思います。
acro-engineer.hatenablog.com

Machine Learning

こちらは、個人的には一番嬉しい機能かもしれません😇
 
これまでのMachine Learningは、
「特定の期間を検知の対象外とする」機能を備えていませんでした。
 
そのため下記のようなニーズが発生した時に、とても困りました。

  • 機器の異常を検知するjobで、メンテナンスのタイミングを対象外としたい。
  • 祝日を検知の対象外にしたい。

 
バージョン6.2からは、あらかじめ期間を指定して検知の対象から除外することが出来るので、より柔軟に運用することが可能になります。
後ほど試して別途記事にするかもしれません。

f:id:acro-engineer:20180207214453p:plain
(Elasticの投稿より)

Kibanaの新ビジュアライゼーション「Vega」

Kibanaに新しいビジュアライゼーションが追加されました。その名もVega
厳密には以前からプラグインとして存在していたのですが、6.2.0から標準として取り込まれました。
JSONで定義することで、棒グラフや散布図など、色々なビジュアライズが可能です。

f:id:acro-engineer:20180207204655p:plain:w700

特に散布図に関しては、現状リリースされている機能では実現が難しい部分なので、便利かもしれません。

※Kibana Canvasでも散布図の作成ができますが、そちらはまだtechnical preview版です。
 Canvasに関するブログも過去に書いたので、是非ご一読ください。
acro-engineer.hatenablog.com


Vegaに関しては既に試している方がいらっしゃるので、
こちら↓の記事をご覧ください。
qiita.com

BeatsシリーズのMonitioring

これも長らく待ち望んでいた機能です。
MonitoringはElastic Stack自身の稼働状況を監視するためのプラグインです。
既にElasticsearch, Kibana, Logstashには対応していたMonitoringでしたが、
Beatsだけは監視することができませんでした。

システムを運用するうえで、
データ収集ツールのスループットやリソースを監視するのは非常に重要です。
Beatsは多くの端末にインストールされるケースが多いので、
状態をKibana上で一括管理できる機能は重宝することと思います。

その他

ここまで書いた内容以外にも、
紹介しきれなかった機能改善が盛りだくさんです。
是非インストールして触ってみてください。

また、Elastic APMのWebinarが金曜日にあるようです。
Application Performance Monitoring with Elasticsearch | Elastic

これは見逃せませんね😊
興味のある方は是非ご視聴ください。

以上です。ご覧いただきありがとうございました。

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


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

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
データ分析基盤Elasticsearchを使い倒したいエンジニア募集! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com