달력

1

« 2025/1 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  1. RMS의 모든 Operations Manager 관련 서비스를 중지한다. 다수의 Management Server가 있다면 모든 서버에서 Health Service를 중지한다.
  2. SQL Management Studio를 실행해 OpsMgr Management의 Database를 백업한다.
  3. 대상 SQL 서버로 접속해 Operations Manager에서 사용되는 다음 세 개의 계정에 대한 로그인을 생성한다. (로그인은 하나일 수도 있고 따로 사용할 수도 있다.)
    - SDK
    - MSAA
    - DWWA
  4. Operations Manager의 Database를 대상 SQL 서버로 복사하고 대상 서버에서 복원한다.
  5. SQL Management Studio를 실행해 OpsMgr SDK 로그인의 속성을 연다.
  6. 속성 창의 사용자 매핑에서 Operations Manager의 Database를 클릭하고 SDK 계정에 대해 다음과 같은 데이터베이스 역할을 할당한다.
    - Db_datareader
    - Db_datawriter
    - Db_ddladmin
    - Db_owner
    - Dbmodule_users
    - Sdk_users
  7. RMS와 각 Management Server의 레지스트리 편집기를 열고 다음 위치로 찾아간다.
    HKLM\Software\Microsoft\Microsoft Operations Manager\3.0\Setup
  8. DatabaseServerName 문자열 값을 대상 SQL 서버의 이름으로 변경한다.
  9. RMS와 각 Management Server를 재부팅한다.
  10. 다음 과정을 통해 데이터베이스의 Broker를 Enable 시킨다.
    - SQL Management Studio를 실행해 현재 운영 중인 OpsMgr Datbabase로 접속한다.
    - 다음 쿼리들을 순서대로 실행해 Broker을 Enable 시킨다.
       ALTER DATABASE <OperationsManager> SET SINGLE_USER WITH ROLLBACK IMMEDIATE
       ALTER DATABASE <OperationsManager> SET ENABLE_BROKER
    - SQL Management Studio를 종료하고 다시 실행해 OpsMgr Database로 접속해 다음 쿼리를 실행한다.
       ALTER DATABASE <OperationsManager> SET MULTI_USER
    - Master 데이터베이스에 접속해 다음 쿼리를 실행하고 ENABLE_BROKER 값이 1인지 확인한다.
       SELECT is_broker_enabled FROM sys.databases WHERE name='<OperationsManager>'
  11. RMS의 OpsMgr SDK 서비스와 Config 서비스를 재시작한다. RMS와 각 Management Server의 OpsMgr Health Service를 재시작한다.
    SQL Server 서비스와 SQL Agent 서비스의 재시작이 필요한 경우도 있을 수 있다.

    위 과정 외에 몇 가지 설정 데이터는 SetupOP 과정 중에 Master 데이터베이스의 sys.messages 시스템 뷰에 저장된다.
    이 곳에는 Operations Manager에 관련된 특정 에러 메시지들이 포함된다. 이는 Operations Manager의 Database에 저장되지 않는다.
    첨부된 OpsMgrDB_ErrorMsgs.SQL 파일을 대상 SQL 서버의 Master 데이터 베이스에서 실행하면 위 문제가 해결된다.

:
Posted by 커널64
2008. 11. 29. 21:30

WORKGROUP 머신에 SCOM 2007의 Agent 배포 SystemCenter2008. 11. 29. 21:30

1. 양쪽 서버 사이에서 이름 풀이가 가능해야 한다.
2. Management Server와 Workgroup 서버의 인증서 발급을 위한 CA 필요
3. 인증서의 이름(SN)은 컴퓨터의 FQDN, 용도는 사용자 인증, 서버 인증(1.3.6.1.5.5.7.3.1/1.3.6.1.5.5.7.3.2) – Export 가능해야 한다.
4. 발급된 인증서는 로컬 컴퓨터의 인증서 저장소에 저장
5. 인증서를 개인키와 함께 내보내 MOMcertimport.exe 유틸로 OpsMgr Health Service에서 사용하도록 만든다.
6. Event Log나 레지스트리에서 정상적으로 Import되었는지 확인한다. (Management Server 및 Workgroup Server 모두 작업)
7. Management Server와 Agent 간에 5723 Port의 Open 여부를 확인한다.
8. OP Console에서 수동으로 설치한 Agent를 수락한다.

:
Posted by 커널64
2008. 11. 29. 09:08

프로세스 모니터 (개수 - 최소/최대) SystemCenter2008. 11. 29. 09:08

Monitor -> New -> Scripting -> Timed Script Two State Monitor

Parameters
[Process1.exe] [Lower value] [Upper value] [Process2.exe] [Lower value] [Upper value] ....

State Expression
For Unhealthy Expression Property[@Name='State'] Equals Good
For Healthy Expresion Property[@Name='State'] Equals Bad

Alert Description
$Data/Context/Property[@Name='Message']$

---------------------------------------------------------------------------------

ProcessCheck.vbs

Dim oAPI, oBag, oArgs, strProcess(), Lower(), Upper(), colProcess()
strMessage = " "

Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set oArgs = WScript.Arguments

ParamCount = oArgs.Count
State = 0

If ParamCount < 3 Then
Call oAPI.LogScriptEvent("ProcessCheck.vbs", 5009, 0, "Script aborted. Not enough parameters provided.")
WScript.Quit -1
End If

If (ParamCount Mod 3) <> 0 Then
Call oAPI.LogScriptEvent("ProcessCheck.vbs", 5010, 0, "Script aborted. The number of provided parameters is invalid.")
WScript.Quit -1
End If

ReDim Preserve strProcess(ParamCount), Lower(ParamCount), Upper(ParamCount), colProcess(ParamCount)

i = 0
Do While i <> ParamCount
strProcess(i) = oArgs(i)
Lower(i) = cInt(oArgs(i + 1))
Upper(i) = cInt(oArgs(i + 2))

If Lower(i) > Upper(i) Then
Call oAPI.LogScriptEvent("ProcessCheck.vbs", 5011, 0, "'" & strProcess(i) & " " & Lower(i) & " " & Upper(i) & "'" & " Lower value is bigger than upper value.")
WScript.Quit -1
End If

i = i + 3
Loop

i = 0
Do While i <> ParamCount
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess(i) = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '" & strProcess(i) & "'")

If colProcess(i).Count => Lower(i) and colProcess(i).Count =< Upper(i) Then
Call oBag.Addvalue(strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ")" ,colProcess(i).Count & "ea (Normal)")
strMessage = strMessage & strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ") : " & colProcess(i).Count & "ea (Normal)" & " | "
End If

If colProcess(i).Count < Lower(i) Then
Call oBag.Addvalue(strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ")" ,colProcess(i).Count & "ea (Too few)")
strMessage = strMessage & strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ") : " & colProcess(i).Count & "ea (Too few)" & " | "
State = 1
End If

If colProcess(i).Count > Upper(i) Then
Call oBag.Addvalue(strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ")" ,colProcess(i).Count & "ea (Too many)")
strMessage = strMessage & strProcess(i) & " (" & Lower(i) & "~" & Upper(i) & ") : " & colProcess(i).Count & "ea (Too many)" & " | "
State = 1
End If

Set objWMIService = nothing
i = i + 3
Loop

If State = 0 Then
Call oBag.AddValue("State","Good")
Else
Call oBag.AddValue("State","Bad")
End If

Call oBag.AddValue("Message",strMessage)
Call oAPI.Return(oBag)

:
Posted by 커널64
2008. 11. 28. 00:35

MOM 2005에서 SMTP 전송 시 NTLM 인증 Disable SystemCenter2008. 11. 28. 00:35

Failed to send SMTP message. The message could not be sent to the SMTP server. The transport error code was 0x80040217. The server response was not available hr=-2147220975

MOM 2005에서 SMTP 메시지 전송 시 위와 같은 오류와 함께 알림 메시지가 가지 않는 경우

HKEY_LOCAL_MACHINE\Software\Mission Critical Software\OnePoint\Configurations\<Configuration group name>\Operations\Consolidator

'SendSmtpAnonymous'  DWORD 생성 => 값 : 1

KB885741

:
Posted by 커널64
2008. 11. 27. 23:32

IIS 6의 격리 모드 Etc.2008. 11. 27. 23:32

IIS 6을 IIS 5.0 격리모드로 설정 시 동작 프로세스 흐름
모든 ASP.NET 어플리케이션은 aspnet_wp.exe 프로세스에 의해 실행된다.
그렇기 때문에 이 프로세스가 죽게되면 모든 ASP.NET 어플리케이션이 죽는 결과를 낳는다.

사용자 삽입 이미지



II 6의 기본 모드인 작업자 프로세스 격리 모드로 동작 시의 프로세스 흐름
ASP 및 ASP.NET 어플리케이션은 모두 w3wp.exe(Worker Process) 프로세스에 의해 실행된다.

사용자 삽입 이미지

:
Posted by 커널64
Dual Forking
공통 번호에 대한 공유. 즉, Voice 사용이 활성화 되어 있는 OCS 사용자와 그렇지 않은 사용자를 모두 지원.
다시 말해, 일반 전화기와 OC가 동시에 울릴 수 있게 하는 기능.

Dual Forking with Remote Call Control(RCC)
Dual Forking 기능과 더불어 OCS로 사용자의 PBX 연결 상태 정보를 제공하는 기능.
예를 들어, 사용자가 일반 전화기를 받고 있으면(PBX-connected) 그러한 상태 정보를 OCS로 보낸다.
:
Posted by 커널64
2008. 11. 26. 12:21

SCDPM (Data Protection Manager) 2007의 백업 SystemCenter2008. 11. 26. 12:21

볼륨 필터
- 블록 수준의 변경 사항에 대한 추적
- 페이징 풀에 존재하며 보호된 볼륨의 각 블록을 1비트로 나타내는 비트맵으로 구성

전체 백업(VSS 스냅샷 또는 복제본)
1. 보호된 서버에서 VSS 복제본을 생성한 다음 변경된 데이터를 식별하기 위해 볼륨 필터와 오버레이 시킨다.
2. 변경된 데이터는 DPM 서버로 전송되고 복구 지점이 생성한다.
3. 보호된 서버에서 VSS 복제본이 제거되고 볼륨 필터가 재설정 된다.
4. 블록 수준 변경에 대한 추적이 계속된다.
- 전체 백업 제한 : 응용 프로그램 서버의 경우 512개, 파일 서버의 경우 64개

Express Full Backup
1. DPM Agent에 의해 응용 프로그램의 VSS Writer가 Snapshot을 생성한다.
2. 이 snapshot은 볼륨 필터에 의해 어떤 데이터가 백업되어야 하는지를 결정한다.
3. 볼륨 필터는 디스크의 블록 단위로 비교해 그 결과 변경이 발생한 부분이 있다면 순서대로 DPM 서버로 복사된다.
4. 백업이 끝나게 되면 정보저장소 또는 데이터베이스의 무결성을 검사하게 된다. (예: eseutil /k)
5. 무결성 검사에서 오류가 발견되지 않는다면 트렌젝션 로그는 잘려지고 백업 과정은 완료된다.
6. 만약 무결성 검사가 실패한다면 백업은 취소되고 트렌젝션 로그는 잘려지지 않는다.

Transaction Log Synchronization
1. 기본적으로 15분 마다 발생하며 VSS Incremental Synchronization을 사용한다.
2. VSS Writer는 데이터의 무결성과 메모리에 있던 커밋된 트렌젝션 로그가 디스크로 플러쉬 되었는지를 확인한다.
3. VSS Writer는 Incremental Snapshot을 생성한다.
4. 변경된 트렌젝션 로그는 DPM 서버의 복구 지점 볼륨으로 전달된다.
5. 무결성 검사에 오류가 발견되지 않으면 백업은 성공하고 트렌젝션 로그는 잘려지게 된다.

:
Posted by 커널64
2008. 11. 24. 11:22

SCDPM 2007 Known Issue SystemCenter2008. 11. 24. 11:22

:
Posted by 커널64

Agent Failover를 사용하기 위해서는 AD 통합이 되어야 하는데
AD 통합이 되어 있지 않은 상태에서 Agent Failover를 구성하기 위해서는 다음 스크립트를 사용한다.

param($agentComputerName,$failoverManagementServerName)
$agent = get-agent | where {$_.PrincipalName -eq $agentComputerName}
$primaryManagementServer  = $agent.GetPrimaryManagementServer();
if($primaryManagementServer -eq $null)
{
"Primary management server not found"
return
}
$failoverManagementServer = Get-ManagementServer | where {$_.PrincipalName -eq $failoverManagementServerName}
if($failoverManagementServer -eq $null)
{
"Failover management server not found"
return
}
if($failoverManagementServer.PrincipalName -eq $primaryManagementServer.PrincipalName)
{
"The failover management server cannot be the same as the primary management server"
return
}
$failoverServers = New-Object System.Collections.Generic.List``1"[[Microsoft.EnterpriseManagement.Administration.ManagementServer,Microsoft.EnterpriseManagement.OperationsManager,Version=6.0.4900.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35]]"
$failoverServers.Add($failoverManagementServer)
$agent.SetManagementServers($primaryManagementServer,$failoverServers)

== 사용 방법 ==
1. 위 스크립트를 PS1 확장자로 저장
2. OpsMgr Command Shell 실행
3. 다음과 같이 Agent의 Failover 설정
<SavedFileName>.ps1 -agentComputerName:'agent1.contoso.com'  -failoverManagementServerName:'scommgmt.contoso.com'

:
Posted by 커널64

select DB_NAME(a.database_id) as DBName,
a.File_ID,
b.name,
a.IO_Stall,
a.Num_Of_Reads, a.Num_Of_Writes,
a.Num_Of_Bytes_Read, a.Num_Of_Bytes_Written
from sys.dm_io_virtual_file_stats(null, null) a
inner join sys.master_files b on a.database_id = b.database_id and a.file_id = b.file_id

결과에서 io_stall 값이 매우 높다면 I/O로 인한 성능 문제가 있을 수 있음

열 이름  데이터 형식  설명 
database_id smallint 데이터베이스 ID
file_id smallint 파일 ID
sample_ms int SQL Server 인스턴스를 시작한 이후 경과한 시간(밀리초)
num_of_reads bigint 파일에 대해 읽기가 실행된 횟수
num_of_bytes_read bigint 파일에 대해 실행된 읽기의 총 바이트 수
io_stall_read_ms bigint 사용자가 파일에 대한 읽기가 실행될 때까지 대기한 총 시간(밀리초)
num_of_writes bigint 파일에 대해 쓰기가 실행된 횟수
num_of_bytes_written bigint 파일에 대해 실행된 쓰기의 총 바이트 수
io_stall_write_ms bigint 사용자가 파일에 대한 쓰기가 완료될 때까지 대기한 총 시간(밀리초)
io_stall bigint 사용자가 파일에 대한 I/O가 완료될 때까지 대기한 총 시간(밀리초)
size_on_disk_bytes bigint 이 파일에 대해 디스크에서 사용된 바이트 수
file_handle varbinary 이 파일에 대한 Windows 파일 핸들

:
Posted by 커널64