ヘルプ 管理 監視の追加 カスタムWindowsプラグイン

Windowsプラグインを記述する

Site24x7のオープンなエコシステムでは、カスタム プラグインの自作も可能であり、必要データを、希望の方法で監視できます。属性それぞれにしきい値を決め、指定値超過時のアラートを選択できます。Windowsプラグインの記述には、以下の選択肢があります。

プラグイン出力の形式:

プラグイン スクリプトは、JSONオブジェクトを返すものとします。JSONデータをSite24x7 Plusのサーバーに出力する際は、次のフォーマットに従ってください。

{

        "version" : "1",

        "data":{"Name":"John","Age":40,"Role":"Admin","Salary":87000,"Experience":3.4,"Performance":98.99},

        "units":{"Age":"year","Salary":"Dollars","Experience":"years","Performance":"%"},

      "heartbeat":"True",

        "displayname":"Employee",

        "msg":"Poor Performance"

}

  1. バージョン:プラグインのバージョン番号を表します。
    • こちらは必須項目です。
    • バージョン番号の変更があれば、Site24x7のデータセンターは、テンプレートを更新し、当該バージョン用の新規テンプレートを作成します
    • デフォルト値は1です。プラグインの更新をするたびに、バージョン番号は1ずつ上げなくてはなりません。
    • バージョン番号には、整数のみを使用できます。例:1、2、3……
  2. heartbeat:プラグインにアラートが必要かを表します。
    • こちらは任意項目です。
    • プラグインからSite24x7データセンターに、データがまったく届かなくなると、プラグインのダウンと判断し、アラートします。
    • heartbeatの値は、trueかfalseです。
    • デフォルトでは、heartbeatの値は、trueです。
  3. units:監視する属性の単位
    • こちらは任意項目です。
    • これは、キー・バリューのペアとなっています。キーには、プラグインで監視する属性の名前を、バリューには、対応する単位を指定します。
    • プラグインでCPU利用率(%)を測定する場合の例:
      units : {
              'cpu':'%'
      }
  4. displayname:クライアントに表示される監視の名前をさします。こちらは任意項目です。
  5. msg:監視のメッセージ
    • こちらは任意項目です。
    • 監視がダウンすると、設定したエラー メッセージが、Site24x7 Webクライアントに表示されます。
    • この属性は、データ属性にパラレルにおいてください。

Windowsプラグイン記述の手順:

  1. 最新バージョンのWindowsエージェントをサーバーに、ダウンロード・インストールします。
  2. インストール ディレクトリ内部で、monitoring > プラグイン(デフォルト フォルダー)とアクセス。
    例:C:\All Programs (x86)\Site24x7\WinAgent\monitoring\Plugins 
  3. プラグインの名称のフォルダーを作成し、カスタム スクリプト ファイル(.vbs、.ps1、.bat)を、このフォルダーに置きます。たとえば、サーバー監視用に、PowerShellスクリプトのプラグインを作成する場合は、「servermonitor」フォルダーを、\Monitoring\Plugins\ の配下に作り、servermonitor.ps1ファイルと、依存ファイルを、ここに置きます。
  4. 次回のエージェント データ収集の時に、プラグインが検出され、監視の対象になります。
プラグイン ログは、すべて、PluginLog.logとPluginRegisterLog.logのファイルに収集され、[installation directory]\monitoring\logs\Detailsに置かれます。

VBScriptによるプラグイン ファイルのサンプル:

version = "1"

heartbeat = "True"

displayname = "Employee"

Name = "John"

Age = 40

Role = "Admin"

Salary = 87000

Experience = 3.4

Performance = 48.99

data = AddData(data,"name",name)
data = AddData(data,"Age",Age)
data = AddData(data,"Role",Role)
data = AddData(data,"Salary",Salary)
data = AddData(data,"Experience",Experience)
data = AddData(data,"Performance",Performance)

units = AddData(units,"Age","year")
units = AddData(units,"Salary","Dollars")
units = AddData(units,"Experience","years")
units = AddData(units,"Performance","%")

mainJson = AddData(mainJson,"version",version)
mainJson = AddObj(mainJson,"data",data)
mainJson = AddObj(mainJson,"units",units)
mainJson = AddData(mainJson,"heartbeat",heartbeat)
mainJson = AddData(mainJson,"displayname",displayname)

if Performance < 50 then
mainJson = AddData(mainJson,"msg","Poor Performance")
End If

Wscript.Echo mainJson

Function AddData(data,key,value)
   emptystr = ""
   If data = emptystr then
      data = "{"
   Else
      data = StrReverse(Replace(StrReverse(data),"}",",",1,1))
   End If
   AddData = data & """" & key & """" &" : " & """" & value & """" & "}"
End Function

Function AddObj(data,key,value)
   emptystr = ""
   If data = emptystr then
      data = "{" Else data = StrReverse(Replace(StrReverse(data),"}",",",1,1))
   End If
   AddObj = data & """" & key & """" &" : " & value & "}"
End Function

JSON出力:

{

        "version" : "1",

        "data":{"Name":"John","Age":40,"Role":"Admin","Salary":87000,"Experience":3.4,"Performance":98.99},

        "units":{"Age":"year","Salary":"Dollars","Experience":"years","Performance":"%"},

        "heartbeat":"True",

        "displayname":"Employee",

        "msg" : "Poor Performance"

}

Site24x7ダッシュボードに表示されるデータ:

当社コミュニティ(英語)への投稿『VBScriptによるプラグイン ファイルのサンプル:平均ディスクキュー長(Length、要素数)』を参照ください。

PowerShellスクリプトによるプラグイン ファイルのサンプル:

Function Add-Data
([string]$json,[string]$key,[string]$value,[bool]$isobj)
{
    if($key -ne $null -and $value -ne $null)
    {
       if($json.Length -gt 0)
        {
          $json = $json -replace "(.*)}(.*)", '$1,$2'
        }
        else
        {
           $json = $json + "{"
        }
        if($isobj -eq $true)
        {
           $json = $json + [char]34 + $key + [char]34 + " : " + $value +"}"
        }
        else
        {
           $json = $json + [char]34 + $key + [char]34 + " : " + [char]34 + $value + [char]34 +"}"
      }
   }
   return $json
}

$version = "1"

$displayname = "Server Monitor"

$heartbeat = "True"

$units = ""
$units = Add-Data $units "CPU_Usage" "%"
$units = Add-Data $units "Memory_Used" "%"
$units = Add-Data $units "Disk" "%"

$CPUusage = (Get-WmiObject win32_processor | Measure-Object -property LoadPercentage -Average | Select Average).Average

$os = Get-Ciminstance Win32_OperatingSystem
$pctFree = [math]::Round(($os.FreePhysicalMemory/$os.TotalVisibleMemorySize)*100,2)

$msg = ""
$Memory = 100-$pctFree
if($Memory -gt 80)
{
   $msg = "Memory Usage increases to "+$Memory +"%"
}

$Processes = (Get-Process).Count

$Disk = 1.2

$Services = 34

$data = ""
$data = Add-Data $data "CPUusage" $CPUusage
$data = Add-Data $data "Memory_Used" $Memory
$data = Add-Data $data "Processes" $Processes
$data = Add-Data $data "Disk" $Disk
$data = Add-Data $data "Services" $Services

$mainJson = ""
$mainJson = Add-Data $mainJson "version" $version
$mainJson = Add-Data $mainJson "data" $data $true
$mainJson = Add-Data $mainJson "units" $units $true
$mainJson = Add-Data $mainJson "heartbeat" $heartbeat
$mainJson = Add-Data $mainJson "displayname" $displayname
if($msg.Length -gt 0)
{
   $mainJson = Add-Data $mainJson "msg" $msg
}

return $mainJson

JSON出力:
Site24x7ダッシュボードに表示されるデータ:

バッチによるプラグイン ファイルのサンプル:

@ECHO OFF

SET version="1"

SET heartbeat="True"

SET displayname="Network Traffic"

SET units={"Packets recieved":"sec","Packets sent":"sec","Bandwidth utilization":"Kbps","Speed":"Mbps"}

SET Packetsrecieved=10

SET Packetssent=4

SET Bandwidthutilization=12

SET Speed=87

SET Msg=""

IF %Bandwidthutilization% gtr 10 (
SET Msg="High Bandwidth Utilization"
)

SET data={"Packets recieved":%Packetsrecieved%,"Packets sent":%Packetssent%,"Bandwidth utilization":%Bandwidthutilization%,"Speed":%Speed%}

IF %Msg%=="" (
SET mainJson={"version" : %version%,"data" : %data%,"units" : %units%,"heartbeat" : %heartbeat%,"displayname" : %displayname%}
) ELSE (
SET mainJson={"version" : %version%,"data" : %data%,"units" : %units%,"heartbeat" : %heartbeat%,"displayname" : %displayname%,"msg" : %Msg%}
)

ECHO %mainJson%

JSON出力:
Site24x7ダッシュボードに表示されるデータ:

Windowsプラグインの記述には、以下の選択肢があります。DLL:

Site24x7のオープンなエコシステムでは、カスタム プラグインの自作も可能であり、必要データを、希望の方法で監視できます。属性それぞれにしきい値を決め、指定値超過時のアラートを選択できます。詳細は、こちらを参照ください。

トラブルシュートのヒント:

関連記事: