2014년 8월 20일 수요일

VMware 장애해결을 위한 로그 수집 방법 - VM-Support

안녕하세요 Evan입니다.
2장은 VM-support에 대한 내용들입니다.
기본적으로 저희 회사 엔지니어분들과 공유하기 위해서 만드는 문서를 블로깅하였습니다.

2장. VM-Support

기본적으로 장애지원을 하다보면 많은 트러블과 마주치게 됩니다.

이럴 때 VM-support를 이용하여 SR요청도 가능하고 개인적으로 로그 분석이 가능하도록 로그를 수집할 수 있습니다.

장애시점에 VM-support를 수집해야 최대한 변경된 부분 없이 분석이 가능하기 때문에 조금 더 수월한 부분이 있습니다..

자 그럼 VM-support를 어떻게 사용하는지 알아봅시다.
기본적으로 사용하는 명령어는 다음과 같습니다..

\vm-support

위의 명령어를 사용하면 하위의 폴더에 다음과 같은 파일이 생성됩니다..
/var/tmp/esx-hostname-2013-08-06—09-43.tgz(수집날짜-수집시간)
그러면 VM-support에 대한 옵션에 대해서 알아봅시다.

[ESXi 5.0기준]
Options:
  -h, --help            show this help message and exit
  -g GROUPS, --groups=GROUPS         Gather data from listed groups
  -a MANIFESTS, --manifests=MANIFESTS        Gather from listed manifests
  -e EXCLUDEMANIFESTS, --excludemanifests=EXCLUDEMANIFESTS Exclude the listed manifests
  --listmanifests       List available manifests
  -G, --listgroups      List available manifest groups
  -t, --listtags        List available manifest tags
  -p, --performance     Gather performance data
  -d DURATION, --duration=DURATION    Duration of performance monitoring (in seconds)
  -i INTERVAL, --interval=INTERVAL    Interval between performance snapshots
  -v VM, --vm=VM        Gather detailed information about this specific VM (ie  --vm <path to .vmx file>)
  -V, --listvms         List currently registered VMs
  -w WORKINGDIR, --workingdir=WORKINGDIR  Directory to create .tgz in
  -D, --dryrun          Prints out the data that would have been gathered
  -s, --stream          stream data to stdout
  -q, --quiet           Output only the location of the bundle
  -E ERRORFILE, --errorfile=ERRORFILE
                        Prints (non-fatal) errors to specified file (overrides
                        --quiet and --stream)
  --loglevel=LOGLEVEL   Set logging to specified level: 0-50 (0=most verbose)
  --version             Display the vm-support version
-l, --listfiles       List all files gathered by vm-support

자 그럼 tgz파일에는 어떠한 내용들이 저장되는 걸까?
압축된 파일을 해제하게 되면 다음과 같은 폴더를 볼 수 있습니다.



자 위의 폴더를 보면 대충 이해가 될 것입니다.
ESX의 폴더내용을 대부분 그대로 수집해 옵니다.
자 그럼 분석을 위해서 꼭 확인해야 하는 부분은 어디일까요?
1.     NIC관련부분
2.     Storage관련부분
3.     Kernel관련부분
4.     성능부분
이 정도면 어느 정도 분석이 가능할 것으로 예상됩니다.
추가로 장애가 어디서 발생했는지 확인이 된다면 어느 부분을 확인 해야 할 지 감이 오실 겁니다.


일단 기본적으로 장애분석을 하기 위해선 기본적으로 시스템의 Flow를 알아야 합니다.
VMware의 Flow는 bare-metal방식의 OS이기 때문에 H/W ->ESX Kernel -> Guest OS 순으로 사용되어집니다.
아래의 그림을 참조하세요.




위와 같이 H/W -> Hypervisor -> GuestOS(VM) 순으로 Driver가 Loading됩니다.
그러면 NIC or Storage측에서 Trouble이 발생하였다면 당연히 H/W쪽에서 봐야겠죠.
ESX에서 확인 할 수 있는 부분은 VMware ESXi 부분이 Kernel이 존재하는 부분입니다.
저 Kernel에서 H/W와의 Communication에 문제가 있는지 없는지 확인한다면 S/W or H/W분간이 수월하겠죠?

아래는 VMware ESXi Architecture입니다.



그림의 내용을 보시면 아시겠찌만 VMkernel에서 모든 것들이 동작합니다.
리소스 스캐쥴 , 스토리지 스택 , 네트워크 스택 , vNIC & Switch , Device drivers등등
VMkernel 위에 hostd , vpxa, DCUI , syslog등등의 것들이 있습니다.
VMware의 Architecture 만 이해하더라도 기술지원 시 어느 부분을 확인해야 하는지 감이 빨리 오실겁니다.
Architecture를 이해하더라도 관련 로그가 어디에 있는지 모른다면 분석이 어렵겠죠?
VM-support파일을 다시 한번 확인하겠습니다.
\var\log 폴더를 보게 되면 아래와 같이 로그파일이 저장되어 있습니다.



그리고 각종 디바이스들의 정보를 확인하는 부분은 아래의 폴더에 가시면 확인 가능합니다.
\commands




위의 그림에서 보시면 아시겠지만 필요한 H/W와 구성정보가 모두 수집되어 저장되어있습니다.
필요한 정보를 위에서 확인하시면 되겠죠.
이 외에도 더 있겠지만 기본적으로 두 개의 폴더만 확실히 파악하고 있어도 로그분석이 어느정도 가능하다고 여겨집니다.
로그분석을 하게되면 시스템의 구동순서를 확인할 수 있고 자연스레 Flow가 눈에 들어오게됩니다.
정상로그를 많이 봐 둬야 문제가 발생했을 때 원인파악이 더욱 수월하겠죠?

Collecting diagnostic information using the vm-support command in VMware ESX/ESXi (1010705)

VMware KB : http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=1010705&sliceId=1&docTypeID=DT_KB_1_1&dialogID=348314660&stateId=1%200%20348322392

댓글 없음:

댓글 쓰기