Operations Manager의 빈번한 구성 변경 내용 검색 및 문제 해결

이 문서에서는 System Center Operations Manager의 빈번한 구성 변경 내용을 감지하고 해결하는 방법을 설명합니다.

원래 제품 버전: Microsoft System Center 2012 Operations Manager
원래 KB 번호: 2603913

구성 개요

System Center 관리 구성 서비스는 Operations Manager 관리 그룹의 모든 상태 서비스 구성을 계산합니다. 상태 서비스의 구성은 상태 서비스 및 상태 서비스가 모니터링하는 모든 인스턴스에 대한 규칙, 모니터링, 검색 및 작업으로 구성됩니다.

각 상태 서비스에 필요한 모든 구성을 계산하려면 관리 구성 서비스에 다음 항목 목록이 있어야 합니다.

  • 모니터링되는 모든 클래스의 모든 인스턴스
  • 인스턴스 간의 호스팅 관계
  • 모니터링되는 클래스에 할당된 규칙, 모니터, 검색 및 기타 워크플로
  • 인스턴스 모니터링을 담당하는 상태 서비스

또한 관리 구성 서비스는 관리 그룹의 모든 instance 그룹의 멤버 자격을 읽을 수 있어야 합니다. 또한 관리 구성 서비스는 이러한 그룹, 클래스 또는 개별 인스턴스를 대상으로 하는 규칙 및 모니터에 대한 재정의를 적용해야 합니다.

관리 그룹의 개체는 검색 워크플로에서 제출한 검색 데이터를 기반으로 모니터링되는 클래스의 인스턴스로 정의됩니다. 개체의 키 속성이 변경되면 해당 개체가 모니터링되는 클래스의 새 instance 추가될 수 있습니다. 그렇지 않으면 해당 개체가 더 이상 해당 클래스의 instance 간주되지 않습니다.

개체가 멤버인 클래스에 대한 목록이 변경되면 해당 개체를 모니터링하는 상태 서비스에 대한 구성도 변경됩니다. 이러한 변경 내용은 규칙, 모니터, 검색, 작업 및 재정의가 이전 구성에서 추가되거나 제거될 때 발생합니다.

구성 변동

에이전트는 다음 시나리오에서 안정적인 구성을 받지 못할 수 있습니다.

  • 대량의 검색 데이터가 관리 구성 서비스에 제출됩니다.
  • 검색 데이터가 너무 빨리 제출되어 관리 구성 서비스가 더 많은 검색 데이터를 제출하기 전에 처리할 수 없습니다. 이 시나리오는 데이터가 항상 계산되는 프로세스에 있기 때문에 발생합니다.

구성 변동이라고도 하는 검색 데이터를 자주 제출하면 일부 상태 서비스가 이전 구성에서 실행되거나 관리 서버의 구성이 부실해질 수 있습니다. 그러면 이 동작으로 인해 일부 상태 서비스가 운영 콘솔에서 흐리게 표시(사용할 수 없음)됩니다.

검색 데이터는 검색 워크플로가 실행될 때 상태 서비스에 의해 제출됩니다. 관리 그룹에 새 관리 팩을 도입하면 각 에이전트에서 여러 검색 워크플로가 실행될 수 있습니다. 또한 새 인스턴스가 검색되면 일부 에이전트에서 추가 검색이 실행될 수 있습니다. 그룹, 재정의 및 기타 워크플로를 변경하면 에이전트에서 검색 워크플로가 실행될 수 있습니다. 또한 새 에이전트가 도입되면 관리 구성 서비스가 새 에이전트의 구성을 사용하여 instance 공간을 업데이트할 수도 있습니다.

Configuration Management 서비스는 다음 시나리오에서 상태 서비스 구성을 자주 다시 계산해야 합니다.

  • 검색 워크플로가 너무 자주 실행되도록 구성됩니다.
  • 워크플로에서 검색하는 속성은 검색 워크플로가 실행될 때마다 변경됩니다.

많은 에이전트에 대해 이러한 시나리오가 발생하거나 관리 서버가 이미 워크로드가 많은 경우 Configuration Management 서비스가 변경 속도를 따라가지 못할 수 있으며 구성 변동이 발생할 수 있습니다.

관리 서버 이벤트 로그를 사용하여 구성 변동 식별

Operations Manager 이벤트 로그온 관리 서버의 다음과 유사한 이벤트는 새 검색 데이터로 인해 관리 그룹 구성이 변경되었음을 나타냅니다.

로그 이름: Operations Manager
원본: OpsMgr 커넥터
이벤트 ID: 21024
수준: 정보
컴퓨터: <이름>
설명:
관리 그룹 <ManagementGroupName>에 대한 OpsMgr의 구성이 최신이 아닐 수 있으며 Configuration Service에서 업데이트된 구성을 요청했습니다. 현재(오래된) 상태 쿠키는 "3A B0 1E 5C 81 F3 12 F5 56 B7 8A EF F8 01 BA 09 86 55 06 48 "

다음과 유사한 이벤트는 관리 구성 서비스가 새 검색 데이터 처리를 완료하고 새 데이터를 기반으로 관리 그룹 구성에 필요한 변경 내용을 계산했음을 나타냅니다.

로그 이름: Operations Manager
원본: OpsMgr 커넥터
이벤트 ID: 21025
수준: 정보
컴퓨터: <이름>
설명:
OpsMgr은 Configuration Service에서 관리 그룹 <ManagementGroupName> 에 대한 새 구성을 받았습니다. 새 상태 쿠키는 "34 FA 11 61 4D B8 03 59 3D 1D 66 B7 83 F3 C0 AA 7A 6F 1A 3B"

일반적인 환경에서는 모든 이벤트 21024 뒤에 이벤트 21025가 있어야 합니다. 검색 데이터로 인해 구성 데이터가 변경되지 않은 경우 이벤트 ID는 21026이 됩니다. 대규모 관리 그룹에서는 21024 및 21025 또는 21026 이벤트의 쌍이 시간당 여러 번 발생해야 합니다. 해당 21025 또는 21026 이벤트가 없는 21024 이벤트의 긴 문자열은 구성 변동의 징후입니다. 또한 이벤트 로그는 변동이 감지되었음을 나타내는 다음 이벤트를 표시할 수 있습니다.

로그 이름: Operations Manager
원본: OpsMgr Config Service
이벤트 ID: 29202
수준: 경고
컴퓨터: <이름>
설명:
OpsMgr Config Service는 너무 자주 데이터베이스를 변경하여 OpsMgr 데이터베이스에서 일관된 상태를 검색할 수 없습니다.
이는 검색 데이터의 정상적이고 일시적인 증가 때문일 수 있습니다. 그러나 이 증가가 예기치 않은지 확인하기 위해 가장 최근의 변경 내용을 검사.
가장 최근의 모니터링 개체 변경:
인스턴스 = %1
클래스 = %2
수정된 시간 = %3
가장 최근의 모니터링 관계 변경:
관계 instance = %4
원본 instance = %5
대상 instance = %6
RelationshipClass = %7
수정된 시간 = %8

데이터 액세스 계층이 변경 내용을 쿼리할 때 데이터 액세스 계층은 여러 테이블을 읽어야 합니다. 테이블 중 하나가 읽은 후 모든 테이블을 읽기 전에 수정된 경우 데이터 액세스 계층은 이전 이벤트 ID 29202를 기록하고 다시 시도합니다. 이 시간 동안 엔터티 또는 관계 instance 읽은 경우 이러한 인스턴스에 대한 정보가 이벤트 필드에 포함됩니다. 그렇지 않으면 이러한 필드는 비어 있습니다.

Operations Manager Data Warehouse 사용하여 구성 변동의 잠재적 원인을 식별합니다.

Operations Manager Reporting 구성 요소가 설치된 관리 그룹에서 여러 SQL 쿼리를 사용하여 자주 변경 내용을 제출하는 워크플로를 식별할 수 있습니다. 이러한 쿼리는 Data Warehouse instance 대해 SQL Server Management Studio 실행되어야 합니다.

지난 24시간 동안 검색 워크플로에서 제출한 총 변경 내용:

select
   ManagedEntityTypeSystemName,
   DiscoverySystemName,
   count(*) As 'Changes'
from
   (
      select distinct
         MP.ManagementPackSystemName,
         MET.ManagedEntityTypeSystemName,
         PropertySystemName,
         D.DiscoverySystemName,
         D.DiscoveryDefaultName,
         MET1.ManagedEntityTypeSystemName As 'TargetTypeSystemName',
         MET1.ManagedEntityTypeDefaultName As 'TargetTypeDefaultName',
         ME.Path,
         ME.Name,
         C.OldValue,
         C.NewValue,
         C.ChangeDateTime
      from
         dbo.vManagedEntityPropertyChange C
         inner join
            dbo.vManagedEntity ME
            on ME.ManagedEntityRowId = C.ManagedEntityRowId
         inner join
            dbo.vManagedEntityTypeProperty METP
            on METP.PropertyGuid = C.PropertyGuid
         inner join
            dbo.vManagedEntityType MET
            on MET.ManagedEntityTypeRowId = ME.ManagedEntityTypeRowId
         inner join
            dbo.vManagementPack MP
            on MP.ManagementPackRowId = MET.ManagementPackRowId
         inner join
            dbo.vManagementPackVersion MPV
            on MPV.ManagementPackRowId = MP.ManagementPackRowId
         left join
            dbo.vDiscoveryManagementPackVersion DMP
            on DMP.ManagementPackVersionRowId = MPV.ManagementPackVersionRowId
            AND CAST(DefinitionXml.query('data(/Discovery/DiscoveryTypes/DiscoveryClass/@TypeID)') AS nvarchar(max)) like '%' + MET.ManagedEntityTypeSystemName + '%'
         left join
            dbo.vManagedEntityType MET1
            on MET1.ManagedEntityTypeRowId = DMP.TargetManagedEntityTypeRowId
         left join
            dbo.vDiscovery D
            on D.DiscoveryRowId = DMP.DiscoveryRowId
      where
         ChangeDateTime > dateadd(hh, - 24, getutcdate())
   )
   As # T
group by
   ManagedEntityTypeSystemName,
   DiscoverySystemName
order by
   count(*) DESC

이 쿼리는 세 개의 열을 만듭니다. 첫 번째 열은 워크플로를 대상으로 하는 개체의 클래스입니다. 두 번째 열은 검색 워크플로의 내부 이름을 나타냅니다. 세 번째 열은 지난 24시간 동안 워크플로에서 제출한 이 클래스의 모든 인스턴스에 대한 총 속성 변경 수를 나타냅니다. 모든 클래스에 대한 총 변경 횟수는 구성 관리 서비스가 에이전트 상태 서비스에 대한 구성을 다시 계산해야 하는 횟수를 나타냅니다.

안정적인 환경에서도 일부 개체 클래스의 변경 횟수는 0에 도달하지 못할 수 있습니다. 속성 추가 또는 제거, 추가 또는 서비스 해제된 에이전트, 추가 또는 변경된 서버 역할 등과 같은 모든 변경 내용은 반환되는 숫자에 반영됩니다. 구성 변동이 발생하는 환경에서는 하나 이상의 워크플로가 다른 워크플로보다 더 큰 값을 표시할 수 있습니다.

지난 24시간 동안 속성이 변경되었습니다.

select distinct
   MP.ManagementPackSystemName,
   MET.ManagedEntityTypeSystemName,
   PropertySystemName,
   D.DiscoverySystemName,
   D.DiscoveryDefaultName,
   MET1.ManagedEntityTypeSystemName As 'TargetTypeSystemName',
   MET1.ManagedEntityTypeDefaultName As 'TargetTypeDefaultName',
   ME.Path,
   ME.Name,
   C.OldValue,
   C.NewValue,
   C.ChangeDateTime
from
   dbo.vManagedEntityPropertyChange C
   inner join
      dbo.vManagedEntity ME
      on ME.ManagedEntityRowId = C.ManagedEntityRowId
   inner join
      dbo.vManagedEntityTypeProperty METP
      on METP.PropertyGuid = C.PropertyGuid
   inner join
      dbo.vManagedEntityType MET
      on MET.ManagedEntityTypeRowId = ME.ManagedEntityTypeRowId
   inner join
      dbo.vManagementPack MP
      on MP.ManagementPackRowId = MET.ManagementPackRowId
   inner join
      dbo.vManagementPackVersion MPV
      on MPV.ManagementPackRowId = MP.ManagementPackRowId
   left join
      dbo.vDiscoveryManagementPackVersion DMP
      on DMP.ManagementPackVersionRowId = MPV.ManagementPackVersionRowId
      AND CAST(DefinitionXml.query('data(/Discovery/DiscoveryTypes/DiscoveryClass/@TypeID)') AS nvarchar(max)) like '%' + MET.ManagedEntityTypeSystemName + '%'
   left join
      dbo.vManagedEntityType MET1
      on MET1.ManagedEntityTypeRowId = DMP.TargetManagedEntityTypeRowId
   left join
      dbo.vDiscovery D
      on D.DiscoveryRowId = DMP.DiscoveryRowId
where
   ChangeDateTime > dateadd(hh, - 24, getutcdate())
ORDER BY
   MP.ManagementPackSystemName,
   MET.ManagedEntityTypeSystemName

이 쿼리는 지난 24시간 동안 변경된 속성을 식별할 수 있습니다. 이전 쿼리와 결합된 이 쿼리는 속성의 이전 값과 새 값, 변경 내용을 제출한 에이전트, 검색을 수행한 워크플로 및 포함된 관리 팩을 표시할 수 있습니다.

구성 변동 감소

이전 관리 팩에는 속성 변경 내용을 너무 자주 제출하는 검색 워크플로가 도입되었습니다. 대부분의 관리 팩의 현재 버전은 이러한 검색 워크플로를 수정하여 데이터를 덜 자주 제출하거나 관리 팩이 자주 변경되는 휘발성 속성을 쿼리하지 않습니다. 이전 쿼리에서 자주 발생하는 워크플로를 포함하는 관리 팩을 업그레이드하는 것이 좋습니다.

새 버전의 관리 팩을 사용할 수 없거나 지금 새 버전을 배포할 수 없는 경우 재정의를 사용하여 검색 간격을 조정하여 덜 자주 실행할 수 있습니다. 경우에 따라 구성 변동을 담당하는 검색을 재정의하여 사용하지 않도록 설정할 수 있습니다. 몇 주 동안 검색을 사용하지 않도록 설정하면 워크플로에서 검색된 개체가 데이터베이스에서 정리될 수 있습니다. 그러나 데이터베이스에서 개체를 정리하기 전에 영구 솔루션을 구현할 수 있는 한 검색을 사용하지 않도록 설정하면 구성 변동을 제거하는 단기적인 해결 방법을 제공할 수 있습니다. 워크플로를 잠시 동안 사용하도록 설정하여 개체를 정리하기 전에 다시 검색할 수도 있습니다.

이러한 이전 관리 팩의 일부 워크플로는 구성 변동이란?에서 설명합니다.

워크플로가 사용 가능한 디스크 공간과 같은 휘발성 속성을 대상으로 하는 사용자 지정 검색의 경우 자주 변경되는 속성을 대상으로 하지 않도록 검색을 다시 작성해야 합니다. 검색 워크플로는 수명이 짧은 인스턴스(몇 주 이하)를 대상으로 해서는 안 됩니다. 검색 워크플로는 자주 변경되는 인스턴스의 속성을 수집해서는 안 됩니다(한 달에 한 번 이상). 휘발성 데이터는 구성 계산에서 고려되지 않습니다. 따라서 휘발성 데이터는 검색 워크플로가 아닌 성능 규칙에 의해 수집되어야 합니다.

추가 성능 튜닝

대규모 관리 그룹(1,000개 이상의 에이전트)에서 RMS(루트 관리 서버)는 일반적으로 소규모 관리 그룹에서 문제를 일으키지 않는 작업으로 바쁠 수 있습니다. 이 경우 속성 변경 속도가 적더라도 변경 내용을 처리하는 데 필요한 시간 때문에 변동이 빈번할 수 있습니다. 몇 가지 구성 변경을 사용하여 RMS의 운영 오버헤드를 줄이고 구성 변동을 방지할 수 있을 만큼 빠르게 일반적인 속성 변경 속도를 처리할 수 있습니다. 이러한 구성 변경 내용은 Operations Manager 2007 R2 및 2012에 대한 성능 최적화에서 설명합니다.

관리 그룹에 대한 강제 구성 변경

관리 그룹에 대한 구성 변동이 지속적으로 발생하는 경우 문제 워크플로의 빈도를 줄이거나 문제 워크플로를 사용하지 않도록 설정하기 위한 변경 내용은 에이전트에 전파되지 않습니다. 이 경우 System Center Configuration Management 서비스가 이 데이터를 생성하는 워크플로를 사용하지 않도록 설정하거나 덜 자주 실행하는 현재 구성을 계산할 수 있도록 들어오는 검색 데이터의 흐름을 차단해야 합니다.

검색 데이터는 System Center DAS(데이터 액세스 서비스)를 통해 데이터베이스에 제출 OperationsManager 됩니다. 데이터는 RMS의 System Center Management 서비스에 의해 DAS에 먼저 제출됩니다. RMS는 에이전트 또는 다른 관리 서버에서 이 데이터를 가져옵니다. Windows 방화벽 또는 다른 네트워킹 수단을 사용하여 포트 5723에서 RMS에 들어오는 연결을 차단할 수 있습니다. 이 차단 프로시저를 사용하면 Configuration Management 서비스가 데이터를 제출하는 OperationsManager 에이전트에 대한 현재 구성을 계산할 수 있을 만큼 검색 데이터가 데이터베이스에 제출되지 않습니다.

Configuration Management 서비스가 현재 구성을 계산하는 동안에는 System Center 관리 서비스 및 RMS의 System Center 데이터 액세스 서비스를 중지하거나 사용하지 않도록 설정해서는 안 됩니다. System Center 구성 관리 서비스에는 관리 그룹 구성 계산을 완료하려면 다음이 필요합니다.

  • RMS의 System Center 관리 서비스가 실행 중이고 정상 상태여야 합니다.
  • System Center Data Access Service는 데이터베이스와 통신할 수 있어야 합니다.

또한 구성 관리 서비스가 현재 구성을 계산하는 동안 일부 데이터는 에이전트 및 다른 관리 서버에서 백로그될 수 있습니다. 따라서 RMS의 Operations Manager 이벤트 로그에 이벤트 ID 21025가 표시되는 즉시 방화벽 또는 포트 제외를 해제해야 합니다. 이 이벤트는 Configuration Management 서비스에서 워크플로를 사용하지 않도록 설정하거나 수정한 관리 그룹에 대한 새 구성을 계산했음을 나타냅니다.

Operations Manager 보고를 사용하여 구성 변동의 잠재적 원인 식별

새 보고서가 도입되었습니다. 이러한 보고서는 관리 그룹이 처리하는 전체 데이터 볼륨에 대한 인사이트를 제공합니다. 이러한 보고서를 사용하여 표준 기준을 설정하고 개체 검색 워크플로를 튜닝할 기회를 식별할 수 있습니다. 구성 변동이 식별되고 해결되는 즉시 이러한 보고서를 장기 계획에 사용하여 변동 되풀이를 방지할 수 있습니다.

  • 관리 팩별 데이터 볼륨 보고서

    관리 팩별 데이터 볼륨 보고서는 관리 팩이 생성하는 데이터 볼륨에 대한 정보를 컴파일합니다. 보고서에는 다음 데이터 형식에 대한 관리 팩당 발생 횟수가 나열됩니다.

    • 발견
    • 경고
    • 성능(성능 카운터에 대해 제출되고 관리 팩에서 수집되는 인스턴스 수)
    • Events
    • 상태 변경
  • 워크플로 및 인스턴스별 데이터 볼륨 보고서

    워크플로 및 인스턴스별 데이터 볼륨 보고서는 생성되고 워크플로(검색, 규칙, 모니터 등)와 인스턴스별로 구성된 데이터 볼륨에 대한 정보를 컴파일합니다.

    이 보고서에 액세스하는 방법에는 두 가지가 있습니다.

    • 관리 팩별 데이터 볼륨 보고서에서 보고서 맨 위에 있는 테이블의 개수 셀 중 하나를 선택하여 관리 팩에 대한 워크플로별 데이터 볼륨 및 인스턴스 보고서를 엽니다.
    • 운영 콘솔의 보고 섹션에서 직접 보고서를 실행합니다. 워크플로 및 인스턴스별 데이터 볼륨 보고서를 직접 실행하는 경우 보고서의 매개 변수를 설정하여 결과를 사용자 지정해야 합니다. 이 보고서는 관리 팩별 데이터 볼륨 보고서의 정보에 대한 세부 정보를 제공합니다. 따라서 기본 매개 변수 설정은 원하는 정보를 제공하지 않을 수 있습니다.