mkrep.sh

   mkrep.sh

  사용법


       mkrep.sh [options] { overview | simple | simple_each } [title]
       mkrep.sh [options] [-I][-K][-M][-S] stat [title]
       mkrep.sh [options] -G fn[,fn...] custom [title]
       mkrep.sh [options] -P

	overview     HTML top page (index_overview.html)
	simple       HTML top page (index_simple.html)
	simple_each  HTML top page (index_simple.html)
	stat         HTML top page (index_stat.html)
	custom       HTML top page (index_custom.html)

	Options:
	-I           make all device graphs for iostat when using stat
	-K           make all network interface graphs for netinfo when using stat
	-M           make all CPU graphs for mpstat when using stat
	-S           make HTML page with detailed values using psinfo.log when using stat

	-0           zero based graph
	-,           put a comma in graph number
	-B           bar graph
	-b           draw border line
	-c config    configuration file
	-D outdir    output directory; def: .
	-e dots      X-axis extension
	-G fn[,fn,...]  draw graphs for the specified fields
	               fn (in vmstat.log): cpu r b w swap free re mf pio fr de sr in sy cs
	               fn (in iostat.log): rw/s krw/s runit wunit wait actv svc_t %w %b
	               fn (in mpstat.log): mpcpu minf mjf xcal intr ithr csw icsw migr smtx srw syscl
	               fn (in netinfo.log): pkt data err coll
	               fn (in psinfo.log): proc start end zomb run lwp load allcpu ptime maxwcpu allhs maxhs maxsz maxrss d-allcpu d-maxwcpu
	-h height    height per graph
	-i index     index file name; def: index_???.html
	-l n         draw vertical line on graph every n'th data
	-N           write time info(HH:MM:SS) at the bottom of the graph
	-n count     count of data to be processed
	-P           print only maximum value and minimum value for each field
	-r           preserve temporary file(t1_psinfo.tmp) of psinfo.log
	-s start     starting data to be processed
	-v           print commands to be run for making graphs
	-w width     width of the graph
	-x           abort on errors
	-z           draw graph for unused device
  설명

mkrep.sh는 getdata 명령어로 수집한 데이타에 대하여 HTML 페이지를 만들어 준다.
mkrep.sh는 getdata 명령어로 데이타를 수집한 디렉토리 안에서 실행하여야 하며 그 디렉토리에는 "data_info" 라는 파일이 있어야 한다. 이 파일은 getdata 명령어에 의해 생성되며, mkrep.sh가 사용할 수 있는 정보가 들어 있다.
이 파일이 없을 경우에 다음과 같은 오류 메세지가 출력된다.

# mkrep.sh simple Junsoft
ERROR: there is no control file
title은 생성될 HTML의 제목으로 사용된다.

다음은 getdata 명령어로 데이타를 수집하여 mkrep.sh로 가공하는 예제이다.

# getdata -A -i 60 -t 8
Start to gather system info: interval 60 seconds, time: 8
Collecting data: vmstat mpstat iostat netinfo psinfo
Data directory: ./data.20070308.090000.60

# ls -F data.20070308.090000.60/

# cd data.20070308.090000.60

# mkrep.sh simple Junsoft Top web page is index_simple.html

mkrep.sh 명령어는 getdata 명령어로 수집한 데이타에 대하여, GIF 파일과 HTML 파일을 현재 디렉토리에 만들어 준다. 그 중에 index_simple.html 파일은 전체를 보여주는 HTML 파일이다.
시스템에 netscape가 있을 경우, 다음과 같은 명령어로 index_simple.html 파일을 볼 수 있다. # netscape file:///`pwd`/index_simple.html 리모트 시스템에서 이 파일을 액세스하려면, 다음과 같이 미니 웹 서버(gwserv)를 실행하여 액세스할 수 있다.
# gwserv
gwserv is started on port 8008

gwserv는 현재 디렉토리를 도큐멘트 루트 디렉토리로 사용하여 TCP 포트 8008 번에 미니 웹서버를 실행한다.

이 경우에 리모트 시스템에서는 다음과 같은 URL로 index_simple.html을 액세스할 수 있다.
(이 시스템 명은 dragon이다.) http://dragon:8008/index_simple.html

mkrep.sh는 vmstat.log, mpstat.log, iostat.log netinfo.log, psinfo.log에 대해서만 처리해준다. sadc.log는 gsar 명령어로 직접 처리하여야 한다.

getdata 명령어는 디폴트로 vmstat, mpstat, iostat netinfo 명령어의 결과를 저장해 준다.
psinfo나 sar에 대한 데이타도 수집하고 싶으면 getdata 명령어의 -G 옵션을 사용하여 지정할 수 있다.
-G 옵션에 'p' 를 추가하거나 -p 옵션을 지정하면, psinfo.log에는 CPU 사용량이 많은 순으로 5개와 heap+stack의 값이 큰 순서로 5개의 프로세스의 정보가 저장된다. getdata 명령어에서 -A 옵션을 지정하면 모든 프로세스의 정보를 저장한다.

vmstat.log, mpstat.log, iostat.log netinfo.log, psinfo.log 파일은 각각 gvmstat, gmpstat, giostat, gnetinfo, gpsinfo 명령어를 사용하여 직접 처리할 수 있다.
data_info 파일이 있는 경우, start_time과 interval 정보를 이 파일에서 얻어온다.

다음은 data_info파일의 예제이다.

#
# Do NOT edit it manually
#
HOST: dragon
OS_VERSION: 5.8
START_DATE: 20027/03/08.090000
INTERVAL: 60
TIME: 8
COUNT: 480
SELOPT: vminp
END_DATE: 2007/03/08.170000
STATUS: SUCCESS

그 중에 HOST, START_DATE, INTERVAL은 mkrep.sh 명령어가 HTML 페이지를 만드는데 사용된다.

gvmstat, gmpstat giostat, gnetinfo, 명령어로 09시 정각에 60초 간격으로 데이타를 수집하였다고 가정하면, 그래프 상에서 09시 00분 60초에 표시된 값은 09시 00분 00초 부터 09시 00분 60초 동안의 초당값이다.
psinfo 명령어의 경우는 초당 값이 아니고 해당 시간에 측정한 값이다.

데이타를 수집한 후에 맨 먼저 "# mkrep.sh stat" 명령어로 가공하여 각각의 그래프에 대하여 살펴보고, 개략적인 문제가 무엇인지 파악하고, 문제점이 발견되었으면, 리포트 자료를 만들기 위해서 필요한 그래프만을 뽑아서 보고서를 만들면 된다.
이때 mkrep.sh 명령어의 -G 옵션에 그리고 싶은 그래프 명을 콤마로 분리하여 지정하고 custom 키워드를 지정하면 선택된 그래프만 그려준다.

  다음과 같이 getdata 명령어로 수집한 데이타에 대하여 mkrep.sh 의 사용 예제이다.

# getdata -A -i 60 -t 8

# mkrep.sh overview
vmstat, iostat, netinfo 명령어의 결과 파일에서, 다음과 같은 필드를 선택하여 하나의 HTML 페이지로 만들어 준다.
	cpu, r, free, swap, sr,  (vmstat)
	rw/s, krw/s,             (iostat)
	pkt, data                (netinfo)

생성된 HTML 페이지 파일명은 "index_overview.html" 이다.
# mkrep.sh simple
simple은 vmstat, iostat, netinfo 명령어의 결과 파일을 가공하여 다음과 같은 내용을 하나의 HTML 페이지로 보여준다.
  • CPU & Process
  • Memory
  • Total I/O
  • Network
  • Process
simple_each은 가공한 파일을 각각의 HTML 페이지로 보여준다.

생성된 HTML 페이지 파일명은 "index_simple.html" 이며, 시스템 사용현황에 대한 리포트로 알맞다.

# mkrep.sh stat
getdata 명령어는 디폴트로 vmstat, iostat, netinfo, mpstat 명령어의 결과를 파일로 저장한다. 다음과 같은 페이지로 보여준다.
  • vmstat
  • iostat
  • netinfo
  • mpstat
  • psinfo
생성된 HTML 페이지 파일명은 "index_stat.html" 이다. iostat에는 전체 I/O 디바이스에 있는 값을 모두 더하여 하나의 그래프로 만든다. netinfo에는 전체 network interface에 있는 값을 모두 더하여 하나의 그래프로 만든다. mpstat에는 전체 CPU이 있는 값을 모두 더하여 하나의 그래프로 만든다 (그러나 [cpu: cpu usage] 필드는 백분률로 나타낸다).

-I 옵션을 사용하면 iostat.log 파일을 사용하여 각각의 I/O 디바이스에 대한 그래프를 추가적으로 그려준다.
I/O 디바이스가 많을 경우에 상당히 많은 시간이 걸린다. 개별 디스크 하나에 대한 그래프를 만들 때마다 iostat.log 파일을 전부 읽어 들이기 때문이다.

  • iostat   [all I/Os]
  • 현재 디렉토리에 diskname 파일이 있으면 giostat 명령어를 실행할 때, -X 옵션의 인수로 사용한다. 즉, diskname 파일에 디스크명의 별병을 지정할 수 있다.

    -K 옵션을 사용하면 netinfo.log 파일을 사용하여 각각의 network interfavce에 대한 그래프를 추가적으로 그려준다.

  • netinfo [all interfaces]
  • 현재 디렉토리에 interfacename 파일이 있으면 gnetinfo 명령어를 실행할 때, -X 옵션의 인수로 사용한다. 즉, interfacename 파일에 네트웍 인터페이스명의 별병을 지정할 수 있다.

    -M 옵션을 사용하면 각각의 CPU에 대한 그래프를 추가적으로 그려준다.

  • mpstat   [all CPUs]
  • -S 옵션을 사용하면 psinfo.log 파일을 사용하여 시간대 별로 세부적인 데이타를 보여준다.

  • psinfo [process detail]
  • 다음은 -I -K -M -S 내개의 모든 옵션을 사용하여 그래프를 만든 예제이다.

    # mkrep.sh -I -K -M -S stat
    Top web page is index_stat.html
    

    • vmstat
    • iostat [all I/Os]
    • netinfo [all interfaces]
    • mpstat [all CPUs]
    • psinfo [process detail]

      다음의 링크는 위의 명령어 실행의 결과로 만들어진 그래프이다

      index_stat.html
    # mkrep.sh -G fn[,fn,..] custom
    stat를 지정하여 vmstat, mpstat, iostat, netinfo, psinfo 명령어의 결과물에 대하여 그래프를 그렸는데, 그 중에 몇몇의 값만 추출하여 그래프를 많을 경우에 custom이 사용된다. custom이 지정되었을 경우 반드시 -G 옵션에 그리고 싶은 그래프 필드명을 지정하여야 한다. 필드명은 다음과 같다.
    	(in vmstat.log): cpu r b w swap free re mf pio fr de sr in sy cs
    	(in iostat.log): rw/s krw/s runit wunit wait actv svc_t %w %b
    	(in mpstat.log): mpcpu minf mjf xcal intr ithr csw icsw migr smtx srw syscl
    	(in netinfo.log): pkt data err coll
    	(in psinfo.log): proc start end zomb run lwp load allcpu ptime maxwcpu allhs maxhs maxsz maxrss d-allcpu d-maxwcpu
    
    
    예를 들어, vmstat에 있는 cpu, b, swap, free 와 iostat에 있는 rw/s, Krw/s와 netinfo에 있는 pkt에 대해서만 그래프를 한 페이지로 만들려면 다음과 같이 할 수 있다.

    # mkrep.sh -G cpu,b,swap,free,rw/s,Krw/s,pkt custom Junsoft
    Top web page is index_custom.html
    

    생성된 HTML 페이지 파일명은 "index_custom.html" 이다.

     

      다음은 각 옵션에 대한 설명이다.

    옵션설명
    -I -I 옵션을 지정하면, iostat.log 파일을 사용하여 개별 I/O 디바이스에 대해 각각 그래프를 만든다.
    -K-K 옵션을 지정하면, netinfo.log 파일을 사용하여 개별 네트웍 인터페이스에 대해서 그래프를 만들어 준다.
    -M -M 옵션을 사용하면 mpstat.log 파일을 사용하여 각각의 CPU에 대한 그래프를 추가적으로 그려준다.
    -S -S 옵션을 사용하면, psinfo.log 파일을 가공하여 시간대별로 자세한 정보를 보여주는 HTML 파일을 만들어 준다. 생성되는 파일명은 psinfo_detail.html 이다.

    -0 그래프의 시작값(Y축)을 0부터 시작한다. 디폴트로 그래프의 시작값은 데이타의 최소값과 최대값에 따라 결정된다.
    -, -, 옵션을 지정하면 그래프의 Y축 숫자에 3자리 마다 콤마를 추가한다.
    -B막대 그래프를 만든다.
    -b옵션은 츨력되는 이미지에 외곽선을 그린다.
    -c config 구성파일의 형식은 다음과 같으며, 한 라인에 하나의 필드를 정의한다.
    fn[:[[max][-min]][:title]] 구성파일에는 각 그래프의 최대값과 최소값과 그래프 제목을 지정할 수 있다. 공백 라인과 '#' 문자로 시작하는 라인은 스킵된다.

    fn 필드명을 지정한다. 필드명은 다음과 같다.
    cpu r b w swap free re mf pio fr de sr in sy cs
    rw/s krw/s runit wunit wait actv svc_t %w %b
    mpcpu minf mjf xcal intr ithr csw icsw migr smtx srw syscl
    pkt data err coll
    proc zomb run lwp allcpu ptime load allhs maxhs maxsz maxrss maxwcpu
    [max][-min] 그래프의 최대값과 최소값을 지정한다.
    title 그래프의 제목을 지정한다. 제목에 "."을 지정하면 그래프의 제목을 표시하지 않는다.

  • -G and -c option 에 대한 자세한 설명
  • -D outdir 이 옵션은 출력될 그래프를 만들 디렉토리명을 지정한다. 디폴트는 "."이다. 지정한 디렉토리가 없으면 새로 만들어 준다. 단 최하단의 디렉토리만 만든다.
    -e dot1개의 데이타가 차지하는 X축의 크기(dot) 지정한다.
    -h height그래프의 높이를 지정한다.
    -i index출력될 index 파일명을 지정한다.
    디폴트는 지정한 인수에 따라 다음과 같다.
    	overview     -->  index_overview.html
    	simple       -->  index_simple.html
    	simple_each  -->  index_simple.html
    	stat         -->  index_stat.html
    	custom       -->  index_custom.html
    
    # mkrep.sh -i junsoft.html simple Junsoft
    
    -N -i 옵션과 함께 -N 옵션을 사용하면, 그래프의 하단에 일정 간격으로 시간(HH:MM:SS)을 표시한다.
    -l n 이 옵션은 출력될 그래프에 n 간격의 데이타에 회색 점선을 그린다.
    n이 0이고 -i 옵션과 함께 사용하면 10 분 간격으로 회색 점선을 그린다.
    -n count그래프의 그릴 데이타의 개수를 지정한다.
    -P -P 옵션은 각각의 그래프의 우측에 표시될 최대값과 최소값을 다음과 같은 형식으로 표준출력으로 출력한다. 이때 그래프는 만들어지지 않는다.

    fn:max-min

    표준출력으로 출력되는 값을 리다이렉트(redirect)하여 파일로 저장하면, -c 옵션에 구성파일로 사용할 수 있다.
    getdata 명령어로 여러 번 데이타를 수집하여 그래프를 만들었을 경우에 각각에 대하여 그래프를 그리면, 그래프의 최대값과 최소값은 수집된 데이타에 의해 자동으로 결정된다. 만일 세번 데이타를 수집했다면, 각각의 파일들의 최대값과 최소값이 다를 수 있다. 이 경우 3개의 데이타를 그래프 상에서 비교할 때, 최대값과 최소값이 다르기 때문에 비교하기가 어려울 수 있다.
    이러한 경우, -P 옵션을 사용하여 각각 수집된 데이타 파일에 대하여 최대값 및 최소값을 구해서 공통된 최대값과 최소값을 구성파일로 만들어 -c 옵션에 구성파일로 지정하여 다시 세차례 수집한 데이타에 대하여 그래프를 그리면 공통된 최대값과 최소값을 가지는 그래프 파일들이 만들어진다.

    -P 옵션을 사용하여 츨력된 결과값을 저장한 파일을 adjmaxmin 명령어로 가공하여 -c 옵션에서 구성파일로 사용할 수 있다.

    다음은 -P 옵션을 사용하는 예제이다.

    # ls
    data.20080301.000000.60
    data.20080302.000000.60
    data.20080303.000000.60
    # cd data.20080301.000000.60
    # mkrep.sh -P > ../max
    # cd ../data.20080302.000000.60
    # mkrep.sh -P >> ../max
    # cd ../data.20080303.000000.60
    # mkrep.sh -P >> ../max
    # cd ..
    # adjmaxmin max > max.conf
    # cd data.20080301.000000.60
    # mkrep.sh -c ../max.conf stat 
    # cd ../data.20080302.000000.60
    # mkrep.sh -c ../max.conf stat
    # cd ../data.20080303.000000.60
    # mkrep.sh -c ../max.conf stat
    

    -r psinfo.log 파일을 가공하여 그래프를 만들때, 그래프를 만들기 위한 중간파일을 만드는데 이 파일은 그래프를 만들고 나면 지워진다.
    -r 옵션을 지정하면 이 파일을 지우지 않고 남겨둔다. 이 파일명은 t1_psinfo.tmp 이다.
    -s start시작할 데이타를 지정한다.
    -w width그래프의 폭을 지정한다.
    -v mkrep.sh 는 수집한 데이타에 대해 그 데이타를 가공할 수 있는 명령어를 실행하여 그래프를 만든다. -v 옵션을 지정하면 수행되는 명령어를 다음과 같이 표준출력에 출력한다.

    # mkrep.sh -v stat
    gvmstat -T "vmstat - 2008/05/04" -D . -i 60 -t 012159 -W vmstat.log
    giostat -T "iostat [%d] - 2008/05/04" -D . -i 60 -t 012159 -W iostat.log
    gnetinfo -T "netinfo [%i] - 2008/05/04" -D . -i 60 -t 012159 -W netinfo.log
    gmpstat -T "mpstat [%c] - 2008/05/04" -D . -i 60 -t 012159 -W mpstat.log
    psparse -F psinfo.log > t1_psinfo.tmp
    mkgraph -T "psinfo - 2008/05/04" -D . -i 60 -t 012159 -o psinfo
     -F /opt/JSparm/config/process.cfg t1_psinfo.tmp
    Top web page is index_stat.html
    

    -x-x 옵션을 지정하면, 명령어를 실행하는 도중에 오류가 발생하면 더 이상 진행하지 않고 실행을 멈춘다.
    -z-I 옵션을 사용하면 각각의 디스크에 대하여 그래프를 만드는데 이때 I/O가 없는 디바이스에 대해서는 그래프를 만들지 않는다.
    -K 옵션을 지정하면 개별 네트웍 인터페이스에 대하여 그래프를 만드는데, 트래픽이 없는 네트웍 인터페이스에 대해서는 그래프를 만들지 않는다.
    -z옵션을 지정하면 I/O가 없는 디바이스나 트래픽이 없는 네트웍 인터페이스에 대해서도 그래프를 만든다.