라이센스 모니터링 · 3 min read · Jan 13, 2026

Flexnet 라이센스 모니터링과 rrdtool - 2페이지

4. 그래프 생성

그래프는 rrdtool 패키지에 포함된 rrdcgi 프로그램의 도움으로 쉽게 생성할 수 있습니다. CPU 사이클을 절약하기 위해 생성은 필요할 때만 수행되며, rrdcgi에 의해 해석되는 특별한 RRD:: 태그가 있는 CGI 스크립트를 만들어야 합니다.

내 CGI 스크립트는 다음과 같습니다:

#!/usr/bin/rrdcgi


Prod1 라이센스 사용량

Prod1 라이센스 사용량

' -s -24hours -w 600 -h 200 -W gbi@localhost@localdomain -v "사용된 라이센스" --lazy --title "CL의 사용자" -l 0 -Y DEF:value=/var/rrd/CL.rrd:value:MAX DEF:total=/var/rrd/CL.rrd:total:MAX AREA:value#660000 LINE3:total#FF00FF>

자세한 내용은 rrdcgi 및 rrdgraph의 매뉴얼 페이지를 참조하세요.

다음은 잘 알려진 MRTG 스타일 그래프의 예입니다:

일일 라이센스 사용량

여기서는 별로 진행되는 것이 없습니다.

위의 스크립트는 나의 첫 번째 간단한 접근 방식이었습니다. 아이디어는 매일, 매주, 매월 및 매년 개요를 위한 각 제품에 대한 스크립트 세트를 구현하는 것이었습니다. 그러나 이는 거의 동일한 스크립트의 홍수로 이어졌습니다. rrdcgi의 문서를 다시 살펴본 후, 관심 있는 기간을 선택하기 위한 라디오 버튼이 있는 제품당 하나의 스크립트로 해결할 수 있는 또 다른 가능성을 찾았습니다. 스크립트는 다음과 같습니다:

#!/usr/bin/rrdcgi


Prod1 라이센스 사용량

Prod1 라이센스 사용량

기간

일일, 주간, 월간, 연간.

.png --imginfo '' -s - -w 600 -h 200 -W [email protected] -v "사용된 라이센스" --lazy --title "CL의 사용자" -l 0 -Y DEF:value=/var/rrd/CL.rrd:value:MAX DEF:total=/var/rrd/CL.rrd:total:MAX AREA:value#660000 LINE3:total#FF00FF>

그래프 위의 기간 선택을 위한 라디오 버튼은 다음과 같습니다:

라디오 버튼

5. rrd 데이터베이스 생성

지금까지 언급하지 않은 주제가 하나 있습니다. rrd 데이터베이스가 어떻게 생성되는지입니다. 나는 또 다른 스크립트를 사용했습니다. 스크립트는 다음과 같습니다:

#!/usr/bin/python
# 모든 라이센스 인스턴스에 대한 모든 rrd db를 생성하는 스크립트
# mrtg 호환 방식으로


import sys, string, rrdtool

search = [ { 'term':"CL의 사용자:", 'val':10, 'max':5, 'db':'CL' },
           { 'term':"xyzabc의 사용자:", 'val':10, 'max':5, 'db':'xyzabc' },
           { 'term':"qwerty의 사용자:", 'val':10, 'max':5, 'db':'qwerty' } ]


for x in search:

      rrdtool.create( '/var/rrd/' + x[ 'db' ] + '.rrd', '-s 300', \
    'DS:value:GAUGE:600:U:U', 'DS:total:GAUGE:600:U:U', \
        'RRA:MAX:0.5:1:600', 'RRA:MAX:0.5:6:700', 'RRA:MAX:0.5:24:775', \
    'RRA:MAX:0.5:288:797' )

물론 필요에 맞게 조정해야 합니다.

6. 또 다른 CGI 스크립트

Flexnet 시스템과 라이센스를 임대하여 작업해야 하는 사용자들의 처리를 더욱 쉽게 하기 위해 또 다른 CGI 스크립트가 생성되었습니다. 이 스크립트는 누가 얼마나 많은 라이센스를 임대했는지를 보여주는 데 사용됩니다. 이는 “lmutil lmstat -a”의 출력일 뿐이며, lmutil이 설치된 시스템에 로그인하지 않고도 가능합니다. 그러나 이는 귀하의 기업에서 개인 정보 보호와 충돌할 수 있으므로, 이 스크립트를 실행하는 것을 보호하기 위해 인증 메커니즘을 사용할 수 있습니다. 그러나 이 주제는 이 튜토리얼에서 다루지 않습니다.

스크립트는 2장에서와 같은 대시 스크립트이며, 구현에 따라 여러 서버에서 여러 제품을 쿼리할 수 있습니다. 또한 드물게 사용되는 특수한 종류의 셸 스크립트인 여기 스크립트입니다. 필요에 맞게 조정하세요:

#!/bin/dash

case $1 in
        prod1)          PORT=27000; PROD="Prod1";;
        prod2)          PORT=27002; PROD="Prod2";;
        prod3)          PORT=27042; PROD="Prod3";;
        *|prod4)        PORT=27001; PROD="Prod4";;
esac

echo Content-type: text/html
echo ""

/bin/cat << EOM

라이센스 상태 $PROD





라이센스 상태 $PROD


EOM

/usr/local/bin/lmutil lmstat -c $PORT@LICENSESERVER -a

/bin/cat << EOM


GBi

14.6.2010 EOM

이 스크립트를 웹 서버의 cgi-bin 디렉토리(내 경우 /usr/lib/cgi-bin)에 복사하고, 모든 사용자가 읽고 실행할 수 있도록 설정한 후, 웹 서버의 CGI 모듈을 로드하는 것을 잊지 마세요(모듈이 없거나 이미 로드되어 있지 않은 경우). 출력은 다음과 같습니다:

라이센스 상태

이 스크립트는 다음과 같은 URL로 웹 브라우저에서 호출됩니다:

http://server/cgi-bin/licstate.cgi?prod2

따라서 CGI 스크립트에 “명령줄 매개변수“를 제공하여 여러 제품 중 하나를 선택할 수 있습니다.

이와 같은 스크립트를 사용 가능한 라이센스가 거의 최대에 도달하는 제품의 사용자에게 제공함으로써, 사용자가 라이센스 사용과 관련된 문제를 서로 처리할 수 있도록 쉽게 할 수 있으며, 관리자가 전혀 개입할 필요가 없습니다 ;-).

7. URL

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.