추적(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설명된 대로 유효한 값으로 변경하거나 다른 유효한 값으로 변경 switchValueAll 합니다. 로그 파일에 출력을 사용하도록 설정하려면 다음 파일 코드 조각에 표시된 대로 줄의 주석 처리를 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 설정을 사용합니다.OffError
  • All 지원/문제 해결 상황에 대한 설정을 사용합니다.
  • 성능 측정 또는 사용량 모니터링에 사용합니다 ActivityTracing .
  • 정기적으로 로그를 확인하고 정리할 준비가 된 경우에만 사용합니다 Information . 이 설정으로 인해 로그가 오래 걸릴 수 있습니다. 이 설정은 사용량 및 사용 패턴을 추적하는 데 유용합니다.
  • 기록된 데이터의 양이 성능에 부정적인 영향을 주기 때문에 사용하거나 All 정상적인 작동 조건에서 사용하지 Verbose 마세요.

제품 지원을 위한 로그 파일을 만드는 단계

예기치 않은 오류가 발생하고 추가 진단이 필요한 경우 서비스 요청 및 응답과 함께 문제로 이어지는 이벤트를 추적하는 로그 파일을 만드는 것이 좋습니다.

간결하고 유용한 로그 파일을 생성하려면 다음 단계를 수행합니다.

주의

Web.config를 업데이트하면 IIS의 MDS 애플리케이션 도메인이 재활용됩니다.

  1. 가능하면 IIS 관리자에서 MDS 애플리케이션 풀을 중지합니다.

    경고

    애플리케이션을 오프라인 상태로 만들 수 있는 경우에만 이 작업을 수행합니다.

  2. 가능하면 현재 로그 파일을 이동하거나 삭제합니다(이미 있는 경우).

  3. 텍스트 편집기를 사용하여 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
  4. system.diagnostics 섹션을 찾습니다.

  5. switchValueAll 이 문서의 로그 파일 추적 켜기 섹션에 표시된 대로 로그 파일 줄의 주석 처리를 변경하거나 ActivityTracing 제거합니다.

    1. 오류 진단에 사용합니다 switchValue="All" .
    2. 성능 진단에 사용합니다 switchValue="ActivityTracing" .
    3. 원하는 경우 MdsTrace.log 파일 이름 앞에 경로 접두사를 지정할 수 있습니다.
  6. 애플리케이션 풀이 이전에 중지된 경우 IIS에서 MDS 애플리케이션 풀을 시작합니다. 또는 일정 시간 및 웹 애플리케이션 작업 후에 로그 파일이 나타날 때까지 기다립니다. 웹 애플리케이션은 파일에서 구성 설정을 주기적으로 다시 로드합니다(몇 분 내에 있어야 함).

  7. 문제를 재현하고 오류를 발생시킨 동일한 작업 또는 요청을 수행합니다.

  8. 애플리케이션 풀을 중지할 수 있는 경우:

    1. 애플리케이션 풀을 중지합니다.
    2. 로그 파일을 검색합니다(프로세스가 완료될 때까지 기다려야 할 수 있습니다. 앱 풀을 중지한 후 지연이 있을 수 있음).

    또는 파일을 잠그지 않는 편집기(예: notepad.exe)를 사용하여 로그 파일을 열고 관련 추적 메시지를 복사합니다.

  9. 텍스트 편집기를 사용하여 Web.config 파일을 열고 다시 또는 이전 값으로 Off 변경 switchValue 합니다.

  10. 중지된 경우 애플리케이션 풀을 시작합니다.

    오류 처리: 모든 서비스 작업은 응답 메시지의 개체 내에서 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 데이터베이스를 만들 때 발생할 수 있는 오류를 해결하는 데 도움이 되는 로그 파일을 만들 수 있습니다.

  1. notepad.exe를 사용하여 C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration 경로에서 MDSConfigTool.exe.config 파일을 엽니다.

  2. 해당 줄의 접미사 문자를 제거하여 파일에서 다음 줄의 주석 처리를 제거합니다.

    <add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsConfigManagerTrace.log" traceOutputOptions="DateTime"/>

  3. switchValueAll로 설정되어 있는지 확인합니다.

    <source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">

  4. 데이터베이스를 다시 만듭니다. 그런 다음, C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration저장된 MdsConfigManagerTrace.log 파일을 열고 오류와 관련된 다른 정보를 검토합니다.

외부 리소스

로깅 개선 문제 해결