
この記事は、 以前の記事のより詳細な研究です。 これで、テンプレートはWindows(PowerShell)とLinux(Bash)の両方で使用できるように統合されました。 前のテンプレートを使用した場合、すべてが立ち上がります。
サーバー/ライセンスの検索、サーバーステータスの読み取り、エラーの場合のライセンスの総数と使用数の読み取り、ステータスコード(説明行)の送信、およびそれらについてのレポート。
スキームは同じです:
- 模様
- スクリプト(PowerShell / Bash)
- 適切なエージェントのセットアップ

模様
ここではすべてが簡単です。インポートして忘れました。 このテンプレートは、Zabbixバージョン3.2で設計されました。このことに留意してください。
前回と同様、読みやすくするために、要素とトリガーの名前にある構造{$ {#ID}}のマクロが使用されます。 テンプレートにはすでに多数のマクロが含まれており、見つかった要素に基づいて変換を追加するだけです。
また、内部には、サーバーと個々のライセンスのステータスを監視するためのいくつかの基本的なトリガーがすでにあります。
模様
<?xml version="1.0" encoding="UTF-8"?> | |
<zabbix_export> | |
<version>3.2</version> | |
<date>2017-08-27T16:36:39Z</date> | |
<groups> | |
<group> | |
<name>Templates</name> | |
</group> | |
</groups> | |
<templates> | |
<template> | |
<template>Software - FlexLm</template> | |
<name>Software - FlexLm</name> | |
<description> FlexLm. | |
, . | |
| |
UserParameter: | |
UserParameter=ZScript[*],powershell C:\System\Zabbix\Scripts$1.ps1 $2 $3 | |
UserParameter=ZScript[*],bash /etc/zabbix/scripts/$1.sh $2 $3 | |
| |
: | |
flex.ps1 -> C:\System\Zabbix\Scripts\ | |
flex.sh -> /etc/zabbix/scripts/ | |
| |
Windows: | |
(Path) lmutil.exe. | |
: C:\Program Files (x86)\CSoft\CS License Server | |
| |
Linux: | |
flex.sh</description> | |
<groups> | |
<group> | |
<name>Templates</name> | |
</group> | |
</groups> | |
<applications> | |
<application> | |
<name>FlexLm</name> | |
</application> | |
</applications> | |
<items/> | |
<discovery_rules> | |
<discovery_rule> | |
<name> </name> | |
<type>0</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>ZScript[flex,discovery2]</key> | |
<delay>3600</delay> | |
<status>0</status> | |
<allowed_hosts/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<delay_flex/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<filter> | |
<evaltype>0</evaltype> | |
<formula/> | |
<conditions/> | |
</filter> | |
<lifetime>7</lifetime> | |
<description/> | |
<item_prototypes> | |
<item_prototype> | |
<name> {${#ID}}</name> | |
<type>0</type> | |
<snmp_community/> | |
<multiplier>0</multiplier> | |
<snmp_oid/> | |
<key>ZScript[flex,{#ID},status]</key> | |
<delay>60</delay> | |
<history>90</history> | |
<trends>0</trends> | |
<status>0</status> | |
<value_type>1</value_type> | |
<allowed_hosts/> | |
<units/> | |
<delta>0</delta> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<formula>1</formula> | |
<delay_flex/> | |
<params/> | |
<ipmi_sensor/> | |
<data_type>0</data_type> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLm</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<application_prototypes/> | |
</item_prototype> | |
</item_prototypes> | |
<trigger_prototypes> | |
<trigger_prototype> | |
<expression>{Software - FlexLm:ZScript[flex,{#ID},status].regexp(^UP.*)}<>1</expression> | |
<recovery_mode>0</recovery_mode> | |
<recovery_expression/> | |
<name>FLEXLM- {${#ID}} {HOST.NAME}</name> | |
<correlation_mode>0</correlation_mode> | |
<correlation_tag/> | |
<url/> | |
<status>0</status> | |
<priority>3</priority> | |
<description/> | |
<type>0</type> | |
<manual_close>0</manual_close> | |
<dependencies/> | |
<tags/> | |
</trigger_prototype> | |
</trigger_prototypes> | |
<graph_prototypes/> | |
<host_prototypes/> | |
</discovery_rule> | |
<discovery_rule> | |
<name> </name> | |
<type>0</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>ZScript[flex,discovery]</key> | |
<delay>3600</delay> | |
<status>0</status> | |
<allowed_hosts/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<delay_flex/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<filter> | |
<evaltype>0</evaltype> | |
<formula/> | |
<conditions/> | |
</filter> | |
<lifetime>7</lifetime> | |
<description/> | |
<item_prototypes> | |
<item_prototype> | |
<name>{${#ID}} - </name> | |
<type>0</type> | |
<snmp_community/> | |
<multiplier>0</multiplier> | |
<snmp_oid/> | |
<key>ZScript[flex,{#ID},active]</key> | |
<delay>60</delay> | |
<history>30</history> | |
<trends>90</trends> | |
<status>0</status> | |
<value_type>0</value_type> | |
<allowed_hosts/> | |
<units/> | |
<delta>0</delta> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<formula>1</formula> | |
<delay_flex/> | |
<params/> | |
<ipmi_sensor/> | |
<data_type>0</data_type> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLm</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<application_prototypes/> | |
</item_prototype> | |
<item_prototype> | |
<name>{${#ID}} - </name> | |
<type>0</type> | |
<snmp_community/> | |
<multiplier>0</multiplier> | |
<snmp_oid/> | |
<key>ZScript[flex,{#ID},total]</key> | |
<delay>1800</delay> | |
<history>30</history> | |
<trends>90</trends> | |
<status>0</status> | |
<value_type>0</value_type> | |
<allowed_hosts/> | |
<units/> | |
<delta>0</delta> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<formula>1</formula> | |
<delay_flex/> | |
<params/> | |
<ipmi_sensor/> | |
<data_type>0</data_type> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLm</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<application_prototypes/> | |
</item_prototype> | |
</item_prototypes> | |
<trigger_prototypes> | |
<trigger_prototype> | |
<expression>{Software - FlexLm:ZScript[flex,{#ID},active].last()}<0</expression> | |
<recovery_mode>0</recovery_mode> | |
<recovery_expression/> | |
<name> {${#ID}} {HOST.NAME}</name> | |
<correlation_mode>0</correlation_mode> | |
<correlation_tag/> | |
<url/> | |
<status>0</status> | |
<priority>3</priority> | |
<description/> | |
<type>0</type> | |
<manual_close>0</manual_close> | |
<dependencies/> | |
<tags/> | |
</trigger_prototype> | |
</trigger_prototypes> | |
<graph_prototypes/> | |
<host_prototypes/> | |
</discovery_rule> | |
</discovery_rules> | |
<httptests/> | |
<macros> | |
<macro> | |
<macro>{$ACD_2006_0F}</macro> | |
<value>AutoCAD 2013</value> | |
</macro> | |
<macro> | |
<macro>{$ACD_2013_0F}</macro> | |
<value>AutoCAD 2006</value> | |
</macro> | |
<macro> | |
<macro>{$ADSKFLEX}</macro> | |
<value>Autodesk</value> | |
</macro> | |
<macro> | |
<macro>{$CSOFT}</macro> | |
<value>CSoft</value> | |
</macro> | |
<macro> | |
<macro>{$NANOCONSTRSUITE}</macro> | |
<value>NanoCAD </value> | |
</macro> | |
<macro> | |
<macro>{$NANOCONSTRSUITE_FOUND}</macro> | |
<value>NanoCAD ()</value> | |
</macro> | |
<macro> | |
<macro>{$NANOCONSTRSUITE_RFCONCR}</macro> | |
<value>NanoCAD ()</value> | |
</macro> | |
<macro> | |
<macro>{$NANOELS}</macro> | |
<value>NanoCAD </value> | |
</macro> | |
<macro> | |
<macro>{$NANOSOFT}</macro> | |
<value>NanoSoft</value> | |
</macro> | |
<macro> | |
<macro>{$SPDS}</macro> | |
<value> Graphics</value> | |
</macro> | |
</macros> | |
<templates/> | |
<screens/> | |
</template> | |
</templates> | |
</zabbix_export> |
Windows用のスクリプト
Windows用のスクリプトはPSv4上のWindows 7 SP1で作成されたもので、XPでは機能しません 。 もちろん、サーバーでPowerShellスクリプトの実行を許可する必要があります( Set-ExecutionPolicy Unrestricted )。
flex.ps1
# 2017/08/24 AcidVenom v3 | |
# FlexLm Zabbix | |
param($1,$2) | |
# FlexLm | |
# : discovery | |
if ($1 -eq "discovery") { | |
$items = lmutil lmstat -a | ? {$_ -match "Users of "} | |
if ($items -eq $null) {exit} | |
else { | |
write-host -NoNewline "{`"data`":[" | |
$n = 0 | |
foreach ($obj in $items) { | |
$n = $n + 1 | |
$obj = $obj.trimstart("Users of ") | |
$obj = $obj.substring(0,$obj.IndexOf(":")).ToUpper() | |
$line = "{`"{#ID}`":`"" + $obj + "`"}" | |
If ($n -lt $items.Count) { $line = "$line,"} | |
write-host -NoNewline $line | |
} | |
write-host -NoNewline "]}" | |
} | |
} | |
# FlexLm | |
# : discovery2 | |
elseif ($1 -eq "discovery2") { | |
$items = lmutil lmstat -vg | ? {$_ -match "^\s" -and $_ -notmatch "status" -and $_ -notmatch "license"} | |
if ($items -eq $null) {exit} | |
else { | |
write-host -NoNewline "{`"data`":[" | |
$n = 0 | |
foreach ($obj in $items) { | |
$n = $n + 1 | |
$obj = $obj.substring(0,$obj.IndexOf(":")).trim( ).ToUpper() | |
$line = "{`"{#ID}`":`"" + $obj + "`"}" | |
If ($n -lt $items.Count) { $line = "$line,"} | |
write-host -NoNewline $line | |
}} | |
write-host -NoNewline "]}" | |
} | |
# | |
# : discovery | |
else { | |
if ($2 -eq "status") { | |
$out = lmutil lmstat -vg | |
$error = $out -match "license server UP" | |
if ($error -ne $False) { | |
$obj = $out -match "$1`:" | |
$obj = $obj.trim( ) | |
$obj = $obj.substring($obj.IndexOf(":")+2,$obj.Length-$obj.IndexOf(":")-2) | |
} | |
else { | |
$obj = $out -match "Error" | |
$obj = $obj.substring($obj.IndexOf(":")+2,$obj.Length-$obj.IndexOf(":")-2) | |
} | |
} | |
else { | |
$out = lmutil lmstat -a | ? {$_ -match "Users of $1`:"} | |
$error = $out -match "Error" | |
if ($error -eq $False) { | |
if ($2 -eq "active") { | |
$obj = $out.substring($out.LastIndexOf("Total of")+9,$out.LastIndexOf("license")-$out.LastIndexOf("Total of")-9) | |
} | |
elseif ($2 -eq "total") { | |
$obj = $out.substring($out.IndexOf("Total of")+9,$out.IndexOf("license")-$out.IndexOf("Total of")-9) | |
} | |
} | |
else { | |
$obj = -1 | |
} | |
} | |
Write-Output $obj | |
} |
ライセンスサーバーのパフォーマンスは、さまざまなベンダーのディストリビューションに含まれているlmutil.exeユーティリティから取得されます。 スクリプトが適切に機能するためには、引用符なしでPath変数のシステム環境変数にスクリプトへのパスを登録する必要があります。 たとえば、CSoft v11.5のデフォルトのフォルダーは「 C:\ Program Files(x86)\ CSoft \ CS License Server 」であり、Autodesk v11.13.1の場合は「 C:\ Autodesk \ Network License Manager 」です。 区切り記号として「;」記号を使用します。
オートデスクライセンスサーバーを使用している場合は、スポイラーの下の機能を確認してください。
ネタバレ
この開発者にとって、それはそれほど単純ではありませんでした。 初期状態では、lmutilは-1.359のエラーを返します。 ただし、ポート@ホストを指定した場合は、すべて問題ありません。
この動作は、FLEXlmの古いバージョンではlmutilが変数LM_LICENSE_FILEおよびVENDOR_LICENSE_FILEのパスをマップするという事実が原因である可能性が最も高いです。 これらのパスは標準であり、デフォルトでは存在しません。
それを解決するには、任意のパッケージ( CSoft / Nanosoft )からlmutil.exeバージョン11.5を取得するだけで十分です。 または、次のようにホストでコマンドを実行します
lmutil lmpath-「license_file_fileへのすべてのパス」をオーバーライドする
同様に、次のコマンドを使用できます
lmutil lmpath -add "arbitrary_vendor_name" "path_to_ your_license_file_file"
これらのコマンドは、システムアカウントの代わりに実行する必要があります。そうしないと、Zabbixエージェントはユーティリティを使用できなくなります。 これを行うには、 PsExecユーティリティで-s: psexec -s cmdスイッチを使用し、開いたコマンドウィンドウに必要なコマンドを入力します。
これらのコマンドやその他のコマンドの詳細については、ライセンスの説明をご覧ください 。デバッグ時に読むことをお勧めします。

この動作は、FLEXlmの古いバージョンではlmutilが変数LM_LICENSE_FILEおよびVENDOR_LICENSE_FILEのパスをマップするという事実が原因である可能性が最も高いです。 これらのパスは標準であり、デフォルトでは存在しません。
それを解決するには、任意のパッケージ( CSoft / Nanosoft )からlmutil.exeバージョン11.5を取得するだけで十分です。 または、次のようにホストでコマンドを実行します
lmutil lmpath-「license_file_fileへのすべてのパス」をオーバーライドする

同様に、次のコマンドを使用できます
lmutil lmpath -add "arbitrary_vendor_name" "path_to_ your_license_file_file"
これらのコマンドは、システムアカウントの代わりに実行する必要があります。そうしないと、Zabbixエージェントはユーティリティを使用できなくなります。 これを行うには、 PsExecユーティリティで-s: psexec -s cmdスイッチを使用し、開いたコマンドウィンドウに必要なコマンドを入力します。
これらのコマンドやその他のコマンドの詳細については、ライセンスの説明をご覧ください 。デバッグ時に読むことをお勧めします。
Linux用のスクリプト
そして、このスクリプトはUbuntuの下で書かれました。 Ubuntuにオートデスクライセンスサーバーを段階的にインストールする方法については、以下を参照してください(Ubuntuは公式にはサポートされていません)。
スクリプトをサーバー上の任意のフォルダーにコピーします(エージェントの構成でパスを指定します。詳細は以下を参照)。実行するための適切な権限を忘れずに与えてください
また、スクリプトの「ユーザー変数」セクションでlmutilユーティリティのディレクトリを指定する必要があります。
flex.sh(2017/10/26に更新)
ライセンス数を検出するための常連を修正
>> 2が修正された場合のサーバー検出
>> 2が修正された場合のサーバー検出
#!/bin/bash | |
# 2017/10/26 AcidVenom v2.1 | |
# FlexLm Zabbix | |
# | |
lmutil="/opt/flexnetserver/lmutil" | |
# | |
IFS=$'\n' | |
JSON="{\"data\":[" | |
SEP="" | |
# | |
# : discovery | |
if [ "$1" = "discovery" ] | |
then | |
licenses=`$lmutil lmstat -a | grep "Users of "` | |
for license in $licenses | |
do | |
ID=`echo $license | sed 's/:.*$\|Users of //g' | sed 's/ //g' | sed 's/[[:lower:]]/\u&/g'` | |
JSON=$JSON"$SEP{\"{#ID}\":\"$ID\"}" | |
SEP=", " | |
done | |
JSON=$JSON"]}" | |
echo $JSON | |
# | |
# : discovery2 | |
elif [ "$1" = "discovery2" ] | |
then | |
servers=`$lmutil lmstat -vg | grep "^\s" | grep -vi "license"` | |
for server in $servers | |
do | |
ID=`echo $server | sed "s/ \|:.*//g" | sed 's/[[:lower:]]/\u&/g'` | |
JSON=$JSON"$SEP{\"{#ID}\":\"$ID\"}" | |
SEP=", " | |
done | |
JSON=$JSON"]}" | |
echo $JSON | |
# | |
# : discovery | |
else | |
if [ "$2" = "status" ] | |
then | |
out=`$lmutil lmstat -vg` | |
error=`echo "$out" | grep "license server UP"` | |
if [ -n "$error" ] | |
then | |
status=`echo "$out" | grep -i "$1:" | sed 's/^.*: //'` | |
echo $status | |
else | |
status=`echo "$out" | grep "Error" | sed 's/^.*: //'` | |
echo $status | |
fi | |
else | |
out=`$lmutil lmstat -a | grep -i "Users of $1:"` | |
error=`echo "$out" | grep "Error"` | |
if [ -n "$error" ] | |
then | |
echo "-1" | |
else | |
if [ "$2" = "active" ] | |
then | |
active=`echo "$out" | sed 's/^.*; *Total of \| license.*//g'` | |
echo $active | |
elif [ "$2" = "total" ] | |
then | |
total=`echo "$out" | sed 's/ license.*\|.*(Total of //g'` | |
echo $total | |
fi | |
fi | |
fi | |
fi |
Zabbixエージェントの構成
1つのテンプレートから異なるシステムを同時に操作することにより、エージェント、またはその一部であるUserParameterを正しく構成できます。 また、この方法は、スクリプトの形で新しい機能を追加する場合にエージェントを再起動することを忘れることができます。 これは、エージェントを再起動すると一部のメトリックが失われる可能性がある、負荷の高いサーバーにとって重要です。
したがって、この場合、次の行が使用されます。
Windowsの場合-UserParameter = ZScript [*]、powershell C:\ Zabbix \ Scripts \ $ 1.ps1 $ 2 $ 3 $ 4
Linuxの場合-UserParameter = ZScript [*]、bash /etc/zabbix/scripts/$1.sh $ 2 $ 3 $ 4
独自のパスと変数の数を指定します。 変数は余白なしで指定でき、余分なものではないため、 ZScriptキー[$ 1、$ 2、$ 3、$ 4]を使用して必要なスクリプトにアクセスできます。
ご清聴ありがとうございました!
謝辞
この記事を書く動機を与えてくれた雇用主に感謝します。 そうでない場合は、脆弱なサーバーの負荷を最適化して、サービスをUbuntu Serverに転送する必要はありません!
更新! 2017/12/26
最新のトレンドに関連して、クライアント上のユーザーパラメーターとスクリプトを使用せずに、サーバーバージョンの作業ですべてを書き換えることにしました。 外部検証ディレクトリにテンプレートとスクリプトが必要になります( Ubuntu-/ usr / lib / zabbix / externalscriptsの場合 )。 このファイルを実行するための適切な権限を与えることを忘れないでください。 バージョン3.4.4からエクスポートされたテンプレート。 イノベーションから:現在、Zabbixは、このライセンスまたはそのライセンスのアクティブユーザーのリストを受け取ります。
ソフトウェア-FlexLM.xml
<?xml version="1.0" encoding="UTF-8"?> | |
<zabbix_export> | |
<version>3.4</version> | |
<date>2017-12-26T07:45:55Z</date> | |
<groups> | |
<group> | |
<name>Templates</name> | |
</group> | |
</groups> | |
<templates> | |
<template> | |
<template>Software - FlexLM</template> | |
<name>Software - FlexLM</name> | |
<description> FlexLM ( ) | |
| |
zabbix_get flexlm.sh .</description> | |
<groups> | |
<group> | |
<name>Templates</name> | |
</group> | |
</groups> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<items/> | |
<discovery_rules> | |
<discovery_rule> | |
<name> </name> | |
<type>10</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.sh[{HOST.CONN},discoveryl]</key> | |
<delay>1h</delay> | |
<status>0</status> | |
<allowed_hosts/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<filter> | |
<evaltype>0</evaltype> | |
<formula/> | |
<conditions/> | |
</filter> | |
<lifetime>3d</lifetime> | |
<description/> | |
<item_prototypes> | |
<item_prototype> | |
<name>{${#LICENSE}} - </name> | |
<type>10</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.sh[{HOST.CONN},{#LICENSE},active]</key> | |
<delay>2m</delay> | |
<history>90d</history> | |
<trends>365d</trends> | |
<status>0</status> | |
<value_type>0</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing/> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype/> | |
</item_prototype> | |
<item_prototype> | |
<name>{${#LICENSE}} - </name> | |
<type>10</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.sh[{HOST.CONN},{#LICENSE},total]</key> | |
<delay>10m</delay> | |
<history>90d</history> | |
<trends>365d</trends> | |
<status>0</status> | |
<value_type>3</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing/> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype/> | |
</item_prototype> | |
<item_prototype> | |
<name>{${#LICENSE}} - </name> | |
<type>10</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.sh[{HOST.CONN},{#LICENSE},users]</key> | |
<delay>2m</delay> | |
<history>90d</history> | |
<trends>0</trends> | |
<status>0</status> | |
<value_type>4</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing/> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype/> | |
</item_prototype> | |
<item_prototype> | |
<name> lmutil lmstat -f {#LICENSE}</name> | |
<type>0</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>system.run["lmutil lmstat -f {#LICENSE}"]</key> | |
<delay>5m</delay> | |
<history>1h</history> | |
<trends>0</trends> | |
<status>1</status> | |
<value_type>4</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing/> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype/> | |
</item_prototype> | |
</item_prototypes> | |
<trigger_prototypes> | |
<trigger_prototype> | |
<expression>{Software - FlexLM:flexlm.sh[{HOST.CONN},{#LICENSE},active].last()}=-1</expression> | |
<recovery_mode>0</recovery_mode> | |
<recovery_expression/> | |
<name> {${#LICENSE}} {HOST.NAME}</name> | |
<correlation_mode>0</correlation_mode> | |
<correlation_tag/> | |
<url/> | |
<status>0</status> | |
<priority>3</priority> | |
<description/> | |
<type>0</type> | |
<manual_close>0</manual_close> | |
<dependencies/> | |
<tags/> | |
</trigger_prototype> | |
</trigger_prototypes> | |
<graph_prototypes/> | |
<host_prototypes/> | |
<jmx_endpoint/> | |
</discovery_rule> | |
<discovery_rule> | |
<name> </name> | |
<type>10</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.sh[{HOST.CONN},discoverys]</key> | |
<delay>1h</delay> | |
<status>0</status> | |
<allowed_hosts/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<filter> | |
<evaltype>0</evaltype> | |
<formula/> | |
<conditions/> | |
</filter> | |
<lifetime>3d</lifetime> | |
<description/> | |
<item_prototypes> | |
<item_prototype> | |
<name> {${#SERVER}}</name> | |
<type>10</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.sh[{HOST.CONN},{#SERVER},status]</key> | |
<delay>1m</delay> | |
<history>90d</history> | |
<trends>0</trends> | |
<status>0</status> | |
<value_type>1</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing/> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype/> | |
</item_prototype> | |
<item_prototype> | |
<name> {${#SERVER}}</name> | |
<type>18</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>flexlm.status.[{#SERVER}]</key> | |
<delay>0</delay> | |
<history>90d</history> | |
<trends>0</trends> | |
<status>1</status> | |
<value_type>1</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing> | |
<step> | |
<type>5</type> | |
<params>\{#SERVER\}: (.*) | |
\1</params> | |
</step> | |
</preprocessing> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype> | |
<key>system.run["lmutil lmstat -vd{#SERVER}"]</key> | |
</master_item_prototype> | |
</item_prototype> | |
<item_prototype> | |
<name> lmutil lmstat -vd {#SERVER}</name> | |
<type>0</type> | |
<snmp_community/> | |
<snmp_oid/> | |
<key>system.run["lmutil lmstat -vd{#SERVER}"]</key> | |
<delay>5m</delay> | |
<history>1h</history> | |
<trends>0</trends> | |
<status>1</status> | |
<value_type>4</value_type> | |
<allowed_hosts/> | |
<units/> | |
<snmpv3_contextname/> | |
<snmpv3_securityname/> | |
<snmpv3_securitylevel>0</snmpv3_securitylevel> | |
<snmpv3_authprotocol>0</snmpv3_authprotocol> | |
<snmpv3_authpassphrase/> | |
<snmpv3_privprotocol>0</snmpv3_privprotocol> | |
<snmpv3_privpassphrase/> | |
<params/> | |
<ipmi_sensor/> | |
<authtype>0</authtype> | |
<username/> | |
<password/> | |
<publickey/> | |
<privatekey/> | |
<port/> | |
<description/> | |
<inventory_link>0</inventory_link> | |
<applications> | |
<application> | |
<name>FlexLM</name> | |
</application> | |
</applications> | |
<valuemap/> | |
<logtimefmt/> | |
<preprocessing/> | |
<jmx_endpoint/> | |
<application_prototypes/> | |
<master_item_prototype/> | |
</item_prototype> | |
</item_prototypes> | |
<trigger_prototypes> | |
<trigger_prototype> | |
<expression>{Software - FlexLM:flexlm.sh[{HOST.CONN},{#SERVER},status].regexp(^UP .*$)}=1</expression> | |
<recovery_mode>0</recovery_mode> | |
<recovery_expression/> | |
<name>FlexLM- {${#SERVER}} {HOST.NAME}</name> | |
<correlation_mode>0</correlation_mode> | |
<correlation_tag/> | |
<url/> | |
<status>0</status> | |
<priority>3</priority> | |
<description/> | |
<type>0</type> | |
<manual_close>0</manual_close> | |
<dependencies/> | |
<tags/> | |
</trigger_prototype> | |
</trigger_prototypes> | |
<graph_prototypes/> | |
<host_prototypes/> | |
<jmx_endpoint/> | |
</discovery_rule> | |
</discovery_rules> | |
<httptests/> | |
<macros> | |
<macro> | |
<macro>{$ACD_2006_0F}</macro> | |
<value>AutoCAD 2006</value> | |
</macro> | |
<macro> | |
<macro>{$ACD_2013_0F}</macro> | |
<value>AutoCAD 2013</value> | |
</macro> | |
<macro> | |
<macro>{$ADSKFLEX}</macro> | |
<value>Autodesk</value> | |
</macro> | |
<macro> | |
<macro>{$CSOFT}</macro> | |
<value>CSoft</value> | |
</macro> | |
<macro> | |
<macro>{$NANOCONSTRSUITE}</macro> | |
<value>NanoCAD </value> | |
</macro> | |
<macro> | |
<macro>{$NANOCONSTRSUITE_FOUND}</macro> | |
<value>NanoCAD ()</value> | |
</macro> | |
<macro> | |
<macro>{$NANOCONSTRSUITE_RFCONCR}</macro> | |
<value>NanoCAD ()</value> | |
</macro> | |
<macro> | |
<macro>{$NANOELS}</macro> | |
<value>NanoCAD </value> | |
</macro> | |
<macro> | |
<macro>{$NANOSOFT}</macro> | |
<value>Nanosoft</value> | |
</macro> | |
<macro> | |
<macro>{$NANOSPDS}</macro> | |
<value>NanoCAD </value> | |
</macro> | |
<macro> | |
<macro>{$SPDS}</macro> | |
<value> Graphics</value> | |
</macro> | |
</macros> | |
<templates/> | |
<screens/> | |
</template> | |
</templates> | |
</zabbix_export> |
flexlm.sh
#!/bin/bash | |
# 2017/12/26 AcidVenom v1.0 | |
# FlexLM LLD Zabbix ( ) | |
# | |
# : discoverys | |
IFS=$'\n' | |
JSON="{\"data\":[" | |
SEP="" | |
if [[ $2 = "discoverys" ]] | |
then | |
get=`zabbix_get -s $1 -k system.run["lmutil lmstat -vd"] | grep " " | grep -v "localhost" | sed "s/\(:.*\| *\)//g" | sed "s/[[:lower:]]/\u&/g"` | |
for server in $get | |
do | |
JSON=$JSON"$SEP{\"{#SERVER}\":\"$server\"}" | |
SEP=", " | |
done | |
JSON=$JSON"]}" | |
echo $JSON | |
# | |
# : discoveryl | |
elif [[ $2 = "discoveryl" ]] | |
then | |
get=`zabbix_get -s $1 -k system.run["lmutil lmstat -a"] | grep "Users of" | sed "s/\(Users of \|: .*\)//g" | sed "s/[[:lower:]]/\u&/g"` | |
for license in $get | |
do | |
JSON=$JSON"$SEP{\"{#LICENSE}\":\"$license\"}" | |
SEP=", " | |
done | |
JSON=$JSON"]}" | |
echo $JSON | |
else | |
# | |
if [[ $3 = "status" ]] | |
then | |
get=`zabbix_get -s $1 -k system.run["lmutil lmstat -vd"] | grep -i "$2" | sed "s/.*://"` | |
echo $get | |
# | |
elif [[ $3 = "total" ]] | |
then | |
get=`zabbix_get -s $1 -k system.run["lmutil lmstat -f $2"] | grep "Users of" | sed "s/ license.*//" | sed "s/.*Total of //"` | |
echo $get | |
# | |
elif [[ $3 = "active" ]] | |
then | |
error=`zabbix_get -s $1 -k system.run["lmutil lmstat -f $2"] | grep "Users of" | grep "Error"` | |
if [[ $error = "" ]] | |
then | |
get=`zabbix_get -s $1 -k system.run["lmutil lmstat -f $2"] | grep "Users of" | sed "s/.*Total of //" | sed "s/ license.*//"` | |
echo $get | |
else | |
echo "-1" | |
fi | |
# | |
elif [[ $3 = "users" ]] | |
then | |
get=`zabbix_get -s $1 -k system.run["lmutil lmstat -f $2"] | grep "start"` | |
echo $get | |
fi | |
fi |
テンプレートはユニバーサルで、WindowsとLinuxの両方で機能します。 必要な追加設定のうち:
- Windows:システム環境変数へのlmutilパスの書き込み
- Linux: lmutilを/ usr / binにコピーし(Ubuntuの場合も同様)、実行権限を付与します。 wineでのみライセンスサーバーを使用する場合、以下にlmutilのみをダウンロードするリンクを残します。
Autodesk NLM 11.13のlmutil
www95.zippyshare.com/v/MOawVaur/file.html
SHA-1:02EF9BBF03C058A82AD31B3764B670EA7063C80E
SHA-256:F9343E73B2ACCC4ABF7F7011C1E4CA123BB82D1E66412494E42F8A473D6ACCFB
SHA-1:02EF9BBF03C058A82AD31B3764B670EA7063C80E
SHA-256:F9343E73B2ACCC4ABF7F7011C1E4CA123BB82D1E66412494E42F8A473D6ACCFB