🌊

MAXな快眠生活を得るために~NewRelicでの外形監視のススメ~

2023/12/05に公開

はじめに

※この記事は「COUNTERWORKS Advent Calendar」の5日目の記事です。

拝啓、皆様 MAX に眠れておりますか?
MAX は、当社のエンジニアのONE TEAM力を高めるための掛け声です。
  私は中々叫ぶ機会がないので、本稿で叫んでいきたいと思います。MAX!!!

サービスを運営・成長させていく上でサービスが安定的に稼動し続けているのは必須と言えるでしょう。
ただ業務中は元より、業務後やお休み中にまで常に気を張らせると、中々寝付けなくなってしまいます・・。

ユーザー観点からサービスが安定的に動いているのか?の確認は自動化したいところです。
いわゆる外形監視と呼ばれる分野ですね。
本記事では、当社でも活用している NewRelic の Synthetic Monitoring を紹介します。

外形監視とは?

NewRelic と Synthetic Monitoring について触れる前に、Synthetic Monitoring が担う外形監視の概要に触れたいと思います。

外形監視を簡単に言うと、エンドユーザー視点から監視対象(Webサイトやアプリケーション)が機能しているかを監視するプロセスです。
これには、サイトの可用性、応答時間、及びユーザーインターフェースの問題を含みます。
例えば、アプリケーションに何らかの問題が発生しWebサイトがダウンし、ユーザがアクセス不可になっている場合でも、外形監視を導入していればいち早く検知し問題解決に着手できます。
逆に言うと、問題が発生しているのに検知が遅れてしまうと、ユーザー体験の損失やユーザーの離脱に直結してしまいます。

ユーザー満足度を高めて、ビジネス成果に直結する非常に重要なプロセスと言えると思います。

NewRelicとは?

冒頭で唐突に出てきた NewRelic ですが、そもそも何だ?感があるので、ChatGPT を活用して紹介してもらいます。

NewRelicは、ビジネスにとって重要なデータ駆動型の洞察を提供するオブザーバビリティプラットフォームです。
このプラットフォームは、アプリケーションパフォーマンス管理(APM)の概念を基に構築されており、エンドユーザーエクスペリエンス、アプリケーションのパフォーマンス、インフラの状態など、ビジネスのITエコシステム全体に関する包括的な洞察を提供します。
NewRelicの最大の特徴の一つは、シンプルで直感的なダッシュボードを通じて、複雑なデータを簡単に理解できる点にあります。
ユーザーは、カスタムダッシュボードを作成して、特定のKPI(重要業績評価指標)をリアルタイムで監視できます。
また、AI駆動のアラート機能により、問題が発生する前に予兆をキャッチし、迅速な対応が可能になります。

ありがとう、ChatGPT。完璧です。

ChatGPTの説明の通りですが、NewRelic はオブザーバビリティプラットフォームとして著名なサービスです。
オブザーバビリティの説明は、以下ページから引用します。

オブザーバビリティー(可観測性)とは、システムから外部に出力されるデータから、複雑化したシステムの内部の状態または状況を理解および把握する能力を指します。
「Observe(観察する)」と「ability(能力)」を組み合わせた言葉の通りにシステムを観察する能力を発揮することで、さまざまなパフォーマンス上の問題の根本的な原因の究明が、追加のテストやコーディングを行うことなく迅速かつ正確に把握できます。

https://www.ibm.com/jp-ja/topics/observability

平たく言えば、システムに必要なデータを収集し、分析可能な能力です。

本項では一つ一つの機能に触れませんが、パフォーマンス改善に繋がる機能(APM)もあれば、エラー監視も可能と、非常に多様な機能があります。
一つのサービスでアプリケーションのパフォーマンスの改善やエラー監視まで賄えるので、うまく活用すれば非常に有用なサービスと言えるでしょう。

非常に多様な機能を持つ NewRelic ですが、外形監視で用いるのは Synthetic Monitoring という機能です。

Synthetics Monitoring

Synthetic Monitoring は先述した外形監視を自動化し、効果的に実施するための機能です。
後述で触れますが、ページの応答時間やエラーレスポンスが返却されていないかを一元的に可視化することが可能です。

(以下からは前提として NewRelic のアカウントは作成済とします。NewRelic アカウント作成の手順は割愛させていただきます。)

NewRelic のGUIから早速Synthetics Monitoringを設定してみましょう。
下記の画像を参考に、以下の順番で押下していきます。

  1. Synthetics Monitoring
  2. Monitors
  3. Create Minitor

(左のタブに Synthetics Monitoringが表示されていない場合、All Capabilities からSynthetics Monitoringを追加することで表示されます。)

モニタータイプの設定

続いてモニタータイプの設定です。
概要レベルですが、説明は以下の通りです。

モニタータイプ 概要
Ping ウェブサイトにアクセス可能であることを確認(200番台のレスポンスコードが返却される)
Certificate Check ウェブサイトのSSL/TLS証明書の有効性とセキュリティを確認
Broken Links Monitor ウェブサイトのリンクが正しく機能していることを確認
Simple browser HTML、CSS、JavaScriptの基本的な実行をチェックし、ウェブページのレンダリングを確認
Scripted Browser カスタムスクリプトを使用し、より詳細な動作を確認
Scripted API RESTful APIの可用性と応答時間を確認
Step Monitor ウェブサイトの特定のステップやプロセス(ex:ユーザーの購入フロー)が正常に機能していることを確認

今回は一番シンプルな Ping で設定を進めます。
設定は僅か2Stepで完了します。

モニターの設定(Ping)

設定画面は以下の通りです。

主な設定項目は以下の三つです。

設定名 概要
Name 監視設定の名前
URL 監視対象のウェブサイトのURL
Period 監視の頻度

要は、監視対象のウェブサイトのURLと監視頻度を設定するのみでOKです。
本項では詳細に触れませんが、レスポンスに特定の文字列が含まれているか(Text validation)やページのロード時間の監視(ApdexTarget)などのオプションを追加することで、+α の設定も可能となります。

ロケーションの設定

最後に NewRelic がモニタリングを実施するサーバーのロケーションを設定します。
(NewRelic は3つのロケーションの設定を推奨しています。)

任意のロケーションを設定し、Save monitor を押下すれば追加完了です。

非常に簡単ですね。

監視画面

上記で設定完了後に Synthetic Monitoring の Monitors に遷移すれば、追加した設定を参照可能となります。。

Summary タブで監視対象のサマリーが参照可能です。
サマリーの項目について簡単に説明します。
※ 表示期間は右上の Since ~ から変更可能です。

項目名 概要
Duration and availability of checks in the last XX 過去一定期間に実施された監視チェックの継続時間と可用性
Request & Response Time 監視対象に対するリクエストの応答時間(リクエストが送信されてから、応答が完全に受信されるまでの総時間)
Connection Times 監視対象への接続確立にかかる時間
Error Response Codes 監視対象から返却されるHTTPエラーコード(404や500も含む)

以下画像は Duration and availability of checks in the last XX の例ですが、それぞれのロケーションからのチェック結果が表示されます。

以下画像は異常が発生したケースです。
Error Response Codes の値が跳ね上がり、監視対象が正常に機能していないことがわかります。

正常系になると、以下画像になります。
Error response codes に変化がなく、監視対象が正常に機能していることが確認できます。

正常系になれば、安眠できますね。
GUIから簡単に監視対象のサマリーを確認できるのは NewRelic の大きな利点と感じています。

おわりに

外形監視で活用できる NewRelic の Synthetics Monitoring を紹介しました。
本稿のようにシンプルな設定であれば、NewRelic ではすぐに設定可能なので、是非とも試していただければと思います。
また本稿では詳細に触れませんでしたが、Synthetics Monitoring の多様なオプションを活用すれば痒いところにも手が届くような監視も可能となります。
より一層プロダクトの品質を高めていくためにも是非とも活用してみてください。

そして皆様がよりMAXに睡眠できることを願っています。

明日は我らがCTO徳永が担当するので、明日のアドカレもお楽しみに。

We are hiring!!

COUNTERWORKS ではMAXなチームで働く仲間を絶賛募集中です。
今後の更なる成長のためには圧倒的に仲間が不足しています。MAXな皆さまのご応募お待ちしております!

https://counterworks.co.jp/recruit/?utm_source=zenn&utm_medium=referral&utm_campaign=advent-calendar-2023&utm_content=5

COUNTERWORKS テックブログ

Discussion