By default there is no tool to measure disk IO. Bootstrap your Synology to make this possible and download the package dstat.
This is what I did on my DS411J
cd /volumes1/@tmp
and comment out the following two lines:
wget http://wizjos.endofinternet.net/synology/archief/syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
chmod +x syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
sh syno-mvkw-bootstrap_1.2-7_arm-ds111.xsh
vi /root/.profile
#PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
#export PATH
ipkg update
ipkg upgrade
ipkg install dstat
The command executed on the Synnas prompt will give you six lines of output like this. You can forget about the first line. I added the -t so I could use awk to select the lines containing the character ":"
.
# dstat --disk -t 1 5|awk ' /:/ { printf "%s:", $1 }; /:/ { print $2 }; '|/bin/sed -e "s/|.*$//g"
5129k:4352k
0:0
0:0
0:0
0:0
0:0
You can see the first line contains RW info (5129k 4352k). The rest of the lines indicate there is no RW activity right now. I think the first line gives us the last known RW average rate. So you got to forget about the first line when you extract the info.
Further more you can see this on a line too: 5129k 32M. Now we got to convert the numbers to the same unit and add up them up. Then divide them by 5 to get an average.
Now put this in your /usr/syno/etc/snmpd.conf:
extend diskrw /bin/ash -c "dstat --disk -t 1 5|awk ' /:/ { printf \"%s:\", \$1 }; /:/ { print \$2 }; '|/bin/sed -e \"s/|.*$//g\""
Restart snmpd daemon:
/usr/syno/etc/rc.d/S08snmpd.sh restart
After a reboot of my synology the command in snmp.conf gave an error output: could not find dstat. This is PATH variable problem. I did a quick fix:
ln -s /opt/bin/dstat /bin/dstat
Go to the command prompt of your monitoring server like 360viewpoint and execute the followwing command:
# snmpwalk -v 2c -c public synnas01 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio"'
NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio".1 = STRING: 3620k:3067k
NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio".2 = STRING: 0:0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio".3 = STRING: 0:0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio".4 = STRING: 0:0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio".5 = STRING: 0:0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."diskio".6 = STRING: 0:0
Remember: the first line gives you an average or something like that, the current IO information is on line 2 and further.
Now you need to write a script that will grab the info, put it in the rifght format and sends it to a monitoring engine like Nagios. You need more info about this contact me.
Leave a Reply