📘
『入門 監視』から学ぶオブザーバビリティの基礎
はじめに
サーバの保守・運用業務に携わる中で、「監視」に対する自身の知識や考え方が漠然としていると感じていました。
そこで、もっと本質的な問題解決につながる監視方法を学びたいと思い、オブザーバビリティの基礎としてオライリーの『入門 監視』を読み、学んだことや自分なりの考えをまとめてみました。
『入門 監視』書籍紹介
- 原書
- 発行年月日
- 2019年01月
- TOPICS
- Security , System/Network
監視とは
監視とは、あるシステムやそのシステムのコンポーネントの振る舞いや出力を観察しチェックし続ける行為である。
監視のゴールとは何か(監視のアンチパターンとデザインパターン)
- 「よりよい監視ツールを使うこと」が目的となってはならない - 監視ツールに「銀の弾丸」は存在しない。ツールの選定は手段であり、目的でないことを意識することが重要。
- 監視とは、単純で単一の問題ではない - 異なる視点や複数のデータ(APMツール + サーバ監視ソリューションなど)を統合する必要がある。
- 大切なのはユーザー視点を優先した可視化 - 「実際にサービスを利用するユーザーがどのような体験をしているか」(ページの表示速度、API応答時間など)を監視の基準とする。
監視とオブザーバビリティ(Observability)との関係
オブザーバビリティ(可観測性)とは
- アプリケーションの内部構造やシステム状態を深く理解し、今まで見たことのない・予測できないことが起こったとしても、その根本原因を特定し、解決へと導くための考え方
監視とオブザーバビリティとの関係
- 監視とはオブザーバビリティの中の要素の一つであり、監視を行なって得た情報(メトリクス・ログなど)をもとにシステム状態を可視化しさらなる調査や根本原因の分析を行い、高いオブザーバビリティを保つことが重要である。
分かりやすかった記事
監視項目(一例)
| 監視項目 | 監視方法 | 監視対象(例) |
|---|---|---|
| フロントエンド監視 |
リアルユーザ監視(RUM:Real User Monitoring) ・実際のユーザーのブラウザからパフォーマンスやエラーを収集する方法 シンセティック監視 ・特定の場所から自動的にアクセスし、擬似的なユーザー体験をシミュレーションする手法 |
・ページの表示速度(First Content Paint(FCP), Largest Contentful Paint(LCP)など) ・JavaScript(DOM)によるエラー(フロントエンドではJavaScriptがよく使われているため) ・リソース読み込み時間 ・非同期APIの応答時間 |
| アプリケーション監視 | ・メトリクス ・ログ ・トレース(分散トレーシング) |
パフォーマンス ・レスポンスタイム(API・外部ベンダーの応答時間、レイテンシー) ・スループット(リクエスト / 処理数) ・ログイン回数(成功 / 失敗) ・DBクエリの実行時間や失敗率 ビルドとリリース ・デプロイの開始、終了時刻 ・どのビルドがデプロイされたか ・誰が実行したか /healthエンドポイントチェック ・HTTPステータスコード(200, 50xでチェックする) |
| サーバ監視 | ・メトリクス ・ログ ・イベント |
CPU ・使用率(全体 / コア) ・ロードアベレージ(一定時間内の平均プロセス数) メモリ ・使用量 ・スワップ使用量 ・キャッシュ・バッファの使用量 ネットワーク ・ネットワークトラフィック ・パケットエラー / ドロップ数 ・接続数 ディスク ・使用率(パーティションごとの使用量) ・ディスクI/O(読み書きの速度や回数) Webサーバ ・秒間リクエスト数 ・レスポンスタイム ・HTTPステータスコード(2xx, 4xx, 5xx) DBサーバ ・秒間クエリ数 ・スロークエリ数 ・デッドロック数 ・コネクション数 ロードバランサー ・秒間リクエスト数 ・接続数 ・レイテンシ ・バックエンド、フロントエンドの両方から必要 ・ヘルスチェック(HTTP / TCPなど) メッセージキュー ・キューの長さ(キューの中でサブスクライバに取り出されるのを待っているメッセージ数) ・消費率(キューから取り出されたメッセージの比率) ・メッセージのエラー率 ・デッドレターキュー(DLQ)の長さ スケジュールジョブ ・サイレントフェイル(Silent Failure)への対処:デッドマン装置 ・実行時間、成功/失敗、処理件数/処理データ量、出力ログのキーワード監視 ロギング ・ログの収集状況 ・分析 ・保管 |
| ネットワーク監視 | ・メトリクス ・ログ ・SNMP(Simple Network Management Protocol) |
・インターフェース ・ルーティングプロトコル ・スイッチ ・シャーシ |
| セキュリティ監視 | ・メトリクス ・ログ ・SIEM(Security Infomation and Event Management) |
・監査ログ(auditd) ・不正アクセス試行 ・特権操作のログ ・脆弱性スキャンの検知 ・マルウェアの検知 |
監視アセスメントを実際に考えてみる
監視アセスメントとは
システムやサービスの監視体制が現状に対して適切であるか、どのような課題があり、どのように改善すべきかを客観的に評価し、改善策を立案するプロセスのこと。
今回はSNSサービスを例に実際に考えてみました。
-
対象ビジネス(例)SNSサービス
- ユーザー登録
- ログイン/ログアウト
- 投稿(テキスト、画像)
- タイムライン表示
- コメント
- DM
- 広告
- 退会
- 検索
-
ビジネスKPI
- アクティブユーザー数(日次・月次アクティブユーザー数)
- ユーザーエンゲージメント(投稿数、いいね数、コメント数、閲覧時間)
- 新規登録数/ログイン成功率(ユーザー獲得数と継続数)
- 広告収益(広告表示回数、クリック数)
- ページ表示速度
-
アプリケーションとサーバ監視
- フロントエンド
- タイムライン表示速度(LCP/FCP)
- 投稿フォームのレンダリング時間
- JavaScriptエラー率
- APIサーバ
- 投稿API、タイムライン取得APIのレスポンスタイム、エラー率
- ユーザー登録/ログインAPIの成功率
- DBサーバ
- タイムラインデータ取得クエリの実行時間
- 投稿データ書き込みのスループット、レプリケーション遅延
- 画像/動画ストレージ
- アップロード/ダウンロードの成功率と速度
- サーバリソース
- CPU使用率、メモリ使用率、ディスクI/O、ネットワークトラフィック(特に画像/動画転送量)
- フロントエンド
-
セキュリティ監視
- 不正ログイン試行の監視
- APIへの異常なリクエストパターン
- auditdのログ
-
アラート
- ページロード時間の増加
- ログイン・ユーザー登録・投稿などアプリケーションの特定のアクションのエラー率、レイテンシの増加
- タイムライン表示のレイテンシの増加
感想
『入門 監視』を通じて、監視とは単なるツールの導入ではなく、「ユーザーの価値体験を守るための設計思想」であることを学びました。
今後はツールに頼るだけでなく、「何を監視するのか」を常に問い直しながら、よりよい運用体制について、また、オブザーバビリティについて考えていきたいと思います。
Discussion