다음을 통해 공유


.NET Aspire Seq 통합

포함:호스팅 통합Client 통합

Seq 구조화된 애플리케이션 로그 및 추적 파일을 처리하는 자체 호스팅 검색 및 분석 서버입니다. 여기에는 JSON 이벤트 저장소와 사용하기 쉬운 간단한 쿼리 언어가 포함됩니다. .NET Aspire Seq 통합을 사용하여 OTLP(OpenTelemetry Protocol) 데이터를 Seq에 전송할 수 있습니다. 통합은 애플리케이션 다시 시작에서 영구 로그 및 추적을 지원합니다.

개발하는 동안 .NET.NET Aspire은 실행되고 datalust/seq 컨테이너 이미지에 연결됩니다.

호스팅 통합

Seq 호스팅 통합은 서버를 SeqResource 유형으로 모델화합니다. 이 형식 및 API에 액세스하려면 📦 프로젝트에 NuGet 패키지 AspireSeq.Hosting.을(를) 추가합니다.

dotnet add package Aspire.Hosting.Seq

자세한 내용은 dotnet add package 또는 .NET 응용 프로그램에서 패키지 종속성 관리를 참조하세요.

Seq 리소스 추가

앱 호스트 프로젝트에서 AddSeq 호출하여 Seq 리소스 작성기를 추가하고 반환합니다.

var builder = DistributedApplication.CreateBuilder(args);

var seq = builder.AddSeq("seq")
                 .ExcludeFromManifest()
                 .WithLifetime(ContainerLifetime.Persistent)
                 .WithEnvironment("ACCEPT_EULA", "Y");

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(seq)
                       .WaitFor(seq);

// After adding all resources, run the app...

메모

Seq 컨테이너는 시작 속도가 느릴 수 있으므로 불필요한 다시 시작을 방지하기 위해 영구 수명을 사용하는 것이 가장 좋습니다. 자세한 내용은 컨테이너 리소스 수명참조하세요.

Seq EULA(최종 사용자 사용권 계약)에 동의합니다.

Seq 시작하려면 Seq 수락해야 합니다. 코드에서 규약을 수락하려면 환경 변수 ACCEPT_EULASeq 컨테이너에 전달하고 해당 값을 Y설정합니다. 위의 코드는 WithEnvironment대한 연결된 호출에서 이 변수를 전달합니다.

Seq 매니페스트 안의 .NET Aspire

Seq은 .NET Aspire배포 매니페스트에 포함되어서는 안 되므로 ExcludeFromManifest를 호출한 것입니다. 프로덕션 환경에 대한 Seq 외부에서 안전한 프로덕션 .NET Aspire 서버를 설정하는 것이 좋습니다.

영구 로그 및 추적

앱 호스트 프로젝트의 데이터 디렉터리에 Seq 등록하여 애플리케이션을 다시 시작할 때 Seq데이터 및 구성을 유지합니다.

var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
                 .ExcludeFromManifest()
                 .WithLifetime(ContainerLifetime.Persistent);

지정된 디렉터리가 이미 있어야 합니다.

데이터 볼륨을 사용하여 Seq 리소스 추가

Seq 리소스에 데이터 볼륨을 추가하려면 WithDataVolume 리소스에서 Seq 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var seq = builder.AddSeq("seq")
                 .WithDataVolume()
                 .ExcludeFromManifest()
                 .WithLifetime(ContainerLifetime.Persistent);

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(seq)
                       .WaitFor(seq);

데이터 볼륨은 컨테이너의 수명 주기 외부에서 Seq 데이터를 유지하는 데 사용됩니다. 데이터 볼륨은 /data 컨테이너의 Seq 경로에 탑재되고 name 매개 변수가 제공되지 않으면 이름이 임의로 생성됩니다. 데이터 볼륨에 대한 더 많은 정보와 데이터 볼륨이바인딩 탑재보다 선호되는 이유는 문서의 '볼륨'를 참조하세요.

데이터 바인드 마운트를 사용하여 Seq 리소스를 추가합니다.

Seq 리소스에 데이터 바인딩 탑재를 추가하려면 WithDataBindMount 메서드를 호출합니다.

var builder = DistributedApplication.CreateBuilder(args);

var seq = builder.AddSeq("seq")
                 .WithDataBindMount(source: @"C:\Data")
                 .ExcludeFromManifest()
                 .WithLifetime(ContainerLifetime.Persistent);

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(seq)
                       .WaitFor(seq);

중요하다

데이터 바인딩 탑재볼륨비해 기능이 제한되므로 성능, 이식성 및 보안이 향상되어 프로덕션 환경에 더 적합합니다. 그러나 바인딩 탑재를 사용하면 호스트 시스템의 파일에 직접 액세스하고 수정할 수 있으므로 실시간 변경이 필요한 개발 및 테스트에 적합합니다.

데이터 바인딩 탑재는 호스트 컴퓨터의 파일 시스템을 사용하여 컨테이너를 다시 시작하는 동안 Seq 데이터를 유지합니다. 데이터 바인딩 탑재는 C:\Data 컨테이너의 호스트 컴퓨터에서 Windows의 /Data(또는 Unix경로의 Seq)에 탑재됩니다. 데이터 바인드 마운트에 대한 자세한 내용은 Docker 문서: 바인드 마운트를 참조하세요.

Client 통합

.NET Aspire Seq 클라이언트 통합을 사용을 시작하려면 Seq을 설치하는 것을 의미합니다.

dotnet add package Aspire.Seq

Seq 클라이언트 추가

클라이언트 사용 프로젝트의 Program.cs 파일에서 AddSeqEndpoint 확장 메서드를 호출하여 OpenTelemetry 프로토콜 내보내기를 등록하여 로그 및 추적을 Seq 및 .NET Aspire 대시보드에 보냅니다. 메서드는 연결 이름 매개 변수를 사용합니다.

builder.AddSeqEndpoint(connectionName: "seq");

connectionName 매개 변수는 앱 호스트 프로젝트에서 Seq 리소스를 추가할 때 사용되는 이름과 일치해야 합니다. 즉, AddSeq을 호출할 때 제공하는 seq 이름은 AddSeqEndpoint을 호출할 때 동일하게 사용되어야 합니다. 자세한 내용은 Seq 리소스추가를 참조하세요.

구성

.NET Aspire Seq 통합은 프로젝트의 요구 사항 및 규칙에 따라 Seq 연결을 구성하는 여러 옵션을 제공합니다.

구성 공급자 사용

.NET Aspire Seq 통합은 Microsoft.Extensions.Configuration지원합니다. 구성에서 SeqSettings 키를 사용하여 Aspire:Seq을 로드합니다. 다음 코드 조각은 일부 옵션을 구성하는 appsettings.json 파일의 예입니다.

{
  "Aspire": {
    "Seq": {
      "DisableHealthChecks": true,
      "ServerUrl": "http://localhost:5341"
    }
  }
}

전체 Seq 클라이언트 통합 JSON 스키마는 Aspire참조하세요.Seq/ConfigurationSchema.json.

인라인 대리자 사용

또한 Action<SeqSettings> configureSettings 대리자를 전달하여 코드에서 상태 검사를 사용하지 않도록 설정하는 등 일부 또는 모든 옵션을 인라인으로 설정할 수 있습니다.

builder.AddSeqEndpoint("seq", static settings => 
{
    settings.DisableHealthChecks  = true;
    settings.ServerUrl = "http://localhost:5341"
});

Client 통합 시스템 상태 점검

기본적으로 .NET.NET Aspire클라이언트 통합에는 모든 서비스에 대해 상태 검사 사용하도록 설정될 있습니다. 마찬가지로, 많은 .NET.NET Aspire호스팅 통합도 상태 검사 엔드포인트를 활성화합니다. 자세한 내용은 다음을 참조하세요.

.NET Aspire Seq 통합은 다음을 처리합니다.

  • SeqSettings.DisableHealthChecksfalse일 때, Seq 서버의 /health 엔드포인트에 연결을 시도하는 상태 검사를 추가합니다.
  • /health HTTP 엔드포인트와 통합되며, 이 엔드포인트는 앱이 트래픽을 수락할 준비가 되었다고 간주되기 위해서는 등록된 모든 상태 점검을 통과해야 한다고 규정합니다.

관찰 가능성 및 원격 분석

통합은 로깅, 추적 및 메트릭 구성을 자동으로 설정하며, 이를 관찰성의 핵심 요소로 불리기도 합니다. 통합 관찰 가능성 및 원격 분석에 대한 자세한 내용은 .NET.NET Aspire 통합 개요참조하세요. 지원 서비스에 따라 일부 통합은 이러한 기능 중 일부만 지원할 수 있습니다. 예를 들어 일부 통합은 로깅 및 추적을 지원하지만 메트릭은 지원하지 않습니다. 구성 섹션에 제시된 기술을 사용하여 원격 분석 기능을 사용하지 않도록 설정할 수도 있습니다.

로깅

.NET Aspire Seq 통합은 다음 로그 범주를 사용합니다.

  • Seq

추적 및 측정 기준

.NET Aspire Seq 통합은 원격 분석 원본이 아닌 원격 분석 싱크이기 때문에 추적 활동 및 메트릭을 내보내지 않습니다.

참고하기