PRTGにカウンターを追加する方法。 そして、Powershellの例を含むセンサーフォーマットについて簡単に説明します

1C(および実際には)からパフォーマンスインジケータを監視システムに追加してみませんか? 学んだように、スクリプト、バッチファイル、VBスクリプト、実行可能ファイル、SSH、SQLクエリの直接実行、その他のさまざまな方法から推測できることがわかりました。 この記事で巨大なシートを取得しないために、powershellの例を使用してPRTGにカウンターを固定するために必要なものの最小値のみがあります。



実際、すべてが非常に簡単です。

PowerShellカウンターをPRTGで動作させるにはちょっとした魔法があります
カウンターが作成された後、コンソールまたは手動での起動ですべてが正常であるにもかかわらず、数値が出力されないことが判明する場合があります。 しかし、実際のところ、PRTGは「自身」の下からスクリプトを実行します。

  • アクセス権がない
  • システムでスクリプトを実行することは禁止される場合があります
  • x86バージョンでのスクリプトの実行は禁止されている可能性があり、 x64では許可されています

最後の2つのポイントから始める必要があります。 次のコマンドを使用して、スクリプト起動ポリシーを確認できます
Get-ExecutionPolicy 

彼女がRestrictedを返した場合、管理コンソールからコマンドを実行して、このシステムでスクリプトの実行を有効にする必要があります

 Set-ExecutionPolicy Unrestricted 

セキュリティが必要な場合は、少なくともローカル証明書でスクリプトに署名し、 AllSignedポリシーを設定します。

スクリプト起動ポリシーをインストールした後、すべてが正しいことを確認してください。PowerShellの32ビットバージョンを持っている人は、ポリシーもインストールしてください。 PRTGは、32ビットポシックからスクリプトを実行しようとする場合があります。 (より正確には、 PowerShell x86バージョンがある場合はそうなります)、異なる起動ポリシーがあり、64ビットに設定すると、32が残っていることを忘れることがあります。 Powershell x86管理者の下で実行し、同じ設定を行います。

権利の問題はより簡単に解決されます-私たちはすべての人の権利を設定し、それが機能する場合、カップルは十分ではありません。 スクリプトのプロパティに代替のntfsがある場合は、削除する必要があります



最初に、センサーの配置に関する少しの理論


PRTGには、手動で追加されるいくつかのタイプのセンサーがありそれらを「シンプルセンサー」および「複合センサー」と呼びます。

1.シンプルなセンサー


単純なセンサーは、システムに1つの数値とメッセージのみを返します。このフォームの出力にテキストをスローする必要があります

 12345:Ok #  ,   12345 :Ok 

数は64ビット整数または小数である必要があり、コロンの後のメッセージは2000文字以下です。

コロンの後のメッセージは、色付きフィールドのヘッダーに表示される行です



カウンターを示すためにそうすることができます

 1000 :To low 2000 :Ok 5000 :To high 

この場合、[ 最終メッセージ]フィールドのメッセージは変わりますが、色は変わりません。 [ 出力コード]セクションで背景色を少し低く変更する方法。

プログラムやスクリプトから対話するには、テキストを引き出すだけで十分です。 私は通常、メッセージの出力を抑制し、文字列のみをスローします。 以下に例を示します。

 #  1   30      #    $FileName = 'C:\PRTG\sales_today.txt' #    $ErrorActionPreference = 'SilentlyContinue' if ((Test-Path $FileName) -eq $false) { Write-Host "0 :Error" } else { $Val = Get-Content $FileName | select -First 1 #     ,     #        ( ) $Val = [string]$Val + ":Ok" Write-Host $Val #   $Val #    exit 0 } 

終了コード-パネルにセンサーをペイントします


デジタル値だけでなく、適切な種類のダッシュボードを取得するには、スクリプトから終了コードを返す必要があります。 そうすると、数字だけでなくカラーセンサーも送信できるようになります



PRTGが正しい色で表示するために必要なことは、出力でパラメーターを返すことだけです。Powershellでは、これは出力でコマンドによって行われます。

 #      exit 0 

PRTGには以下のコードが提供されています
価値説明
0すべてが順調です。 ダッシュボードのセンサーは緑色です。 最後のメッセージは緑色で強調表示されます。
1ご注意 センサーは黄色に塗られています。 最後のメッセージは黄色に染まっています
2システムエラー。 センサーは赤く塗られています。 最後のメッセージは赤で強調表示されます。 メッセージはアラートに記録されます
3プロトコルエラー(たとえば、Webサーバーが404を返します)。 センサーは赤く塗られています。 最後のメッセージは赤です。 アラートが強調表示されます。 プロトコルエラー行を追加
4センサーの色は赤です。 最後のメッセージは赤です。 アラートが登録されています。 メッセージの前にコンテンツエラーが表示されます。

基本的には、これで簡単なセンサーについて知る必要があります。

2.洗練されたセンサー


洗練されたセンサーは、特定の形式でデータをスローする必要があります。 1つのグラフには、多くのチャネル、値のスケーリング、それらへの署名など​​があり、 XMLまたはJSON形式が使用されます。 XMLの出力は次のようになります。

 <prtg> <result> <channel> </channel> <value>100</value> </result> <result> <channel> </channel> <value>200</value> </result> </prtg> 

このトピックでは、出力を担当する部分は次のようになります。

 "<prtg>" "<result>" "<channel>Total all accounts</channel>" "<value>$TotalAllAccountsBeg</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "<result>" "<channel>Total all accounts income</channel>" "<value>$TotalAllAccountsIncome</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "<result>" "<channel>Total all account outcome</channel>" "<value>$TotalAllAccountsOutcome</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "</prtg>" 

私はOut-Stringを実行しようとさえしていません。ただ直接出力するだけです。 レーキについて覚えています。各変数には値を1つだけ含める必要があります。そうしないと、間違った出力が表示されます。明示的に型を確認する方が適切です。

JSONの場合は次のようになります

  { "prtg": { "result": [ { "channel": " ", "value": "100" }, { "channel": " ", "value": "20" } ] } } 

次に、最も重要なタグを見てみましょう(すべてのタグは大文字と小文字が区別されます)
<チャンネル>
義務的
ユーザーインターフェイスに表示されるチャネル名は、1つのセンサーのセンサーごとに一意である必要があります。2つの同一のチャネル名は使用できません。
値:任意の文字列

<値>
義務的
整数または小数値。 PRTGが認識できない場合、0が表示されます。したがって、出力形式が正しいかどうかを確認してください。
値:整数または小数

<CustomUnit>
いや
選択されている場合、この行は数字の下に表示されます
例:RUB
値:任意の文字列、短いほうが良い

<ユニット>
義務ではない
組み込みの測定単位が必要な場合は、組み込みの測定単位のいずれかを指定する必要があります。 PRTGは時間を理解し、いくつかの値(バイト-メガバイト)をスケーリングできます
値:
BytesBandwidth
バイトメモリ
バイトディスク
温度
パーセント
時間応答
タイムセカンド
カスタム
カウント
CPU(*)
バイトファイル
スピードディスク
スピードネット
営業時間
タグの完全なリストはこちらです。

PRTGのXMLを発行する作業例


次に、PRTG形式でデータを出力するスクリプトの例を示します。 1Cは、N分ごとにデータをディスク上のテキストファイルにアップロードし、テキストファイルdata.txtの内容を元のデータとともにアップロードすると信じています。

 : 10 000 000,06     : 8 000 000,93    : 0    : 0     : 8 000 000,93    : 2 000 000,4   : 0   : 0    : 2 000 000,4   : 30 000,04  : 20 000,11  : 0   : 50 000,15 

次に、スクリプトは次のようになります。

 $FileName = 'C:\PRTG\data.txt' #    $ErrorActionPreference = 'SilentlyContinue' # .. 1-          #   ,       function Get-Data{ Param( [parameter(Mandatory=$true)] [String] $SourceString ) $str = '' $str = $SourceString.Split(':') $str = $str[1] $str = $str.split(',') $str = $str[0] $str = $str -replace '\s','' return $str } if ((Test-Path $FileName) -eq $false) { exit 3 } $File = Get-Content $FileName | Select-String ":" $SalesToday = Get-Data $File $File = Get-Content $FileName | Select-String "    :" $AccVTBBeg = Get-Data $File $File = Get-Content $FileName | Select-String "   :" $AccVTBincome = Get-Data $File $File = Get-Content $FileName | Select-String "   :" $AccVTBoutcome = Get-Data $File $File = Get-Content $FileName | Select-String "    :" $AccVTBCurr = Get-Data $File $File = Get-Content $FileName | Select-String "   :" $AccGosBeg = Get-Data $File $File = Get-Content $FileName | Select-String "  :" $AccGosincome = Get-Data $File $File = Get-Content $FileName | Select-String "  :" $AccGosoutcome = Get-Data $File $File = Get-Content $FileName | Select-String "   :" $AccGosCurr = Get-Data $File $File = Get-Content $FileName | Select-String "  :" $AccKassaBeg = Get-Data $File $File = Get-Content $FileName | Select-String " :" $AccKassaincome = Get-Data $File $File = Get-Content $FileName | Select-String " :" $AccKassaoutcome = Get-Data $File $File = Get-Content $FileName | Select-String "  :" $AccKassaCurr = Get-Data $File $TotalAllAccountsBeg = [int]$AccVTBBeg + [int]$AccGosBeg + [int]$AccKassaBeg $TotalAllAccountsIncome = [int]$AccVTBincome + [int]$AccGosincome + [int]$AccKassaincome $TotalAllAccountsOutcome = [int]$AccVTBoutcome + [int]$AccGosoutcome + [int]$AccKassaoutcome $TotalAllAccountsCurr = [int]$AccVTBCurr + [int]$AccGosCurr + [int]$AccKassaCurr "<prtg>" "<result>" "<channel>Total all accounts</channel>" "<value>$TotalAllAccountsBeg</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "<result>" "<channel>Total all accounts income</channel>" "<value>$TotalAllAccountsIncome</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "<result>" "<channel>Total all account outcome</channel>" "<value>$TotalAllAccountsOutcome</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "<result>" "<channel>Total all account current</channel>" "<value>$TotalAllAccountsCurr</value>" "<CustomUnit>RUB</CustomUnit>" "</result>" "</prtg>" 

スクリプトの準備ができました。センサーの配置方法を理解しました。次に、すべてをねじ込んで実行します。

そして今、カスタムセンサーをPRTGに固定します


PRTGがインストールされたサーバーには、ディレクトリ「C:\ Program Files(x86)\ PRTG Network Monitor \ Custom Sensors」があります。2つのディレクトリがあります。

  1. 単純なセンサーのEXE
  2. 複雑なセンサー用のEXEXML

スクリプトをEXEXMLディレクトリにドロップします。
次に、通常どおり、センサーを追加します。



センサーは、 exe \ script advancedという形式のカスタムになることを示します。



名前をわかりやすい名前に変更し、矢印をクリックして、 EXEXMLディレクトリのスクリプトを確認します。 注意、以下の値があります-EXE 結果を破棄します。これは、スクリプトを実行するPRTGが出力をリセットすることを意味します。 \センサーの名前



その結果、必要なものが得られます。

関連リンク:

Source: https://habr.com/ru/post/J348088/


All Articles