sensu-plugins-windows 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/bin/check-windows-cpu-load.rb +0 -0
- data/bin/check-windows-process.rb +0 -0
- data/bin/check-windows-processor-queue-length.rb +0 -0
- data/bin/check-windows-ram.rb +0 -0
- data/bin/check-windows-service.rb +0 -0
- data/bin/metric-windows-cpu-load.rb +0 -0
- data/bin/metric-windows-disk-usage.rb +0 -0
- data/bin/metric-windows-network.rb +0 -0
- data/bin/metric-windows-processor-queue-length.rb +0 -0
- data/bin/metric-windows-ram-usage.rb +0 -0
- data/bin/metric-windows-uptime.rb +0 -0
- data/bin/powershell/check-windows-cpu-load.ps1 +13 -3
- data/bin/powershell/check-windows-disk-writeable.ps1 +0 -0
- data/bin/powershell/check-windows-disk.ps1 +0 -0
- data/bin/powershell/check-windows-http.ps1 +0 -0
- data/bin/powershell/check-windows-pagefile.ps1 +0 -0
- data/bin/powershell/check-windows-process.ps1 +0 -0
- data/bin/powershell/check-windows-processor-queue-length.ps1 +0 -0
- data/bin/powershell/check-windows-ram.ps1 +0 -0
- data/bin/powershell/check-windows-service.ps1 +0 -0
- data/bin/powershell/metric-windows-cpu-load.ps1 +34 -5
- data/bin/powershell/metric-windows-disk-usage.ps1 +17 -6
- data/bin/powershell/metric-windows-disk.ps1 +91 -0
- data/bin/powershell/metric-windows-network.ps1 +46 -6
- data/bin/powershell/metric-windows-processor-queue-length.ps1 +13 -5
- data/bin/powershell/metric-windows-ram-usage.ps1 +18 -3
- data/bin/powershell/metric-windows-system.ps1 +56 -0
- data/bin/powershell/metric-windows-uptime.ps1 +10 -2
- data/bin/powershell/perfhelper.ps1 +106 -0
- data/lib/sensu-plugins-windows/version.rb +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03475123ef7a2c451c0d301dbf37640cc7a08192
|
4
|
+
data.tar.gz: e15a8327c01b9e84d3da8b80267fd9782bf87bbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b7ac45b11cca7841ff87a72fe8fd4e018dea0539e316a8c48fd404a88beb291f0a9d52b7f23bbac5d4f34d6b3eda88230c120498477060e4bfd02beef2c939c
|
7
|
+
data.tar.gz: cf71707f9fc12c924cff1ac5620cd30ae0d76572a6dd25ed53e6794ea4181686839d29414867330799834dc16cce6454e1f26556a1cfbb586cbe1bd041b81e90
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,18 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/).
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
|
+
|
8
|
+
## [2.2.0] - 2017-09-08
|
9
|
+
### Fixed
|
10
|
+
- added multi language support to all the powershell scripts (@Seji64)
|
11
|
+
- powershell/metric-windows-network.ps1: handle interfaces with spaces in their name (@Seji64)
|
12
|
+
|
13
|
+
### Added
|
14
|
+
- `powershell/perfhelper.ps1`: added standard sensu header (@Seji64)
|
15
|
+
- added option to enable fdqn in metric path (@Seji64)
|
16
|
+
- `powershell/metric-windows-disk.ps1` new metric script for disk IO stats (@Seji64)
|
17
|
+
|
18
|
+
|
7
19
|
### [2.1.0] - 2017-08-26
|
8
20
|
### Added
|
9
21
|
- `powershell/check-windows-pagefile.ps1`: which basically allows checking how much pagefile (aka swap) is in use. (@hulkk)
|
@@ -103,7 +115,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
103
115
|
### Added
|
104
116
|
- Initial release
|
105
117
|
|
106
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-Windows/compare/2.
|
118
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-Windows/compare/2.2.0...HEAD
|
119
|
+
[2.2.0]: https://github.com/sensu-plugins/sensu-plugins-Windows/compare/2.1.0...2.2.0
|
107
120
|
[2.1.0]: https://github.com/sensu-plugins/sensu-plugins-Windows/compare/2.0.0...2.1.0
|
108
121
|
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-Windows/compare/1.0.0...2.0.0
|
109
122
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-Windows/compare/0.1.0...1.0.0
|
File without changes
|
File without changes
|
File without changes
|
data/bin/check-windows-ram.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -34,10 +34,18 @@ Param(
|
|
34
34
|
[int]$CRITICAL
|
35
35
|
)
|
36
36
|
|
37
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
38
|
+
|
37
39
|
$ThisProcess = Get-Process -Id $pid
|
38
40
|
$ThisProcess.PriorityClass = "BelowNormal"
|
39
41
|
|
40
|
-
$
|
42
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'Processor Information'
|
43
|
+
$perfCounterID = Get-PerformanceCounterByID -Name '% Processor Time'
|
44
|
+
|
45
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
46
|
+
$localizedCounterName = Get-PerformanceCounterLocalName -ID $perfCounterID
|
47
|
+
|
48
|
+
$Value = [System.Math]::Round((Get-Counter "\$localizedCategoryName(_total)\$localizedCounterName" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue)
|
41
49
|
|
42
50
|
If ($Value -gt $CRITICAL) {
|
43
51
|
Write-Host CheckWindowsCpuLoad CRITICAL: CPU at $Value%.
|
@@ -45,8 +53,10 @@ If ($Value -gt $CRITICAL) {
|
|
45
53
|
|
46
54
|
If ($Value -gt $WARNING) {
|
47
55
|
Write-Host CheckWindowsCpuLoad WARNING: CPU at $Value%.
|
48
|
-
Exit 1
|
56
|
+
Exit 1
|
57
|
+
}
|
49
58
|
|
50
59
|
Else {
|
51
60
|
Write-Host CheckWindowsCpuLoad OK: CPU at $Value%.
|
52
|
-
Exit 0
|
61
|
+
Exit 0
|
62
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -22,14 +22,43 @@
|
|
22
22
|
# Copyright 2016 sensu-plugins
|
23
23
|
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
24
|
#
|
25
|
+
|
26
|
+
param(
|
27
|
+
[switch]$UseFullyQualifiedHostname
|
28
|
+
)
|
29
|
+
|
25
30
|
$ThisProcess = Get-Process -Id $pid
|
26
31
|
$ThisProcess.PriorityClass = "BelowNormal"
|
27
32
|
|
28
|
-
|
29
|
-
|
33
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
34
|
+
|
35
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
36
|
+
$Path = ($env:computername).ToLower()
|
37
|
+
}else {
|
38
|
+
$Path = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
39
|
+
}
|
40
|
+
|
41
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'Processor Information'
|
42
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
43
|
+
|
44
|
+
$counters = New-Object System.Collections.ArrayList
|
45
|
+
|
46
|
+
[void]$counters.Add('% Processor Time')
|
47
|
+
[void]$counters.Add('% Idle Time')
|
48
|
+
[void]$counters.Add('% User Time')
|
49
|
+
[void]$counters.Add('% Interrupt Time')
|
50
|
+
|
51
|
+
foreach ($counter in $counters) {
|
52
|
+
|
53
|
+
$perfCounterID = Get-PerformanceCounterByID -Name $counter
|
54
|
+
$localizedCounterName = Get-PerformanceCounterLocalName -ID $perfCounterID
|
55
|
+
$value = [System.Math]::Round((Get-Counter "\$localizedCategoryName(_total)\$localizedCounterName" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue)
|
30
56
|
|
31
|
-
$
|
57
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
32
58
|
|
33
|
-
$Time
|
59
|
+
if ($counter -eq '% Processor Time') { Write-Host "$Path.cpu.percent.total $value $Time" }
|
60
|
+
if ($counter -eq '% Idle Time') { Write-Host "$Path.cpu.percent.idle $value $Time" }
|
61
|
+
if ($counter -eq '% User Time') { Write-Host "$Path.cpu.percent.user $value $Time" }
|
62
|
+
if ($counter -eq '% Interrupt Time') { Write-Host "$Path.cpu.percent.user $value $Time" }
|
34
63
|
|
35
|
-
|
64
|
+
}
|
@@ -22,9 +22,22 @@
|
|
22
22
|
# Copyright 2016 sensu-plugins
|
23
23
|
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
24
|
#
|
25
|
+
|
26
|
+
param(
|
27
|
+
[switch]$UseFullyQualifiedHostname
|
28
|
+
)
|
29
|
+
|
25
30
|
$ThisProcess = Get-Process -Id $pid
|
26
31
|
$ThisProcess.PriorityClass = "BelowNormal"
|
27
32
|
|
33
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
34
|
+
|
35
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
36
|
+
$Path = ($env:computername).ToLower()
|
37
|
+
}else {
|
38
|
+
$Path = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
39
|
+
}
|
40
|
+
|
28
41
|
$AllDisks = Get-WMIObject Win32_LogicalDisk -Filter "DriveType = 3" | ? { $_.DeviceID -notmatch "[ab]:"}
|
29
42
|
|
30
43
|
foreach ($ObjDisk in $AllDisks)
|
@@ -35,11 +48,9 @@ foreach ($ObjDisk in $AllDisks)
|
|
35
48
|
$AvailableSpace = [System.Math]::Round(($ObjDisk.Freespace/1MB),2)
|
36
49
|
$UsedPercentage = [System.Math]::Round(((($ObjDisk.Size-$ObjDisk.Freespace)/$ObjDisk.Size)*100),2)
|
37
50
|
|
38
|
-
$
|
39
|
-
|
40
|
-
$Time = [int][double]::Parse((Get-Date -UFormat %s))
|
51
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
41
52
|
|
42
|
-
Write-Host "$Path.
|
43
|
-
Write-Host "$Path.
|
44
|
-
Write-Host "$Path.
|
53
|
+
Write-Host "$Path.disk.usage.$DeviceId.UsedMB $UsedSpace $Time"
|
54
|
+
Write-Host "$Path.disk.usage.$DeviceId.FreeMB $AvailableSpace $Time"
|
55
|
+
Write-Host "$Path.disk.usage.$DeviceId.UsedPercentage $UsedPercentage $Time"
|
45
56
|
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#
|
2
|
+
# metric-windows-disk.ps1
|
3
|
+
#
|
4
|
+
# DESCRIPTION:
|
5
|
+
# This plugin collects and outputs all Disk/HDD Statistic in a Graphite acceptable format.
|
6
|
+
#
|
7
|
+
# OUTPUT:
|
8
|
+
# metric data
|
9
|
+
#
|
10
|
+
# PLATFORMS:
|
11
|
+
# Windows
|
12
|
+
#
|
13
|
+
# DEPENDENCIES:
|
14
|
+
# Powershell
|
15
|
+
#
|
16
|
+
# USAGE:
|
17
|
+
# Powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -NoLogo -File C:\\etc\\sensu\\plugins\\metric-windows-disk.ps1
|
18
|
+
#
|
19
|
+
# NOTES:
|
20
|
+
#
|
21
|
+
# LICENSE:
|
22
|
+
# Copyright 2016 sensu-plugins
|
23
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
|
+
#
|
25
|
+
|
26
|
+
param(
|
27
|
+
[switch]$UseFullyQualifiedHostname
|
28
|
+
)
|
29
|
+
|
30
|
+
$counters = New-Object System.Collections.ArrayList
|
31
|
+
$instances = @{}
|
32
|
+
|
33
|
+
$ThisProcess = Get-Process -Id $pid
|
34
|
+
$ThisProcess.PriorityClass = "BelowNormal"
|
35
|
+
|
36
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
37
|
+
|
38
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
39
|
+
$Path = ($env:computername).ToLower()
|
40
|
+
}else {
|
41
|
+
$Path = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
42
|
+
}
|
43
|
+
|
44
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'PhysicalDisk'
|
45
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
46
|
+
|
47
|
+
[void]$counters.Add('Avg. Disk Bytes/Read')
|
48
|
+
[void]$counters.Add('Avg. Disk Bytes/Write')
|
49
|
+
[void]$counters.Add('Avg. Disk sec/Read')
|
50
|
+
[void]$counters.Add('Avg. Disk sec/Write')
|
51
|
+
[void]$counters.Add('Current Disk Queue Length')
|
52
|
+
|
53
|
+
foreach ($ObjDisk in (Get-Counter -Counter "\$localizedCategoryName(*)\*").CounterSamples) {
|
54
|
+
|
55
|
+
if ($instances.ContainsKey($ObjDisk.InstanceName) -eq $false) {
|
56
|
+
|
57
|
+
if ($ObjDisk.InstanceName.ToLower() -ne '_total') {
|
58
|
+
$disk = $ObjDisk.InstanceName
|
59
|
+
$disk = $disk.Remove(0,1)
|
60
|
+
$disk = $disk.Replace(":","")
|
61
|
+
$disk = $disk.Trim()
|
62
|
+
$instances.Add($ObjDisk.InstanceName,$disk.toUpper())
|
63
|
+
}
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
}
|
68
|
+
|
69
|
+
foreach ($diskkey in $instances.Keys) {
|
70
|
+
|
71
|
+
$diskname = $instances.$diskkey
|
72
|
+
|
73
|
+
foreach ($counter in $counters) {
|
74
|
+
|
75
|
+
$perfCounterID = Get-PerformanceCounterByID -Name $counter
|
76
|
+
$localizedCounterName = Get-PerformanceCounterLocalName -ID $perfCounterID
|
77
|
+
$value = [System.Math]::Round((Get-Counter "\$localizedCategoryName($diskkey)\$localizedCounterName" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue)
|
78
|
+
|
79
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
80
|
+
|
81
|
+
if ($counter -eq 'Avg. Disk Bytes/Read') { Write-Host "$Path.disk.iostat.$diskname.read_bytes $value $Time" }
|
82
|
+
if ($counter -eq 'Avg. Disk Bytes/Write') { Write-Host "$Path.disk.iostat.$diskname.write_bytes $value $Time" }
|
83
|
+
if ($counter -eq 'Avg. Disk sec/Read') { Write-Host "$Path.disk.iostat.$diskname.read_await $value $Time" }
|
84
|
+
if ($counter -eq 'Avg. Disk sec/Write') { Write-Host "$Path.disk.iostat.$diskname.write_await $value $Time" }
|
85
|
+
if ($counter -eq 'Current Disk Queue Length') { Write-Host "$Path.disk.iostat.$diskname.queue_lenght $value $Time" }
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
}
|
90
|
+
|
91
|
+
|
@@ -22,14 +22,54 @@
|
|
22
22
|
# Copyright 2016 sensu-plugins
|
23
23
|
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
24
|
#
|
25
|
+
|
26
|
+
param(
|
27
|
+
[string[]]$Interfaces,
|
28
|
+
[switch]$UseFullyQualifiedHostname
|
29
|
+
)
|
30
|
+
|
25
31
|
$ThisProcess = Get-Process -Id $pid
|
26
32
|
$ThisProcess.PriorityClass = "BelowNormal"
|
27
33
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
34
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
35
|
+
|
36
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
37
|
+
$Hostname = ($env:computername).ToLower()
|
38
|
+
}else {
|
39
|
+
$Hostname = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
40
|
+
}
|
41
|
+
|
42
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'Network Interface'
|
43
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
33
44
|
|
34
|
-
|
45
|
+
for($i = 0; $i -lt $Interfaces.Count; $i+=1) {
|
46
|
+
$tmp = $Interfaces[$i]
|
47
|
+
$Interfaces[$i] = $tmp.Replace("_"," ")
|
35
48
|
}
|
49
|
+
|
50
|
+
foreach ($ObjNet in (Get-Counter -Counter "\$localizedCategoryName(*)\*").CounterSamples)
|
51
|
+
{
|
52
|
+
|
53
|
+
if ($Interfaces.Contains($ObjNet.InstanceName)) {
|
54
|
+
|
55
|
+
$Measurement = ($ObjNet.Path).Trim("\\") -replace "\\","." -replace " ","_" -replace "[(]","." -replace "[)]","" -replace "[\{\}]","" -replace "[\[\]]",""
|
56
|
+
|
57
|
+
$Measurement = $Measurement.Remove(0,$Measurement.IndexOf("."))
|
58
|
+
$Path = $Hostname+$Measurement
|
59
|
+
|
60
|
+
$Path = $Path.Replace("/s","_per_second")
|
61
|
+
$Path = $Path.Replace(":","")
|
62
|
+
$Path = $Path.Replace(",","")
|
63
|
+
$Path = $Path.Replace("�","ae")
|
64
|
+
$Path = $Path.Replace("�","oe")
|
65
|
+
$Path = $Path.Replace("�","ue")
|
66
|
+
$Path = $Path.Replace("�","ss")
|
67
|
+
|
68
|
+
$Value = [System.Math]::Round(($ObjNet.CookedValue),0)
|
69
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
70
|
+
|
71
|
+
Write-Host "$Path $Value $Time"
|
72
|
+
|
73
|
+
}
|
74
|
+
|
75
|
+
}
|
@@ -22,14 +22,22 @@
|
|
22
22
|
# Copyright 2016 sensu-plugins
|
23
23
|
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
24
|
#
|
25
|
+
param(
|
26
|
+
[switch]$UseFullyQualifiedHostname
|
27
|
+
)
|
28
|
+
|
25
29
|
$ThisProcess = Get-Process -Id $pid
|
26
30
|
$ThisProcess.PriorityClass = "BelowNormal"
|
27
31
|
|
28
|
-
|
29
|
-
$Path = $Path.ToLower()
|
32
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
30
33
|
|
31
|
-
$
|
34
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
35
|
+
$Path = ($env:computername).ToLower()
|
36
|
+
}else {
|
37
|
+
$Path = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
38
|
+
}
|
32
39
|
|
33
|
-
$
|
40
|
+
$Value = (Get-WmiObject Win32_PerfFormattedData_PerfOS_System).ProcessorQueueLength
|
41
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
34
42
|
|
35
|
-
Write-Host "$Path.
|
43
|
+
Write-Host "$Path.cpu.queue_length $Value $Time"
|
@@ -22,14 +22,29 @@
|
|
22
22
|
# Copyright 2016 sensu-plugins
|
23
23
|
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
24
|
#
|
25
|
+
param(
|
26
|
+
[switch]$UseFullyQualifiedHostname
|
27
|
+
)
|
28
|
+
|
25
29
|
$ThisProcess = Get-Process -Id $pid
|
26
30
|
$ThisProcess.PriorityClass = "BelowNormal"
|
27
31
|
|
32
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
33
|
+
|
34
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
35
|
+
$Path = ($env:computername).ToLower()
|
36
|
+
}else {
|
37
|
+
$Path = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
38
|
+
}
|
39
|
+
|
28
40
|
$FreeMemory = (Get-WmiObject -Query "SELECT TotalVisibleMemorySize, FreePhysicalMemory FROM Win32_OperatingSystem").FreePhysicalMemory
|
29
41
|
$TotalMemory = (Get-WmiObject -Query "SELECT TotalVisibleMemorySize, FreePhysicalMemory FROM Win32_OperatingSystem").TotalVisibleMemorySize
|
42
|
+
$UsedMemory = $TotalMemory-$FreeMemory
|
30
43
|
|
31
|
-
$Path = (hostname).ToLower()
|
32
44
|
$Value = [System.Math]::Round(((($TotalMemory-$FreeMemory)/$TotalMemory)*100),2)
|
33
|
-
$Time =
|
45
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
34
46
|
|
35
|
-
Write-host "$Path.
|
47
|
+
Write-host "$Path.memory.free $FreeMemory $Time"
|
48
|
+
Write-host "$Path.memory.total $TotalMemory $Time"
|
49
|
+
Write-host "$Path.memory.used $UsedMemory $Time"
|
50
|
+
Write-host "$Path.memory.percent.used $Value $Time"
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# metric-windows-system.ps1
|
3
|
+
#
|
4
|
+
# DESCRIPTION:
|
5
|
+
# This plugin collects and outputs some System Perfomance Counters in a Graphite acceptable format.
|
6
|
+
#
|
7
|
+
# OUTPUT:
|
8
|
+
# metric data
|
9
|
+
#
|
10
|
+
# PLATFORMS:
|
11
|
+
# Windows
|
12
|
+
#
|
13
|
+
# DEPENDENCIES:
|
14
|
+
# Powershell
|
15
|
+
#
|
16
|
+
# USAGE:
|
17
|
+
# Powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -NoLogo -File C:\\etc\\sensu\\plugins\\metric-windows-sytem.ps1
|
18
|
+
#
|
19
|
+
# NOTES:
|
20
|
+
#
|
21
|
+
# LICENSE:
|
22
|
+
# Copyright 2016 sensu-plugins
|
23
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
24
|
+
#
|
25
|
+
|
26
|
+
param(
|
27
|
+
[switch]$UseFullyQualifiedHostname
|
28
|
+
)
|
29
|
+
|
30
|
+
$ThisProcess = Get-Process -Id $pid
|
31
|
+
$ThisProcess.PriorityClass = "BelowNormal"
|
32
|
+
|
33
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
34
|
+
|
35
|
+
if ($UseFullyQualifiedHostname -eq $false) {
|
36
|
+
$Path = ($env:computername).ToLower()
|
37
|
+
}else {
|
38
|
+
$Path = [System.Net.Dns]::GetHostEntry([string]"localhost").HostName.toLower()
|
39
|
+
}
|
40
|
+
|
41
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'Processor Information'
|
42
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
43
|
+
$perfCounterID = Get-PerformanceCounterByID -Name 'Interrupts/sec'
|
44
|
+
$localizedCounterName = Get-PerformanceCounterLocalName -ID $perfCounterID
|
45
|
+
$count_interrupt = [System.Math]::Round((Get-Counter "\$localizedCategoryName(_total)\$localizedCounterName" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue)
|
46
|
+
|
47
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'System'
|
48
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
49
|
+
$perfCounterID = Get-PerformanceCounterByID -Name 'Context Switches/sec'
|
50
|
+
$localizedCounterName = Get-PerformanceCounterLocalName -ID $perfCounterID
|
51
|
+
$count_context = [System.Math]::Round((Get-Counter "\$localizedCategoryName\$localizedCounterName" -SampleInterval 1 -MaxSamples 1).CounterSamples.CookedValue)
|
52
|
+
|
53
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
54
|
+
|
55
|
+
Write-Host "$Path.system.irq_per_second $count_interrupt $Time"
|
56
|
+
Write-Host "$Path.system.context_switches_per_second $count_context $Time"
|
@@ -25,10 +25,18 @@
|
|
25
25
|
$ThisProcess = Get-Process -Id $pid
|
26
26
|
$ThisProcess.PriorityClass = "BelowNormal"
|
27
27
|
|
28
|
-
|
28
|
+
. (Join-Path $PSScriptRoot perfhelper.ps1)
|
29
|
+
|
30
|
+
$perfCategoryID = Get-PerformanceCounterByID -Name 'System'
|
31
|
+
$localizedCategoryName = Get-PerformanceCounterLocalName -ID $perfCategoryID
|
32
|
+
|
33
|
+
$perfCounterID = Get-PerformanceCounterByID -Name 'System Up Time'
|
34
|
+
$localizedCounterName = Get-PerformanceCounterLocalName -ID $perfCounterID
|
35
|
+
|
36
|
+
$Counter = ((Get-Counter "\$localizedCategoryName\$localizedCounterName").CounterSamples)
|
29
37
|
|
30
38
|
$Path = ($Counter.Path).Trim("\\") -replace " ","_" -replace "\\","." -replace "[\{\}]","" -replace "[\[\]]",""
|
31
39
|
$Value = [System.Math]::Truncate($Counter.CookedValue)
|
32
|
-
$Time =
|
40
|
+
$Time = DateTimeToUnixTimestamp -DateTime (Get-Date)
|
33
41
|
|
34
42
|
Write-Host "$Path $Value $Time"
|
@@ -0,0 +1,106 @@
|
|
1
|
+
#
|
2
|
+
# perfhelper.ps1
|
3
|
+
#
|
4
|
+
# DESCRIPTION:
|
5
|
+
# This is file provides useful functions for powershell based metric checks
|
6
|
+
#
|
7
|
+
# OUTPUT:
|
8
|
+
# metric data
|
9
|
+
#
|
10
|
+
# PLATFORMS:
|
11
|
+
# Windows
|
12
|
+
#
|
13
|
+
# DEPENDENCIES:
|
14
|
+
# Powershell
|
15
|
+
#
|
16
|
+
# USAGE:
|
17
|
+
# To use these functions dot source this file.
|
18
|
+
# Example: . (Join-Path $PSScriptRoot perfhelper.ps1)
|
19
|
+
#
|
20
|
+
# NOTES:
|
21
|
+
#
|
22
|
+
# LICENSE:
|
23
|
+
# Copyright 2016 sensu-plugins
|
24
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
25
|
+
#
|
26
|
+
#
|
27
|
+
# Taken from: http://www.powershellmagazine.com/2013/07/19/querying-performance-counters-from-powershell/
|
28
|
+
# THX!
|
29
|
+
#
|
30
|
+
|
31
|
+
|
32
|
+
function Get-PerformanceCounterByID
|
33
|
+
{
|
34
|
+
param
|
35
|
+
(
|
36
|
+
[Parameter(Mandatory=$true)]
|
37
|
+
$Name
|
38
|
+
)
|
39
|
+
|
40
|
+
$hashfile = (Join-Path $PSScriptRoot perfhash.hsh)
|
41
|
+
|
42
|
+
if ([System.IO.File]::Exists($hashfile)) {
|
43
|
+
|
44
|
+
$perfHash = Import-Clixml -Path $hashfile
|
45
|
+
}
|
46
|
+
|
47
|
+
if ($perfHash -eq $null)
|
48
|
+
{
|
49
|
+
|
50
|
+
$key = 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009'
|
51
|
+
$counters = (Get-ItemProperty -Path $key -Name Counter).Counter
|
52
|
+
$perfHash = @{}
|
53
|
+
$all = $counters.Count
|
54
|
+
|
55
|
+
for($i = 0; $i -lt $all; $i+=2)
|
56
|
+
{
|
57
|
+
$perfHash.$($counters[$i+1]) = $counters[$i]
|
58
|
+
}
|
59
|
+
|
60
|
+
Export-Clixml -InputObject $perfHash -Path $hashfile
|
61
|
+
|
62
|
+
}
|
63
|
+
|
64
|
+
$perfHash.$Name
|
65
|
+
}
|
66
|
+
|
67
|
+
$signature = @'
|
68
|
+
[DllImport("pdh.dll", SetLastError = true, CharSet = CharSet.Unicode)]
|
69
|
+
static extern UInt32 PdhLookupPerfNameByIndex(string szMachineName, uint dwNameIndex, StringBuilder szNameBuffer, ref uint pcchNameBufferSize);
|
70
|
+
'@;
|
71
|
+
|
72
|
+
Function Get-PerformanceCounterLocalName
|
73
|
+
{
|
74
|
+
param
|
75
|
+
(
|
76
|
+
[UInt32]
|
77
|
+
$ID,
|
78
|
+
|
79
|
+
$ComputerName = $env:COMPUTERNAME
|
80
|
+
)
|
81
|
+
|
82
|
+
$code = '[DllImport("pdh.dll", SetLastError=true, CharSet=CharSet.Unicode)] public static extern UInt32 PdhLookupPerfNameByIndex(string szMachineName, uint dwNameIndex, System.Text.StringBuilder szNameBuffer, ref uint pcchNameBufferSize);'
|
83
|
+
|
84
|
+
$Buffer = New-Object System.Text.StringBuilder(1024)
|
85
|
+
[UInt32]$BufferSize = $Buffer.Capacity
|
86
|
+
|
87
|
+
$t = Add-Type -MemberDefinition $code -PassThru -Name PerfCounter -Namespace Utility
|
88
|
+
$rv = $t::PdhLookupPerfNameByIndex($ComputerName, $id, $Buffer, [Ref]$BufferSize)
|
89
|
+
|
90
|
+
if ($rv -eq 0)
|
91
|
+
{
|
92
|
+
$Buffer.ToString().Substring(0, $BufferSize-1)
|
93
|
+
}
|
94
|
+
else
|
95
|
+
{
|
96
|
+
Throw 'Get-PerformanceCounterLocalName : Unable to retrieve localized name. Check computer name and performance counter ID.'
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
Function DateTimeToUnixTimestamp([datetime]$DateTime)
|
101
|
+
{
|
102
|
+
$utcDate = $DateTime.ToUniversalTime()
|
103
|
+
# Convert to a Unix time without any rounding
|
104
|
+
[uint64]$UnixTime = [double]::Parse((Get-Date -Date $utcDate -UFormat %s))
|
105
|
+
return [uint64]$UnixTime
|
106
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-windows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -153,8 +153,8 @@ dependencies:
|
|
153
153
|
description: Sensu plugins for Windows
|
154
154
|
email: "<sensu-users@googlegroups.com>"
|
155
155
|
executables:
|
156
|
-
- check-windows-cpu-load.rb
|
157
156
|
- check-windows-disk.rb
|
157
|
+
- check-windows-cpu-load.rb
|
158
158
|
- check-windows-process.rb
|
159
159
|
- check-windows-processor-queue-length.rb
|
160
160
|
- check-windows-ram.rb
|
@@ -194,10 +194,13 @@ files:
|
|
194
194
|
- bin/powershell/check-windows-service.ps1
|
195
195
|
- bin/powershell/metric-windows-cpu-load.ps1
|
196
196
|
- bin/powershell/metric-windows-disk-usage.ps1
|
197
|
+
- bin/powershell/metric-windows-disk.ps1
|
197
198
|
- bin/powershell/metric-windows-network.ps1
|
198
199
|
- bin/powershell/metric-windows-processor-queue-length.ps1
|
199
200
|
- bin/powershell/metric-windows-ram-usage.ps1
|
201
|
+
- bin/powershell/metric-windows-system.ps1
|
200
202
|
- bin/powershell/metric-windows-uptime.ps1
|
203
|
+
- bin/powershell/perfhelper.ps1
|
201
204
|
- lib/sensu-plugins-windows.rb
|
202
205
|
- lib/sensu-plugins-windows/version.rb
|
203
206
|
homepage: https://github.com/sensu-plugins/sensu-plugins-windows
|
@@ -226,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
229
|
version: '0'
|
227
230
|
requirements: []
|
228
231
|
rubyforge_project:
|
229
|
-
rubygems_version: 2.
|
232
|
+
rubygems_version: 2.6.13
|
230
233
|
signing_key:
|
231
234
|
specification_version: 4
|
232
235
|
summary: Sensu plugins for Windows
|