get_mdbxx

   get_mdbxx

  사용법


	get_mdbxx -V
	get_mdbxx -h hostname -D outdir [{-T data | -1}][-P] [-p port][-t sec] [-m][-n][-q][-0] [-b basedir][-L logfile] host
	get_mdbxx -M interval [-c num] -D outdir [-B] -h hostname [-P] [-p port][-t sec] [-m][-n][-q][-0] [-b basedir][-L logfile] host
	get_mdbxx -o outfile [{-T data | -1}] [-p port][-t sec] [-q][-0] [-b basedir][-L logfile] host
	get_mdbxx -I [-T data] [-b basedir] [-t sec][-p port] host
	get_mdbxx -C config [-I | [-M interval [-c num]] [-B] [-D outdir]] [-S][-N][-v] [options]

	Options are as follows:

	-?            print this help
	-0            copy mdbxx or day_dd file fully from the beginning
	-1            get the previous month's data
	-B            run in the background as a daemon
	-b basedir    base directory for datafile on the server
	-C config     specify a configuration file
	-c count      specify the number of times to get the data when using -M option. default: forever
	-D outdir     specify a output directory
	-h hostname   specify a hostname for making directory and checking DB file
	-M interval   specify interval in minute: (interval = 1,3,5,10,15,20,30,60,day)
	-L logfile    specify a log file (append mode)
	-m            make a directory
	-N            print command lines only without running them with -C option (for checking configuration file)
	-n            do not compare hostname in mdbxx file 
	-o outfile    specify output file name directly
	-P            including psinfo data
	-p port       TCP port number to connect; def: 9900
	-T data       specify a data type of yyyy.mm or day_nn, or psinfo; (default: 0)
	                 yyyy.mm   specify yyyy.mm of mdbxx-yyyy.mm file
	                                '0': this month data
	                               '-1': the previous month data
	                  day_nn   specify nn of day number (1 <= nn <= 31)
	                            'day_0': today
	                           'day_-1': yesterday
	                  psinfo   specify 'psinfo' for last output of process info from mmonx
	-t sec        TCP connection timeout seconds; default: 10
	-I            get information only
	-q            quiet mode
	-S            execute commands one by one with -C option
	-V            show version
	-v            print command lines with -C option
	host          specify host IP or hostname to resolve IP
  설명

get_mdbxx 명령어는 다른 시스템에서 수집된 mdbxx-yyyy.mm 데이타 파일을 복사해 온다.
데이타를 복사해 올 때, 현재 시스템에 복사된 파일의 크기를 확인한 후에 리모트 시스템에 있는 파일의 증가된 부분만 복사해 온다.
get_mdbxx 명령어는 ParmView 웹 서비스를 이용하여 HTTP 프로토콜로 데이타를 복사해 온다

# get_mdbxx -h king -D /DATA 192.168.100.1
ERROR: host=192.168.100.1: '/DATA/king': output directory does not exist
# get_mdbxx -m -h king -D /DATA 192.168.100.1
192.168.100.1: 1574816 bytes
# get_mdbxx -h king -D /DATA 192.168.100.1
192.168.100.1: 0 bytes
# ls -l /DATA/king
total 3080
-rw-r--r--   1 guest    other    1574816 Jan 23 14:52 mdbxx-2012.01

위의 명령어는 2012년 1월 23일에 실행하였다.

    # get_mdbxx -h king -D /DATA 192.168.100.1
위의 명령어는 192.168.100.1 시스템에 접속하여 이번 달 mdbxx 파일(mdbxx-2012.01)을 가져와서 /DATA/king 디렉토리에 저장하라는 의미이다.
-D 옵션에 지정된 디렉토리는 사전에 사용자가 만들어야 하고, -h 옵션에 지정한 호스트명은 두가지 의미로 사용된다. 첫번째는 가져온 mdbxx-yyyy.mm 데이타를 저장할 디렉토리를 의미하고,
두번째는 mdbxx-yyyy.mm 파일에 있는 hostname 정보와 비교하는 역활을 한다.
hostname 정보와 비교하여 일치하지 않으면, 오류 메세지를 출력하고 프로세스를 종료한다.
-m 옵션을 지정하면, hostname 디렉토리가 없으면 만들어 준다.

get_mdbxx 명령어의 동작을 좀 더 자세히 보면 다음과 같다.
192.168.100.1 시스템에서 2012.01 데이타를 복사해오려면, 다음과 같은 단계를 거친다.

1) -D 옵션에 지정한 디렉토리가 있는지 확인하고,
2) -D 옵션에 지정한 디렉토리가 안에 -h 옵션에서 지정한 hostname 디렉토리가 있는지 확인하고,
3) -D 와 -h 옵션으로 지정된 디렉토리 안에 mdbxx-2012.01 파일을 조사하여,
   그 파일의 크기와 그 파일에 있는 Host ID와 yyyy.mm 정보를 구한다.
4) 192.168.100.1 시스템으로 접속하여 /opt/JSparm/dbspace/mdbxx-2012.01 파일에서
   hostname 과 host ID와 yyyy.mm 정보를 비교한다.
5) mdbxx-2012.01 파일에서 증가된 부분만 복사해 온다. (증가된 부분을 판단하는 것은 파일의 크기로 한다)
4) 단계에서 Host ID는 반드시 일치하여야 하고, hostname이 다를 경우에 -n 옵션을 지정하면, hostname 을 비교하지 않는다.
get_mdbxx 명령어를 실행하면, 복사해 온 바이트 수를 화면에 출력한다.

get_mdbxx 명령어로 데이타 파일을 복사해 오기 위해서는 데이타가 있는 시스템의 '/etc/parmview.access' 파일에 데이타를 가지고 가려고 하는 시스템의 IP 번호을 지정하여야 한다. IP 번호를 지정할 때에는 IP 번호 앞에 '@@'을 반드시 붙여야 한다.

	@@192.168.100.20
그렇지 않으면 다음과 같은 오류가 발생한다.

# get_mdbxx -h king -D /DATA 192.168.100.1
ERROR: DB dump: permission denied

-M 옵션을 지정하면, 지정한 시간 간격으로 지정한 호스트 머신에서 mdbxx-yyyy.mm 파일을 무한 반복으로 복사해 온다. 다음은 1 분 간격으로 데이타를 가져 오는 예제이다.

# get_mdbxx -M 1 -h king -D /DATA 192.168.100.1
위의 명령어를 실행하면, 실행하는 순간 데이타를 한번 가져오고, 그 다음은 매분 데이타를 가져온다.
데이타를 가져오는 시간의 기준의 데이타를 가지고 있는 리모트 시스템의 시간을 기준으로 한다.
-B 옵션을 추가하면, 백그라운드에서 데몬 프로세스로 동작한다.

  데이타 통합 서버 시스템 구축하기

여러 시스템에서 수집된 데이타를 한 곳에 관리하려면, 우선 관리하고 싶은 리모트 시스템의 데이타를 한 곳에 모아야 한다.
여러 시스템의 데이타를 한 곳에 간단히 모으기 위해서는 -C 옵션을 사용하여 구성파일을 만들어서 사용하는 것이다.
다음과 같은 구성 파일 test.conf가 이다.

-D /DATA
-m

192.168.100.1 king
lion	lion
queen	queen

위와 같은 구성파일을 만들어 놓고 다음과 같이 명령어를 실행한다.

# get_mdbxx -C test.conf -N
/opt/JSparm/bin/get_mdbxx -CFORKED -h king -m -D/DATA 192.168.100.1
/opt/JSparm/bin/get_mdbxx -CFORKED -h lion -m -D/DATA lion
/opt/JSparm/bin/get_mdbxx -CFORKED -h queen -m -D/DATA queen

# get_mdbxx -C test.conf -M1 -N
/opt/JSparm/bin/get_mdbxx -CFORKED -M1 -h king -m -D/DATA 192.168.100.1
/opt/JSparm/bin/get_mdbxx -CFORKED -M1 -h lion -m -D/DATA lion
/opt/JSparm/bin/get_mdbxx -CFORKED -M1 -h queen -m -D/DATA queen

# get_mdbxx -C test.conf -I -N
/opt/JSparm/bin/get_mdbxx -CFORKED -I 192.168.100.1
/opt/JSparm/bin/get_mdbxx -CFORKED -I lion
/opt/JSparm/bin/get_mdbxx -CFORKED -I queen

위의 명령어에서 -N 옵션을 지정하면, 실제 명령어는 실행하지 않고 실행될 명령어만 출력한다. 실제 명령어를 실행하려면 -N 옵션을 제거하고 실행하면 된다.

-C 옵션에 지정될 구성파일 형식은 다음과 같다.

  [options]
  host      hostname     [options]

	host	 리모트 시스템의 IP 또는 호스트명 
	hostname	 리모트 시스템의 hostname (-h 옵션에서 지정되는 것과 같음)
	options	 옵션 (명령어 라인에서 지정한 옵션보다 우선수위가 높음), 생략가능함 

/etc/get_mdbxx.conf 파일을 만들어 두면, 시스템이 부팅될 때 마다 /etc/rc2.d/S90get_mdbxx 스크립트 파일에 의해 다음과 같이 실행된다.

# /opt/JSparm/bin/get_mdbxx -C /etc/get_mdbxx.conf -B

[/etc/rc2.d/S90get_mdbxx 파일을 참조]

/etc/get_mdbxx.conf 구성파일을 만들 때에는 다음과 같이 -D, -L, -M 옵션을 지정하여야 제대로 동작한다.

-D /DATA/parmdb
-L -
-M 1
-m

192.168.100.10	web10
192.168.100.11	web11
192.168.100.12	web12
192.168.100.13	web13

  다음은 get_mdbxx의 각 옵션에 대하여 설명한다.

옵션설명
-0 -0 옵션을 지정하면, 증가분만 복사하는 것이 아니고, 전부를 다시 복사해 온다.

-M 옵션에서 -0 옵션을 지정하면, 처음에는 전체 데이타를 가지고 오지만, 두번째 부터는 증가분만 가지고 온다.

-1 -1 옵션을 지정하면, "-T -1" 옵션을 지정한 것과 같다.
지날 달 mdbxx 파일을 지정하는 것이다.
-B -B 옵션을 지정하면, 백그라운드에서 데몬 프로세스로 동작한다.
-b basedir -b basedir 옵션을 지정하면, 리모트 시스템이 있는 mdbxx-yyyy.mm 파일이 있는 디렉토리 위치를 변경할 수 있다.
-C config -C 옵션에 구성파일를 지정하여 여러 시스템의 데이타를 한 번의 명령어를 실행하여 가져올 수 있다.
내부적으로는 구성파일에 지정한 라인수 만큼 새로운 프로세스를 실행한다.

  [options]
  host      hostname     [options]

host 리모트 시스템의 IP 또는 호스트명
hostname 리모트 시스템의 hostname (-h 옵션에서 지정되는 것과 같음)
options 옵션 (명령어 라인에서 지정한 옵션보다 우선수위가 높음), 생략가능함
명령어 라인에서 지정할 수 있는 대부분의 옵션이 지정 가능하다.
지정가능한 옵션은 다음과 같다.
-0, -1, -B, -b, -D, -L, -I, -M, -m, -n, -q, -P, -p, -t
get_mdbxx 명령어를 실행할 때, 지정한 옵션과 구성파일에 또 지정되면, 구성파일에 지정된 옵션이 사용된다.
예제)

-D /DATA/parmdb
-L -
-M 1
-m
-q

192.168.100.10	web10
192.168.100.11	web11
192.168.100.12	web12 -L - -P -q
192.168.100.13	web13 -L /tmp/error.log -P -q

-c count -c 옵션은 -M 옵션과 함꼐 사용할 수 있다. -M 옵션을 사용하여 일정 시간 간격으로 데이타를 가져오는데, 이 경우에 데이타를 가져울 횟수를 -c 옵션으로 지정한다.
-c 옵션이 지정되어 있지 않으면, 무한 반복한다.
-D outdir -D outdir 옵션을 지정하여, 로컬 시스템이서 데이타를 저장할 위치를 저장한다. 디폴프는 현재 디렉토리(.)이다.
-D 옵션에 지정한 디렉토리는 사전에 만들어져 있어야 한다.
-L logfile -L logfile 옵션을 지정하면, 경고 및 오류 메세지를 지정한 파일에 저장한다.
logfile에 '-' 를 지정하면, -D outdir 과 -h hostname 옵션에서 지정된 디렉토리에 'get_mdbxx.log' 파일로 대치된다. -h 옵션이 사용되지 않은 명령어에서는 표준 오류로 출력된다.
사용법의 오류 메세지는 저장되지 않는다.

이 파일은 APPEND 모드로 생성되기 때문에 프로세스를 다시 기동하여도 메세지는 계속 그 파일에 추가된다.

파일의 크기가 10 MB 이상이면, 현재 수집된 로그 파일의 이름을 logfile.bak 로 바꾸고, 동일한 이름 파일을 다시 열어서 새로 로그를 저장한다.

-h hostname -h hostname 옵션에 지정한 호스트명은 두가지 의미로 사용된다.
첫번째는 가져온 mdbxx-yyyy.mm 데이타를 저장할 디렉토리를 의미하고, 또 하나는 mdbxx-yyyy.mm 파일에 있는 hostname 정보와 비교하는 역활을 한다.

호스트명이 일치하지 않으면 오류를 발생하고 종료된다. -n 옵션을 지정하면, hostname 정보와 비교하지 않는다.

시스템의 hostname은 다음과 같은 명령어로 알 수 있다.

# hostname
king
-I -I 옵션을 지정하면, mdbxx-yyyy.mm 파일을 복사하지 않고, 그 파일의 정보만 화면에 출력한다.

# get_mdbxx -I 192.168.100.1
hostname: king hostid: 92e1e17e file: mdbxx-2012.01 filesize: 1643360 version: V10.2 modification: 2012/01/23.18:10:00
host-date: 2012/01/03.18:10:32

-M -M 옵션을 지정하면, 지정한 시간 간격으로 주기적으로 데이타를 복사해 온다. 지정할 수 있는 시간(분 단위)은 다음과 같다.

	1, 3, 5, 10, 15, 20, 30, 60, day 

지정한 시간이 위에 정의된 것과 다르면, 지정한 시간이 정의된 시간를 넘지 않는 최대값으로 변경된다.
(만일 25를 지정하면, 20으로 변경된다)

만일 10 분 간격으로 지정하면, 최초 실행할 때, 한번 데이타를 복사해오고, 그 다음은 매 10분 간격으로 데이타를 복사해 온다.

만일 일이 단위로 데이타를 주기적으로 수집하게 했는데, 중간에 한번 데이타를 복사해 오고 싶을 경우에
또 다른 get_mdbxx 명령어를 실행하면 된다.
(-M 옵션을 사용하여 get_mdbxx 명령어가 실행되고 있어도 다른 get_mdbxx 실행하여도 된다.)

-B 옵션을 함께 사용하여 데몬 프로세스로 동작시키면, 사용자가 로그 아웃하여도 백그라운드 모드에서 계속 실행된다.

-c 옵션을 사용하여, 데이타를 가져올 횟수를 지정할 수 있다.

-m -m 옵션을 지정하면, -h 옵션에 지정한 디렉토리가 없을 경우에 디렉토리를 만들어 준다.
-N -N 옵션은 -C 옵션과 함께 사용되며, -C 옵션에서 지정한 구성파일의 내용대로 실행할 명령어를 실제로 실행하지는 않고 명령어만 출력한다.
-n -n 옵션을 지정하면, -h hostname 옵션에서 지정한 hostname 정보를 리모트 시스템이 있는 mdbxx-yyyy.mm 파일에 있는 hostname 정보와 비교하지 않는다.
-o outfile -o outfile 옵션을 지정하면, 로컬 시스템에 저장할 파일을 직접 지정한다.
outfile에 '-'를 지정하면 표준출력으로 데이타를 출력한다. 이때 -q 옵션이 내부적으로 지정된다.
-P -P 옵션을 사용하면, 최종 1 분의 프로세스 정보를 함께 가져온다.
이 프로세즈 정보는 /opt/JSparm/dbspace/psinfo.1dat 파일의 내용이다.

-T day_nn 또는 -T psinfo 옵션과 함께 사용할 수 없다.

-p port -p port 옵션을 사용하여, 리모트 시스템에 접속할 TCP 포트 번호를 변경할 수 있다.
디폴트는 9900 포트이다. 이 포트 번호는 ParmView를 웹서비스하는 포트번호 이다.
-q -q 옵션을 지정하면, 전송된 바이트 수를 출력하지 않는다.
-S -S 옵션은 -C 옵션과 함께 사용되며, -C 옵션에서 지정한 구성파일의 내용대로 명령어를 실행할 때, 먼지 실행한 명령어가 종료되고 나면 다음 명령어를 실행한다.
-S 옵션을 지정하지 않으면, 구성파일의 내용대로 명령어를 모두 실행한 후에, 실행한 모든 프로세스가 종료될 때까지 기다린다.

(주의: 너무많은프로세스가 동시에 실행되면, 시스템에 부하를 줄수 있음.)

-S 옵션을 사용하지 않을 경우에는 구성파일을 여러 개로 나누어, get_mdbxx 명령어를 순차적으로 여러 번 실행하는 것이 바랍직하다.

-T data data에 지정될 수 있는 것은 다음과 같다.
	yyyy.mm
	day_dd
	psinfo

디폴트는 다음과 같다.

	-T 0

yyyy.mm 은 mdbxx-yyyy.mm 파일을 나타낸다. 이 파일은 리모트 시스템에 /opt/JSparm/dbspace 디렉토리에 있다.
yyyy.mm 대신 0을 지정하면, 시스템의 현재 시간에서 연.월 정보를 찾아서 yyyy.mm 형식으로 대치한다.
yyyy.mm 대신 -1을 지정하면, 시스템의 현재 시간에서 지난달의 연.월 정보를 찾아서 yyyy.mm 형식으로 대치한다.

day_dd 는 /opt/JSparm/dbspace/proc/day_dd 파일을 의미한다.
mmonx 데몬 프로세스를 실행하면, 1분 단위로 시스템 통계정보를 수집하여, 월 단위로 /opt/JSparm/dbspace/mdbxx-yyyy.mm 파일에 저장하고, /opt/JSparm/dbspace/proc 디렉토리 안에 'ON' 이라는 파일 있으면, 1분 단위로 CPU, HP+STK, RSS, SIZE가 큰 순서로 몇개의 프로세스 정보를 수집하여 day_dd 라는 파일에 저장한다. 여기서 dd는 01 - 31 이다.

'psinfo' 라고 지정하면, /opt/JSparm/dbspace/psinfo.1dat 파일을 내용을 가저와서 저장한다.
psinfo.1dat 파일은 mmonx 데몬 프로세스에 의해 1 분 단위로 수집되며, day_dd 파일에 저장되는 최근 1분 데이타이다.
psinfo.1dat 파일은 증가분을 가져오는 것이 아니고 항상 전체를 복사한다.

yyyy.mm 대신에 day_dd 를 지정하면, /opt/JSparm/dbspace/proc/day_dd 파일에서 증가분을 복사한다.
day_dd 파일은 한달 단위로 덮어쓰기 때문에 당일 데이타가 아닌 경우에, 처음에 한번은 -0 옵션을 지정하여 사용하여야 한다. 그렇지 않으면, 과거의 데이타에 추가적으로 데이타를 넣어려고 하기 때문에 데이타가 수집되지 않는다.
day_dd, psinfo 파일에는 hostname과 host ID 정보가 없기 때문에 hostname과 host ID 정보를 비교하지 않는다.

day_0 을 지정하면, 시스템의 현재 시간에서 일 정보를 찾아서 day_dd 형식으로 대치한다.
day_-1 을 지정하면, 시스템의 현재 시간에서 어제의 일 정보를 찾아서 day_dd 형식으로 대치한다.

-t sec -t sec 옵션을 사용하여, 리모트 시스템에 접속할 때, TCP connection이 완료될 때까지 기다리는 타임아웃 시간을 초로 지정할 수 있다. 디폴트는 10초 이다.
타임아웃 시간을 아무리 크게 지정하여도 커널이 제공하는 TCP timeout 시간을 초과하지 않는다.

데이타 전송이 10초 안에 완료되지 않으면 Timeout 오류가 발생한다. 이 값은 고정이다.

-V -V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
-v -v 옵션은 -C 옵션과 함께 사용되며, -C 옵션에서 지정한 구성파일의 내용대로 명령어를 실행할 때, 실행된 명령어로 함께 출력하다.
host host는 접속할 리모트 시스템의 호스트명이나 IP를 나타낸다.