학습
모듈
.NET Aspire 프로젝트에서 원격 분석 사용 - Training
이 모듈에서는 원격 분석을 사용하여 클라우드 네이티브 애플리케이션의 동작을 기록하는 방법과 .NET Aspire 스택을 통해 데이터를 더 쉽게 저장하고 나중에 볼 수 있는 방법에 대해 알아봅니다.
.NET SDK 사용량 현황 데이터를 수집하고 .NET CLI 명령을 사용할 때 Microsoft로 보내는 원격 분석 기능이 포함되어 있습니다. 사용량 현황 데이터에는 .NET CLI가 충돌할 때의 예외 정보가 포함됩니다. .NET CLI는 .NET SDK와 함께 제공되며 .NET 앱을 빌드, 테스트 및 게시할 수 있는 동사 집합입니다. 원격 분석 데이터는 .NET 팀이 도구를 사용하는 방법을 이해하여 개선할 수 있도록 도와줍니다. 실패에 대한 정보는 팀이 문제를 해결하고 버그를 해결하는 데 도움이 됩니다.
수집된 데이터는 크리에이티브 커먼즈 저작자 표시 라이선스에 따라 집계하여 게시됩니다. 수집된 데이터 중 일부는 .NET CLI 원격 분석 데이터에 게시됩니다.
dotnet
앱을 실행하고 CLI 명령을 실행하는 두 가지 함수가 있습니다. 다음 형식으로 애플리케이션을 시작하기 위해 dotnet
를 사용할 때 원격 분석 은 수집되지 않습니다.
dotnet [path-to-app].dll
원격 분석 다음과 같은 .NET CLI 명령사용할 때 수집됩니다.
dotnet build
dotnet pack
dotnet run
.NET SDK 원격 분석 기능은 SDK의 Microsoft 배포에 대해 기본적으로 사용하도록 설정됩니다. 원격 분석 기능을 제외하려면 DOTNET_CLI_TELEMETRY_OPTOUT
환경 변수를 1
또는 true
로 설정하십시오.
.NET SDK 설치 프로그램은 설치가 성공적으로 완료되면 단일 원격 분석 항목을 전송합니다. 옵트아웃하려면 .NET SDK를 설치하기 전에 DOTNET_CLI_TELEMETRY_OPTOUT
환경 변수를 설정합니다.
중요
설치 관리자를 시작한 후 옵트아웃하려면 설치 관리자를 닫고 환경 변수를 설정한 다음 해당 값 집합으로 설치 관리자를 다시 실행합니다.
.NET SDK는 .NET CLI 명령(예: dotnet build
) 중 하나를 처음 실행할 때 다음과 유사한 텍스트를 표시합니다. 실행 중인 SDK 버전에 따라 텍스트가 약간 달라질 수 있습니다. 이 "첫 실행" 경험은 Microsoft가 데이터 수집에 대해 알려 줍니다.
Telemetry
---------
The .NET tools collect usage data in order to help us improve your experience. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
이 메시지와 .NET 시작 메시지를 사용하지 않도록 설정하려면 DOTNET_NOLOGO
환경 변수를 true
설정합니다. 이 변수는 원격 분석 옵트아웃에 영향을 주지 않습니다.
원격 분석 기능은 사용자 이름 또는 전자 메일 주소와 같은 개인 데이터를 수집하지 않습니다. 코드를 검사하지 않으며 이름, 리포지토리 또는 작성자와 같은 프로젝트 수준 데이터를 추출하지 않습니다. 앱에서 액세스하거나 만든 데이터 파일의 콘텐츠, 앱 개체가 차지하는 메모리 덤프 또는 클립보드의 콘텐츠는 추출하지 않습니다. 데이터는 Azure Monitor 기술을 사용하여 Microsoft 서버로 안전하게 전송되고, 제한된 액세스로 유지되며, 보안 Azure Storage 시스템의 엄격한 보안 제어 하에 게시됩니다.
개인 정보 보호는 Microsoft에 중요합니다. 원격 분석이 민감한 데이터를 수집하거나 데이터가 안전하지 않게 또는 부적절하게 처리된다고 의심되는 경우, dotnet/sdk 리포지토리에 이슈를 제기하거나 조사를 위해 dotnet@microsoft.com로 이메일을 보내십시오.
원격 분석 기능은 다음 데이터를 수집합니다.
SDK 버전 | 데이터 |
---|---|
모두 | 호출 타임스탬프입니다. |
모두 | 호출된 명령(예: "build")은 2.1부터 해시됩니다. |
모두 | 지리적 위치를 결정하는 데 사용되는 3개의 8진수 IP 주소입니다. |
모두 | 운영 체제 및 버전. |
모두 | SDK가 실행 중인 RID(런타임 ID)입니다. |
모두 | .NET SDK 버전입니다. |
모두 | 원격 분석 프로필: 명시적으로 사용자가 옵트인한 경우에만 사용되며 Microsoft에서 내부적으로 사용되는 선택적 값입니다. |
>=2.0 | 명령 인수 및 옵션: 여러 인수 및 옵션이 수집됩니다(임의 문자열이 아님). 의 수집된 옵션을 참조하세요. 2.1.300 이후 해시되었습니다. |
>=2.0 | SDK가 컨테이너에서 실행되고 있는지 여부입니다. |
>=2.0 | 대상 프레임워크(TargetFramework 이벤트에서)는 2.1 버전부터 해싱됩니다. |
>=2.0 | 해시된 MAC(미디어 액세스 제어) 주소(SHA256). |
>=2.0 | 현재 작업 디렉토리를 해싱했습니다. |
>=2.0 | 해시된 설치 관리자 exe 파일 이름을 사용하여 성공 보고서를 설치합니다. |
>=2.1.300 | 커널 버전입니다. |
>=2.1.300 | Libc 릴리스/버전 |
>=3.0.100 | 출력이 리디렉션되었는지 여부(true 또는 false)입니다. |
>=3.0.100 | CLI/SDK 크래시에서 예외 형식 및 해당 스택 추적(전송된 스택 추적에 CLI/SDK 코드만 포함됨). 자세한 내용은 크래시 예외 원격 분석참조하세요. |
>=5.0.100 | 빌드에 사용되는 해시된 TargetFrameworkVersion(MSBuild 속성) |
>=5.0.100 | 빌드에 사용되는 해시된 RuntimeIdentifier(MSBuild 속성) |
>=5.0.100 | 빌드에 사용되는 해시된 SelfContained(MSBuild 속성) |
>=5.0.100 | 빌드에 사용되는 해시된 UseApphost(MSBuild 속성) |
>=5.0.100 | 빌드에 사용되는 해시된 OutputType(MSBuild 속성) |
>=5.0.201 | 빌드에 사용되는 해시된 PublishReadyToRun(MSBuild 속성) |
>=5.0.201 | 빌드에 사용되는 해시된 PublishTrimmed(MSBuild 속성) |
>=5.0.201 | 빌드를 위해 해시된 PublishSingleFile(MSBuild 속성) 사용 |
>=5.0.202 | 프로세스 시작부터 CLI 프로그램의 주 메서드를 입력하여 호스트 및 런타임 시작을 측정하는 때까지 경과된 시간입니다. |
>=5.0.202 | 첫 번째 실행 시 경로에 .NET 도구를 추가하는 단계의 경과된 시간입니다. |
>=5.0.202 | 처음 실행 시 처음 사용 알림을 표시하는 데 경과된 시간입니다. |
>=5.0.202 | 처음 실행할 때 ASP.NET 인증서를 생성하는 데 경과된 시간입니다. |
>=5.0.202 | CLI 입력을 구문 분석하는 데 경과된 시간입니다. |
>=6.0.100 | OS 아키텍처 |
>=6.0.104 | 빌드에 사용되는 해시된 PublishReadyToRunUseCrossgen2(MSBuild 속성) |
>=6.0.104 | 빌드에 사용되는 해시된 Crossgen2PackVersion(MSBuild 속성) |
>=6.0.104 | 빌드에 사용되는 해시된 CompileListCount(MSBuild 속성) |
>=6.0.104 | 빌드에 사용되는 해시된 _ReadyToRunCompilationFailures(MSBuild 속성) |
>=6.0.300 | CLI가 연속 통합 환경에서 호출된 경우 자세한 내용은 연속 통합 검색참조하세요. |
>=7.0.100 | 빌드에 사용되는 해시된 PublishAot(MSBuild 속성) |
>=7.0.100 | 빌드에 사용되는 해시된 PublishProtocol(MSBuild 속성) |
>=8.0.100 | 빌드에 사용되는 해시된 TargetPlatformIdentifier(MSBuild 속성) |
>=8.0.100 | 빌드에 사용된 Hashed HybridGlobalization(MSBuild 속성) |
>=8.0.100 | .NET Blazor WebAssembly SDK가 사용되는지 여부입니다. |
>=8.0.100 | .NET WebAssembly SDK가 사용되는지 여부입니다. |
>=8.0.100 | .NET MAUI 사용 여부입니다. |
>=8.0.100 | .NET 모바일 SDK가 사용되는지 여부입니다. |
>=8.0.100 | 다른 모바일 SDK가 사용되는지 여부(예: Avalonia, Uno). |
>=8.0.100 | Mono AOT 사용 여부입니다. |
>=8.0.100 | Mono AOT IL 스트립 기능이 사용되고 있는지 여부입니다. |
>=8.0.100 | Mono 인터프리터가 사용되는지 여부입니다. |
>=8.0.100 | 모바일 라이브러리 모드가 사용되는지 여부입니다. |
>=8.0.100 | NativeAOT 사용 여부입니다. |
>=8.0.100 | Mono 런타임 팩 버전을 사용했습니다. |
특정 명령은 추가 데이터를 보냅니다. 명령의 하위 집합은 첫 번째 인수를 보냅니다.
명령 | 보낸 첫 번째 인수 데이터 |
---|---|
dotnet help <arg> |
명령 도움말이 요청되고 있습니다. |
dotnet new <arg> |
템플릿 이름(해시됨)입니다. |
dotnet add <arg> |
단어 package 또는 reference . |
dotnet remove <arg> |
단어 package 또는 reference 이라는. |
dotnet list <arg> |
단어 package 또는 reference . |
dotnet sln <arg> |
단어 add , list 또는 remove . |
dotnet nuget <arg> |
단어 delete , locals 또는 push . |
dotnet workload <subcommand> <arg> |
단어 install , update , list , search , uninstall , repair , restore 및 워크로드 이름(해시됨)입니다. |
dotnet tool <subcommand> <arg> |
단어 install , update , list , search , uninstall , run 및 dotnet 도구 이름(해시됨)입니다. |
명령의 하위 집합은 선택한 옵션을 사용하는 경우 해당 값과 함께 보냅니다.
선택 | 명령 |
---|---|
--verbosity |
모든 명령 |
--language |
dotnet new |
--configuration |
dotnet build , dotnet clean , dotnet publish , dotnet run , dotnet test |
--framework |
dotnet build , dotnet clean , dotnet publish , dotnet run , dotnet test , dotnet vstest |
--runtime |
dotnet build , dotnet publish |
--platform |
dotnet vstest |
--logger |
dotnet vstest |
--sdk-package-version |
dotnet migrate |
SDK가 기본 제공 명령을 해결하지 못하면 명령을 성공적으로 확인하는 모든 명령 확인자는 명령 확인자 형식의 이름과 함께 명령 이름의 해시를 보냅니다.
--verbosity
및 --sdk-package-version
제외하고 다른 모든 값은 .NET Core 2.1.100 SDK부터 해시됩니다.
dotnet new
템플릿 인스턴스화 명령은 .NET Core 2.1.100 SDK부터 Microsoft에서 작성한 템플릿에 대한 추가 데이터를 수집합니다.
--framework
--auth
.NET CLI/SDK가 충돌하는 경우 CLI/SDK 코드의 예외 이름 및 스택 추적을 수집합니다. 이 정보는 문제를 평가하고 .NET SDK 및 CLI의 품질을 개선하기 위해 수집됩니다. 이 문서에서는 수집하는 데이터에 대한 정보를 제공합니다. 또한 자체 버전의 .NET SDK를 빌드하는 사용자가 개인 정보나 중요한 정보가 실수로 노출되는 것을 방지하는 방법에 대한 팁을 제공합니다.
.NET CLI는 애플리케이션의 예외가 아니라 CLI/SDK 예외에 대한 정보만 수집합니다. 수집된 데이터에는 예외의 이름과 스택 추적이 포함됩니다. 이 스택 추적은 CLI/SDK 코드의 것입니다.
다음 예제에서는 수집되는 데이터의 종류를 보여줍니다.
System.IO.IOException
at System.ConsolePal.WindowsConsoleStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
at System.IO.StreamWriter.Write(Char[] buffer)
at System.IO.TextWriter.WriteLine()
at System.IO.TextWriter.SyncTextWriter.WriteLine()
at Microsoft.DotNet.Cli.Utils.Reporter.WriteLine()
at Microsoft.DotNet.Tools.Run.RunCommand.EnsureProjectIsBuilt()
at Microsoft.DotNet.Tools.Run.RunCommand.Execute()
at Microsoft.DotNet.Tools.Run.RunCommand.Run(String[] args)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)
.NET CLI가 연속 통합 환경에서 실행되고 있는지 감지하기 위해 .NET CLI는 일반적인 CI 공급자가 설정한 몇 가지 잘 알려진 환경 변수의 존재 및 값을 검색합니다.
환경 변수의 전체 목록과 해당 값으로 수행되는 작업은 다음과 같습니다. 모든 경우에 환경 변수의 값은 수집되지 않으며, 오직 부울 플래그를 설정하는 데만 사용됩니다.
변수(들) | 공급자 | 행동 |
---|---|---|
TF_BUILD | Azure 파이프라인 | 부울 값 구문 분석 |
GITHUB_ACTIONS | GitHub Actions | 부울 값 파싱 |
APPVEYOR | Appveyor | 부울 값 구문 분석 |
CI | 다/대부분 | 불리언 값 구문 분석 |
트래비스 | Travis CI | 부울 값 구문 분석 |
CIRCLECI | CircleCI | 부울 값 구문 분석 |
CODEBUILD_BUILD_ID, AWS_REGION | Amazon Web Services CodeBuild | 모두 존재하고 null이 아닌지 확인합니다. |
No changes needed. The translation as given is already optimal: BUILD_ID, BUILD_URL | 젠킨스 | 모두 존재하고 null이 아닌지 확인합니다. |
BUILD_ID (빌드 ID), PROJECT_ID (프로젝트 ID) | Google Cloud 빌드 | 모두 존재하고 null이 아닌지 확인합니다. |
TEAMCITY_VERSION | TeamCity | 존재 여부와 null이 아닌지 확인 |
JB_SPACE_API_URL | JetBrains Space | 값이 존재하고 null이 아닌지 확인 |
.NET 기여자 및 자체 빌드한 .NET SDK 버전을 실행하는 다른 모든 사용자는 SDK 소스 코드의 경로를 고려해야 합니다. 사용자 지정 디버그 빌드이거나 사용자 지정 빌드 기호 파일로 구성된 .NET SDK를 사용하는 동안 충돌이 발생하면 빌드 머신의 SDK 원본 파일 경로가 스택 추적의 일부로 수집되고 해시되지 않습니다.
따라서 .NET SDK의 사용자 지정 빌드는 경로 이름이 개인 정보 또는 중요한 정보를 노출하는 디렉터리에 있으면 안 됩니다.
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.
학습
모듈
.NET Aspire 프로젝트에서 원격 분석 사용 - Training
이 모듈에서는 원격 분석을 사용하여 클라우드 네이티브 애플리케이션의 동작을 기록하는 방법과 .NET Aspire 스택을 통해 데이터를 더 쉽게 저장하고 나중에 볼 수 있는 방법에 대해 알아봅니다.