이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 24815|회답: 1

[ASP.NET] ASP.NET 코어 링크 트레이싱(3) SkyAPM은 Consul 동적 구성을 기반으로 합니다

[링크 복사]
2020-11-11 16:13:50에 게시됨 | | | |
복습:

ASP.NET 코어 링크 트레이싱 (1) 스카이워킹 튜토리얼 설치
https://www.itsvse.com/thread-9456-1-1.html

ASP.NET 코어 링크 트레이싱(2)은 SkyAPM 통합을 사용합니다
https://www.itsvse.com/thread-9458-1-1.html



프로젝트, 사용하실 수 있습니다영사또는아폴로구성 센터를 만들기 위해 Consul을 ASP.NET Core 구성 센터로 사용하는 튜토리얼을 참고하세요:

아키텍처: ASP.NET Core는 Consul을 기반으로 동적으로 핫 업데이트를 구성합니다
https://www.itsvse.com/thread-9421-1-1.html
요구사항: APM의 구성 정보를 Consul 미들웨어에 저장하므로, 서버에 로그인하여 appsettings.json 파일의 구성 정보를 수동으로 수정할 필요가 없습니다.

영사 시작

다음 명령어를 먼저 사용하여 consul 미들웨어를 시작합니다:




Core ASP.NET Consul 관련 플러그인 설치

sky-apm-demo 프로젝트에서는 nuget을 사용해 Consul 미들웨어를 설치 플러그인으로 설치해 구성 센터를 읽으세요:

프로그램 객체의 CreateHostBuilder 메서드를 수정하여 원격 Consul 구성 정보를 읽는 기능을 추가하면 코드는 다음과 같습니다:

한편, appsettings.json 파일에서는 다음과 같이 consul_url 주소를 설정해야 합니다:



웹 관리 플랫폼을 열기 위해 구성 정보를 consul에 추가하세요:하이퍼링크 로그인이 보입니다.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 서버 타임아웃.
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은 언제 Skywalking과 소통을 시작했나요?



SkyAPM 소스 코드는 IHostedService 등록 시 InstrumentationHostedService 백그라운드 작업을 가지고 있습니다..NET 코어는 애플리케이션 시작 및 중지 시 각각 IHostedService 타입의 StartAsync()와 StopAsync() 메서드를 호출합니다

참고할 수 있는 자료는 다음과 같습니다:

리눅스에서 .NET 코어를 기반으로 한 서비스
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 로그를 살펴보면 consul의 구성 정보가 성공적으로 읽혔고, Skywalking과의 통신이 성공적으로 확립된 것을 확인할 수 있습니다. 아래 그림에서 볼 수 있습니다:




(끝)




이전의:. .NET MySQL 커넥터 충돌 DbProviderFactories (.NET MySQL 커넥터 충돌 DbP...
다음:.NET Core는 등록된 서비스와 구현체, 그리고 그 수명주기를 표시합니다
2023-6-2 14:24:31에 게시됨 |
좋은 스티커
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com