flexnet许可证服务器_使用rrdtool进行Flexnet许可证监视
使用rrdtool進行Flexnet許可監控
介紹
你們中有些人可能會知道商業Flexnet許可應用程序(?Macrovision)。 這是一個基于客戶端 - 服務器的解決方案,用于管理所謂的支持Flexnet的應用程序的使用。 您可以在一個許可證服務器上持有多個產品的許可證。 由于您通常必須購買許可證和許可證可能很昂貴,因此,要獲得監控解決方案,查看寶貴許可證的使用情況,以及未被充分利用的資金(因此浪費資金)或始終被充分利用(因此您可以懷疑有時人們不能做他們的工作,或者只是延遲),這也是浪費資源。
據我所知,有執行這些報告的商業申請,但再次你必須花錢。 為什么不自己構建一個簡單的系統,它顯示了“ MRTG風格”中的實際和過去使用情況?
初步注釋+免責聲明
在本教程中,我將使用一些腳本,即Shell和Python腳本。 我認為整個應用程序應該運行在每個Linux上,我在CentOS和Ubuntu上執行 。 我們需要一個可以運行CGI腳本的Web 服務器軟件 ,我使用了眾所周知的Apache和THTTPD ,但我相信每個webserver軟件都應該能夠運行這個應用程序。 它也是我以前的網絡監控設備的完美擴展 。
以下教程描述了我實現我的解決方案的方式,它是用一種烹飪Recipe風格寫的。 我無法保證您可以實現類似的解決方案。
建筑
解決方案的架構很簡單,見下圖:
我們將授權服務器保持原樣,但通過網絡獲取必要的信息。 因此,我們使用屬于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 27000@licserv -a | /usr/local/sbin/lmrrd.py
# Product2
/usr/local/bin/lmutil lmstat -c 27001@licserv -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數據或類似的。
總結
以上是生活随笔為你收集整理的flexnet许可证服务器_使用rrdtool进行Flexnet许可证监视的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现翻译功能_Python实
- 下一篇: .NET Core解决MVC视图中的中文