自動検出と監視

自動ディスカバリーとモニタリングは、効率的で適応性のあるシステム管理を提供し、大規模アプリケーションの物理的、論理的、ビジネス・コンポーネントを包括的にカバーするのに役立ちます。 このアプローチは、リアルタイムで異常を検出し、故障の影響を最小限に抑える。 この高度なモニタリング・ソリューションは、システム管理に徹底的かつ適応的なアプローチを提供し、最新のダイナミックなアプリケーションの信頼性とパフォーマンスを維持するために不可欠です。

従来の Application Performance Management (APM)ツールは、本番環境のボトルネックやエラーを検出するために、手動でデータを調査し、関連付けるのに役立つ。 しかし、従来のAPMツールは、より高いスケールの複雑性や現代システムの動的な性質によってもたらされる問題を解決するといった課題に直面している。 問題を特定するためには、相互に関連するコンポーネントとメトリクスを相関させる必要がある。

機械学習主導のアプローチは、システム管理に大きな改善をもたらす。 最適な結果を得るためには、このアプローチの基礎は強固で包括的なコアモデルの上に築かれなければならない。 マイクロサービス・アプリケーションは多くのビルディング・ブロックで構成されており、それらは常に進化している。 そのため、すべてのブロックとその依存関係を理解する必要がある。

自動検出と監視の構成要素

自動検出と監視は、物理コンポーネント、論理コンポーネント、ビジネス・コンポーネントを対象とする。

物理コンポーネント

以下の表は、物理的なコンポーネントとその説明の概要である:

コンポーネント 説明
データセンターまたは可用性ゾーン ゾーンは大陸や地域によって異なる。 これらのゾーンは、障害が発生することも、パフォーマンス特性が異なることもあります。
ホストまたはマシン 物理的、仮想的、あるいはサービスとして提供される。 各ホストにはCPU、メモリ、I/Oなどのリソースがあり、これがボトルネックになることがある。 各ホストは 1 つのゾーンで実行されます。
コンテナー ホスト上で実行され、コンテナを管理するために Kubernetes や Apache Mesos などのスケジューラが必要。
プロセス コンテナ内またはホスト上で実行される。 このプロセスには、Java や PHP などのランタイム環境や、Tomcat、 Oracle、 Elasticsearch などのミドルウェアが含まれる。
クラスター 多くのサービスはグループまたはクラスタとして機能するため、外部からは統一された分散プロセスとして見える。 クラスタ内のインスタンス数は変化する可能性があり、クラスタのパフォーマンスに影響を与える可能性があります。

論理コンポーネント

次の表は、論理コンポーネントとその説明の概要である:

コンポーネント 説明
サービス 前述した物理的なビルディングブロックの上で実行される、多くのインスタンスや異なるバージョンを持つことができる論理的な作業単位。
エンドポイント 特定のコマンドをシステムの他の部分に公開するサービスのパブリックAPI。
アプリケーションの視点またはアプリケーション タグを使用して宣言される共通のコンテキストによって定義される、一連のサービスとエンドポイントに関する視点。
トレース サービス間の同期および非同期通信のシーケンス。 サービスは互いに通信し、ユーザーのリクエストに対して結果を提供する。 データフローでデータを変換するプロセスには、多くのサービスが関与している可能性がある。
呼び出し 2つのサービス間のリクエスト。 トレースは、1 つ以上の呼び出しで構成されます。

ビジネス・コンポーネント

次の表は、ビジネス・コンポーネントの概要とその説明である:

コンポーネント 説明
ビジネス・サービス 独自のビジネス価値やサービスを提供するサービスやアプリケーションのコンポジション。
ビジネス・プロセス プロセスを形成する技術的痕跡の組み合わせ。 例えば、Eコマースにおける「購入」のトレース、ERPにおける注文のトレース、 FedEx's、顧客への配送におけるロジスティクスのトレースがそれに続く。

ユーザーにアプリケーションを提供するために、複数のゾーンや大陸にまたがる何百ものホスト上で実行される、様々なバージョンの何千ものサービスインスタンスが一般的です。 これにより、アプリケーションのサービス品質が保証され、ビジネス価値が提供されるように、完璧に連携しなければならないコンポーネント間の依存関係のネットワークが構築される。 従来の監視ツールでは、あるコンポーネントがしきい値を超えると警告を発する。 ただし、これらのコンポーネントの 1 つ以上が失敗しても、アプリケーションの品質が確実に影響を受けるわけではありません。 したがって、最新の監視ツールは、サービス品質を効果的に監視、分析、予測するために、コンポーネントのネットワーク全体とその相互依存関係を理解する必要がある。

変更点の特定とカタログ化

最近のアプリケーションでは、サービス指向アーキテクチャ(SOA)ベースのアプリケーションに比べて、サービスの数や依存関係が多くなっており、監視ツールにとって課題となっている。 継続的デリバリー手法、自動化ツール、コンテナ・プラットフォームにより、アプリケーションの変更速度が速いことが、この問題をさらに悪化させている。 このようなダイナミックな環境では、手作業で変更に対応し、新しくデプロイされたブロックに対して継続的に監視ツールを設定することは非現実的である。

この課題に対処するために、最新のモニタリング・ソリューションは、分析し理解する前に、すべてのブロックを自動的かつ瞬時に発見しなければならない。 この機能は、その後の変更を確実にリンクさせるのに役立ち、インシデントを調査するために任意の時点でモードを再構築することを可能にする。

次の図に示すように、変更はどのビルディング・ブロックでもいつでも可能である:

図 1. 自動ディスカバリー
変更

インスタナの包括的な発見プロセス

Instana Dynamic APMは、センサーを使用するInstanaエージェントアーキテクチャに依存している。 センサーは、特定のエンティティを監視するために設計された、コンパクトで自動化されたプログラムである。 ホスト上のスタンドアローンプロセスとして、またはコンテナスケジューラを通じてコンテナとしてデプロイされる単一のエージェント(ホストごとに1つ)が、これらのセンサーを管理する。

エージェントは、 AWS アベイラビリティ・ゾーン、 Docker ホスト上で実行されるコンテナ、 Kubernetes、 HAProxy、 Nginx、JVM、 Spring Boot、 Postgres、 Cassandra、 Elasticsearch などのプロセス、さらには、 Cassandra クラスタなど、これらのプロセスのクラスタなど、さまざまな物理コンポーネントを自動的に検出して監視する。 検出された各コンポーネントについて、エージェントはその構成データを収集し、変更の監視を開始する。 また、各コンポーネントの重要なメトリクスを毎秒送信する。 エージェントは、JMXやDropwizardなどのサービスによって提供されるメトリクスを自動的に検出し、使用します。

図 2. エージェントの自動検出
エージェント

その後、エージェントはトレース関数をサービスコードに注入する。 例えば、HTTP 呼び出し、データベース呼び出し、および Elasticsearch に対する照会をインターセプトします。 エージェントは、スタックトレースやペイロードのような各コールのコンテキストをキャプチャする。

キャプチャされたデータを処理してトレースに分析し、依存関係やサービスを特定し、異常や問題を検出するインテリジェンスは、サーバー上で行われる。 そのため、エージェントはコンパクトで、何千ものホストに展開することができる。

Instanaは、新世代のモニタリング・ソリューションのために、自動的、即時、継続的な発見のために設計されています。

データの収集

Instanaは、複数のセンサーを備えた単一のエージェントを使用する監視ソリューションで、数百を超える技術をサポートしています。 センサーは自動的に検出、監視され、データはエージェントに渡される。 エージェントは、Instana Service Quality Engine とのすべての通信を管理します。 発見後、センサーはコンポーネントの状態に関する詳細なデータを収集し、それは特定の技術に合わせて調整される。 センサーはエージェントによって更新、ロード、アンロードされる。 オプションのコマンドラインインターフェイスは、エージェントの状態、個々のセンサー、エージェントのログへのアクセスを提供する。 詳細については、 サポートされているテクノロジーの設定と監視を参照してください。

センサーは以下のデータを収集する:

  • コンフィギュレーション :現在の設定と状態をカタログ化し、変更を追跡します。
  • イベント :初期検出、状態変化(オンラインおよびオフライン)、エンティティの失敗した健全性ルールに基づいて問題またはインシデントをトリガする組み込みイベント、および任意のエンティティの個々のメトリックのしきい値に基づいて問題またはインシデントをトリガするカスタムイベント。
  • トレース :プログラミング言語のプラットフォームに基づいてトレースをキャプチャします。
  • 指標 :パフォーマンスを示す技術の質的属性。

Instanaのセンサーは、Tomcatや SpringBoot のようなフレームワークを発見するためにスタックを継続するJava Machineセンサーのように、再帰的な発見を行う。 発見に基づいて、センサーはエージェントが適切な追加センサーをロードするのを支援する。 さらに、データを処理・分析するInstanaのインテリジェンスは、依存関係やサービスを特定し、サーバー上で発生する異常や問題を検出します。 そのため、エージェントは軽量で、何千ものホストに展開することができる。

図 3. データの収集
パイプライン

Instanaのバックエンドは、ストリーミング・テクノロジーを使用しており、エージェントからストリーミングされる毎秒数百万のイベントを処理することができる。 このストリーミング・エンジンは事実上リアルタイムで、状況を処理してユーザーに表示するのにわずか3秒しかかからない。