この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 24815|答える: 1

[ASP.NET] ASP.NET コアリンクトレーシング(3) SkyAPMはConsul動的構成に基づいています

[リンクをコピー]
2020年11月11日 16:13:50に投稿 | | | |
復習:

ASP.NET コアリンクトレーシング(1) Skywalking チュートリアルのインストール
https://www.itsvse.com/thread-9456-1-1.html

ASP.NET Core Link Tracing (2) はSkyAPM統合を使用しています
https://www.itsvse.com/thread-9458-1-1.html



プロジェクト、使っていいよ領事又はアポロ構成センターを作成するには、Consulを ASP.NET コア構成センターとして扱うチュートリアルがあります:

アーキテクチャ:ASP.NET CoreはConsulに基づいて動的にホットアップデートを設定します
https://www.itsvse.com/thread-9421-1-1.html
要件:APMの設定情報をConsulミドルウェアに保存するため、サーバーにログインしてappsettings.jsonファイルの設定情報を手動で変更する必要はありません。

領事の開始

まず次のコマンドを使ってコンスルミドルウェアを起動します:




Core ASP.NET Consul関連プラグインをインストールする

私たちのsky-apm-demoプロジェクトでは、nugetを使ってConsulミドルウェアをプラグインとしてインストールし、以下のコマンドで設定センターを読み取ることができます。

ProgramオブジェクトのCreateHostBuilderメソッドを修正してリモートConsulの設定情報の読み取りを追加すれば、コードは以下の通りです。

一方、appsettings.jsonファイルでは、consul_urlアドレスを次のように設定する必要があります:



コンスルに設定情報を追加してウェブ管理プラットフォームを起動します:ハイパーリンクのログインが見えます。sky-apm-demo/appsettingsを作成するために。 Development.jsonキーの値は以下の通りです:



コンスルサービス構成の情報を読み取るための新しいtest3コントローラーメソッドを作成し、以下のように簡単にテストします。

アクセスハイパーリンクのログインが見えます。通常設定した構成は以下の通りです:



skyapm-20201111.logログを見ると、SkyApmがSkywalkingにアクセスするアドレスは設定していたものとは違うのがわかりますデフォルト:localhost:11800、下図に示されているように:



2020-11-11 15:32:35.869 +08:00 [My_Service] [情報] SkyApm.Transport.Grpc.ConnectionManager: 接続がシャットダウン[localhost:11800]。
2020-11-11 15:32:45.875 +08:00 [My_Service] [エラー] SkyApm.Transport.Grpc.ConnectionManager: Connect server timeout.
System.Threading.Tasks.TaskCanceledException: Reached deadline.
   at Grpc.Core.Channel.WaitForStateChangedAsync(ChannelState lastObservedState, Nullable'1 deadline)
   at grpc.Core.Channel.ConnectAsync(Nullable'1 deadline)
   at SkyApm.Transport.Grpc.ConnectionManager.ConnectAsync()
GitHubのSkyAPM.Agent.AspNetCoreソースコードを確認すると、プログラムがまずデフォルト設定を割り当て、その後設定ファイルを読み込んで前のデフォルト値を上書きappsettings.json skywalking.json skyapm.jsonすると、以下の図のように示されています。



構成に関しては、読み込みプロセスは以下の通りです。



では、SkyAPMはいつスカイウォーキングと通信を開始したのでしょうか?



SkyAPMのソースコードには、IHostedServiceを登録する際のInstrumentationHostedServiceバックグラウンドタスクがあります。.NET Core は、アプリケーションの開始時と停止時にそれぞれ IHostedService 型の StartAsync() メソッドと StopAsync() メソッドを呼び出します

参照できるのは:

Linux上の.NET Coreを基盤としたサービス
https://www.itsvse.com/thread-9447-1-1.html
問題は、コンスルが設定した設定情報がSkyAPMのデフォルト値に上書きされていることです。この問題を解決するためにソースコードを修正し、GitHubにSkyAPMのソースコードをダウンロードします。

ConfigurationFactoryファイルを以下のように修正します:

ConfigurationBuilderExtensionsファイルを以下のように修正してください:

修正されたソースコードについては、私のブランチを参照してください:ハイパーリンクのログインが見えます。

論理的判断として、SkyAPM構成がすでに存在している場合、デフォルト値は使用しません。再生sky-apm-demoおよびSkyApm.Agent.AspNetCoreプロジェクトで、改変済みライブラリの\src\SkyApm.Agent.AspNetCore\bin\Debug\netcoreapp3.1フォルダ内のすべてのファイルをプロジェクト\bin\Debug\netcoreapp3.1にコピーし、置き換えてください。ブラウザを更新してください

apmログを見ると、コンスルの設定情報が正常に読み込まれ、Skywalkingとの通信が正常に確立されていることがわかります(下図参照)。




(終わり)




先の:. .NET MySQL コネクタの競合 DbProviderFactories(.NET MySQL コネクタの競合 DbP...
次に:.NET Coreは登録されたサービスや実装、そのライフサイクルを表示します
2023年6月2日 14:24:31に投稿 |
いいステッカーだね
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com