NewRelic / Elasticsearch ではじめるSREに必要な性能監視入門

C0479b152c326746e911be790617f75b?s=47 katsuhisa_
October 26, 2017

NewRelic / Elasticsearch ではじめるSREに必要な性能監視入門

NewRelic / Elasticsearch ではじめるSREに必要な性能監視入門
https://supporterzcolab.com/event/177/
にて話した資料です!

C0479b152c326746e911be790617f75b?s=128

katsuhisa_

October 26, 2017
Tweet

Transcript

  1. NewRelic / Elasticsearch ではじめる SREに必要な性能監視入門 株式会社スタディスト 北野 勝久 2017/10/26 (木)

    サポーターズ勉強会
  2. 前提知識を合わせながらやります。 ある程度知識がある方にとっては、 回りくどい箇所があるかもしれません。    #spzcolab

  3. 自己紹介 インドのIT企業で2年半ほど働いた後、 スタディストで、SRE らへんの仕事をしています。 北野 勝久 katsuhisa91 https://github.com/katsuhisa91 Katsuhisa Kitano

    https://www.facebook.com/katsuhisa.kitano.33 @katsuhisa__ https://twitter.com/katsuhisa__    #spzcolab
  4. 会社紹介 スタディストという会社からきました。
 『Teachme Biz 』というサービスを つくっています。
 
 弊社のゆるキャラ『マロン』    #spzcolab

  5. 今日のゴール 1. 性能監視の基本的な考え方を理解する 2. NewRelic/Elasticsearch の基本が分かる 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる    #spzcolab

  6. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  7. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab その前に・・・
  8. SRE とモニタリング 「 Googleであれどこであれ、   モニタリングはプロダクション環境で   やるべきことの中で絶対に欠かせない要素です 」  ※ちなみに英語版は、以下から無料で読めます。   http:/ /landing.google.com/sre/book/index.html    #spzcolab

  9. SRE とモニタリング 「 サービスをモニタリングしていなければ、   何が起きているのかを知ることができず、   何が起きているのかが見えていなければ、   信頼性を保つことはできません。    」    #spzcolab

  10. 今日の話は大事ですよね、 という認識合わせができたところで本題    #spzcolab

  11. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  12. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  13. 性能監視の前に、 そもそも監視とは? 性能監視入門    #spzcolab

  14. 性能監視入門 • 死活監視 • 稼働監視 • ログ監視 • ミドルウェア監視 •

    性能監視 • ,etc. → ◯◯監視というワードは、世の中にあふれている    #spzcolab
  15. 性能監視入門 • 死活監視 • 稼働監視 • ログ監視 • ミドルウェア監視 •

    性能監視 • ,etc. → ◯◯監視というワードは、世の中にあふれている 調べても、なかなか しっくりくる監視の全体像が見つからない    #spzcolab
  16. 性能監視入門 そもそも監視とは何か? • 死活監視 • 稼働監視 • ログ監視 • ミドルウェア監視

    • 性能監視 • ...etc → ◯◯監視というワードは、世の中にあふれている たぶんその理由は・・・ システム基盤は、時代とともに変化しているので、 今の時代に合った監視のあり方の解釈は、 常にアップデートされているからだと思う。    #spzcolab
  17. 性能監視入門 そもそも監視とは何か? • 死活監視 • 稼働監視 • ログ監視 • ミドルウェア監視

    • 性能監視 • ...et → ◯◯監視というワードは、世の中にあふれている なので、今時(※)の監視について整理しました。 (あくまでも、私の主観に基づきます) ※AWS やGCP などIaaS を使う前提    #spzcolab
  18. 監視全体像 切り口を2つ用意すると分かりやすいのでは? という仮説に基づき整理。 1. 監視対象ごとの切り口 2. 監視目的ごとの切り口    #spzcolab

  19. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎    #spzcolab 監視対象ごとの切り口
  20. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎    #spzcolab 監視目的ごとの切り口
  21. 監視全体像 切り口を2つ用意すると分かりやすいのでは? という仮説に基づき整理。 1. 監視対象ごとの切り口 2. 監視目的ごとの切り口    #spzcolab

  22. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎    #spzcolab 監視対象ごとの切り口
  23. 監視対象ごとの切り口 監視対象で分けて、監視を捉える 1. サービス監視 2. リソース監視 3. デーモン監視 4. ログ監視

       #spzcolab
  24. 監視対象ごとの切り口 監視対象で分けて、監視を捉える 1. サービス監視 2. リソース監視 3. デーモン監視 4. ログ監視

    サービス = IaaS 上で稼働するサーバーなど 例:AWS だと、EC2 やS3 の状態を監視    #spzcolab
  25. 監視対象ごとの切り口 監視対象で分けて、監視を捉える 1. サービス監視 2. リソース監視 3. デーモン監視 4. ログ監視

    サーバーの中のいろんなリソースの監視 (CPUや、メモリなど)    #spzcolab
  26. 監視対象ごとの切り口 監視対象で分けて、監視を捉える 1. サービス監視 2. リソース監視 3. デーモン監視 4. ログ監視

    サーバーの中で動く デーモン(プロセス)の監視    #spzcolab
  27. 監視対象ごとの切り口 監視対象で分けて、監視を捉える 1. サービス監視 2. リソース監視 3. デーモン監視 4. ログ監視

    ログから、様々な情報を拾う    #spzcolab
  28. 監視全体像 切り口を2つ用意すると分かりやすいのでは? という仮説に基づき整理。 1. 監視対象ごとの切り口 2. 監視目的ごとの切り口    #spzcolab

  29. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎    #spzcolab 監視目的ごとの切り口
  30. 監視目的ごとの切り口 目的で分けて、監視を捉える 1. 稼働監視 2. エラー監視 3. 性能監視    #spzcolab

  31. 監視目的ごとの切り口 目的で分けて、監視を捉える 1. 稼働監視 2. エラー監視 3. 性能監視 動いているか、そうでないかの検知    #spzcolab

  32. 監視目的ごとの切り口 目的で分けて、監視を捉える 1. 稼働監視 2. エラー監視 3. 性能監視 アプリケーションのエラー検知など    #spzcolab

  33. 監視目的ごとの切り口 目的で分けて、監視を捉える 1. 稼働監視 2. エラー監視 3. 性能監視 パフォーマンスに関する検知    #spzcolab

  34. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎    #spzcolab
  35. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎ • まずは、サービスが動いていることが前提 • 一部のサーバーリソースは、枯渇すると サービス稼働に直接的に影響が生じるため、 リソース監視も稼働監視に含んでいます • デーモンも動いているか動いていないかの 確認は必要    #spzcolab
  36. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎ ログの中身(メッセージ/ステータスコード)を監視    #spzcolab
  37. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎ • ロードアベレージが詰まると 性能悪化する • ログからレスポンスタイムと、 URI を確認する    #spzcolab
  38. 監視全体像まとめ • 意外と、監視の全体像については、どこにもまとまっていないので、 (ひとまず)私の考える全体像をみなさんに共有しました。 • 監視目的と監視対象で監視の全体像を捉えるとすっきりするのでは? というアイデアを共有しました。    #spzcolab

  39. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  40. 監視全体像 サービス監視 リソース監視 デーモン監視 ログ監視 稼働監視 エラー監視 性能監視   ◎

      -   -   ◯   -   ◎   ◎   -   -   -   ◎   ◎    #spzcolab 先ほどの情報をふまえて・・・
  41. 性能監視まとめ 1. サービス全体にまたがるパフォーマンスの監視 2. 性能監視のためには、 サーバーリソースや、ログの監視が重要 ※これは、あくまでも私の解釈で、議論の余地は多いにあると思います。    #spzcolab

  42. 性能監視まとめ 1. サービス全体にまたがるパフォーマンスの監視 2. 性能監視のためには、 サーバーリソースや、ログの監視が重要 ※これは、あくまでも私の解釈で、議論の余地は多いにあると思います。 今日は、主にログを活用した性能監視の話をします (懇親会で、他の領域の話もぜひ!)    #spzcolab

  43. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  44. 監視の大枠と性能監視の概要は分かった。 でも、具体的な指標として 何を見ればいいの?    #spzcolab

  45. The Four Golden Signals    #spzcolab

  46. The Four Golden Signals The four golden signals of monitoring

    are latency, traffic, errors, and saturation. If you can only measure four metrics of your user-facing system, focus on these four. http://landing.google.com/sre/book/chapters/monitoring-distributed-systems.html    #spzcolab
  47. The Four Golden Signals (訳) Google さんが 「とりあえず、この4つだけ集中して見ておけばいいよ」 って言ってます。    #spzcolab

  48. The Four Golden Signals 1. latency 2. traffic 3. errors

    4. saturation    #spzcolab
  49. The Four Golden Signals 1. latency 2. traffic 3. errors

    4. saturation← How "full" your service is. (e.g., in a memory-constrained system, show memory; in an I/O-constrained system, show I/O)    #spzcolab
  50. The Four Golden Signals 1. latency 2. traffic 3. errors

    4. saturation← How "full" your service is. (e.g., in a memory-constrained system, show memory; in an I/O-constrained system, show I/O) どれだけサービスがカツカツかを 示す概念    #spzcolab
  51. The Four Golden Signals この4つをいい感じに 測りたい。 1. latency 2. traffic

    3. errors 4. saturation← How "full" your service is. (e.g., in a memory-constrained system, show memory; in an I/O-constrained system, show I/O)    #spzcolab
  52. 1. latency 2. traffic 3. errors 4. saturation← How "full"

    your service is. (e.g., in a memory-constrained system, show memory; in an I/O-constrained system, show I/O) The Four Golden Signals NewRelic とElasticsearch おすすめです    #spzcolab
  53. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  54. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  55.    #spzcolab

  56. NewRelic • 特徴 ◦ 主にパフォーマンス改善 に特化した性能監視ツール ◦ OSS ではなく、SaaS ▪

    なので・・・ NewRelic 社にログが収集され、 NewRelic 社が管理するダッシュボードにて情報が可視化される • 料金/プラン ◦ 代表的な製品(APM)の有料プランは高め(有料プランは、 2種類) ◦ 無料プランあり ◦ 目的に応じたいくつかの製品群がある    #spzcolab
  57. NewRelic • 特徴 ◦ 主にSRE に特化した性能監視ツール ◦ OSS ではなく、SaaS ▪

    なので・・・ NewRelic 社にてログが収集され、 NewRelic 社が管理するダッシュボードにて情報が可視化される • 料金 ◦ (代表的な製品は、)高め ◦ 無料プラン、有料プラン、フル機能有料プラン ◦ 目的に応じたいくつかの製品群がある 製品群/プランがわりと複雑なので、 ここでは深掘りしません。 以下ページが、すごくおすすめです。 https://qiita.com/kumatronik/items/e2e09bd3708b00442d9b    #spzcolab
  58. メインの製品群と、それらの機能を理解し、 NewRelic で何ができるかの深掘りはもちろん必要 というわけで、とりあえずこの3つ 1. APM 2. BROWSER 3. ALERT

    とは言え・・・    #spzcolab
  59. APM • Application Performance Monitoring の略 • NewRelic といえばコレのことを示すことが大半 •

    何ができるか ◦ Transaction や、そこから勝手に Apdex(後半で補足します)を算出してくれたり。 ◦ また、DB に投げているQuery の統計を勝手に出してくれたり。 ◦ さらには、Error 集計も勝手にやってくれたり。    #spzcolab
  60. APM • Application Performance Monitoring の略 • NewRelic といえばコレのことを示すことが大半 •

    何ができるか ◦ Transaction や、そこから勝手に Apdex(後半で補足します)を算出してくれたり。 ◦ また、DB に投げているQuery の統計を勝手に出してくれたり。 ◦ さらには、Error 集計も勝手にやってくれたり。    #spzcolab これだけで、 The Four Golden Signals がすぐに すべて見れる!
  61. APM の導入 • ライブラリをアプリに導入して、ライセンスキーの情報を入れるだけ。 • 以上。いい感じのグラフがすぐ出ます。控えめに言って最高。 • ちなみに対応しているライブラリの言語は以下 ◦ Ruby


    ◦ Java
 ◦ .NET
 ◦ Node.js
 ◦ PHP
 ◦ Go
 ◦ Python    #spzcolab
  62. BROWSER • ブラウザ経由のパフォーマンスを可視化してくれる • ページの読み込み時間とかが分かる。 また、アクセス元の国ごとの読み込み時間も可視化してくれる。 • APM のエージェントを導入すれば、 HTML

    にJS が埋め込まれる ◦ 埋め込まれたJS 経由で情報をNewRelic に送信してくれる    #spzcolab
  63. ALERT • 製品をまたぐ1つのサービス ◦ なので、個別の導入作業は不要 • ぽちぽち設定するだけ ◦ メトリクスと閾値を決める ◦

    サーバーごとにON / OFF できたり、 けっこうかゆいところに手が届きます。    #spzcolab
  64. ほかにも・・・ • Mobile ◦ モバイルまわりのメトリクス監視 • Infrastructure ◦ インフラまわりのメトリクス監視 •

    Synthetics ◦ 障害監視サービス • Insights ◦ ダッシュボード    #spzcolab
  65. NewRelic まとめ • 基本的には、ライブラリをアプリケーションに入れるだけで グラフを出してくれて、すぐ使い始められる → なので、個別実装もがんばらなくていいし、文句なし • ただ、もちろん万能薬ではないので、 見たいデータ見れないなあ、って時もあります。

    • そういう時のために、Elasticsearch と併用すると 幸せになれる気がする、というお話をこれからします。    #spzcolab
  66. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  67.    #spzcolab

  68. 突然ですが、以降は、 Elastic Stack という用語を主に使用します    #spzcolab

  69. Elastic Stack 概要 • Elastic Stack とは? ◦ Elastic Stack

    = Elasticsearch と周辺ツールの総称 (Kibana / Logstash / Beats ) ◦ OSS • Elastic Stack Family ◦ Elasticsearch ▪ 検索エンジン ◦ Kibana ▪ Elasticsearch をバックエンドに構えることができるダッシュボード ◦ Logstash / Beats ▪ 今日の本題にあまり詳しく関わらないため、詳細は割愛 ▪ fluentd でできるようなことができる(語弊あります)    #spzcolab
  70. Elastic Stack 概要 • Elastic Stack とは? ◦ Elastic Stack

    = Elasticsearch と周辺ツールの総称 (Kibana / Logstash / Beats ) ◦ OSS • Elastic Stack Family ◦ Elasticsearch ▪ 検索エンジン ◦ Kibana ▪ Elasticsearch をバックエンドに構えることができるダッシュボード ◦ Logstash / Beats ▪ 今日の本題にあまり詳しく関わらないため、詳細は割愛 ▪ fluentd でできるようなことができる(語弊あります) ん?性能監視の話なのに検索エンジン?ん??    #spzcolab
  71. 検索エンジンが性能監視?ん?? 初学者は、混乱するかと思うので、念のため先に補足。 Elasticsearch は、もともと検索エンジンのOSS です ただし、 1. 検索エンジンとしての機能は、ログの中身の検索にも有用 2. また、Elasticsearch

    と合わせて使用する ダッシュボードツールのKibana が非常に優秀 なため、ログ解析基盤としても使われます。    #spzcolab
  72. ログ基盤としてのElastic Stack • 前述したNewRelic と違い、SaaS ではなくOSS なので、 基本的には、自分たちで面倒を見る必要がある ◦ ただ、ログ可視化だけをやらせるのであれば、

    初期構築さえ終われば、運用コストはほとんどない印象 • 投入したデータに関する可視化はたいていなんでもできる ◦ Kibana がとにかく使いやすく、 少し慣れが必要ですが、初心者でもかんたんに見たいデータをグラフ化できる ◦ URI をベースにデータを可視化することが多いので、 自社サービスのURI の設計思想によっては苦労することがある ▪ 例:ユーザーの所属するグループごとに情報を集計したいが、   各URI に、必ずしもグループ情報が含まれていない場合など。 ▪ これは残念ながら弊社の現在の URI の例です・・・    #spzcolab
  73. ログ基盤としてのElastic Stack • 前述したNewRelic と違い、SaaS ではなくOSS なので、 基本的には、自分たちで面倒を見る必要がある ◦ ただ、ログ可視化だけをやらせるのであれば、

    初期構築さえ終われば、運用コストはほとんどない印象 • 投入したデータに関する可視化はたいていなんでもできる ◦ Kibana がとにかく使いやすく、 少し慣れが必要ですが、初心者でもかんたんに見たいデータをグラフ化できる ◦ URI をベースにデータを可視化することが多いので、 自社サービスのURI の設計思想によっては苦労することがある ▪ 例:ユーザーの所属するグループごとに情報を集計したいが、   各URI に、必ずしもグループ情報が含まれていない場合など。 ▪ これは残念ながら弊社の現在の URI の例です・・・    #spzcolab Elastic Stackでも、 The Four Golden Signals がすべて見れますが、 それぞれ意識的に可視化する必要があります。
  74. Elastic Stack の導入 • 基本的なやることは、 1. Elasticsearch / Kibana の環境構築

    2. ログをElasticsearch に投入する 3. Kibana のダッシュボードでグラフ化する    #spzcolab
  75. Elastic Stack の導入 • 基本的なやることは、 1. Elasticsearch / Kibana の環境構築

    2. ログをElasticsearch に投入する 3. Kibana のダッシュボードでグラフ化する マネージドサービスを使えばすぐ終わります。 (AWS Elasticsearch Service , Elastic Cloud) OSS なので、もちろんサーバーにインストールして がんばって構築してもOK    #spzcolab
  76. Elastic Stack の導入 • 基本的なやることは、 1. Elasticsearch / Kibana の環境構築

    2. ログをElasticsearch に投入する 3. Kibana のダッシュボードでグラフ化する このあたりは、もし前提知識がなければ、 社内の分かる人に聞いて下さい。 (もし、社内にそういう人がいなければ、懇親会でぜひお声がけください。) fluentd がオススメです。    #spzcolab
  77. Elastic Stack の導入 • 基本的なやることは、 1. Elasticsearch / Kibana の環境構築

    2. ログをElasticsearch に投入する 3. Kibana のダッシュボードでグラフ化する ぽちぽち設定する。はじめ詰まるかもしれませんが、 Kibana は使いやすいので少しやれば慣れます。 ダッシュボードへのアクセス権限管理などにもご注意を。    #spzcolab
  78. Elastic Stack の導入 • 基本的なやることは、 1. Elasticsearch / Kibana の環境構築

    2. ログをElasticsearch に投入する 3. Kibana のダッシュボードでグラフ化する    #spzcolab 初学者には、それなりにたいへんかもしれません。 ただ、ポイントをはずさなければ、 そこまで時間はかからないはず。 導入に至る実装の詳細を別の勉強会で話したので、 ご参照ください。 https://speakerdeck.com/katsuhisa91/elastic-stack-de-he-woke-shi-hua-surebaxi ng-neng-gai-shan-gabu-rufalseka
  79. Elastic Stack まとめ • Elasticsearch / Kibana を合わせて使用します • 自分たちで面倒を見る必要があるので、多少運用コストがかかります

    • 見たいデータを投入すれば、Kibana を使って、 きれいなグラフをかんたんにつくることができます ◦ 具体的にどんなグラフをつくればよいかは、後半でお話します!    #spzcolab    #spzcolab
  80. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  81. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  82.    #spzcolab

  83. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用    #spzcolab
  84. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用 APM を使用すると、Apdex を算出してくれます。 ※Apdex =アプリケーション性能指標  http://apdex.org/overview.html 後述するALERT のトリガーの1つにしています。    #spzcolab
  85. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用 レスポンス時間の可視化 現在は、Elastic Stack で、 同じ情報を可視化しているため、あまり見ていません。    #spzcolab
  86. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用 データベースを移行した際に、before/after の、 性能比較をするために活用しました。    #spzcolab
  87. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用 外部サービスの性能を可視化してくれます。 例:AWS だとSES(メール送信サービス)など システム全体の性能監視をしている安心感を得ています。    #spzcolab
  88. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用 エラーレートを計測しています 後述するALERT のトリガーの1つにしています。    #spzcolab
  89. NewRelic の活用 弊社での、NewRelic の主な活用 • Apdex • Web transaction percentiles

    • Database response time • External services • Errors • Apdex , Error Rate に応じたALERT 活用 Apdex が70% を下回る、もしくは、 Error Rate が1% を上回ると ALERT がSlack にきます。 初期対応の迅速化に利用中。 最近はまったく本番環境からのALERT はきていません。    #spzcolab
  90. NewRelic 活用まとめ • 主に、アプリケーション全体の性能を監視してもらっています • また、ALERT を活用し、何か起きているかどうかの判断に使用 • エラーが発生した時に、 どんなエラーが起きているかの初動の内容確認にも使用

       #spzcolab
  91. NewRelic 活用まとめ • 主に、アプリケーション全体の性能を監視してもらっています • また、ALERT を活用し、何か起きているかどうかの判断に使用 • エラーが発生した時に、 どんなエラーが起きているかの初動の内容確認にも使用

       #spzcolab ALERT が非常に使い勝手がいいです。 弊社では、Elastic Stack を導入するまでは、 APM には非常にお世話になっていました。
  92. 今日のゴールまでの道筋 1. 性能監視の基本的な考え方を理解する a. 監視とは b. 性能監視とは c. どんな指標を見れば良いか 2.

    NewRelic/Elasticsearch の基本が分かる a. NewRelic の基本 b. Elasticsearch の基本 3. NewRelic/Elasticsearch を性能監視にどうやって役立てるか分かる a. NewRelic を現場でどう活用しているか b. Elasticsearch を現場でどう活用しているか    #spzcolab
  93.    #spzcolab

  94. 投入データ • Nginx アクセスログ • DB のSlowQuery ログ(弊社は、AWS Aurora を利用)

    ※ Aurora については、以前、別の勉強会でお話しました。  ご興味ある方は下記資料をどうぞ!  https://speakerdeck.com/katsuhisa91/rds-for-mysql-aurora-yi-xing-falsesubete Elastic Stack の活用    #spzcolab
  95. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURIごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) • HTTP

    ステータスコードの割合 • スロークエリの表示 Elastic Stack の活用    #spzcolab
  96. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURIごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) • HTTP

    ステータスコードの割合 • スロークエリの表示 サービス全体の性能を見るために利用 Elastic Stack の活用    #spzcolab
  97. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURIごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) • HTTP

    ステータスコードの割合 • スロークエリの表示 基本的に性能改善で使いたい時は、 パーセンタイル表示で見ましょう Elastic Stack の活用    #spzcolab
  98. Average を見るよりサービスの状態 / 改善効果が、分かりやすい。 例:スロークエリをつぶせば、99%tileが下がった   99%tileが1s 以内レスポンスを目標にしよう、など。    #spzcolab

  99. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURI ごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) •

    HTTP ステータスコードの割合 • スロークエリの表示 サービスの性能における ボトルネックを探すために利用 Elastic Stack の活用    #spzcolab
  100. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURI ごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) •

    HTTP ステータスコードの割合 • スロークエリの表示 ここを統一させることが、 ボトルネックの探索において重要 Elastic Stack の活用    #spzcolab
  101. 呼び出し回数が大きいリクエストは、 改善効果が出やすい。    #spzcolab

  102. 呼び出し回数が小さいリクエストは、 改善効果が出やすい。    #spzcolab

  103. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURIごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) • HTTP

    ステータスコードの割合 • スロークエリの表示 サービス全体の健全度を見るために利用。 円グラフで5XX の割合出したり、 割合の推移を追うグラフを出したり。 Elastic Stack の活用    #spzcolab
  104. どこに使っているか? • レスポンス時間のパーセンタイル表示 • 正規化済みURIごとのレスポンス時間(レスポンス時間が大きい順) • 正規化済みURI ごとのカウント数(レスポンス時間が大きい順) • HTTP

    ステータスコードの割合 • スロークエリの表示 ボトルネックの探索に利用 Elastic Stack の活用    #spzcolab
  105. Elastic Stack 活用まとめ • 性能改善する際に必要な情報は、 基本的にすべてここに集まっている状態 ◦ ただ、本プレゼン前半で話したようにあくまでも性能監視の中でもログ監視のみで、 リソース監視の部分は、現状は別ツールに依存 •

    ここで話した内容以外にも、 クライアントごとのレスポンス比率可視化や、 アクセス数の多い企業さまの把握など、 ユーザーの行動解析に近いグラフも作成しています    #spzcolab
  106. Elastic Stack 活用まとめ • 性能改善する際に必要な情報は、 基本的にすべてここに集まっている状態 ◦ ただ、本プレゼン前半で話したようにあくまでも性能監視の中でもログ監視のみで、 リソース監視の部分は、現状は別ツールに依存 •

    ここで話した内容以外にも、 クライアントごとのレスポンス比率可視化や、 アクセス数の多い企業さまの把握など、 ユーザーの行動解析に近いグラフも作成しています    #spzcolab Elastic Stack という用語がイカツイので、 ハードル高く感じられるかもしれませんが、 導入してみると意外とすんなりいきます。 導入の苦労をする価値があることは保証します。
  107. まとめ    #spzcolab

  108. まとめ • モニタリングは大事ですね ◦ The Four Golden Signals を見るといいよって Google

    さんが言ってます • 性能監視には、リソース監視やログ監視が大事 • NewRelic / Elastic Stack で性能監視がかんたんにできる • NewRelic ◦ SaaS なので、めんどうな管理もいらず、すぐ使い始められる ◦ いろいろいい感じにグラフを出してくれる • Elastic Stack ◦ 自分たちで、めんどう見ないといけない ◦ 構築や運用にかかる、わずかな労力をはらえば、 性能改善に必須の情報を集約するツールとしてがんがん活用できます    #spzcolab
  109. 今日のお話のまとめ • モニタリングは大事ですね ◦ The Four Golden Signals を見るといいよって Google

    さんが言ってます • 性能監視には、リソース監視やログ監視が大事 • NewRelic / Elastic Stack で性能監視がかんたんにできる • NewRelic ◦ SaaS なので、めんどうな管理もいらず、すぐ使い始められる ◦ いろいろいい感じにグラフを出してくれる • Elastic Stack ◦ 自分たちで、めんどう見ないといけない ◦ 構築や運用にかかる、わずかな労力をはらえば、 性能改善に必須の情報を集約するツールとしてがんがん活用できます と、こういう感じのことを 一緒にやってくれる人を探しています。    #spzcolab
  110. 今日のお話のまとめ • モニタリングは大事ですね ◦ The Four Golden Signals を見るといいよって Google

    さんが言ってます • 性能監視には、リソース監視やログ監視が大事 • NewRelic / Elastic Stack で性能監視がかんたんにできる • NewRelic ◦ SaaS なので、めんどうな管理もいらず、すぐ使い始められる ◦ いろいろいい感じにグラフを出してくれる • Elastic Stack ◦ 自分たちで、めんどう見ないといけない ◦ 構築や運用にかかる、わずかな労力をはらえば、 性能改善に必須の情報を集約するツールとしてがんがん活用できます 特に・・・ • Rails を使いこなせる • ざっくりとインフラに関わる仕事をしてる ◦ SRE/DevOps の知識がある ◦ AWS を使いこなせる ↑こんな人を募集しています。    #spzcolab
  111. We are hiring!!!    #spzcolab

  112. We are hiring!!!    #spzcolab

  113. ご清聴ありがとうございました! 採用にご興味ある方は、 お気軽にご連絡ください! ご清聴ありがとうございました    #spzcolab