序章

インフラストラクチャとシステムの状態を理解することは、サービスの信頼性と安定性を確保するために不可欠です。 展開の正常性とパフォーマンスに関する情報は、チームが問題に対応するのに役立つだけでなく、自信を持って変更を加えるためのセキュリティも提供します。 この洞察を得るための最良の方法の1つは、メトリックを収集し、データを視覚化し、問題が発生した場合にオペレーターに警告する堅牢な監視システムを使用することです。

このガイドでは、メトリック、監視、およびアラートとは何かについて説明します。 それらが重要である理由、それらが提供する機会の種類、および追跡する可能性のあるデータの種類について説明します。 途中でいくつかの重要な用語を紹介し、このスペースを探索しているときに遭遇する可能性のある他のいくつかの用語の短い用語集で終わります。

メトリック、監視、およびアラートとは何ですか?

メトリック、監視、およびアラートはすべて相互に関連する概念であり、これらが一緒になって監視システムの基礎を形成します。 システムの状態を可視化し、使用状況や動作の傾向を理解し、変更の影響を理解するのに役立ちます。 メトリックが予想範囲外の場合、これらのシステムは通知を送信してオペレーターに確認を促し、考えられる原因を特定するのに役立つ情報を表示するのに役立ちます。

このセクションでは、これらの個々の概念とそれらがどのように組み合わされるかを見ていきます。

メトリックとは何ですか?なぜそれらを収集するのですか?

メトリックは、システム全体で監視および収集できるリソース使用量または動作の生の測定値を表します。 これらは、オペレーティングシステムによって提供される低レベルの使用状況の概要である場合もあれば、1秒あたりに処理される要求や、Webサーバーのプールのメンバーシップなど、コンポーネントの特定の機能または作業に関連付けられた高レベルのタイプのデータである場合もあります。 一部のメトリックは総容量に関連して表示されますが、その他のメトリックはコンポーネントの「ビジー」を示すレートとして表されます。

多くの場合、最初に最も簡単なメトリックは、基盤となる物理リソースの使用状況を表すためにオペレーティングシステムによってすでに公開されているメトリックです。 ディスク容量、CPU負荷、スワップ使用量などに関するデータ。 すでに利用可能であり、すぐに価値を提供し、多くの追加作業なしで監視システムに転送できます。 多くのWebサーバー、データベースサーバー、およびその他のソフトウェアも、同様に渡すことができる独自のメトリックを提供します。

他のコンポーネント、特に独自のアプリケーションの場合、関心のあるメトリックを公開するためにコードまたはインターフェイスを追加する必要がある場合があります。 メトリックの収集と公開は、サービスにInstrumentationを追加することと呼ばれることもあります。

メトリックは、特に全体として分析した場合に、システムの動作と状態に関する洞察を提供するため、便利です。 これらは、監視システムが環境の全体像を構築し、変更への対応を自動化し、必要に応じて人間に警告するために使用する原材料を表しています。 メトリックは、過去の傾向を理解し、さまざまな要因を相互に関連付け、パフォーマンス、消費、またはエラー率の変化を測定するために使用される基本的な値です。

モニタリングとは何ですか?

メトリックはシステム内のデータを表しますが、監視は、コンポーネントの特性と動作の認識を向上させるために、これらの値を収集、集約、および分析するプロセスです。 環境のさまざまな部分からのデータは、監視システムに収集されます。このシステムは、値が特定の要件を満たしている場合に、保存、集約、視覚化、および自動応答の開始を担当します。

一般に、メトリックと監視の違いは、データと情報の違いを反映しています。 データは未処理の未処理のファクトで構成され、情報はデータを分析および整理して価値を提供するコンテキストを構築することによって生成されます。 モニタリングは、メトリクスデータを取得して集約し、さまざまな方法で提示して、人間が個々のピースのコレクションから洞察を抽出できるようにします。

監視システムは、多くの関連機能を果たします。 彼らの最初の責任は、受信データと履歴データを受け入れて保存することです。 現在の時点を表す値は便利ですが、ほとんどの場合、過去の値との関係でこれらの数値を表示して、変化や傾向に関するコンテキストを提供する方が便利です。 これは、監視システムが一定期間にわたってデータを管理できる必要があることを意味します。これには、古いデータのサンプリングまたは集約が含まれる場合があります。

第二に、監視システムは通常、データの視覚化を提供します。 メトリックは個々の値またはテーブルとして表示および理解できますが、情報が視覚的に意味のある方法で編成されている場合、人間は傾向を認識し、コンポーネントがどのように組み合わされるかを理解するのにはるかに優れています。 監視システムは通常、構成可能なグラフとダッシュボードで測定するコンポーネントを表します。 これにより、ディスプレイを一瞥することで、システム内の複雑な変数や変更の相互作用を理解することができます。

監視システムが提供する追加機能は、さまざまな入力からのデータを整理して相互に関連付けることです。 メトリックが役立つためには、管理者は、異なるリソース間およびサーバーのグループ間でパターンを認識できる必要があります。 たとえば、アプリケーションでエラー率が急上昇した場合、管理者は監視システムを使用して、そのイベントが関連リソースの容量枯渇と一致するかどうかを検出できる必要があります。

最後に、監視システムは通常、アラートを定義およびアクティブ化するためのプラットフォームとして使用されます。これについては次に説明します。

アラートとは何ですか?

アラートは、メトリック値の変更に基づいてアクションを実行する監視システムの応答コンポーネントです。 アラート定義は、メトリックベースの条件またはしきい値と、値が許容条件から外れたときに実行するアクションの2つのコンポーネントで構成されます。

監視システムは積極的な解釈と調査に非常に役立ちますが、完全な監視システムの主な利点の1つは、管理者がシステムから離れることができることです。 アラートを使用すると、ソフトウェアのパッシブモニタリングに依存して状態の変化を監視しながら、アクティブに管理するのに意味のある状況を定義できます。

責任者への通知はアラートの最も一般的なアクションですが、一部のプログラムによる応答は、しきい値違反に基づいてトリガーすることもできます。 たとえば、現在の負荷を処理するためにより多くのCPUが必要であることを示すアラートは、アプリケーションのそのレイヤーを自動スケーリングするスクリプトで応答できます。 通知が発生しないため、これは厳密にはアラートではありませんが、同じ監視システムメカニズムを使用して、これらのプロセスを開始することもできます。

ただし、アラートの主な目的は、システムの現在のステータスに注意を向けさせることです。 応答の自動化は、知識のある人間による考慮が必要な状況でのみ通知がトリガーされるようにするための重要なメカニズムです。 アラート自体には、何が間違っているのか、追加情報を見つけるためにどこに行けばよいのかに関する情報が含まれている必要があります。 アラートに応答する個人は、監視システムとログファイルなどの関連ツールを使用して、問題の原因を調査し、軽減戦略を実装できます。

中程度の複雑さのインフラストラクチャでも、問題の規模に適した方法を使用して責任のあるチームまたは個人に通知できるように、アラートの重大度を区別する必要があります。 たとえば、ストレージの使用率が上がると、作業チケットや電子メールが必要になる場合がありますが、クライアント向けのエラー率や応答がなくなる場合は、オンコールスタッフにページを送信する必要があります。

追跡することが重要な情報の種類は何ですか?

監視する値の種類と追跡する情報は、インフラストラクチャが進化するにつれておそらく変化します。 システムは通常階層的に機能し、より原始的なインフラストラクチャの上にさらに複雑なレイヤーが構築されるため、監視戦略を計画する際に、これらのさまざまなレベルで利用可能なメトリックについて考えると便利です。

ホストベースのメトリクス

プリミティブメトリックの階層の最下部には、ホストベースのインジケーターがあります。 これらは、アプリケーションスタックとサービスを今のところ無視して、個々のマシンの状態またはパフォーマンスの評価に関係するものです。 これらは主に、次のようなオペレーティングシステムまたはハードウェアの使用法またはパフォーマンスで構成されています。

  • CPU
  • メモリー
  • ディスクスペース
  • プロセス

これらは、単一のコンピューターが安定した状態を維持したり、作業を実行したりする能力に影響を与える可能性のある要因の感覚を与える可能性があります。

アプリケーションメトリクス

確認したいメトリックの次のカテゴリは、アプリケーションメトリックです。 これらは、サービスやアプリケーションなどのホストレベルのリソースに依存する処理または作業の単位に関連するメトリックです。 確認するメトリックの特定のタイプは、サービスが提供しているもの、サービスが持つ依存関係、およびサービスが相互作用する他のコンポーネントによって異なります。 このレベルのメトリックは、アプリケーションの正常性、パフォーマンス、または負荷の指標です。

  • エラーと成功率
  • サービスの失敗と再起動
  • 応答のパフォーマンスと待ち時間
  • リソースの使用

これらのインジケーターは、アプリケーションが正しく効率的に機能しているかどうかを判断するのに役立ちます。

ネットワークと接続のメトリック

ほとんどの種類のインフラストラクチャでは、ネットワークと接続のインジケータは、調査する価値のあるもう1つのデータセットになります。 これらは外向きの可用性の重要な指標ですが、複数のマシンにまたがるシステムで他のマシンがサービスにアクセスできるようにするためにも不可欠です。 これまでに説明した他のメトリックと同様に、ネットワークは、以下を調べて、全体的な機能の正確性と必要なパフォーマンスを提供する能力をチェックする必要があります。

  • 接続性
  • エラー率とパケット損失
  • レイテンシー
  • 帯域幅の使用率

ネットワーク層を監視すると、内部サービスと外部サービスの両方の可用性と応答性を向上させることができます。

サーバープールメトリック

水平方向にスケーリングされたインフラストラクチャを処理する場合、メトリックを追加する必要があるインフラストラクチャのもう1つの層は、サーバーのプールです。 個々のサーバーに関するメトリックは有用ですが、大規模なサービスは、マシンのコレクションが作業を実行し、要求に適切に応答する能力としてより適切に表されます。 このタイプのメトリックは、多くの点でアプリケーションとサーバーのメトリックのより高いレベルの外挿ですが、この場合のリソースは、マシンレベルのコンポーネントではなく同種のサーバーです。 追跡したいデータは次のとおりです。

  • プールされたリソースの使用
  • スケーリング調整インジケーター
  • 劣化したインスタンス

サーバーのコレクションの状態を要約したデータを収集することは、負荷を処理して変更に対応するシステムの実際の機能を理解するために重要です。

外部の依存関係の指標

システムに追加したい他のメトリックは、外部の依存関係に関連するものです。 多くの場合、サービスはサービスの停止を検出するためのステータスページまたはAPIを提供しますが、独自のシステム内でこれらを追跡すること、およびサービスとの実際の相互作用は、運用に影響を与える可能性のあるプロバイダーの問題を特定するのに役立ちます。 このレベルでの追跡に適用できる可能性のある項目は次のとおりです。

  • サービスのステータスと可用性
  • 成功率とエラー率
  • 実行率と運用コスト
  • リソースの枯渇

収集に役立つ可能性のあるメトリックには、他にも多くの種類があります。 さまざまなレベルの焦点で最も重要な情報を概念化すると、問題の予測または特定に最も役立つ指標を特定するのに役立ちます。 上位レベルで最も価値のあるメトリックは、下位層によって提供されるリソースである可能性が高いことに注意してください。

監視対象の選択に影響を与える要因

安心のために、理想的な世界では、アイテムがいつかあなたに関連する可能性がある場合に備えて、システムに関連するすべてのものを最初から追跡します。 ただし、これが不可能または望ましくない理由はたくさんあります。

収集して行動することを選択することに影響を与える可能性のあるいくつかの要因は次のとおりです。

  • 追跡に利用できるリソース:人的資源、インフラストラクチャ、および予算に応じて、追跡する範囲を、実装および合理的に管理できる範囲に制限する必要があります。
  • アプリケーションの複雑さと目的:アプリケーションまたはシステムの複雑さは、追跡対象の選択に大きな影響を与える可能性があります。 一部のソフトウェアにとってミッションクリティカルである可能性のある項目は、他のソフトウェアではまったく重要ではない場合があります。
  • 展開環境:堅牢な監視は本番システムにとって最も重要ですが、ステージングおよびテストシステムも監視の恩恵を受けますが、重大度、粒度、および測定される全体的なメトリックに違いがある場合があります。
  • メトリックが役立つ可能性:何かが測定されるかどうかに影響を与える最も重要な要因の1つは、将来役立つ可能性です。 追跡されるメトリックが追加されるたびに、システムが複雑になり、リソースが消費されます。 データの必要性も時間の経過とともに変化する可能性があり、定期的に再評価する必要があります。
  • 安定性の本質:簡単に言えば、特定のタイプの個人プロジェクトまたは初期段階のプロジェクトでは、安定性と稼働時間が優先されない場合があります。

決定に影響を与える要因は、利用可能なリソース、プロジェクトの成熟度、および必要なサービスのレベルによって異なります。

メトリック、監視、およびアラートシステムの重要な品質

各監視アプリケーションまたはサービスには長所と短所がありますが、最良のオプションは多くの場合、いくつかの重要な性質を共有しています。 監視システムを評価するときに探すべき、より重要な特性のいくつかを以下に示します。

他のほとんどのインフラストラクチャから独立

適切な監視システムの最も基本的な要件の1つは、他のサービスの外部にあることです。 サービスをグループ化すると便利な場合もありますが、監視システムの主要な責任、問題の診断における有用性、および監視対象システムとの関係は、監視システムが独立してアクセスできることが重要であることを意味します。 監視システムは必然的に監視するシステムに何らかの影響を及ぼしますが、追跡がパフォーマンスに与える影響を減らし、他のシステムの問題が発生した場合の監視の信頼性を高めるために、これを最小限に抑えることを目指す必要があります。

信頼性と信頼性

もう1つの基本的な要件は、信頼性です。 監視システムは、価値の高い情報の収集、保存、およびアクセスの提供を担当するため、日常的に正しく動作することを信頼できることが重要です。 メトリックのドロップ、サービスの停止、および信頼性の低いアラートはすべて、インフラストラクチャを効果的に管理する能力に即座に悪影響を与える可能性があります。 これは、コアソフトウェアの信頼性だけでなく、有効にする構成にも当てはまります。不正確なアラートなどのミスは、システムの信頼を失う可能性があるためです。

使いやすいサマリービューと詳細ビュー

高レベルの要約を表示し、オンデマンドでより詳細な情報を要求する機能は、メトリックデータが人間のオペレーターにとって有用で消費可能であることを保証するための重要な機能です。 最も一般的に表示されるデータをすぐに理解できる方法で表示するダッシュボードを設計すると、ユーザーはシステムの状態を一目で理解するのに役立ちます。 さまざまな職務や関心のある分野に対して、さまざまなダッシュボードビューを作成できます。

同様に重要なのは、要約表示内からドリルダウンして、現在のタスクに最も関連する情報を表示する機能です。 グラフのスケールを動的に調整し、不要なメトリックを切り替え、複数のシステムからの情報をオーバーレイすることは、ツールを調査や根本原因分析にインタラクティブに役立つようにするために不可欠です。

履歴データを維持するための効果的な戦略

監視システムは、長いタイムラインで傾向、パターン、一貫性を確立するのに役立つ豊富なデータ履歴がある場合に最も役立ちます。 理想的には、すべての情報が元の粒度で無期限に保持されますが、コストとリソースの制約により、古いデータを低解像度で保存する必要がある場合があります。 完全な粒度とサンプル形式の両方でデータを処理する柔軟性を備えた監視システムは、増え続けるデータを処理するための幅広いオプションを提供します。

役立つ関連機能は、既存のデータセットを簡単にインポートする機能です。 履歴メトリックの情報密度を下げることが魅力的なオプションではない場合は、古いデータを長期ストレージソリューションにオフロードすることをお勧めします。 この場合、システム内で古いデータを維持する必要はありませんが、分析または使用する場合は、データを一括で再ロードできる必要があります。

さまざまなソースからの要因を相関させることができる

監視システムは、インフラストラクチャ全体の全体像を提供する責任があるため、システムが異なる場合や特性が異なる場合でも、関連情報を表示できる必要があります。 管理者は、システムの異なる部分からの情報を自由に結び付けて、インフラストラクチャ全体にわたる潜在的な相互作用と全体的なステータスを理解できる必要があります。 システム全体で時刻同期が構成されていることを確認することは、異なるシステムからのデータを確実に相互に関連付けることができるための前提条件です。

新しい指標やインフラストラクチャの追跡を簡単に開始できます

監視システムをシステムの正確な表現にするためには、マシンとインフラストラクチャの変更に応じて調整できる必要があります。 マシンを追加するときの摩擦を最小限に抑えると、そうするのに役立ちます。 同様に重要なのは、廃止されたマシンに関連する収集データを破壊することなく、それらのマシンを簡単に削除できることです。 システムは、インスタンスのプロビジョニングまたはリタイアメントプロセスの一部として監視を設定することを奨励するために、これらの操作を可能な限り単純にする必要があります。

重要な関連機能は、まったく新しいメトリックを追跡するように監視システムを簡単に設定できることです。 これは、コア監視構成でメトリックを定義する方法と、メトリックデータをシステムに送信するために使用できるメカニズムの多様性と品質によって異なります。 通常、新しいメトリックの定義は、マシンを追加するよりも複雑ですが、メトリックの追加または調整の複雑さを軽減すると、チームは適切な時間枠で要件の変化に対応するのに役立ちます。

柔軟で強力なアラート

評価する監視システムの最も重要な側面の1つは、アラート機能です。 非常に厳格な信頼性要件は別として、アラートシステムは、複数の媒体を介してオペレーターに通知するのに十分な柔軟性と、思慮深く実用的な通知トリガーを作成できるほど強力である必要があります。 多くのシステムは、既存のページングサービスまたはメッセンジャーアプリケーションとの統合を提供することにより、実際に他の関係者に通知を配信する責任を延期します。 これにより、アラート機能の責任が最小限に抑えられ、プラグインは外部APIを使用するだけでよいため、通常はより柔軟なオプションが提供されます。

ただし、監視システムが延期できない部分は、アラートパラメータを定義することです。 アラートは、許容範囲外の値に基づいて定義されますが、過剰なアラートを回避するために、定義に微妙な違いが必要になる場合があります。 たとえば、瞬間的なスパイクは問題にならないことがよくありますが、持続的な高負荷はオペレーターの注意を必要とする場合があります。 アラートのパラメーターを明確に定義できることは、堅牢で信頼できるアラート条件のセットを作成するための要件です。

追加の用語

監視エコシステムを探索すると、監視システムの特性、処理されるデータ、および考慮が必要なさまざまなトレードオフについて説明するために頻繁に使用される一連の共有用語に遭遇し始めます。 完全なものではありませんが、以下のリストは、遭遇する可能性が最も高い用語のいくつかを紹介するのに役立ちます。

  • 可観測性:厳密には定義されていませんが、可観測性は、システムの認識と可視性の向上に関連するプロセスと手法を説明するために使用される一般的な用語です。 これには、監視、メトリック、視覚化、トレース、およびログ分析が含まれます。
  • リソース:監視およびソフトウェアシステムのコンテキストでは、リソースは枯渇可能または限定的な依存関係です。 リソースと見なされるものは、議論されているシステムの一部によって大きく異なる可能性があります。
  • レイテンシー:レイテンシーは、アクションを完了するのにかかる時間の尺度です。 コンポーネントに応じて、これは処理、応答、または移動時間の尺度になります。
  • スループット:スループットは、システムが処理できる処理またはトラバーサルの最大速度を表します。 これは、ソフトウェアまたはハードウェアの設計に依存する可能性があります。 多くの場合、理論上のスループットと実際に観察されたスループットの間には重要な違いがあります。
  • パフォーマンス:パフォーマンスは、システムが作業をどれだけ効率的に完了しているかを示す一般的な指標です。 パフォーマンスは、スループット、遅延、リソース消費などの作業要因を含むことが多い包括的な用語です。
  • 飽和:飽和は、使用されている容量の量の尺度です。 完全に飽和している場合は、容量が現在100% of使用されていることを示します。
  • 視覚化:視覚化は、グラフやチャートを介してすばやく直感的に解釈できる形式でメトリックデータを表示するプロセスです。
  • ログ集約:ログ集約は、ログファイルをコンパイル、整理、およびインデックス付けして、管理、検索、および分析を容易にする行為です。 監視とは別に、集約されたログを監視システムと組み合わせて使用して、原因を特定し、障害を調査することができます。
  • データポイント:データポイントは、単一のメトリックの単一の測定値です。
  • データセット:データセットは、メトリックのデータポイントのコレクションです。
  • ユニット:ユニットは測定値のコンテキストです。 単位は、測定の大きさ、範囲、または量を定義して、範囲を理解し、比較できるようにします。
  • パーセンテージ単位:パーセンテージ単位は、有限の全体の一部として取得される測定値です。 パーセンテージ単位は、可能な合計量のうちの値がどれだけあるかを示します。
  • レート単位:レート単位は、一定期間におけるメトリックの大きさを示します。
  • 時系列:時系列データは、時間の経過に伴う変化を表す一連のデータポイントです。 単一のデータポイントは特定の時間の値を表すことが多く、結果の一連のポイントは時間の経過に伴う変化を示すために使用されるため、ほとんどのメトリックは時系列で最もよく表されます。
  • サンプリングレート:サンプルレートは、継続的な収集の代わりに代表的なデータポイントが収集される頻度の測定値です。 サンプリングレートが高いほど、測定された動作をより正確に表しますが、追加のデータポイントを処理するためにより多くのリソースが必要になります。
  • 解像度:解像度とは、データセットを構成するデータポイントの密度を指します。 同じ時間枠でより高い解像度のコレクションは、より高いサンプルレートと、同じ動作のより詳細なビューを示します。
  • Instrumentation :Instrumentationは、ソフトウェアの動作とパフォーマンスを追跡する機能です。 これは、ソフトウェアにコードと構成を追加してデータを出力し、それを監視システムで使用できるようにすることで実現されます。
  • 観察者効果:観察者効果は、観察されている現象に対する監視システム自体の影響です。 監視はリソースを消費するため、動作とパフォーマンスを測定するという行為は、生成される値を変更します。 監視システムは、この影響を最小限に抑えるために不要なオーバーヘッドを追加しないようにします。
  • 過剰監視:過剰監視は、構成されたメトリックとアラートの量がそれらの有用性に反比例する場合に発生します。 過剰な監視は、インフラストラクチャにストレスを与え、関連データを見つけるのを困難にし、チームが監視および警告システムへの信頼を失う原因となる可能性があります。
  • アラート疲労:アラート疲労は、頻繁な、信頼できない、または不適切に優先順位が付けられたアラートから生じる鈍感の人間の反応です。 アラートの疲労により、オペレーターは重大な問題を無視する可能性があり、通常、アラートの状態を再評価する必要があることを示しています。
  • Threshold :アラートの場合、しきい値は許容値と許容値の境界であり、超えた場合にアラートをトリガーします。 多くの場合、アラートは、一時的なスパイクのアラートの送信を回避するために、値が一定期間しきい値を超えたときにトリガーするように構成されています。
  • 分位:分位は、データセットをその値に基づいて個別のグループに分割するために使用される分割点です。 分位数は、データの母集団のセグメントを表す「バケット」に値を入れるために使用されます。 多くの場合、これは、一般的な値を外れ値から分離して、代表的なケースと極端なケースを構成するものをよりよく理解するために使用されます。
  • トレンド:トレンドは、一連の値が示す一般的な方向です。 追跡対象のコンポーネントの一般的な状態を判断する上で、傾向は単一の値よりも信頼性が高くなります。
  • ホワイトボックス監視:ホワイトボックス監視は、測定対象のコンポーネントの内部状態へのアクセスに依存する監視を説明するために使用される用語です。 ホワイトボックス監視は、システム状態の詳細な理解を提供し、問題の原因を特定するのに役立ちます。
  • ブラックボックス監視:ブラックボックス監視は、システムまたはコンポーネントの入力、出力、および動作のみを確認することにより、システムまたはコンポーネントの外部状態を監視する監視です。 このタイプの監視は、システムのユーザーエクスペリエンスと密接に連携できますが、問題の原因を見つけるのにはあまり役立ちません。

結論

メトリックの収集、コンポーネントの監視、およびアラートの構成は、実稼働インフラストラクチャのセットアップと管理の重要な部分です。 システム内で何が起こっているのか、どのリソースに注意が必要なのか、そして何が速度低下や停止を引き起こしているのかを知ることができることは非常に貴重です。 監視設定の設計と実装は困難な場合がありますが、チームが作業に優先順位を付け、監視の責任を自動化されたシステムに委任し、インフラストラクチャとソフトウェアが安定性とパフォーマンスに与える影響を理解するのに役立つ投資です。 。