天天看點

flexnet許可證伺服器_使用rrdtool進行Flexnet許可證監視

使用rrdtool進行Flexnet許可監控

介紹

你們中有些人可能會知道商業Flexnet許可應用程式(©Macrovision)。 這是一個基于用戶端 - 伺服器的解決方案,用于管理所謂的支援Flexnet的應用程式的使用。 您可以在一個許可證伺服器上持有多個産品的許可證。 由于您通常必須購買許可證和許可證可能很昂貴,是以,要獲得監控解決方案,檢視寶貴許可證的使用情況,以及未被充分利用的資金(是以浪費資金)或始終被充分利用(是以您可以懷疑有時人們不能做他們的工作,或者隻是延遲),這也是浪費資源。

據我所知,有執行這些報告的商業申請,但再次你必須花錢。 為什麼不自己建構一個簡單的系統,它顯示了“ MRTG風格”中的實際和過去使用情況?

初步注釋+免責聲明

在本教程中,我将使用一些腳本,即Shell和Python腳本。 我認為整個應用程式應該運作在每個Linux上,我在CentOS和Ubuntu上執行 。 我們需要一個可以運作CGI腳本的Web 伺服器軟體 ,我使用了衆所周知的Apache和THTTPD ,但我相信每個webserver軟體都應該能夠運作這個應用程式。 它也是我以前的網絡監控裝置的完美擴充 。

以下教程描述了我實作我的解決方案的方式,它是用一種烹饪Recipe風格寫的。 我無法保證您可以實作類似的解決方案。

建築

解決方案的架構很簡單,見下圖:

flexnet許可證伺服器_使用rrdtool進行Flexnet許可證監視

我們将授權伺服器保持原樣,但通過網絡擷取必要的資訊。 是以,我們使用屬于Flexnet軟體的lmutil程式,不僅存在于Windoze版本中,還存在于Linux版本中。 據我所知,lmutil的舊版本也可用于HP / UX,Solaris和AIX,是以有機會運作其中一個作業系統可以用于建構監控系統,但是我還沒有嘗試過。

lmutil的輸出被過濾,所有相關資訊都可以放入一個或多個rrd資料庫,我已經為每個許可證使用了一個資料庫。 rrd也用于直接在Web伺服器軟體的子目錄中生成圖形,進而可以在web浏覽器中輕松顯示。

2.輪詢許可證伺服器

我已經将最新版本的lmutil複制到/ usr / local / bin ,并檢查它是否可執行:

# ls -l /usr/local/bin/lmutil

-rwxr-xr-x 1 root root 309168 2008-01-08 00:45 /usr/local/bin/lmutil

我們可以檢查所有共享庫lmutil是否連結,存在于我們的系統上:

# ldd /usr/local/bin/lmutil

linux-gate.so.1 =>  (0xf7796000)

libpthread.so.0 => /lib32/libpthread.so.0 (0xf7760000)

libdl.so.2 => /lib32/libdl.so.2 (0xf775c000)

libc.so.6 => /lib32/libc.so.6 (0xf7601000)

/lib/ld-linux.so.2 (0xf7797000)

作為一個指令行實用程式lmutil沒有與許多共享庫連結,是以機會很高,它們已經被安裝了。

然後,我已經建立了一個小腳本,用于輪詢所有許可證的許可證,許可證在許可伺服器上運作的多個産品的許可證,如下所示:#!/bin/dash

# Product1

/usr/local/bin/lmutil lmstat -c [email protected] -a | /usr/local/sbin/lmrrd.py

# Product2

/usr/local/bin/lmutil lmstat -c [email protected] -a | /usr/local/sbin/lmrrd.py

我已經使用/ bin / dash作為這個腳本的解釋器,因為破折号消耗的資源比bash少,但是如果你喜歡,可以随便使用bash。 各種産品的許可證在不同的端口上運作。 lmstat的輸出直接輸入到Python腳本中,其中需要的所有資訊被過濾掉并放入适當的rrd資料庫中。

cron用于建立一個5分鐘的輪詢。 是以,名為rrd的 /etc/cron.d/中的條目被建立,如下所示:*/5 8-16 * * 1-5 root LANG=C LC_ALL=C /usr/local/sbin/licenses.sh

我們隻對星期一到星期五以及上午8點至下午5點使用許可證感興趣。

但在此之前,我們首先必須建立lmrrd.py腳本。

3. lmrrd.py腳本

rrdtool用作此任務的資料庫。 rrdtool具有不同的腳本接口,即從shell,perl,python和tcl / tk腳本。 我使用python因為它是幹淨的語言設計和多功能性。

此腳本用于過濾lmutil的輸出,并将相關資訊直接放入指定的rrd資料庫。 看起來像:#!/usr/bin/python

# Script to filter the output of lmstat to use it as input for rrd

import sys, string, rrdtool

# searchterm, position of actual value and position of max value in every line

# db is the name for the rrd dbfile

search = [ { 'term':"Users of CL:", 'val':10, 'max':5, 'db':'CL' },

{ 'term':"Users of xyzabc:", 'val':10, 'max':5, 'db':'xyzabc' },

{ 'term':"Users of qwerty:", 'val':10, 'max':5, 'db':'qwerty' } ]

rrddir='/var/rrd/'

# read all lines from stdin

for line in sys.stdin.readlines():

# search in every line for the searchterm out of the above array

for x in search:

if x[ 'term' ] in line:

cols = line.split()

if not cols[ x[ 'max' ] ].isdigit() or not cols[ x[ 'val' ] ].isdigit():

print "0\n0\n0\n", x[ 'term' ]

# put the values in the assigned rrd dbfile

rrdtool.update( rrddir + x[ 'db' ] + '.rrd', \

'--template=value:total', \

'N:' + cols[ x [ 'val' ] ] + ':' + cols[ x[ 'max' ] ] )

陣列中的搜尋項可以提取“lmutil”的輸出,也可以提取許可證數量的實際值和最大可能值的位置。

您需要rrdtool的python綁定,可以在作業系統的軟體包存儲庫中找到,也可以在rrdtool的維護者的網站上找到。

實作後,此腳本以root權限運作。 原始rrd檔案應該是世界可讀的,因為生成圖的以下腳本僅在http-server程序的所有者的許可下運作,通常是www資料或類似的。