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

「入門 監視」を読んでみた / I read "Practical Monitoring"

ryichk
November 20, 2024

「入門 監視」を読んでみた / I read "Practical Monitoring"

ryichk

November 20, 2024
Tweet

More Decks by ryichk

Other Decks in Technology

Transcript

  1. 目次 • 「入門 監視」について • 読もうと思った背景 • 監視の必要性 • 監視システムを構成する要素

    • アラートとは • アラートの3つの使い道 • アラートの難しさ • アラートをより良くする方法 • 監視戦略 • まとめ
  2. 「入門 監視」について ★ 発行されたのは 2019年1月 (原書は2017年) なので少し前 (約7年前) に書かれた。 ★

    特定のツールに依存しない普遍的な考え方や知識を学ぶことができる。 ★ 2部構成になっている。 ◦ 第一部は、監視の基本原則を扱っており、アンチパターンやデザインパターン、アラートやオンコール、基本的な 統計学などを学べる。 ◦ 第二部は、監視戦略について扱っており、フロントエンド監視からサーバー監視、セキュリティ監視やビジネス監 視などを学べる。 ★ 監視の基本を学びたい人にはオススメかも? ◦ 内容はそれなりに濃いが比較的薄い本なのでさっと読める (ページ数は付録含めても 200 いかないくらい)
  3. まず「動いている」かどうかを監視しよう • Webアプリケーションの場合、HTTP GETリクエストの結果を確認する。 ◦ HTTP ステータス 200 OKのレスポンスを返すか。 ◦

    ページに特定の文字列があるか。 ◦ リクエストのレイテンシが閾値よりも小さいか。 • これらは何が悪いのかを教えてくれるわけではないが、何かがおかしいことを示してくれる。
  4. 1. 手順書を書こう 手順書はアラートが来た時に素早く進むべき方法を示す方法。 良い手順書は、特定のサービスについて以下の質問に答えるように書かれている。 • これは何のサービスで、何をするものか。 • 誰が責任者か。 • どんな依存性を持っているか。

    • インフラの構成はどのようなものか。 • どんなメトリクスやログを送っていて、それらはどういう意味なのか。 • どんなアラートが設定されていて、その理由は何なのか。 各アラートには、対象サービスの手順書へのリンクを入れよう。
  5. データ収集の方法 データ収集を行う方法には プッシュ型 と プル型 の2種類ある。 • プル型は、中央サーバーがアプリケーションに対してデータを送信するように要求を出すタイプ。 ◦ 欠点は、中央サーバーが全てのアプリのデータ送信タイミングをスケジュールし、それぞれの応答をパースしなけ

    ればならないため、スケールしにくい点。 • プッシュ型は、アプリケーションが監視サービスに対してデータを一定間隔またはイベントが発生したタイミン グで送信するタイプ。(DatadogやSentryはプッシュ型) ◦ ポーリングを行う中央サーバーが必要ないため、分散アーキテクチャなどアプリが増えた場合でもスケールしやす い。
  6. データの種類 データの種類にも メトリクス と ログ という2種類がある。 • メトリクスには カウンター (Counter)

    と ゲージ (Gauge) という2種類の表現方法がある。 ◦ カウンター は、増加していくメトリクス。 Webサイトの訪問者数の累計など。 ◦ ゲージ は、ある時点の値。例えば、ある時点の CPU使用率とか。 • ログには、構造化ログと非構造化ログの2種類がある。 ◦ 構造化ログ は、JSONなどのフォーマットで構造化されたログのこと。 ◦ 非構造化ログ は、プレーンテキスト 。RailsやNginxのログなど多くの人にとって馴染みがあるのはこっち。 ▪ 人にとっては読みやすいが機械による解析やフィルタリングが難しい。
  7. 監視における統計学:分位数( quantile) 分位数は、データセットのある点を表す統計的手法。 最もよく使われる分位数はパーセンタイルで、これは 0 〜 100 %でデータセット内の点を表現する方法。 n パーセンタイルの計算方法は、まずデータセットを昇順に並べ替え、下位

    100 - n %の値を取り除き、残った中の最 大値が n パーセンタイルの値。(雑な定義) パーセンタイルのより完全な表現は「 Statistics For Engineers」に書かれている。 パーセンタイルは、帯域幅に対する課金やレイテンシのレポートによく使われる。
  8. 事業責任者がよく使うメトリクス • 月次経常収益 • 顧客あたりの収益 • 課金顧客の数 • 顧客生涯価値 (LTV)

    • 顧客あたりのコスト • 顧客獲得単価 • 顧客の解約数 • アクティブユーザー数 • ネットプロモータースコア • バーンレート • ランレート • TAM (Total Addressable Market) • 粗利 弊社の場合 • 推薦数 • 求人数 • 成約数 • etc...
  9. フロントエンド監視について ブラウザやモバイルアプリケーションで実行される全てをフロントエンドと定義する。 最近では React などで構築された SPA (Single Page Application) が広く使われるようになってきて、

    HTTPエ ラーが起きてないのに JavaScript エラーは起きるというようなケースも多くなってきた。 それらのエラーを検知することも重要。 また、フロントエンドのパフォーマンスを監視することも重要。 JavaScriptやCSSや画像などの静的アセットのサイズがフロントエンドのパフォーマンスに影響を与える。