This template discover physical disk thrue a powershell code.
As i hate myself to deploy third party scripts on my agents, the powershell code is embeded in this template macro, this mean that you don’t have to deploy any additionnal scripts to get it work.
It also use “zabbix active” items to get work behind firewall.
Data are retrieved thrue perfmon values, the template has been made to be compatible with all OS language using numeric value of perfcounter.
This template is better than others because this one calculate the IOPS per physical disk instead of logical drive, meaning a better estimation of true saturation of a disk.
If trigger fire on physical disk too much, it’s time to buy SSD :)
Look at the attached screenshots to get a better idea of it.
Enjoy
PS: powershell macro has been base64 encoded to be more easy to deploy, if you do not trust the code you can easily revert it back to something readable or just look at the Zabbix Agent log to see the command executed
Tested from Windows 7 till 2016 with success.
Cédric MARCOUX
Name | Description | Default | Type |
---|---|---|---|
{$DISCOVERDISK1} | <p>-</p> | JABkAHIAaQB2AGUAcwAgAD0AIABHAGUAdAAtAFcAbQBpAE8AYgBqAGUAYwB0ACAAdwBpAG4AMwAyAF8AUABlAHIAZgBGAG8AcgBtAGEAdAB0AGUAZABEAGEAdABhAF8AUABlAHIAZgBEAGkAcwBrAF8AUABoAHkAcwBpAGMAYQBsAEQAaQBzAGsAIAB8ACAAPwB7ACQAXwAuAG4AYQBtAGUAIAAtAG4AZQAgACIAXwBUAG8AdABhAGwAIgB9ACA |
Text macro |
{$DISCOVERDISK2} | <p>-</p> | AfAAgAFMAZQBsAGUAYwB0ACAATgBhAG0AZQA7ACQAaQBkAHgAIAA9ACAAMQA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiAHsAIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiACAAYAAiAGQAYQB0AGEAYAAiADoAWwBgAG4AIgA7AGYAbwByAGUAYQBjAGgAIAAoACQAcABlAHIAZgBEAHIAaQB2AGUAcwAgAGkAbgAgACQAZAByAGkAdgBlAH |
Text macro |
{$DISCOVERDISK3} | <p>-</p> | MAKQB7AGkAZgAgACgAJABpAGQAeAAgAC0AbAB0ACAAJABkAHIAaQB2AGUAcwAuAEMAbwB1AG4AdAApAHsAIAAgACAAIAAgACAAIAAkAGwAaQBuAGUAPQAgACIAewAgAGAAIgB7ACMARABJAFMASwBOAFUATQBMAEUAVAB9AGAAIgAgADoAIABgACIAIgAgACsAIAAkAHAAZQByAGYARAByAGkAdgBlAHMALgBOAGEAbQBlACAAKwAgACIAYAAiA |
Text macro |
{$DISCOVERDISK4} | <p>-</p> | CAAfQAsACIAOwB3AHIAaQB0AGUALQBoAG8AcwB0ACAAJABsAGkAbgBlADsAfQBlAGwAcwBlAGkAZgAgACgAJABpAGQAeAAgAC0AZwBlACAAJABkAHIAaQB2AGUAcwAuAEMAbwB1AG4AdAApAHsAJABsAGkAbgBlAD0AIAAiAHsAIABgACIAewAjAEQASQBTAEsATgBVAE0ATABFAFQAfQBgACIAIAA6ACAAYAAiACIAIAArACAAJABwAGUAcgBm |
Text macro |
{$DISCOVERDISK5} | <p>-</p> | AEQAcgBpAHYAZQBzAC4ATgBhAG0AZQAgACsAIAAiAGAAIgAgAH0AIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAkAGwAaQBuAGUAOwB9ACQAaQBkAHgAKwArADsAfQA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAOwB3AHIAaQB0AGUALQBoAG8AcwB0ACAAIgAgAF0AIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiAH0AIgA7AA0ACgA= |
Text macro |
There are no template links in this template.
Name | Description | Type | Key and additional info | |
---|---|---|---|---|
Discover PhysicalDisk | <p>Encoded command splitted in 5 macro: $drives = Get-WmiObject win32_PerfFormattedData_PerfDisk_PhysicalDisk | ?{$_.name -ne “_Total”} | Select Name;$idx = 1;write-host “{“;write-host “ "data ”:[n";foreach ($perfDrives in $drives){if ($idx -lt $drives.Count){ $line= "{ ”{#DISKNUMLET}" : ”” + $perfDrives.Name + “" },";write-host $line;}elseif ($idx -ge $drives.Count){$line= "{ ”{#DISKNUMLET}" : ”” + $perfDrives.Name + “" }";write-host $line;}$idx++;};write-host;write-host " ]";write-host "}";</p>| Zabbix agent (active)` |
system.run[%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy ByPass -nologo -EncodedCommand {$DISCOVERDISK1}{$DISCOVERDISK2}{$DISCOVERDISK3}{$DISCOVERDISK4}{$DISCOVERDISK5}]<p>Update: 1d</p> |
Name | Description | Type | Key and additional info |
---|---|---|---|
Disk ({#DISKNUMLET}) - Average Disk Bytes Total | <p>-</p> | Calculated |
AvgDiskBytesTotal[({#DISKNUMLET})]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - % Disk saturation | <p>-</p> | Calculated |
DiskSaturation[({#DISKNUMLET})]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Current Disk Queue Length | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\198”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Read (Latency) | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\208”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Write (Latency) | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\210”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Transfer (Latency) | <p>Avg. Disk sec/Transfer (Avg. Disk sec/Read, Avg. Disk sec/Write) Displays the average time the disk transfers took to complete, in seconds. Although the scale is seconds, the counter has millisecond precision, meaning a value of 0.004 indicates the average time for disk transfers to complete was 4 milliseconds. This is the counter in Perfmon used to measure IO latency.</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\212”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Average Disk Bytes Read | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\226”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Average Disk Bytes Write | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\228”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk Queue Length | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\1400”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - % Idle Time | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\1482”]<p>Update: 15s</p><p>LLD</p> |
Name | Description | Expression | Priority |
---|---|---|---|
Disk ({#DISKNUMLET}) - Disk activity saturation for 5 minutes | <p>% Idle Time This counter provides a very precise measurement of how much time the disk remained in idle state, meaning all the requests from the operating system to the disk have been completed and there is zero pending requests. This is how it’s calculated, the system timestamps an event when the disk goes idle, then timestamps another event when the disk receives a new request. At the end of the capture interval, we calculate the percentage of the time spent in idle. This counter ranges from 100 (meaning always Idle) to 0 (meaning always busy).</p> | <p>Expression: {Windows Physical Disk IOPS:DiskSaturation[({#DISKNUMLET})].avg(5m)}>=99 or {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 1400”].avg(1m)}>=20</p><p>Recovery expression: {Windows Physical Disk IOPS:DiskSaturation[({#DISKNUMLET})].avg(5m)}<99 or {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 1400”].avg(1m)}<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk high latency (>20ms) since 1 minute | <p>Should not be higher than ~20ms</p> | <p>Expression: {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 212”].avg(1m)}>=20</p><p>Recovery expression: {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 212”].avg(1m)}<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk activity saturation for 5 minutes (LLD) | <p>% Idle Time This counter provides a very precise measurement of how much time the disk remained in idle state, meaning all the requests from the operating system to the disk have been completed and there is zero pending requests. This is how it’s calculated, the system timestamps an event when the disk goes idle, then timestamps another event when the disk receives a new request. At the end of the capture interval, we calculate the percentage of the time spent in idle. This counter ranges from 100 (meaning always Idle) to 0 (meaning always busy).</p> | <p>Expression: {Windows Physical Disk IOPS:DiskSaturation[({#DISKNUMLET})].avg(5m)}>=99 or {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 1400”].avg(1m)}>=20</p><p>Recovery expression: {Windows Physical Disk IOPS:DiskSaturation[({#DISKNUMLET})].avg(5m)}<99 or {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 1400”].avg(1m)}<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk high latency (>20ms) since 1 minute (LLD) | <p>Should not be higher than ~20ms</p> | <p>Expression: {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 212”].avg(1m)}>=20</p><p>Recovery expression: {Windows Physical Disk IOPS:perf_counter[” 234({#DISKNUMLET}) 212”].avg(1m)}<20</p> | warning |
This template discover physical disk thrue a powershell code.
As i hate myself to deploy third party scripts on my agents, the powershell code is embeded in this template macro, this mean that you don’t have to deploy any additionnal scripts to get it work.
It also use “zabbix active” items to get work behind firewall.
Data are retrieved thrue perfmon values, the template has been made to be compatible with all OS language using numeric value of perfcounter.
This template is better than others because this one calculate the IOPS per physical disk instead of logical drive, meaning a better estimation of true saturation of a disk.
If trigger fire on physical disk too much, it’s time to buy SSD :)
Look at the attached screenshots to get a better idea of it.
Enjoy
PS: powershell macro has been base64 encoded to be more easy to deploy, if you do not trust the code you can easily revert it back to something readable or just look at the Zabbix Agent log to see the command executed
Tested from Windows 7 till 2016 with success.
Cédric MARCOUX
Name | Description | Default | Type |
---|---|---|---|
{$DISCOVERDISK1} | <p>-</p> | JABkAHIAaQB2AGUAcwAgAD0AIABHAGUAdAAtAFcAbQBpAE8AYgBqAGUAYwB0ACAAdwBpAG4AMwAyAF8AUABlAHIAZgBGAG8AcgBtAGEAdAB0AGUAZABEAGEAdABhAF8AUABlAHIAZgBEAGkAcwBrAF8AUABoAHkAcwBpAGMAYQBsAEQAaQBzAGsAIAB8ACAAPwB7ACQAXwAuAG4AYQBtAGUAIAAtAG4AZQAgACIAXwBUAG8AdABhAGwAIgB9ACA |
Text macro |
{$DISCOVERDISK2} | <p>-</p> | AfAAgAFMAZQBsAGUAYwB0ACAATgBhAG0AZQA7ACQAaQBkAHgAIAA9ACAAMQA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiAHsAIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiACAAYAAiAGQAYQB0AGEAYAAiADoAWwBgAG4AIgA7AGYAbwByAGUAYQBjAGgAIAAoACQAcABlAHIAZgBEAHIAaQB2AGUAcwAgAGkAbgAgACQAZAByAGkAdgBlAH |
Text macro |
{$DISCOVERDISK3} | <p>-</p> | MAKQB7AGkAZgAgACgAJABpAGQAeAAgAC0AbAB0ACAAJABkAHIAaQB2AGUAcwAuAEMAbwB1AG4AdAApAHsAIAAgACAAIAAgACAAIAAkAGwAaQBuAGUAPQAgACIAewAgAGAAIgB7ACMARABJAFMASwBOAFUATQBMAEUAVAB9AGAAIgAgADoAIABgACIAIgAgACsAIAAkAHAAZQByAGYARAByAGkAdgBlAHMALgBOAGEAbQBlACAAKwAgACIAYAAiA |
Text macro |
{$DISCOVERDISK4} | <p>-</p> | CAAfQAsACIAOwB3AHIAaQB0AGUALQBoAG8AcwB0ACAAJABsAGkAbgBlADsAfQBlAGwAcwBlAGkAZgAgACgAJABpAGQAeAAgAC0AZwBlACAAJABkAHIAaQB2AGUAcwAuAEMAbwB1AG4AdAApAHsAJABsAGkAbgBlAD0AIAAiAHsAIABgACIAewAjAEQASQBTAEsATgBVAE0ATABFAFQAfQBgACIAIAA6ACAAYAAiACIAIAArACAAJABwAGUAcgBm |
Text macro |
{$DISCOVERDISK5} | <p>-</p> | AEQAcgBpAHYAZQBzAC4ATgBhAG0AZQAgACsAIAAiAGAAIgAgAH0AIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAkAGwAaQBuAGUAOwB9ACQAaQBkAHgAKwArADsAfQA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAOwB3AHIAaQB0AGUALQBoAG8AcwB0ACAAIgAgAF0AIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiAH0AIgA7AA0ACgA= |
Text macro |
There are no template links in this template.
Name | Description | Type | Key and additional info | |
---|---|---|---|---|
Discover PhysicalDisk | <p>Encoded command splitted in 5 macro: $drives = Get-WmiObject win32_PerfFormattedData_PerfDisk_PhysicalDisk | ?{$_.name -ne “_Total”} | Select Name;$idx = 1;write-host “{“;write-host “ "data ”:[n";foreach ($perfDrives in $drives){if ($idx -lt $drives.Count){ $line= "{ ”{#DISKNUMLET}" : ”” + $perfDrives.Name + “" },";write-host $line;}elseif ($idx -ge $drives.Count){$line= "{ ”{#DISKNUMLET}" : ”” + $perfDrives.Name + “" }";write-host $line;}$idx++;};write-host;write-host " ]";write-host "}";</p>| Zabbix agent (active)` |
system.run[%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy ByPass -nologo -EncodedCommand {$DISCOVERDISK1}{$DISCOVERDISK2}{$DISCOVERDISK3}{$DISCOVERDISK4}{$DISCOVERDISK5}]<p>Update: 1d</p> |
Name | Description | Type | Key and additional info |
---|---|---|---|
Disk ({#DISKNUMLET}) - Average Disk Bytes Total | <p>-</p> | Calculated |
AvgDiskBytesTotal[({#DISKNUMLET})]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - % Disk saturation | <p>-</p> | Calculated |
DiskSaturation[({#DISKNUMLET})]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Current Disk Queue Length | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\198”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Read (Latency) | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\208”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Write (Latency) | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\210”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Transfer (Latency) | <p>Avg. Disk sec/Transfer (Avg. Disk sec/Read, Avg. Disk sec/Write) Displays the average time the disk transfers took to complete, in seconds. Although the scale is seconds, the counter has millisecond precision, meaning a value of 0.004 indicates the average time for disk transfers to complete was 4 milliseconds. This is the counter in Perfmon used to measure IO latency.</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\212”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Average Disk Bytes Read | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\226”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Average Disk Bytes Write | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\228”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk Queue Length | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\1400”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - % Idle Time | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\1482”]<p>Update: 15s</p><p>LLD</p> |
Name | Description | Expression | Priority |
---|---|---|---|
Disk ({#DISKNUMLET}) - Disk activity saturation for 5 minutes | <p>% Idle Time This counter provides a very precise measurement of how much time the disk remained in idle state, meaning all the requests from the operating system to the disk have been completed and there is zero pending requests. This is how it’s calculated, the system timestamps an event when the disk goes idle, then timestamps another event when the disk receives a new request. At the end of the capture interval, we calculate the percentage of the time spent in idle. This counter ranges from 100 (meaning always Idle) to 0 (meaning always busy).</p> | <p>Expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)>=99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)<99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk high latency (>20ms) since 1 minute | <p>Should not be higher than ~20ms</p> | <p>Expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk activity saturation for 5 minutes (LLD) | <p>% Idle Time This counter provides a very precise measurement of how much time the disk remained in idle state, meaning all the requests from the operating system to the disk have been completed and there is zero pending requests. This is how it’s calculated, the system timestamps an event when the disk goes idle, then timestamps another event when the disk receives a new request. At the end of the capture interval, we calculate the percentage of the time spent in idle. This counter ranges from 100 (meaning always Idle) to 0 (meaning always busy).</p> | <p>Expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)>=99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)<99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk high latency (>20ms) since 1 minute (LLD) | <p>Should not be higher than ~20ms</p> | <p>Expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)<20</p> | warning |
This template discover physical disk thrue a powershell code.
As i hate myself to deploy third party scripts on my agents, the powershell code is embeded in this template macro, this mean that you don’t have to deploy any additionnal scripts to get it work.
It also use “zabbix active” items to get work behind firewall.
Data are retrieved thrue perfmon values, the template has been made to be compatible with all OS language using numeric value of perfcounter.
This template is better than others because this one calculate the IOPS per physical disk instead of logical drive, meaning a better estimation of true saturation of a disk.
If trigger fire on physical disk too much, it’s time to buy SSD :)
Look at the attached screenshots to get a better idea of it.
Enjoy
PS: powershell macro has been base64 encoded to be more easy to deploy, if you do not trust the code you can easily revert it back to something readable or just look at the Zabbix Agent log to see the command executed
Tested from Windows 7 till 2016 with success.
Cédric MARCOUX
Name | Description | Default | Type |
---|---|---|---|
{$DISCOVERDISK1} | <p>-</p> | JABkAHIAaQB2AGUAcwAgAD0AIABHAGUAdAAtAFcAbQBpAE8AYgBqAGUAYwB0ACAAdwBpAG4AMwAyAF8AUABlAHIAZgBGAG8AcgBtAGEAdAB0AGUAZABEAGEAdABhAF8AUABlAHIAZgBEAGkAcwBrAF8AUABoAHkAcwBpAGMAYQBsAEQAaQBzAGsAIAB8ACAAPwB7ACQAXwAuAG4AYQBtAGUAIAAtAG4AZQAgACIAXwBUAG8AdABhAGwAIgB9ACA |
Text macro |
{$DISCOVERDISK2} | <p>-</p> | AfAAgAFMAZQBsAGUAYwB0ACAATgBhAG0AZQA7ACQAaQBkAHgAIAA9ACAAMQA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiAHsAIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiACAAYAAiAGQAYQB0AGEAYAAiADoAWwBgAG4AIgA7AGYAbwByAGUAYQBjAGgAIAAoACQAcABlAHIAZgBEAHIAaQB2AGUAcwAgAGkAbgAgACQAZAByAGkAdgBlAH |
Text macro |
{$DISCOVERDISK3} | <p>-</p> | MAKQB7AGkAZgAgACgAJABpAGQAeAAgAC0AbAB0ACAAJABkAHIAaQB2AGUAcwAuAEMAbwB1AG4AdAApAHsAIAAgACAAIAAgACAAIAAkAGwAaQBuAGUAPQAgACIAewAgAGAAIgB7ACMARABJAFMASwBOAFUATQBMAEUAVAB9AGAAIgAgADoAIABgACIAIgAgACsAIAAkAHAAZQByAGYARAByAGkAdgBlAHMALgBOAGEAbQBlACAAKwAgACIAYAAiA |
Text macro |
{$DISCOVERDISK4} | <p>-</p> | CAAfQAsACIAOwB3AHIAaQB0AGUALQBoAG8AcwB0ACAAJABsAGkAbgBlADsAfQBlAGwAcwBlAGkAZgAgACgAJABpAGQAeAAgAC0AZwBlACAAJABkAHIAaQB2AGUAcwAuAEMAbwB1AG4AdAApAHsAJABsAGkAbgBlAD0AIAAiAHsAIABgACIAewAjAEQASQBTAEsATgBVAE0ATABFAFQAfQBgACIAIAA6ACAAYAAiACIAIAArACAAJABwAGUAcgBm |
Text macro |
{$DISCOVERDISK5} | <p>-</p> | AEQAcgBpAHYAZQBzAC4ATgBhAG0AZQAgACsAIAAiAGAAIgAgAH0AIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAkAGwAaQBuAGUAOwB9ACQAaQBkAHgAKwArADsAfQA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAOwB3AHIAaQB0AGUALQBoAG8AcwB0ACAAIgAgAF0AIgA7AHcAcgBpAHQAZQAtAGgAbwBzAHQAIAAiAH0AIgA7AA0ACgA= |
Text macro |
There are no template links in this template.
Name | Description | Type | Key and additional info | |
---|---|---|---|---|
Discover PhysicalDisk | <p>Encoded command splitted in 5 macro: $drives = Get-WmiObject win32_PerfFormattedData_PerfDisk_PhysicalDisk | ?{$_.name -ne “_Total”} | Select Name;$idx = 1;write-host “{“;write-host “ "data ”:[n";foreach ($perfDrives in $drives){if ($idx -lt $drives.Count){ $line= "{ ”{#DISKNUMLET}" : ”” + $perfDrives.Name + “" },";write-host $line;}elseif ($idx -ge $drives.Count){$line= "{ ”{#DISKNUMLET}" : ”” + $perfDrives.Name + “" }";write-host $line;}$idx++;};write-host;write-host " ]";write-host "}";</p>| Zabbix agent (active)` |
system.run[%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy ByPass -nologo -EncodedCommand {$DISCOVERDISK1}{$DISCOVERDISK2}{$DISCOVERDISK3}{$DISCOVERDISK4}{$DISCOVERDISK5}]<p>Update: 1d</p> |
Name | Description | Type | Key and additional info |
---|---|---|---|
Disk ({#DISKNUMLET}) - Average Disk Bytes Total | <p>-</p> | Calculated |
AvgDiskBytesTotal[({#DISKNUMLET})]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - % Disk saturation | <p>-</p> | Calculated |
DiskSaturation[({#DISKNUMLET})]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Current Disk Queue Length | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\198”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Read (Latency) | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\208”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Write (Latency) | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\210”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk sec/Transfer (Latency) | <p>Avg. Disk sec/Transfer (Avg. Disk sec/Read, Avg. Disk sec/Write) Displays the average time the disk transfers took to complete, in seconds. Although the scale is seconds, the counter has millisecond precision, meaning a value of 0.004 indicates the average time for disk transfers to complete was 4 milliseconds. This is the counter in Perfmon used to measure IO latency.</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\212”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Average Disk Bytes Read | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\226”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Average Disk Bytes Write | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\228”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - Avg. Disk Queue Length | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\1400”]<p>Update: 15s</p><p>LLD</p> |
Disk ({#DISKNUMLET}) - % Idle Time | <p>-</p> | Zabbix agent (active) |
perf_counter[“\234({#DISKNUMLET})\1482”]<p>Update: 15s</p><p>LLD</p> |
Name | Description | Expression | Priority |
---|---|---|---|
Disk ({#DISKNUMLET}) - Disk activity saturation for 5 minutes | <p>% Idle Time This counter provides a very precise measurement of how much time the disk remained in idle state, meaning all the requests from the operating system to the disk have been completed and there is zero pending requests. This is how it’s calculated, the system timestamps an event when the disk goes idle, then timestamps another event when the disk receives a new request. At the end of the capture interval, we calculate the percentage of the time spent in idle. This counter ranges from 100 (meaning always Idle) to 0 (meaning always busy).</p> | <p>Expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)>=99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)<99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk high latency (>20ms) since 1 minute | <p>Should not be higher than ~20ms</p> | <p>Expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk activity saturation for 5 minutes (LLD) | <p>% Idle Time This counter provides a very precise measurement of how much time the disk remained in idle state, meaning all the requests from the operating system to the disk have been completed and there is zero pending requests. This is how it’s calculated, the system timestamps an event when the disk goes idle, then timestamps another event when the disk receives a new request. At the end of the capture interval, we calculate the percentage of the time spent in idle. This counter ranges from 100 (meaning always Idle) to 0 (meaning always busy).</p> | <p>Expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)>=99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/DiskSaturation[({#DISKNUMLET})],5m)<99 or avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 1400”],1m)<20</p> | warning |
Disk ({#DISKNUMLET}) - Disk high latency (>20ms) since 1 minute (LLD) | <p>Should not be higher than ~20ms</p> | <p>Expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)>=20</p><p>Recovery expression: avg(/Windows Physical Disk IOPS/perf_counter[” 234({#DISKNUMLET}) 212”],1m)<20</p> | warning |