はじめに
自己紹介
未経験からWEB系エンジニアへの転職を目指している者です。現在はRuby on Railsを学習中です。
この記事を書いたきっかけ
現在、プログラミング学習コミュニティでISUCONの勉強会に参加しており、『達人が教えるWebパフォーマンスチューニング〜ISUCONから学ぶ高速化の実践』を読みながら学習を進めています。
情報整理とアウトプットの練習を兼ねてQiitaで読書メモを作成することにしました。
要点
2章の要点を個人的にまとめました。
1.モニタリングとは
2.モニタリングの手法
3.モニタリングツールのアーキテクチャ
モニタリングとは
継続的なテストである
Webサービスを提供する側にとってのモニタリングとはWebアプリケーションの状態を計測し、Webサービスが「高速であること」を保証し続けること。
具体的には、CPUやメモリのリソースが想定した使用率となっているかなどの状態の計測を継続して行い、異常時にはアラートで通知を受け取れるようにする。
モニタリングの手法
外形監視
動作しているアプリの外側からモニタリングする手法。
Webサービスを利用しているユーザーとほぼ同じ経路を用いてアクセスを行い、正しく動作しているかを確かめる。
HTTPエンドポイントに対してHTTPリクエストを行い、レスポンスコードやレスポンスボディ、応答時間などを確認する。
外形監視のイメージ図(ISUCON本のp27図2を参考に作成)
内部監視
動作しているアプリの内側からモニタリングする手法。
ユーザーの見えない部分の状態をモニタリングし、それらが意図しない状態になっていないかを確かめる。
内部監視するデーモンはエージェントと呼ばれ、サーバー毎に起動させる。
内部監視のイメージ図(ISUCON本のp28図3を参考に作成)
モニタリングツールのアーキテクチャ
モニタリングツールとは
モニタリングツールは次のような機能を持つソフトウェア
- メトリクスを自動で収集、保存する
- 保存したメトリクスを時系列順に表示する
- メトリクスが特定の閾値に達すると通知する
プル型
モニタリングアプリケーションがクライアントとして、エージェントにメトリクスの取得をリクエストする。
エージェントはリクエストを受けとったときにメトリクスを収集しモニタリングアプリケーションに送信する。
プル型モニタリングのイメージ図(ISUCON本のp32図4を参考に作成)
プッシュ型
所定のタイミングでエージェントがメトリクスを取得する。
エージェントがモニタリングアプリケーションへメトリクスを送信する。
プッシュ型モニタリングのイメージ図(ISUCON本のp33図5を参考に作成)
用語
メトリクス
- システムのヘルス情報やパフォーマンス情報を取得し、測定値をグループ化したもの
- 具体的にはCPU使用率、メモリ使用率、ディスク使用率、Data I/O、アクセス数など
シナリオテスト
- ユーザーが一連の流れに沿ってシステムを問題なく利用できることを確認するためのテストのこと
エージェント
- 監視対象のWebアプリにエージェントと呼ばれるソフトウェアをインストールして、CPUやメモリなどの稼働状況に関する情報を収集するもの
デーモン
- バックグラウンドで常駐稼働するアプリケーションのこと
ロードバランサー
- 外部からの通信(トラフィック)を複数のサーバーに分散する装置