2006/06/09

유저 App.Config 바인딩

실행 어셈블리명.exe.config 는 해당 어셈블리 로드시 자동으로 config 파일이 바인딩 됩니다.
그러나, 꼭 그 파일이 아닌 다른 config 파일을 로드할때에는

AppDomain.CurrentDomain.SetData();

클래스 메쏘드를 이용하면 됩니다.

<?xml version="1.0" encoding="utf-8" ?>
<
configuration>
     <appSettings>
          <add key="name" value="the value"/>
     </appSettings>
</
configuration>


인경우,.어셈블리에서 호출은


AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE","c:\\app.config");
string s=System.Configuration.ConfigurationSettings.AppSettings["name"];
MessageBox.Show(s);

현재 어셈블리 경로를 알고자 한다면,.

AppDomain.CurrentDomain.GetData("APPBASE").ToString()

2006/06/08

윈도우 서버, 안정성에서 리눅스 앞질러

윈도우 서버, 안정성에서 리눅스 앞질러

http://www.kbench.com/news/?no=32256&pr=3&cc=61


제가 느끼기에도,. 2000 보다는 2003 이 훨씬 안정적이죠.. 물론 성능도 좋고,,. 갈길이 멀지만...
뭐 운영하기 나름이지만,. 아직도,. 윈도우는 불안정하다.. ,,
그렇게 생각하는 사람은 아직도 초보자이거나 편협한 시각을 가진 사람일듯..., ?...

2006/06/06

프로그래밍기반 IIS 관리툴 비교

IIS는 IIS 관리자 외에,. 다양한 도구를 통해서 매니지먼트가 가능합니다.

다음은 프로그래밍 기반 관리툴의 종류 및 장,단점 입니다. 다음 내용은 물론, 프로그래밍이 가능한 관리자에게 유용할 꺼라 생각됩니다.


1. 커맨드라인 명령어.

-> 이것은 iisreset.exe 에서 부터 시작해서 여러가지 명령어를 이용하는 것입니다. 물론 이것은 꼭 프로그래밍 기반이라고 하기엔 뭐하죠... 이것만으로도 대부분 관리가 가능함.

장점
IIS 대부분의 관리가 가능함.

단점
몇몇툴은 가능하지 않거나,. 구 버젼만 지원하는 경우가 종종있음.


2. Active Directory Service Interfaces (ADSI)

-> ADSI 를 이용하는 것인데, 이건 정말 프로그래밍이 필요함. ADSI는 IIS 뿐만 아니라 이름과 같이 Active Directory 관리에는 필수적임.

장점 :
대형 사이트나 다수 서버관리가 가능.  
vbscript 같은 스트립팅 지원
서버의 재시작 없이 즉시 설정값 적용
IIS4 에서 부터 IIS 6까지 폭넓은 지원

단점 :
역시나,. ADSI 기반 지식이 필요함.
닷넷에서 System.DirectoryServices 클래스 이용시 몇몇 기능이 지원되지 않음.


예제코드:
set vdirObj=GetObject("IIS://localhost/W3svc/1/Root") 

WScript.Echo "Before: " & vdirObj.property_name_1 & ", " & vdirObj.property_name_2

vdirObj.Put "property_name_1", numeric_or_Boolean_value
vdirObj.Put "property_name_2", "String_value" vdirObj.SetInfo

WScript.Echo "After: " & vdirObj.property_name_1 & ", " & vdirObj.property_name_2


3.Windows Management Instrumentation (WMI)

-> 이건 꼭 프로그래밍이 없어도 가능함. WMI 관련 여러가지 툴들이 있으므로 그 툴을 잘이용하면 쉽게 가능함... 꼭 IIS 뿐만 아니라 Microsoft 제품 상당부분을 지원... 
 
장점 :
ADSI 와 같이 대형 사이트 및 다수 서버관리 지원.
Vbscript 같은 스트리립팅 지원.
서버의 재시작 없이 즉시 설정값 적용

단점 :
WMI 기반지식이 필요함..
IIS5 부터 지원됨.


예제코드 :
var providerObj=GetObject("winmgmts:/root/MicrosoftIISv2");
var vdirObj=providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'");

WScript.Echo("Before: " + vdirObj.property_name_1 + ", " + vdirObj.property_name_2);

vdirObj.property_name_1=numeric_or_Boolean_value;
vdirObj.property_name_2="String_value";

vdirObj.Put_();
WScript.Echo("After: " + vdirObj.property_name_1 + ", " + vdirObj.property_name_2);


4.Admin Base Objects (ABO)

-> 최근에는 이걸 거의 이용하지 않음.

장점 :
ADSI나 WMI를 이용하는 것보다 훨씬 간단한 호출방법.

단점 :
기반지식 필요.
스크립팅을 지원하지 않음. 말하자면 VisualBasic 6 아니 VC++ 6 같은 걸로만 가능.


IIS 6 메타베이스 백업

IIS6은 기본값으로, 메타베이스에 수정이 될때,.
예로, IIS 사이트 추가나 정보시에 IIS 관리자는 자동으로 백업을 합니다.

디렉토리는,. C:\WINDOWS\system32\inetsrv\MetaBack 인데,.
IIS 관리자에서는 C:\WINDOWS\system32\inetsrv\History 에 XML 파일로 백업파일이 생성됩니다. 어쨋듯간,.. 두개 디렉토리에 있는 파일 모두 XML 코드 입니다..

그런데,. 꼭 여기 말고 별도의 디렉토리 또는 백업디스크에 필요한 경우가 있죠..
물론, NT백업을 이용해도 상관이 없지만, 다음 배치파일로도 간단하게 가능합니다.

set server=myserver
set name=%date%-%server%
iisback /backup /b %name% /e %password%
xcopy %windir%\system32\inetsrv\metaback\%name%.* \\mybackupserver\share$\%server%  xcopy /o /x /e /h /y /c c:\web \\mybackupserver\share$\%server%

요걸,, 배치파일로 만든후에 스케쥴러에 등록을 해놓으면 됩니다.

iisback.vbs

C:\WINDOWS\system32 에 있는 파일로,, 확장자에서 보듯이 역시 vbscript 이며,
Microsoft.IIsScriptHelper 컴포넌트를 이용합니다. 이 컴포넌트를 이용해서 별도의 툴도 많들수 있을듯 합니다. ^^

WMI Diagnosis 유틸리티

WMI Diagnosis Utility 은,

여타 Diagnosis 툴과 같이, 해당 기능의 전체적인 성능이나 이상유무를 체크하는 툴입니다.

WMI Diagnosis 는 vbscript 로 되어 있고, 해당 코드 역시 대부분 WMI를 이용하는 부분이 대부분입니다. 다운로드는 다음 주소에서 가능하고,  압축이 풀리면 여러개의 오피스문서와 vbscript 파일이 있습니다.

http://www.microsoft.com/downloads/details.aspx?FamilyID=d7ba3cd6-18d1-4d05-b11e-4c64192ae97d&DisplayLang=en

WMIDiag.vbs 는 아주 상세한 분석을 해줍니다. 해당 컴퓨터의 WMI 관련 서비스 및 mof 등, 등록되어 있는 네임스페이스 및 클래스등,.. 또한 어떤 부분에서 오류가 있는지도...



WMIDiag.vbs 를 실행하기 전에 한가지 주의해야 할 점이 있습니다.
각 네임스페이스별로 클래스를 확인하는 루틴에서 CPU로드를 거의 100% 잡아 먹습니다.
중요한 서비스를 운영하는 장비에서는, 서버가 한가한 시점에 해보는게 좋겠죠?..

실행결과는,. log 파일 및 엑셀파일로도 만들어줘,, 분석하기에 좋습니다.
실행시 옵션은 여러가지가 있습니다만,.. 그냥 실행해도 상관없습니다. 옵션에는 다음과 같은게 있는데요... 참고 삼아 보시면 될듯 합니다.

NOECHO=False
SILENT=False
SMS=False
FORCE=False
RUNONCE=False
DEPTH LEVEL=1
LOGGINGLEVEL=0
EVENTLOG=False
EVENTLOGERRORS=False
LOGWMISTATE=False
ERRORPOPUP=False
REQUESTALLINSTANCES=1
WRITEINREPOSITORY=False
CHECKCONSISTENCY=False
SHOWMOFERRORS=False
SHOWHIGHPRIVPROVIDERS=False
CORRELATECLASSANDPROVIDER=False
STRICT=False
OLDESTLOGHISTORY=0
BASENAMESPACE=Root

체크 항목을 일부 보면,.

** Checking specific files presence
-> WMI 관련 시스템 파일들 체크합니다.
체크중 다음과 같은 오류가 있는데, 이부분은 WMI SNMP 프로바이더가 설치되지 않은 경우입니다.

.105 23:09:31 (0) ** Checking WMI System files presence at 'C:\WINDOWS\SYSTEM32\WBEM\'.
..106 23:09:31 (2) !! WARNING: WMI System file 'SMI2SMIR.EXE' is MISSING or is access DENIED but it is an OPTIONAL component.

이 컴포넌트는, 프로그램 추가/삭제에서 관리도구 항목에서 추가설치가 가능합니다.

물론 XP, 2003 등만 가능합니다. 이 컴포넌트는 WMI를 통해서 SNMP 값을 가져올수 있게끔 해주는 프로바이더로,. WMI에서 제공하지 않는 여러가지 SNMP값을 가져올수 있습니다...  다만, 쿼리시 로드가 약간 있으므로, 꼭 필요한 경우 외에는 추천하고 싶지 않습니다.


** Checking Auto-Recovery MOF files presence.
-> 시스템에 등록된 mof 파일등의 상태 체크 및 자동복구를 합니다. mof 파일은 특정 리소스에 대해서 WMI 통해서 값을 제공하는 네임스페이스 및 클래스 정보 파일입니다.

..197 23:09:33 (4)      (REG_MULTI_SZ) 'HKLM\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs' -> 'C:\WINDOWS\system32\WBEM\cimwin32.mof'


** Checking WMI DCOM component registrations.
-> DCOM  컴포넌트로 등록되어 있는 상태를 체크.

..381 23:09:36 (3)    WMI registry key (REG_SZ) 'LocalService' is correct.
..382 23:09:36 (4)      Reading registry (REG_SZ) 'HKCR\CLSID\{8BC3F05E-D86B-11D0-A075-00C04FB68820}\'.
..383 23:09:36 (4)      (REG_SZ) 'HKCR\CLSID\{8BC3F05E-D86B-11D0-A075-00C04FB68820}\' -> 'Windows Management and Instrumentation'


** Checking WMI Core registry settings (WBEM).
-> 관련 레지스트 값 체크.

..978 23:09:36 (3)    WMI registry key (REG_SZ) 'Default Namespace' is correct.
..979 23:09:36 (4)      Reading registry (REG_DWORD) 'HKLM\SOFTWARE\Microsoft\WBEM\Scripting\Default Impersonation Level'.
..980 23:09:36 (4)      (REG_DWORD) 'HKLM\SOFTWARE\Microsoft\WBEM\Scripting\Default Impersonation Level' -> '&h3'


** Retrieving WMI system settings.
-> 시스템 설정값 체크. 이부분에서 각 네임스페이스, 클래스 의 상세한 부분을 체크합니다. 보기가 쉽지 않을 만큼 분석량이 많습니다.. 여러가지가 체크가능한 네임스페이스가 설치된 경우는 더 많겠죠...

.1229 23:09:46 (3)    60 class(es) found. (Inheritance level analysis=1).
.1230 23:09:46 (3)    Retrieving static information (MOF) of '__SecurityRelatedClass' (I=1).
.1231 23:09:46 (3)    Qualifier information of '__SecurityRelatedClass': Dynamic=False, Provider='<NOT DEFINED>', Association=False.
.1232 23:09:46 (3)    Requesting all static instances of '__SecurityRelatedClass' in 'Root' (2006-06-05 오후 11:09:46) ...
.1233 23:09:46 (3)    0 static instance(s) found for '__SecurityRelatedClass' in 'Root'.


** Collecting inventory information.

-> 마지막으로, 시스템 상태를 전체적으로 확인후 끝냅니다.


참고로,,,

WMI는 Microsoft 제품을 관리하기 위한 뛰어난 관리도구 입니다. Windows를 포함하여, 다음과 같은 제품에서 WMI를 지원하고 있고,, 차후 지속적으로 확대가 될 것으로 보입니다.

Systems Management Server
Microsoft Operations Manager
Host Integration Server
Automated Deployment Services
Exchange Server 2000/2003
Microsoft Office 2000/2003
SQL Server 2000/2005
Microsoft Identity Integration Server
Live Communication Server (LCS)
Audit Collector Service (ACS)

전세계적으로 시스템관리 제품들은 MS 제품 모니터링에 있어서 WMI를 이용합니다. 국내 제품들도 마찮가지로 말이죠.

DeskView
BMC Software
Bit Defender
Intel Network drivers
IBM Tivoli
IBM Director
HP OpenView
MetaFrame Enterprise Edition
eXctender
DB2 Integration
Compaq Insight Manager Agents
Tucows Asset Logger
IPSwitch WhatsUp Professional


06-WMIDiag.png

가장 많이 본 글