Skip to content

Commit

Permalink
Merge pull request #172 from Icinga:feature/implement-check-mpio-plugin
Browse files Browse the repository at this point in the history
Feature: Implement check MPIO plugin

Implements MPIO plugin for monitoring the number of paths for each MPIO driver on your system
  • Loading branch information
LordHepipud authored Jun 2, 2021
2 parents 2f2b77f + b8ce194 commit 96fb4db
Show file tree
Hide file tree
Showing 11 changed files with 1,348 additions and 1,029 deletions.
1 change: 1 addition & 0 deletions config/director/Invoke-IcingaCheckMPIO.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"DataList":{"IcingaCheckMPIO Verbosity":{"list_name":"IcingaCheckMPIO Verbosity","originalId":"2","entries":[{"allowed_roles":null,"entry_value":"0","entry_name":"0","format":"string"},{"allowed_roles":null,"entry_value":"1","entry_name":"1","format":"string"},{"allowed_roles":null,"entry_value":"2","entry_name":"2","format":"string"},{"allowed_roles":null,"entry_value":"3","entry_name":"3","format":"string"}],"owner":"stein"}},"Command":{"Invoke-IcingaCheckMPIO":{"fields":[{"datafield_id":2,"is_required":"n","var_filter":null},{"datafield_id":3,"is_required":"n","var_filter":null},{"datafield_id":4,"is_required":"n","var_filter":null},{"datafield_id":5,"is_required":"n","var_filter":null},{"datafield_id":6,"is_required":"n","var_filter":null}],"object_name":"Invoke-IcingaCheckMPIO","arguments":{"-C":{"value":"try { Use-Icinga -Minimal; } catch { Write-Output \u0027The Icinga PowerShell Framework is either not installed on the system or not configured properly. Please check https://icinga.com/docs/windows for further details\u0027; Write-Output \"Error: $$($$_.Exception.Message)Components:`r`n$$( Get-Module -ListAvailable \"icinga-powershell-*\" )`r`nModule-Path:`r`n$$($$Env:PSModulePath)\"; exit 3; }; Exit-IcingaExecutePlugin -Command \u0027Invoke-IcingaCheckMPIO\u0027 ","order":"0"},"-Verbosity":{"value":"$IcingaCheckMPIO_Object_Verbosity$","order":"4"},"-ThresholdInterval":{"value":"$IcingaCheckMPIO_String_ThresholdInterval$","order":"100"},"-Warning":{"value":"$IcingaCheckMPIO_Object_Warning$","order":"2"},"-Critical":{"value":"$IcingaCheckMPIO_Object_Critical$","order":"3"},"-NoPerfData":{"set_if":"$IcingaCheckMPIO_Switchparameter_NoPerfData$","set_if_format":"string","order":"99"}},"imports":["PowerShell Base"],"object_type":"object","vars":{"IcingaCheckMPIO_Switchparameter_NoPerfData":false}},"PowerShell Base":{"methods_execute":"PluginCheck","object_name":"PowerShell Base","vars":{},"is_string":null,"command":"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe","zone":null,"disabled":false,"fields":[],"arguments":{},"imports":[],"object_type":"object","timeout":"180"}},"Datafield":{"2":{"settings":{"visibility":"visible"},"description":"Change the value your defined threshold checks against from the current value to a collected time threshold of the Icinga for Windows daemon, as described here: https://icinga.com/docs/icinga-for-windows/latest/doc/service/10-Register-Service-Checks/ An example for this argument would be 1m or 15m which will use the average of 1m or 15m for monitoring.","caption":"ThresholdInterval","datatype":"Icinga\\Module\\Director\\DataType\\DataTypeString","originalId":"2","varname":"IcingaCheckMPIO_String_ThresholdInterval","format":null},"5":{"settings":{"visibility":"visible"},"description":"Disables the performance data output of this plugin","caption":"NoPerfData","datatype":"Icinga\\Module\\Director\\DataType\\DataTypeBoolean","originalId":"5","varname":"IcingaCheckMPIO_Switchparameter_NoPerfData","format":null},"4":{"settings":{"visibility":"visible"},"description":"Used to specify a Critical threshold for the number of path defined.\nUse for example 6: for alerting for less than 6 MPIO paths available","caption":"Critical","datatype":"Icinga\\Module\\Director\\DataType\\DataTypeString","originalId":"4","varname":"IcingaCheckMPIO_Object_Critical","format":null},"3":{"settings":{"visibility":"visible"},"description":"Used to specify a Warning threshold for the number of path defined.\nUse for example 8: for alerting for less than 8 MPIO paths available","caption":"Warning","datatype":"Icinga\\Module\\Director\\DataType\\DataTypeString","originalId":"3","varname":"IcingaCheckMPIO_Object_Warning","format":null},"6":{"settings":{"datalist":"IcingaCheckMPIO Verbosity","behavior":"strict","data_type":"string"},"description":"Changes the behavior of the plugin output which check states are printed:\n0 (default): Only service checks/packages with state not OK will be printed\n1: Only services with not OK will be printed including OK checks of affected check packages including Package config\n2: Everything will be printed regardless of the check state\n3: Identical to Verbose 2, but prints in addition the check package configuration e.g (All must be [OK])","caption":"Verbosity","datatype":"Icinga\\Module\\Director\\DataType\\DataTypeDatalist","originalId":"6","varname":"IcingaCheckMPIO_Object_Verbosity","format":null}}}
2 changes: 1 addition & 1 deletion config/director/Plugins_Bundle.json

Large diffs are not rendered by default.

35 changes: 35 additions & 0 deletions config/icinga/Invoke-IcingaCheckMPIO.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
object CheckCommand "Invoke-IcingaCheckMPIO" {
import "PowerShell Base"

arguments += {
"-C" = {
value = "try { Use-Icinga -Minimal; } catch { Write-Output 'The Icinga PowerShell Framework is either not installed on the system or not configured properly. Please check https://icinga.com/docs/windows for further details'; Write-Output "Error: $$($$_.Exception.Message)Components:`r`n$$( Get-Module -ListAvailable "icinga-powershell-*" )`r`nModule-Path:`r`n$$($$Env:PSModulePath)"; exit 3; }; Exit-IcingaExecutePlugin -Command 'Invoke-IcingaCheckMPIO' "
order = 0
}
"-Verbosity" = {
description = "Changes the behavior of the plugin output which check states are printed: 0 (default): Only service checks/packages with state not OK will be printed 1: Only services with not OK will be printed including OK checks of affected check packages including Package config 2: Everything will be printed regardless of the check state 3: Identical to Verbose 2, but prints in addition the check package configuration e.g (All must be [OK])"
value = "$IcingaCheckMPIO_Object_Verbosity$"
order = 4
}
"-ThresholdInterval" = {
description = "Change the value your defined threshold checks against from the current value to a collected time threshold of the Icinga for Windows daemon, as described here: https://icinga.com/docs/icinga-for-windows/latest/doc/service/10-Register-Service-Checks/ An example for this argument would be 1m or 15m which will use the average of 1m or 15m for monitoring."
value = "$IcingaCheckMPIO_String_ThresholdInterval$"
order = 100
}
"-Warning" = {
description = "Used to specify a Warning threshold for the number of path defined. Use for example 8: for alerting for less than 8 MPIO paths available"
value = "$IcingaCheckMPIO_Object_Warning$"
order = 2
}
"-Critical" = {
description = "Used to specify a Critical threshold for the number of path defined. Use for example 6: for alerting for less than 6 MPIO paths available"
value = "$IcingaCheckMPIO_Object_Critical$"
order = 3
}
"-NoPerfData" = {
set_if = "$IcingaCheckMPIO_Switchparameter_NoPerfData$"
order = 99
}
}
vars.IcingaCheckMPIO_Switchparameter_NoPerfData = false
}
Loading

0 comments on commit 96fb4db

Please sign in to comment.