Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NewRelicプラットフォームを使ったオブザーバビリティ入門 / phpcon2020jp-...

dmnlk
December 16, 2020

NewRelicプラットフォームを使ったオブザーバビリティ入門 / phpcon2020jp-observability

PHP Conference 2020 Japan
BASE株式会社 スポンサードセッション
NewRelicプラットフォームを使ったオブザーバビリティ入門
https://fortee.jp/phpcon-2020/proposal/d69b922f-0c9f-4637-8d6e-9e6865468e82

dmnlk

December 16, 2020
Tweet

More Decks by dmnlk

Other Decks in Technology

Transcript

  1. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 New Relicプラットフォームを使っ たオブザーバビリティ⼊⾨ PHP Conference Japan 2 0 2 0 2 0 2 0 . 1 2 . 1 2 - @dmnlk
  2. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 プロフィール : @dmnlk 川⼝ 将貴 ( Kawaguchi Masaki ) BASE , Inc. 2017⼊社、2019-07からCTO 執⾏役員 CTO
  3. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. Mission Payment to the People, Power to the People. 3 ひとりひとりに眠る、想いが、感性が、才能が。 世界中の、必要な⼈に届くように。 そこから⽣まれる、作品に、アイデアに、活動に。 正当な対価を、受け取れるように。 ペイメントを、世界中の⼈へ解放する。 世界のすべての⼈に、 ⾃分の⼒を⾃由に価値へと変えて ⽣きていけるチャンスを。 あたらしい決済で、あなたらしい経済を。
  4. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. ネットショップ作成サービス「BASE」 4 ઐ໳஌͕ࣝͳͯ͘΋ ແྉͰଈ࠲ʹωοτγϣοϓΛ։ઃͰ͖·͢ɻ ·ͨݸਓͰ΋ɺ͔ΜͨΜɾεϐʔσΟʹ ܾࡁػೳΛಋೖͰ͖Δ࢓૊ΈΛఏڙ͍ͯ͠· ͢ɻ 「誰でもかんたんに使える」サービスで ⾃分のネットショップを開設
  5. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. オンライン決済サービス「PAY.JP」 5 ⽀払いのすべてをシンプルに Webサービスやネットショップ にクレジットカード 決済を簡単に導⼊できる開発者向けのオンライン決済 サービスです。 わかりやすく安い料⾦体系と、シンプルなAPIや豊富 なライブラリを使って、スムーズに決済を導⼊いただ けます。 ※ BASEにより作成されたネットショップを除く ※
  6. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 資⾦調達サービス「YELL BANK」 「BASE」を利⽤するショップオーナーが 即時に資⾦調達できる⾦融サービス 将来債権が発⽣しないリスクや、将来 未回収リスクを「YELL BANK」が負担 するため、ショップオーナーはこれらの 
 リスク無く資⾦調達が可能 6 ࢿۚௐୡΛϦεΫͳ͘ɺҰॠͰɻ
  7. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 7 現在BASEで取り組み始めたことを話します。 まだまだ始めたてなので BASEが⼊⾨してる途中です。 おことわり
  8. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 8 Webアプリケーションの運⽤をしている 1 監視についてはなんとなくやったことがある 2 アプリケーションが増えてきて⼤変 3 聴講者対象
  9. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 9 そのアプリケーション、 ちゃんと動いてますか? 質問
  10. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 0 • 画⾯は真っ⽩になってない • なんか動いてるからヨシ! • パッと⾒エラーもない ちゃんと is ?
  11. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 1 (最近アラートが鳴るけど いつ何のリリースが影響して るかなんもわからない…) よくある話
  12. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 2 (最近アラートが鳴るけど いつ何のリリースが影響して るかなんもわからない…) よくある話 ӬԕͷࣄޙରԠ
  13. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 3 (何もリリースしてないの に特定画⾯が重い…) よくある話
  14. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 4 (何もリリースしてないの に特定画⾯が重い…) よくある話 ผͷαʔϏεͷ ϦϦʔεӨڹ
  15. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 5 • コンテナ • マイクロサービス • サーバーレス • サービスメッシュ • etc … etc … 複雑化するインフラ
  16. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 6 • コンテナ • マイクロサービス • サーバーレス • サービスメッシュ • etc … etc … 複雑化するインフラ ߏ੒೺Ѳ͕஍ࠈ
  17. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 7 ⾃分たちの アプリケーションで何が 起きてるかが把握できてない 何が良くない?
  18. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 8 可観測性 必要なもの
  19. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 1 9 • オブザーバビリティ • 定義は⼀意ではない • 「bringing better visibility into systems」 • システムに良い可視性をもたらすこと • ログ‧メトリクス‧トレース情報‧イベントなどから 可観測性とは ग़య -Distributed Systems Observability https://www.humio.com/free-ebook-distributed-systems-observability/
  20. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 0 どうやってシステムに 可観測性をもたらすか‧
  21. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 1 • メトリクスはCloudWatchにあるが? • ログ基盤くらいならなんとかなりそう • トレースまで全部とる? • イベントって? 全部⾃分たちでやる?
  22. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 2 必要なものを集めるだけでは 可観測性を もたらすことはできない
  23. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 3 必要なものを集めるだけでは 可観測性を もたらすことはできない 「監視は事前に決めておいた項⽬を 測定するもので、 可観測性とはシステムに関して知らないことを 尋ねることができる機能です。」 by Uber Technologies
  24. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 4 ⾃分たちだけでやるのは 限界がある とはいえ
  25. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 5 選ばれたのは
  26. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 6 • 可観測性プラットフォームを提供 • 2018年から⽇本法⼈ができてる • 最近だとISUCONのスポンサーしてた New Relic
  27. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 7 • APM(アプリケーションパフォーマンス管理)の み利⽤ • ホスト単位の課⾦のため⼀部サーバーのみ展開 • 負荷が⾼いときの調査ツールの⼀つ これまでのBASEでのNewRelic
  28. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 8 New Relicが提供しているソリューション New RelicΑΓఏڙ
  29. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 2 9 • APM(サーバーアプリのモニタリング) • INFRASTRUCTURE(AWSやGCPなどのインフラ) • LOGS(ログ管理基盤) • BROWSER(フロントエンドのモニタリング) • MOBILE(iOS/Androidアプリのモニタリング) • SYNTHEICS(外形モニタリング) 実はたくさん製品がある
  30. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 0 • APM(サーバーアプリのモニタリング) • INFRASTRUCTURE(AWSやGCPなどのインフラ) • LOGS(ログ管理基盤) • BROWSER(フロントエンドのモニタリング) • MOBILE(iOS/Androidアプリのモニタリング) • SYNTHEICS(外形モニタリング) 実はたくさん製品がある これらをまとめて ダッシュボードに可視化できる 「New Relic One」があるよ
  31. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 1 • アプリケーションパフォーマンス管理 • Agentをサーバーにインストール • コンテナの場合はSidecarで • どのURLが負荷になっているか分かる • その中のどの関数が重いかもわかる • まずはこれが最初に⾒る New Relic APM
  32. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 2
  33. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 3 Overview おおまかに何が処理時間を 占めているか⾒る
  34. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 4 テキストテキスト Transactions どこが重そうかわかる
  35. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 5 テキストテキスト Transactions Trace スタックトレースで 具体的に何が重いか分析していく
  36. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 6 テキストテキスト APM Database どのクエリが 負荷かかってるのか分析
  37. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 7 • デプロイをイベントとして記録できる • デプロイ時curl等でNew Relic APIを叩く • どの変更タイミングからパフォーマンスが変わったの かを追いやすくなる • デプロイだけじゃなくインフラの変更も記録しておく Deployments
  38. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 8 テキストテキスト Deployments 変化を観測
  39. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 3 9 • サーバーアプリケーションのパフォーマンス • DB処理、外部APIが重い、などの分析 • Deploymentsによる変更の差分観測 • バッチアプリケーションの場合は⼀⼯夫必要 • PHP⽤のAgentがちょっと重い…? APMで観測できること
  40. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 0 • AWSやGCP、オンプレのインフラ監視 • APMと併⽤してサーバーをモニタリング • 最近k 8 s Agentも出来た New Relic INFRASTRUCTURE
  41. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 1 テキストテキスト メトリクスを モニタリング
  42. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 2 テキストテキスト マネージドサービスの統合 New Relic提供 IAM渡すだけで 統合できる
  43. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 3 • インフラリソースの監視 • アプリとの負荷の相関を観測できる • 脆弱性のあるパッケージも⾒つけられる • CloudWatchより個⼈的に⾒やすい • CloudWatchメトリクスを使うので多少AWS側 にコストがかかる INFRASTRUCTUREで観測できること
  44. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 4 • Log管理 • ⼤体kibana + ES • 各種ログを全部突っ込む • 検索が速い • TraceIdを埋め込むことでLBやサービス間のログが繋がり⼀気通 貫で検索することができる • マイクロサービスの分散トレーシングがログでも出来る New Relic LOGS
  45. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 5 テキストテキスト Logs Overview
  46. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 6 テキストテキスト Logs Overview Logを検索できる
  47. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 7 テキストテキスト Logの横断 Deadlockの検索
  48. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 8 テキストテキスト Logの横断 traceidで横断検索
  49. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 4 9 テキストテキスト Logの横断 同じtraceidの別アプリ のログが⾒つかる。 リクエストパラメータで 原因を追えた。
  50. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 0 • とりあえずログを放り投げるといい感じに検索できる • fluentdのpluginがあるのでES+kibana対応してるとこなら簡単 • BASEではfluentdの負荷が⾼くなったのでfluent-bitに変更した • フルに使うにはPHPアプリ側で対応がいるがmonolog • Traceidによる横断検索はめちゃ便利、APMとも連携できる LOGSで観測出来ること
  51. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 1 • フロントエンドのモニタリング • JSのエラートラッキング • First Contentful Paint やFirst Paint • 重いAPI呼び出し検知、SPAアプリケーショ ン対応もされている New Relic BROWSER
  52. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 2 テキストテキスト BROWSER Overview
  53. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 3 テキストテキスト BROWSER Overview ⼤体APMと⼀緒
  54. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 4 テキストテキスト レンダリングまでの traceが追える
  55. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 5 テキストテキスト API呼び出しのエラー などを観測できる
  56. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 6 • フロントエンドのパフォーマンスモニタリング • ユーザーが実際に体験しているスピードのモニタリングをす ることができる • セッショントレースによるボトルネックの可視化 • APMと連携しフロントエンドとバックエンドのパフォーマ ンスの相関をすぐに確認することができる • 地域別レポートが作れるのでグローバルプロダクトにも有⽤ BROWSERで観測出来ること
  57. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 7 • iOS/Androidアプリケーションのモニタリング • クラッシュリポーティング • セッション数などの分析もできそう • BASEではまだ未検証のため割愛‧ New Relic MOBILE
  58. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 8 • 外形モニタリング • ページ叩いて200返ってくるか? • 世界各所から検証できるので特定地域にお ける問題を検知可能になる • スクリプトを書くことでE 2 E的な事も New Relic SYNTHEICS
  59. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 5 9 テキストテキスト SYNTHEICS Overview 地域単位で監視できる
  60. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 0 テキストテキスト Scripted Browser SeleniumJSで ⼀連の操作を書いて監視できる
  61. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 1 • アプリケーションの死活監視をモニタリング • status: 2 0 0 かどうかだけではない • ECで⾔えばカートに⼊って購⼊出来るまでが 正常系 • 欲を⾔えばpuppeteerで書きたい… SYNTHEICSで観測出来ること
  62. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 2 • 今までのプロダクトをひとまとめにしたプラットフォーム • 開発者はOneにアクセスすることで⾃分たちのアプリケー ションのどこで何が起きてるかを観測することができる • 各種メトリクスやイベント、トレースなどをダッシュボー ドにすることで⼀覧化 New Relic One
  63. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 3 • Oneを使いこなすために⾮常に重要な機能 • NRQRというクエリ⾔語を使うことでNew Relicのデータのクエリが出来る • ⼤体SQLっぽい感じ NRQL
  64. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 4 テキストテキスト NRQLでチャート可視化 書いたクエリで グラフが出来る
  65. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 5 テキストテキスト Dashboard 開発者毎に⾃分の ダッシュボードを作れる
  66. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 6 • メトリックやトレースなどから⾃分が⾒たいものだけを 抽出する出来る • 慣れたクエリ⾔語で書く事ができる • 開発者それぞれの関⼼事は異なるので⾃分専⽤の ダッシュボードを作る事ができる • 開発者それぞれがオブザーバビリティエンジニアになる New Relic Oneでもたらされる価値
  67. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 7 • SREやインフラに明るい⼈がだけが使うツールだった • インフラへの関⼼が薄まる • アプリケーションのモニタリングに意識が回らない • まずはNew Relicを⾒るだけで全体は⾒渡すことが出来る • 新⼊社員がサービス構成要素の把握にちょうどいいかも‧ • 売上などの数値を投⼊する事もできるのでビズチームとのコミュ ニケーションツールになるかも‧ CTOという⽬線から⾒たNew Relic
  68. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 8 • 従来はプロダクト毎にホスト数課⾦だったりログ量課⾦だったり   分かりづらかった • 8⽉から料⾦体系が変更に • 1開発者毎のライセンス、機能はフルで使える(そこそこする) • +メトリクスのストレージコスト(安い) • ホスト数単位じゃないので開発環境などにも使えて最⾼ • その代わりライセンスを付与したメンバーにちゃんと使ってもらわな いと無駄になるので投資の覚悟が必要かも • 詳しくは公式サイトで 気になるお値段は…?
  69. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 6 9 • エンジニアはコードをリリースしてビジネスに価値提供していく 必要がある • そのために打席に⽴つ回数を上げる必要がある • 不安なリリースするのはスピードが出ない===価値提供出来ない • 可観測性のあるアプリケーションであれば異常にいち早く気付 ける • New Relicを使いこなすのが⽬的にしない、武器の⼀つにする 可観測性による本当の価値
  70. © ︎ 2 0 1 2 - 2 0 2

    0 BASE, Inc. 7 0 可観測性のあるアプリケーションに していきたい開発者を積極募集中です! https://binc.jp/jobs というわけで