CHECK_DISK-IO

Script: check_disk_io

check_disk-io is a plugin to show io, ticks and wait time. It shows a multiline output and sends performance data.

Requirements

  • lsblk List information about block devices
  • bc calculator

Standalone installation

From this repository you need next to this script:

  • inc_pluginfunctions shared function for all IML checks written in bash

Syntax

______________________________________________________________________

CHECK_DISK-IO
v1.3

(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3

https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_disk_io.html
______________________________________________________________________

Disk infos based on /sys/block/[NAME]/stat
See https://www.kernel.org/doc/Documentation/block/stat.txt
and https://www.kernel.org/doc/Documentation/iostats.txt

The system data are counters that are difficult to read.
The output of this check for each value a delta value per second since 
last check.

SYNTAX:
check_disk-io -m MODE

OPTIONS:

    -h or --help   show this help.
    -m MODE        set mode for type of output (required)
    -d DIR         for measure: set a directory, default: "/tmp"
    -s SIZE        for measure: set a size, default: "100M"

PARAMETERS:

    MODE
        io         read I/Os, write I/Os, discard I/0s
        measure    measure write and read speed
        ticks      read ticks, write ticks, discard ticks
        wait       total wait time for all requests

    DIR
        Directory to perform read and write test.

    SIZE
        Block size for dd command: a number followed multiplicative suffix.
        c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M, 
        GB=1000*1000*1000, G=1024*1024*1024, and so on for T, P, E, Z, Y, R, Q

EXAMPLE:

    check_disk-io -m io
    check_disk-io -m measure
    check_disk-io -m measure -d /mnt/data -s 10M

Parameters

-m <MODE> where MODE is a string to define kind of output.

Examples

Disk io

$ check_disk-io -m io returns

OK: Disk data ... read I/Os, write I/Os, discard I/0s, number of I/Os currently in flight 

--- nvme0n1
          disk-nvme0n1-ReadIO:        401 
         disk-nvme0n1-WriteIO:         61 
       disk-nvme0n1-DiscardIO:          0 
        disk-nvme0n1-FlightIO:          0 

--- MAX
                       ReadIO:        401 
                      WriteIO:         61 
                    DiscardIO:          0 
                     FlightIO:          0 

 |readio=401;; writeio=61;; discardio=0;; flightio=0;;

Measure

The mode measure writes a randomly generated filename with dd and reads the file afterwards. From the output is the of the command we fetch the speed in MB/s or GB/s.

$ check_disk-io -m measure
OK: Disk speed in /tmp using 100M -  WRITE  952 MB/s READ  4.1 GB/s
 |write=952;; read=4198.4;;

By default the check is done in /tmp with 100MB generated random data. You can set another directory eg. to perform a check on a mounted filesystem.