アプリケーションを構築する場合、システムの動作を理解することは、アプリケーションを操作する上で重要な部分です。これには、アプリケーションの内部呼び出しを観察し、パフォーマンスを測定し、問題が発生したときにすぐに見つけることができることが含まれます。これはどのシステムにとっても難しいことですが、複数のマイクロサービスで構成される分散システムでは、複数の呼び出しで構成されるフローが 1 つのマイクロサービスで開始され、別のマイクロサービスで継続される可能性があるため、さらに困難になります。可観測性は本番環境では非常に重要であり、開発中にボトルネックを理解し、パフォーマンスを向上させ、マイクロサービス全体で基本的なデバッグを実行するためにも役立ちます。 アプリケーションに関する一部のデータは基盤となるインフラストラクチャから収集できますが (メモリ消費量、CPU 使用率など)、その他の意味のある情報はアプリケーション認識レイヤー (一連の重要な呼び出しがマイクロサービス全体でどのように実行されるかを示すレイヤー) から収集する必要があります。これは通常、開発者がアプリケーション内でこれを検出するためのコードを追加する必要があることを意味します。通常、インストルメント化されたコードは、収集されたデータ (トレースやメトリックなど) を外部の監視ツールまたはサービスに送信し、この情報を保存、視覚化、分析できるようにします。 この部分のコードはアプリケーションのコアロジックではないため、当然ながら開発者にとって新たな負担となり、監視ツールの API を理解したり、追加の SDK を使用したりする必要が生じることもあります。このようなツールは、アプリケーションの移植性の課題を増大させる可能性もあります。アプリケーションがデプロイされる環境に応じて、アプリケーションには異なるツールが必要になる場合があります。たとえば、クラウド プロバイダーによって提供される監視ソリューションは異なり、オンプレミス展開ではローカル ソリューションが必要になる場合があります。 可観測性を高めるために使用されるシステム情報はテレメトリと呼ばれ、4 つの主要なカテゴリに分類できます。
Dapr 可観測性アーティファクトは、Dapr コントロール プレーンを構成する Dapr サイドカーおよび Dapr システム サービスによって生成されたトラフィックを自動的にキャプチャすることにより、アプリケーションから可観測性を切り離します。このモジュールは、複数のサービスにわたる単一の操作のトラフィックを相関させます。また、パフォーマンス メトリック、リソース使用率、システムの健全性も公開されます。テレメトリ データはオープン スタンダード形式で公開されるため、選択した監視バックエンドに情報を送信できます。そこで、この情報を視覚化し、照会し、分析することができます。 Dapr は抽象化するため、アプリケーションは可観測性がどのように実装されているかを認識しません。開発者は、コアビジネスロジックに関連しないコードのこの部分をどのように実装するかについて心配する必要はありません。 Dapr を使用すると、開発者は監視機能の構築ではなくビジネス ロジックの構築に集中できます。可観測性は Dapr システム レベルで構成され、異なるチームによって作成され、異なるテクノロジー スタックを使用して構築された場合でも、さまざまなサービス間で一貫性が保たれます。 仕組みDapr のサイドカー アーキテクチャは、組み込みの観測機能を実装します。サービスが通信すると、Dapr サイドカーがトラフィックを傍受し、トレース、メトリック、およびログ情報を抽出します。テレメトリ データはオープン スタンダード形式で公開されます。デフォルトでは、Dapr は OpenTelemetry と Zipkin をサポートします。 Dapr は、さまざまなバックエンド監視ツールにテレメトリ データを公開できるコレクターを提供します。これらのツールは、分析とクエリのために Dapr テレメトリ データを提示します。図 10-1 は Dapr の可観測性アーキテクチャを示しています。 dapr 可観測性アーキテクチャ
ただし、可観測性サポートの追加は、前に紹介したパブリッシュ/サブスクライブや状態管理コンポーネントなどの他の Dapr ビルディング ブロックの構成とは異なることに注意してください。ビルディング ブロックを参照する必要はありませんが、コレクターと監視バックエンドを追加する必要があります。上の図は、異なる監視バックエンドと統合された複数のコレクターを構成できることを示しています。 以下では、いくつかのテレメトリタイプの可観測性について説明します。 分散トレース分散トレースは、分散アプリケーション内のサービス間を流れるトラフィックに関する洞察を提供します。交換された要求メッセージと応答メッセージのログは、問題のトラブルシューティングを行うための重要な情報源です。さらに難しいのは、同じビジネス トランザクションに属するメッセージを統合することです。 Dapr は、統一された標準 W3C Trace Context を使用して関連情報を関連付け、完全なリクエストとレスポンスに同じコンテキスト情報を挿入します。 W3C トレース コンテキストの例 上の図は、W3C トレース コンテキスト標準の例を示しています。
次の図に示すように、一緒に属する要求と応答のセットはトレースと呼ばれます。 トレースとスパン 上記のトレースが、多くのサービスにわたって発生する一意のアプリケーション トランザクションを表していることに注目してください。トレースはスパンのコレクションであり、各スパンはトレース内で実行される単一の操作または作業単位を表します。スパンは、単一のトランザクションを実装するサービス間で送信される要求と応答です。 次に、テレメトリ データを対応する監視バックエンドに公開する方法について説明します。 Zipkinの使用Zipkin は、テレメトリ データを取り込んで視覚化するオープン ソースの分散トレース システムです。 Dapr は Zipkin のデフォルト サポートを提供します。 Dapr がセルフホスト モード (dapr init) で初期化されると、複数のコンテナーがローカル Docker にデプロイされます。 docker ps コマンドを実行すると、ローカルで実行されているすべてのコンテナを表示できます。 Zipkin コンテナが起動して実行されていることを確認し、実行されているポート (デフォルトでは 9411) をメモします。 ジップキン容器 Zipkin コンテナ サービスが実行されていない場合は、次のコマンドを使用して起動できます。 ➜ docker run --name dapr_zipkin -d -p 9411 : 9411 openzipkin / zipkin この時点で、ブラウザで http://localhost:9411 を介して Zipkin Web ページに実際にアクセスできます。ダッシュボードでは、Dapr 可観測性ビルディング ブロックを通じて記録されたテレメトリ データを検索および表示できます。 Zipkinダッシュボード 詳細なテレメトリ データを表示するには、検索結果の [表示] ボタンをクリックしてください。 ジプキンショー ローカル自己拡張管理モードでは Zipkin 構成が実行されていないことがわかります。サービス要求が Dapr サイドカーを通過すると、対応するテレメトリ データが Zipkin で利用できるようになります。これは、テレメトリ データを収集するために、自己拡張管理モードで Zipkin がデフォルトで有効になっているためです。関連する構成は $HOME/.dapr/config.yaml にあり、内容は次のとおりです。 apiバージョン: dapr .io / v1alpha1 したがって、Kubernetes モードで Zipkin をトレース バックエンドとして有効にする場合は、Configuration オブジェクトを別途作成する必要があります。 まず、Dapr 構成ファイルを使用して、Dapr ランタイムのトレース機能を有効にする必要があります。以下は、トレースを有効にする dapr-config.yaml という構成ファイルの例です。 apiバージョン: dapr .io / v1alpha1 設定ファイルはローカル設定とほぼ同じであることがわかります。唯一の違いは zipkin.endpointAddress のアドレスです。 sampleRate プロパティは、トレースを公開する間隔を指定します。この値は、0 (トレースを無効にする) から 1 (すべてのトレースを公開する) までの範囲でなければなりません。たとえば、値が 0.5 の場合、トレースは一定期間ごとに 1 回公開されることを意味し、公開トラフィックが大幅に削減されます。ここで、zipkin.endpointAddress は、Kubernetes クラスターで実行されている Zipkin サーバーを指します。 Zipkin のデフォルト ポートは 9411 です。リソース オブジェクトを適用するだけです。 ➜ kubectl apply -f dapr -config .yaml もちろん、Zipkin サービスも手動でデプロイする必要があります。対応するリソース リスト ファイルは次のとおりです。 種類: デプロイメント ここでは、openzipkin/zipkin-slim コンテナ イメージを使用します。 Zipkin サービスは、ポート 32411 を介してアクセスできる Zipkin Web フロントエンドを公開します。また、上記のリソース リストを直接適用します。 ➜ kubectl apply -f zipkin .yaml デプロイが完了したら、Pod のステータスをチェックして、アプリケーションが正常にデプロイされたかどうかを確認できます。 ➜ kubectl ポッドを取得- l サービス= zipkin デプロイが成功すると、http:<node-ip>:32411 から Zipkin Web ページにアクセスできるようになります。 ジプキンウェブ 次にテレメトリデータを公開できます。起動時に各 Dapr サイドカーでテレメトリ データを発行する必要があることに注意してください。これを行うには、アプリケーションに dapr.io/config アノテーションを追加する必要があります。 ここでも、tutorials/distributed-calculator ディレクトリにあるクイックスタートの例を使用して説明します。 ➜ git clone [ - b < dapr_version_tag > ] https://github.com/dapr/quickstarts.git この例は、Dapr のメソッド呼び出しと状態の永続化機能を示す分散計算機です。各操作は、異なる言語/フレームワークで記述されたサービスによって実行されます。
フロントエンド アプリケーションは、React で記述されたサーバーおよびクライアントで構成されます。ソースコードのアドレスは、React calculator です。 分散計算機 上の図は、このサンプル アプリケーションの各コンポーネントの構成とサービス アーキテクチャを示しています。 deploy/ ディレクトリにある go-adder.yaml などのマイクロサービスのデプロイメント マニフェストを見てみましょう。 apiバージョン: アプリ/ v1 上記のリソース リストでは、dapr.io/config アノテーションを通じて appconfig 構成ファイルの使用を指定しています。この構成ファイルでは、テレメトリ データを取得するために Zipkin サービスが使用されます。このアノテーションは他のマイクロサービスでも使用されるため、アプリケーションがデプロイされると、Zipkin は対応するテレメトリ データを取得できます。
サンプル アプリケーションを直接デプロイします。 ➜ kubectl apply -f デプロイ/ デプロイメントが完了したら、dapr configurations コマンドを使用して、現在のクラスター内のすべての構成情報を表示できます。 ➜ dapr 構成- k - A 構成情報はダッシュボードでも確認できます。 dapr 構成 アプリケーションがデプロイされたら、Pod のステータスを確認します。 ➜ kubectl ポッドを取得する デプロイ後、calculator-front-end LoadBalancer サービスを通じて計算機フロントエンド アプリケーションにアクセスできるようになります。ここで割り当てる EXTERNAL-IP アドレスは 192.168.0.54 です。 電卓 計算機の使用中に生成されたログを表示するには、ブラウザのコンソール ウィンドウを開き (F12 キーを使用) ます。ボタンをクリックするたびに、状態の永続性を示すログが表示されることに注意してください。 水分補給状態: また、完全な式が入力されるたびに (例: 126 ÷ 3 = )、ログにサービスへの呼び出しが示されることに注意してください。 分割サービスの呼び出し クライアント コードは Express サーバーを呼び出し、Express サーバーは Dapr を介してバックエンド サービスに呼び出しをルーティングします。この場合、nodejs アプリケーションで アプリケーションを操作すると、ネットワーク リクエストが生成され、マイクロサービス間で呼び出しが行われます。つまり、この時点で、パラメータに対応するトレーステレメトリデータが取得され、Zipkin にアクセスしてデータを照会できるようになります。 Zipkinダッシュボード 詳細なテレメトリデータを表示するには、[表示] をクリックします。 ジプキンショー Zipkin に加えて、Uber が作成したオープンソースの追跡システムである Jaeger など、他の監視バックエンド ソフトウェアでも、テレメトリを Zipkin 形式でインポートできます。分散サービス間のトランザクションを追跡し、複雑なマイクロサービス環境のトラブルシューティングを行うために使用されます。たとえば、New Relic は、分散アプリケーションからの関連データをリンクしてシステムの全体像を提供できるフルスタックの可観測性プラットフォームです。これらを試すには、Dapr 構成ファイルで Jaeger または New Relic サーバーを指すエンドポイント アドレスを指定するだけです。以下は、テレメトリを Jaeger サーバーに送信するように Dapr を構成する構成ファイルの例です。 Jaeger の URL は Zipkin の URL と同じです。唯一の違いは、サーバーが実行されるポート番号です。 apiバージョン: dapr .io / v1alpha1 同様に、New Relic を使用する場合は、EndpointAddress を New Relic API のアドレスとして指定する必要があります。 |
<<: インタビューでCopyOnWriteに答える3つのレベル、最後のレベルに答えられるのは1%の人
>>: アマゾン ウェブ サービスは「中国のパブリック クラウド市場のリーダー」に選ばれ、その革新的な開発能力はレポートで第 1 位にランクされました。
今日、多くの組織がデジタル変革戦略としてクラウドネイティブ プラットフォームを採用しています。クラウ...
hardcloud は設立されてまだ数ヶ月です。低価格、G ポート、Windows サポートなどの特...
Godaddy の最新のドメイン名プロモーションが始まりました。ドメイン名を 1 つ登録するには 1...
海外メディアの報道によると、10月18日、パイレート・ベイは火曜日にすべてのサービスをクラウドに移行...
早速本題に入り、無意味な話はやめましょう。より大きなローカルウェブサイトとして、ローカル人材ネットワ...
新興企業の SpartanHost は、主にシアトルとダラスで、HDD と SSD、DDOS 保護、...
激しい電子商取引の価格戦争はわずか数日しか続かなかったが、オンライン旅行市場での価格戦争は3か月続い...
まず面白い話をしましょう。最近、彼女が私の体が脂ぎっていると思っているので、私は華々しく減量期間に入...
最近、百度はあまり更新されておらず、わずかな変動があるだけですが、今日、私は本当に奇妙なウェブサイト...
Ramhost は 2009 年 2 月に設立され、4 年以上経ちました。社長は、VPS パネルをす...
アリババDAMOアカデミーは、自動運転の分野で再び中核的な進歩を達成しました。自社開発の認識アルゴリ...
ブログというツールが少し時代遅れになっているため、ブログを始める人がますます少なくなっています。しか...
クラウド コンピューティング機能がデータ センターから、接続されたデバイス、アプライアンス、ネットワ...
1. ターゲットキーワードが検索されているか確認するウェブサイトのコアキーワードは当然のものではあり...
この記事の目的は、いくつかのバケットの名前または会社名を知り、プログラムを使用してこの会社の下にある...