추적(Master Data Services)
적용 대상:SQL Server - Windows 전용 Azure SQL Managed Instance
MDS(Master Data Services)를 설치한 후에는 오류 진단, 지원 요청 및 애플리케이션 사용량 및 성능 모니터링에 유용한 추적 로깅 기능을 찾을 수 있습니다. 이 문서에서는 추적 로깅을 켜고 구성하는 단계를 설명합니다. 특히 이 문서에서는 텍스트 로그 파일 추적에 대해 설명합니다. 이 문서에서는 MDS 데이터베이스를 만들 때 발생할 수 있는 오류를 해결하는 데 도움이 되는 로그 파일을 만드는 절차도 설명합니다.
배경
Master Data Services는 ASP.NET 웹 애플리케이션(Master Data Manager) 및 WCF 서비스로 구성됩니다. 둘 다 IIS 및 SQL Server 데이터베이스에서 호스트됩니다. 마스터 데이터 관리자 요청 및 웹 서비스 API 엔드포인트에 대한 외부 호출은 공통 서비스 계층에서 처리됩니다. 서비스 계층은 각 작업 요청/응답, 중요한 이벤트 및 오류를 기록할 수 있습니다.
IIS 웹 서버의 파일에 액세스할 수 있는 관리자는 MDS Web.config 파일을 수정하여 로깅을 사용하도록 설정할 수 있습니다.
기본적으로 Web.config 파일은 다음 웹 애플리케이션 폴더 중 하나에 있습니다.
SQL Server 2008 R2: program_files\Microsoft SQL Server\Master Data Services\WebApplication
SQL Server 2012 이상 버전: program_files\Microsoft SQL Server\<nnn>\Master Data Services\WebApplication
경로의 nnn 숫자는 설치 중인 SQL Server 버전에 해당합니다. 다음 표에서는 경로에 대한 버전을 식별합니다.
버전 | nnn |
---|---|
SQL Server 2019 | 150 |
SQL Server 2017 | 140 |
SQL Server 2016 | 130 |
SQL Server 2014 | 120 |
SQL Server 2012 | 110 |
주의
Web.config를 업데이트하면 IIS의 MDS 애플리케이션 도메인이 재활용됩니다. 기존 사용자 세션은 캐시된 정보를 잃게 되며 사용자는 세션 오류 또는 느린 페이지 로드가 발생할 수 있습니다. 가능한 경우 사용량이 많은 시간에 변경 작업을 수행합니다.
MDS 웹 애플리케이션에 대한 추적 로깅
SQL Server 2016 이상 버전
Web.config 파일에는 아래와 같이 추적 섹션이 포함되어 있습니다. 이 섹션은 SQL Server 2016(13.x) Master Data Services에 도입되었습니다.
<sources>
<!-- Adjust the switch value to control the types of messages that should be logged.
https://msdn.microsoft.com/library/system.diagnostics.sourcelevels
Use a switchValue of Verbose to generate a full log. Please be aware that
the trace file can get quite large very quickly. -->
<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="Warning, ActivityTracing">
<listeners>
<!-- Set a directory path where the service account you chose while setting up Master Data Services has read and write privileges.
Default path is Logs in WebApplication folder, for example C:\Program Files\Microsoft SQL Server\130\Master Data Services\WebApplication
New log file will be created every day or every 10 mb.
When directory size hits the 200 mb limitation, the oldest file will be deleted. -->
<add name="FileTraceListener"
type="Microsoft.MasterDataServices.Core.Logging.FileTraceListener, Microsoft.MasterDataServices.Core"
initializeData="DirectoryPath = Logs; FileSizeInMb = 10; MaxDirectorySizeInMb = 200"/>
<remove name="Default"/>
</listeners>
</source>
</sources>
기본 추적 동작은 다음과 같습니다.
추적은 메시지 및
ActivityTracing
메시지에 대해Warning
사용하도록 설정됩니다.자세한 내용은 SourceLevels 열거형을 참조 하세요.
로그는 WebApplication 폴더 아래의 Logs 폴더에 저장됩니다. 기본 위치는 C:\Program Files\Microsoft SQL Server\nnn\Master Data Services\WebApplication\Logs입니다.
파일은 매일 또는 10MB마다 만들어집니다.
디렉터리 크기가 200MB에 도달하면 가장 오래된 로그가 삭제됩니다.
로그 형식은 CSV입니다. 다음 표에서는 로그 형식에 대해 설명합니다.
요소 설명 Time 추적 항목이 발생하는 경우 Correlationid 각 요청에 대해 하나의 상관 관계 ID가 할당됩니다. 이 요청에 의해 트리거된 모든 추적은 동일한 상관 관계 ID를 공유합니다.
UI에서 오류가 발생하면 상관 관계 ID가 오류 메시지에 표시됩니다.Operation 요청 작업 이름입니다. 요청이 웹 UI 요청인 경우 작업 이름은 URL입니다. 요청이 API 요청인 경우 작업 이름은 서비스 이름입니다. 수준 이 추적 항목의 수준 메시지 추적의 메시지 본문
SQL Server 2014 및 이전 버전
원래 설치된 Web.config 파일의 진단 섹션
다음 파일 조각은 원래 설치된 Web.config 파일의 진단 섹션을 보여 줍니다 .
참고 항목
은 switchValue
(을)로 설정됩니다 Off
. 또한 예제 줄은 주석 처리됩니다. 이러한 줄은 다양한 형식의 추적 수신기를 추가하는 예제입니다.
<system.diagnostics>
<sources>
<!-- Adjust the switch value to control the types of messages that should be logged. -->
<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="Off">
<listeners>
<!-- Enable and configure listeners as desired to obtain trace messages. -->
<!-- <add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsTrace.log" traceOutputOptions="DateTime" /> -->
<!-- <add name="EtwListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"
initializeData="{F2A341B8-CA5F-49ad-B00C-A82D3FCF948B}"/> -->
<!-- <remove name="Default"/> -->
</listeners>
</source>
</sources>
<trace autoflush="true"/>
</system.diagnostics>
로그 파일 추적 켜기
로깅을 사용하도록 설정하려면 아래 표 1에 설명된 대로 유효한 값으로 변경하거나 다른 유효한 값으로 변경 switchValue
All
합니다. 로그 파일에 출력을 사용하도록 설정하려면 다음 파일 코드 조각에 표시된 대로 줄의 주석 처리를 LogFileListener
제거합니다.
<system.diagnostics>
<sources>
<!-- Adjust the switch value to control the types of messages that should be logged. -->
<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">
<listeners>
<!-- Enable and configure listeners as desired to obtain trace messages. -->
<add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsTrace.log" traceOutputOptions="DateTime"/>
<!-- <add name="EtwListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" initializeData="{F2A341B8-CA5F-49ad-B00C-A82D3FCF948B}"/> -->
<!-- <remove name="Default"/> -->
</listeners>
</source>
</sources>
<trace autoflush="true"/>
</system.diagnostics>
표 1 - 로깅에 대한 SwitchValue 설정
설정 | 기록되는 내용 |
---|---|
사용 안 함 | 없음 |
Error | 오류만 |
경고 | 오류 및 경고 |
정보 | 오류, 경고, 정보 메시지 |
자세한 정보 표시 | XML 형식의 API 요청 및 응답을 비롯한 "정보" 및 기타 디버깅 추적 정보 |
ActivityTracing | 이벤트 시작 및 중지만 |
전체 | "자세한 정보 표시" 및 "ActivityTracing" |
파일 이름 및 경로
값은 initializeData
로그 파일의 이름입니다. 다른 이름으로 수정하거나 원하는 경로를 포함할 수 있습니다. 경로가 지정되지 않은 경우 파일은 기본적으로 웹 애플리케이션 디렉터리 경로(Web.config가 있는 위치)로 설정됩니다.
Important
MDS 애플리케이션 풀의 서비스 계정에는 로그 파일 위치에 대한 쓰기 권한이 있어야 합니다.
로깅 수준의 세부 정보
아래 표 2 에서는 맨 위에 있는 가장 중요/중요한 이벤트와 함께 기록되거나 정렬될 수 있는 추적 이벤트의 범주를 설명합니다. 위의 표 1 에는 로깅에 대한 유효한 설정이 나열됩니다 switchValue
. 이 설정은 상황에 맞게 적절한 양의 로깅 세부 정보를 생성하도록 조정할 수 있습니다.
표 2 - MDS 로깅 이벤트 유형
이벤트 유형 | 설명 |
---|---|
위험 | 심각한 오류 또는 애플리케이션 충돌 |
Error | 복구 가능한 오류 |
경고 | 심각하지 않은 문제 |
정보 | 정보 메시지 |
자세한 정보 표시 | 디버깅 추적 메시지 |
시작 | 논리 작업 시작 |
중지 | 논리 작업 중지 |
로그 설정 권장 사항
- 정상적인 작업의 경우 설정을 사용하여 로깅을 완전히 방지하거나 관리자에게 문제를 경고하면서 로그를 작게 유지하는 설정 또는
Warning
설정을 사용합니다.Off
Error
All
지원/문제 해결 상황에 대한 설정을 사용합니다.- 성능 측정 또는 사용량 모니터링에 사용합니다
ActivityTracing
. - 정기적으로 로그를 확인하고 정리할 준비가 된 경우에만 사용합니다
Information
. 이 설정으로 인해 로그가 오래 걸릴 수 있습니다. 이 설정은 사용량 및 사용 패턴을 추적하는 데 유용합니다. - 기록된 데이터의 양이 성능에 부정적인 영향을 주기 때문에 사용하거나
All
정상적인 작동 조건에서 사용하지Verbose
마세요.
제품 지원을 위한 로그 파일을 만드는 단계
예기치 않은 오류가 발생하고 추가 진단이 필요한 경우 서비스 요청 및 응답과 함께 문제로 이어지는 이벤트를 추적하는 로그 파일을 만드는 것이 좋습니다.
간결하고 유용한 로그 파일을 생성하려면 다음 단계를 수행합니다.
주의
Web.config를 업데이트하면 IIS의 MDS 애플리케이션 도메인이 재활용됩니다.
가능하면 IIS 관리자에서 MDS 애플리케이션 풀을 중지합니다.
경고
애플리케이션을 오프라인 상태로 만들 수 있는 경우에만 이 작업을 수행합니다.
가능하면 현재 로그 파일을 이동하거나 삭제합니다(이미 있는 경우).
텍스트 편집기를 사용하여 Web.config 파일을 엽니다.
참고 항목
기본적으로 Web.config 파일은 다음 웹 애플리케이션 폴더 중 하나에 있습니다.
- SQL Server 2008 R2: program_files\Microsoft SQL Server\Master Data Services\WebApplication
- SQL Server 2012: program_files\Microsoft SQL Server\110\Master Data Services\WebApplication
system.diagnostics
섹션을 찾습니다.switchValue
All
이 문서의 로그 파일 추적 켜기 섹션에 표시된 대로 로그 파일 줄의 주석 처리를 변경하거나ActivityTracing
제거합니다.- 오류 진단에 사용합니다
switchValue="All"
. - 성능 진단에 사용합니다
switchValue="ActivityTracing"
. - 원하는 경우 MdsTrace.log 파일 이름 앞에 경로 접두사를 지정할 수 있습니다.
- 오류 진단에 사용합니다
애플리케이션 풀이 이전에 중지된 경우 IIS에서 MDS 애플리케이션 풀을 시작합니다. 또는 일정 시간 및 웹 애플리케이션 작업 후에 로그 파일이 나타날 때까지 기다립니다. 웹 애플리케이션은 파일에서 구성 설정을 주기적으로 다시 로드합니다(몇 분 내에 있어야 함).
문제를 재현하고 오류를 발생시킨 동일한 작업 또는 요청을 수행합니다.
애플리케이션 풀을 중지할 수 있는 경우:
- 애플리케이션 풀을 중지합니다.
- 로그 파일을 검색합니다(프로세스가 완료될 때까지 기다려야 할 수 있습니다. 앱 풀을 중지한 후 지연이 있을 수 있음).
또는 파일을 잠그지 않는 편집기(예: notepad.exe)를 사용하여 로그 파일을 열고 관련 추적 메시지를 복사합니다.
텍스트 편집기를 사용하여 Web.config 파일을 열고 다시 또는 이전 값으로
Off
변경switchValue
합니다.중지된 경우 애플리케이션 풀을 시작합니다.
오류 처리: 모든 서비스 작업은 응답 메시지의 개체 내에서
OperationResult
오류의 배열 또는 컬렉션을 반환합니다. 오류가 발생하면 오류 배열도 XML로 직렬화되고 위에서 설명한 대로 특정switchValue
설정에 대한 웹 애플리케이션 로그 파일에 기록됩니다.
로그 파일에 기록된 API 응답 오류의 예:
MDS Error: 0 :
<ArrayOfError xmlns="http://schemas.microsoft.com/sqlserver/masterdataservices/2009/09" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Error>
<Code>110003</Code>
<Context>
<FullyQualifiedName>Model1</FullyQualifiedName>
<Identifier>
<Id>00000000-0000-0000-0000-000000000000</Id>
<Name>Model1</Name> <InternalId>0</InternalId>
</Identifier>
<Type>Model</Type>
</Context>
<Description>The name already exists. Type a different name.</Description>
</Error>
</ArrayOfError>
DateTime=2009-12-10T20:48:05.6949548Z error object contents
위의 예제와 같이 각 오류에는 다음 데이터 속성이 포함됩니다.
Property | 설명 |
---|---|
코드 | 오류 유형을 식별하는 고유 오류 번호 |
설명 | 지역화된 오류 메시지 텍스트 |
Context.FullyQualifiedName | 오류와 관련된 개체의 정규화된 이름입니다. 일부 이름은 컨텍스트 내에서만 고유합니다. 엔터티는 ModelName : EntityName과 같은 모델 이름 접두사를 사용하여 정규화됩니다. |
Context.Type | 오류와 관련된 개체의 형식입니다. |
Context.Identifier | 오류와 관련된 개체의 식별자입니다. |
Context.Identifier.Id | 개체의 고유 GUID(지정되거나 사용 가능한 경우) |
Context.Identifier.Name | 지정하거나 사용할 수 있는 경우 개체의 이름입니다. |
Context.Identifier.InternalId | 사용되지 않음 - 사용 안 함 |
MDS 데이터베이스 만들기 문제 추적
다음 절차를 사용하여 MDS 데이터베이스를 만들 때 발생할 수 있는 오류를 해결하는 데 도움이 되는 로그 파일을 만들 수 있습니다.
notepad.exe를 사용하여 C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration 경로에서 MDSConfigTool.exe.config 파일을 엽니다.
해당 줄의 접미사 문자를 제거하여 파일에서 다음 줄의 주석 처리를 제거합니다.
<add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsConfigManagerTrace.log" traceOutputOptions="DateTime"/>
switchValue
이All
로 설정되어 있는지 확인합니다.<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">
데이터베이스를 다시 만듭니다. 그런 다음, C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration에 저장된 MdsConfigManagerTrace.log 파일을 열고 오류와 관련된 다른 정보를 검토합니다.
외부 리소스
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기