カオス実験@Developers.IOに向けたNew Relicの設定をやってみた

ついにカオス実験@Developers.IOの準備が整いました! 本ブログでは、モニタリング系の事前準備としてNew Relic BrowserとSyntheticsの設定についてまとめました。
2020.08.27

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

こんにちは。AWS事業部のKyoです。

ついにカオス実験@Developers.IOの準備が整いました! 2020/8/31に実験予定です。

本ブログではカオスエンジニアリングを行うにあたって必須となるモニタリング系の準備についてまとめたいと思います。具体的にはNew RecliのBrowserとSyntheticsを利用します。

Browser

New Relic Oneのブラウザー監視ソリューションを使用すると、アプリケーションまたはWebサイトのWebページのライフサイクル全体を完全に可視化できます。ブラウザは、ページの読み込みタイミングを測定します。これは、リアルユーザーモニタリング(RUM)とも呼ばれます。しかしそれはそれをはるかに超えて測定します

New Relic Browser monitoringより機械翻訳し、引用

いわゆるリアルユーザモニタリング(RUM)ですね。

導入には対象ページへのBrowser agent(JavaScriptタグ)の埋め込みが必要になります。

ダッシュボードは以下のような感じです。

Apdex

カオスエンジニアリングを行う上ではビジネスメトリクスが重要となってきますが、これを定義するのはかなりビジネス要件を詰めなければならず、ハードルが低くはないと思います。

参考: SPS: the Pulse of Netflix Streaming

そこで、以下のように考えました。

  • DevIOには大きく分けて2種類のユーザが存在
  • ブログを"書く" 執筆者とブログを"読む"読者
  • メディアという性質上、重点をおくべきは読者側

そうなると読者の顧客満足度がよい指標になりそうです。

New Relic Browserにプリセットされているメトリクスの1つにApdexというものがあります。

Apdexは、ウェブアプリケーションやサービスのレスポンスタイムについて、ユーザー満足度を計測するための業界標準です。これは、平均レスポンスタイムなどの歪曲されやすい従来のメトリックスの代わりになる不満の割合やApdexスコアなどのメトリックスを介して、アプリケーションのユーザー満足度を確認するための簡素化されたサービスレベル契約(SLA)ソリューションです。

New Relic Apdexより引用

参考:Apdex Alliance

Apdexは域値Tを定め、「満足」、「許容可能」、「不満」の3つの評価を行います。

評価に基づいてスコアの算出を行います。スコアは0~1の間で、0が最悪のスコアです。

今回はApdexを定常状態を示すためのビジネスメトリクスとして利用することにします。

前述の通り、Apdexを利用するためには域値であるTが必要です。

これを決めるために「ページのロード時間」の情報が必要です。この探索にはNRQLを利用します。

NRQLは、New RelicのSQLに似たクエリ言語です。NRQLを使用して、詳細なNew Relicデータを取得し、アプリケーションやホスト、ビジネスで重要なアクティビティについての洞察を得ることができます。

NRQL(New Relicクエリ言語)入門より引用

ダッシュボード右上のQuery your dataよりNRQLの実行が可能です。かなり補完が効くので入力は行いやすいと思います。

FROM PageView SELECT percentile(duration, 90) FACET appName since 1 day ago TIMESERIES

だいたい7秒程度ですね。今回はT=7としてみます。

※今回のクエリではパーセンタイル値を集計しているのでダッシュボードより若干高い値が出ています。パーセンタイルについては、わかりやすい説明を同僚からもらったので、許可を得て以下に示します

作業に戻ります。ダッシュボード左カラムのApplication settingsから域値の変更変更を行います。

Synthetics

New Relicの合成モニタリングは世界中のユーザートラフィックをシミュレートするため、顧客が気付かないうちにパフォーマンスの低下や障害を検出して解決できます。自動化されたスクリプト可能なツールのスイートを使用して、外部および内部のWebサイト、重要なビジネストランザクション、APIエンドポイントを監視します。

New Relic Synthetic monitoringより機械翻訳し、引用

いわゆる合成監視ですね。

なお、合成監視と外形監視の概要や違いについては弊社渡辺がまとめたこちらが参考になるかと思います。

以下のように設定しました。

フランクフルト、サンフランシスコ、東京の3拠点から1分ごとにモニタリングを行っています。 また、Advanced OptionsでSSLが利用されているかどうかも確認しています。

【オマケ】 NRQL Lessons

NRQLが便利に感じ、もうちょっと詳しく知りたい...!と思っていたところ、以下のアプリ NRQL Lessonsの紹介をいただきました。

最上段のAppsからセットアップ可能です。

実際に自分のデータをもとに学習が行えるのは非常に良さそうでした。

おわりに

今回はカオスエンジニアリングにおいて必須となるモニタリング系をNew Relicでセットアップしてみました。

なお、実験編は以下にあります。

以上、何かのお役に立てれば幸いです。