You can use the "check program" to integrate that script to Monit. The script should return error in the case that the I/O limit is exceeded: https://mmonit.com/monit/documentation/monit.html#PROGRAM-STATUS-TESTING
The next M/Monit release will support custom charts, so it'll be possible to render charts for I/O. We also plan to add native I/O monitoring to Monit and related charts to M/Monit, so it'll be easier to use. Best regards, Martin > On 26 May 2016, at 14:31, Pierre-Philipp Braun <[email protected]> wrote: > > Many thanks Viktor for your input. I also need IO performance monitoring > (not esp. lacenty like Bryna, graphs reporting usage would yet be nice) so I > wrote a little script based on your/Munin's method, > > #!/bin/bash > > [[ ! -d /sys/block/ ]] && echo /sys/block/ does not exist, exiting && exit 1 > #[[ ! -d /var/cache/monit/ ]] && echo /var/cache/monit/ does not exist, > exiting && exit 1 > mkdir -p /var/cache/monit/ > > for disk in `ls -1 /sys/block/ | egrep -v '^fd|^dm-|^sr'`; do > readio=`cat /sys/block/$disk/stat | awk '{print $1}'` > writeio=`cat /sys/block/$disk/stat | awk '{print $5}'` > echo "$readio,$writeio" >> /var/cache/monit/$disk.stat > unset readio writeio > done > > it produces, > > # pwd > /var/cache/monit > # ll > total 16K > drwxr-xr-x 2 root root 51 May 26 14:21 . > drwxr-xr-x. 15 root root 4.0K May 26 14:20 .. > -rw-r--r-- 1 root root 26 May 26 14:21 sda.stat > -rw-r--r-- 1 root root 18 May 26 14:21 sdb.stat > -rw-r--r-- 1 root root 12 May 26 14:21 sdc.stat > # cat * > 17579,219210 > 2292,480 > 939,3 > > How to integrate this into Monit? Is CSV a good choice as a format? > > > > On 18/05/2016 23:05, SZÉPE Viktor wrote: >> Munin does it by comparing `cat /sys/block/*/stat` e.g `cat >> /sys/block/sda/stat` with the previous reading. This file contains 11 >> values: >> https://github.com/munin-monitoring/munin/blob/devel/plugins/node.d.linux/diskstats#L440-L444 >> >> >> So previous rd_ios minus current rd_ios gives you and average IO/period. >> You may "remember" these by storing them in a file, for example in >> /var/cache/monit/sda.stat >> >> >> >> Idézem/Quoting Graham Smith <[email protected]>: >> >>> I don't think there is anything built in for that. You may not need a >>> script per se, an application may have an exit status you could use to >>> denote a fail or success of performance quality. Possibly iostat or >>> iometer >>> perhaps. >>> If it's not a simple numeric output, a wrapper script might not need >>> to be >>> long and that could output a simple exit status to denote a success >>> quality >>> which monit can handle easier. >>> >>> I always think it's best to keep complexity out of monit and if you >>> need to >>> do something fancy a script for anything odd is ultimately more >>> modular as >>> you may find other uses for it. >>> >>> Graham >>> On 18 May 2016 19:04, "Bryan Harris" <[email protected]> wrote: >>> >>>> Hello all, >>>> >>>> Does Monit have a way to measure i/o latency and alert if say a 4k write >>>> takes longer than some number of ms? I searched the mailing list and >>>> manual and do not see anything. Otherwise I can always monitor a custom >>>> script for this purpose. >>>> >>>> Thanks in advance. >>>> >>>> V/r, >>>> Bryan >>>> >>>> -- >>>> To unsubscribe: >>>> https://lists.nongnu.org/mailman/listinfo/monit-general >>>> >> >> >> >> SZÉPE Viktor > > -- > To unsubscribe: > https://lists.nongnu.org/mailman/listinfo/monit-general -- To unsubscribe: https://lists.nongnu.org/mailman/listinfo/monit-general
