Zabbix:LLDモニタリングFlexLMサービス(更新)

画像



この記事は、 以前の記事のより詳細な研究です。 これで、テンプレートはWindows(PowerShell)とLinux(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.&#13;
, .&#13;
&#13;
UserParameter:&#13;
UserParameter=ZScript[*],powershell C:\System\Zabbix\Scripts$1.ps1 $2 $3&#13;
UserParameter=ZScript[*],bash /etc/zabbix/scripts/$1.sh $2 $3&#13;
&#13;
:&#13;
flex.ps1 -&gt; C:\System\Zabbix\Scripts\&#13;
flex.sh -&gt; /etc/zabbix/scripts/&#13;
&#13;
Windows:&#13;
(Path) lmutil.exe.&#13;
: C:\Program Files (x86)\CSoft\CS License Server&#13;
&#13;
Linux:&#13;
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.*)}&lt;&gt;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()}&lt;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
}
view raw flex.ps1 hosted with ❤ by GitHub




ライセンスサーバーのパフォーマンスは、さまざまなベンダーのディストリビューションに含まれている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スイッチを使用し、開いたコマンドウィンドウに必要なコマンドを入力します。



これらのコマンドやその他のコマンドの詳細については、ライセンスの説明をご覧ください 。デバッグ時に読むことをお勧めします。



Linux用のスクリプト



そして、このスクリプトはUbuntuの下で書かれました。 Ubuntuにオートデスクライセンスサーバーを段階的にインストールする方法については、以下を参照してください(Ubuntuは公式にはサポートされていません)。



スクリプトをサーバー上の任意のフォルダーにコピーします(エージェントの構成でパスを指定します。詳細は以下を参照)。実行するための適切な権限を忘れずに与えてください



また、スクリプトの「ユーザー変数」セクションでlmutilユーティリティのディレクトリを指定する必要があります。



flex.sh(2017/10/26に更新)
ライセンス数を検出するための常連を修正

>> 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
view raw flex.sh hosted with ❤ by GitHub




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 ( )&#13;
&#13;
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[&quot;lmutil lmstat -f {#LICENSE}&quot;]</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[&quot;lmutil lmstat -vd{#SERVER}&quot;]</key>
</master_item_prototype>
</item_prototype>
<item_prototype>
<name> lmutil lmstat -vd {#SERVER}</name>
<type>0</type>
<snmp_community/>
<snmp_oid/>
<key>system.run[&quot;lmutil lmstat -vd{#SERVER}&quot;]</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
view raw flexlm.sh hosted with ❤ by GitHub




テンプレートはユニバーサルで、WindowsとLinuxの両方で機能します。 必要な追加設定のうち:



Autodesk NLM 11.13のlmutil
www95.zippyshare.com/v/MOawVaur/file.html

SHA-1:02EF9BBF03C058A82AD31B3764B670EA7063C80E

SHA-256:F9343E73B2ACCC4ABF7F7011C1E4CA123BB82D1E66412494E42F8A473D6ACCFB




All Articles