Page 8 of 10

Re: HowTo: monitor Synology NAS

Posted: Monday 06 March 2017 13:56
by Erwinvos72
I have the same problem as Duduf. After an upgrade of my synology the temperuture is gone. the script is still working (updated every x minutes) but something happened with the upgrade what caused it to receive 0

The solution of Ray worked! Thnx Ray

Anyone else having this problem, I have found the "solution"
The script uses snmpget which runs fine manually, and used to run fine in the cron too. Some update (I guess Synology DSM) caused the cron to run the script correctly, but gave 0C numbers in return.

Changing the script replacing all snmpget to snmpwalk did the trick, both manually and in cron it works again.
I have to thank Martijn85 above, as he made me aware of this in his correction of the script, where I finally sportted the use of snmpwalk instead snmpget.

Cheers,

Ray

Re: HowTo: monitor Synology NAS

Posted: Monday 06 March 2017 15:03
by Erwinvos72
Hello Alwin,

Does this part solves the problem with the 1024 issue? Untill now i haven't got succes in displaying the free mem for example.

I have domoticz on my Synology 916+, can read the temperature but the other parts aren't working.


AlwinHummels wrote:I had the same isue but when I use .54 it works again om my DS 415+ with the last DSM 6.1.15047
Hope it helps

Beneath code I grabbed from the Dutch Synology Forum becouse the memory usage was wrong displayed.

Code: Select all

	       # Free Memory Used in %
       tmpMemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
	   MemAvailable=${tmpMemAvailable%% *}
       tmpMemtotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`
	   Memtotal=${tmpMemtotal%% *}
       tmpMemShared=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`
	   MemShared=${tmpMemShared%% *}
       tmpMemBuffer=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`
	   MemBuffer=${tmpMemBuffer%% *}
       tmpMemCached=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`
	   MemCached=${tmpMemCached%% *}
       MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
       MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal)) 
	   #// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))	   
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"

Re: HowTo: monitor Synology NAS

Posted: Tuesday 07 March 2017 19:42
by deennoo
LouiS22 wrote:I also have problems with this script with my DS416Play with latest firmware. The script partially works, I can get the HDD temp values, but no space used and cpu info. I've tried with .38 and .41 - it's just not working :(
same as me on my ds216play

Re: HowTo: monitor Synology NAS

Posted: Thursday 09 March 2017 23:56
by lamouette
Running XPenology on a HPN54L with DSM 5.2

I have installed pearl and panorama9 packages https://support.panorama9.com/hc/en-us/ ... MP-add-on-

Then I can retrieve directly the available space by the following:

snmpwalk -v2c -c SNMPCOMMUNITY -O qv NASIP 1.3.6.1.4.1.8072.1.3.2.3.1.2.2.112.57 | grep free | cut -d , -f 5 | cut -d : -f 2 | cut -c 2-

Result to be divided by 1048576 to see it in Go

Re: HowTo: monitor Synology NAS

Posted: Wednesday 15 March 2017 11:51
by benj29
Hi,

I've tried to monitor my 415play from Domoticz... 4 temperature sensors instead of 2.
In DSM6, i've changed OID to .41 and i've created the sensors but...

Image

taking code from wiki... https://www.domoticz.com/wiki/NAS_Monitoring

It's working for 4 temperature and OK/KO activity sensor :

Image

But error on the other sensors ... maybe i made a mistake on the code or on the sensor declaration ?
(i've tried custom sensor instead of the picture ... same issue).

Image

Re: HowTo: monitor Synology NAS

Posted: Monday 20 March 2017 13:04
by rjblake
Here is the code I use for monitoring my DS1813+ running DSM 6.1-15047 Update 1. I do not have a disk installed in Bay7, so not monitored, but the rest are all working.


Code: Select all

#!/bin/bash
 
 # Settings
 
 NASIP="192.168.178.10"      # NAS IP Address
 PASSWORD="community"        # SNMP Password
 DOMO_IP="192.168.178.10"    # Domoticz IP Address
 DOMO_PORT="8084"            # Domoticz Port
 NAS_IDX="50"                # NAS Switch IDX
 NAS_HD1_TEMP_IDX="51"       # NAS HD1 Temp IDX
 NAS_HD2_TEMP_IDX="52"       # NAS HD1 Temp IDX
 NAS_HD3_TEMP_IDX="53"       # NAS HD2 Temp IDX
 NAS_HD4_TEMP_IDX="54"       # NAS HD1 Temp IDX
 NAS_HD5_TEMP_IDX="55"       # NAS HD1 Temp IDX
 NAS_HD6_TEMP_IDX="56"       # NAS HD1 Temp IDX
 NAS_HD7_TEMP_IDX="57"       # NAS HD1 Temp IDX
 NAS_HD8_TEMP_IDX="58"       # NAS HD1 Temp IDX
 NAS_HD_SPACE_IDX="64"       # NAS HD Space IDX in Go
 NAS_HD_SPACE_PERC_IDX="63"  # NAS HD Space IDX in %
 NAS_CPU_IDX="59"            # NAS CPU IDX
 NAS_MEM_IDX="60"            # NAS MEM IDX
 NAS_CPU_TEMP="62"		   # NAS CPU Temperature
 
 
 # Check if NAS in online 
 
 PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`
 
 echo $PINGTIME
 if expr "$PINGTIME" '>' 0
 then
   curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
 
       if [ $? -eq 0 ] ; then
        echo "NAS already ON"
 
        # Temperature CPU
        CPUtemp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.1.2`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_TEMP&nvalue=0&svalue=$CPUtemp"
 
        # Temperature HD1
        HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
 
        # Temperature HD2
        HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"

        # Temperature HD3
        HDtemp3=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.2`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD3_TEMP_IDX&nvalue=0&svalue=$HDtemp3"

        # Temperature HD4
        HDtemp4=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.3`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD4_TEMP_IDX&nvalue=0&svalue=$HDtemp4"

        # Temperature HD5
        HDtemp5=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.4`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD5_TEMP_IDX&nvalue=0&svalue=$HDtemp5"

        # Temperature HD6
        HDtemp6=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.5`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD6_TEMP_IDX&nvalue=0&svalue=$HDtemp6"

        # Temperature HD7
        HDtemp7=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.6`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD7_TEMP_IDX&nvalue=0&svalue=$HDtemp7"

        # Temperature HD8
        # HDtemp8=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.7`
        # Send data
        # curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD8_TEMP_IDX&nvalue=0&svalue=$HDtemp8"

        # Free space volume in Go
        HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.4.52`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.5.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.6.52`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
 
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
 
        # Free space volume in percent
        HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.52`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDFreePerc=$((($HDUsed * 100) / $HDTotal))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
 
	    # CPU utilisation
        CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	    CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	    CpuUse=$(($CpuUser + $CpuSystem))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
 
        # Free Memory Available in %
	    MemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.4.1.2021.4.6.0`
        MemAvailableinMo=$(($MemAvailable / 1024))
	    MemUsepercent=$((($MemAvailableinMo * 100) / 1024))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
 
else
        echo "NAS ON"
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=On"

        # Temperature CPU
        CPUtemp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.1.2`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_TEMP&nvalue=0&svalue=$CPUtemp"
  
        # Temperature HD1
        HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
 
        # Temperature HD2
        HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
 
        # Temperature HD3
        HDtemp3=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.2`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp3"

        # Temperature HD4
        HDtemp4=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.3`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp4"

        # Temperature HD5
        HDtemp5=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.4`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp5"

        # Temperature HD6
        HDtemp6=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.5`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp6"

        # Temperature HD7
        HDtemp7=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.6`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp7"

        # Temperature HD8
        # HDtemp8=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.7`
        # Send data
        # curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp8"

        # Free space volume in Go
        HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.4.52`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.5.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.6.52`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
 
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
 
        # Free space volume in percent
        HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.52`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .52 in my case
        HDFreePerc=$((($HDUsed * 100) / $HDTotal))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
 
	    # CPU utilisation
        CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
        CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
        CpuUse=$(($CpuUser + $CpuSystem))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
 
        # Free Memory Available in %
        MemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.4.1.2021.4.6.0`
        MemAvailableinMo=$(($MemAvailable / 1024))
        MemUsepercent=$((($MemAvailableinMo * 100) / 1024))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
 
      fi
 
 else
        curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
        if [ $? -eq 0 ] ; then
                echo "NAS already OFF"
                exit
        else
                echo "NAS OFF"
                # Send data
                curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=Off"
        fi
 fi

Re: HowTo: monitor Synology NAS

Posted: Monday 20 March 2017 13:57
by benj29
Hi,

Thanks for your support.
Could you confirm the type of the output in Domoticz ?

Mine are :
Image

When I use your code (i've removed the 4 last temperature sensors), only HDD temperature sensors will working... and i have this error :

Code: Select all

}
./nas.sh: ligne 86: (No Such Instance currently exists at this OID - No Such Instance currently exists at this OID) * No Such Instance currently exists at this OID / 1024 / 1024 / 1024 : « ) » manquante (le symbole erroné est "Such Instance currently exists at this OID - No Such Instance currently exists at this OID) * No Such Instance currently exists at this OID / 1024 / 1024 / 1024")
Line 86 = Free Space Volume in Go.
The code does not check CPU, RAM etc... ?

Re: HowTo: monitor Synology NAS

Posted: Wednesday 22 March 2017 11:22
by rjblake
Suggest running the following command from the command line on Synology:

snmpwalk -v 2c -c"your password" "your NAS IP" 1.3.6.1.2.1.25.2.3.1 (where items in " " need to be replaced with yours)

This will return the information needed to determine the correct OID to check disk space. Look for a entry like the following (assuming you want info for /volume1):

HOST-RESOURCES-MIB::hrStorageDescr.52 = STRING: /volume1

Where .52 is correct for my setup, it may/will be something else for yours (e.g. 31, 41, 51, etc.). In the script, edit the relevant lines with the correct OID, such as:

# Free space volume in Go
HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.4.52`
HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.5.52`
HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qvU $NASIP 1.3.6.1.2.1.25.2.3.1.6.52`
HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))

Do the same type of check for CPU, RAM, etc.

My devices as attached.

Re: HowTo: monitor Synology NAS

Posted: Wednesday 22 March 2017 13:53
by benj29
I will try tonight thanks! Keep u in touch

Envoyé de mon Moto G (4) en utilisant Tapatalk

Re: HowTo: monitor Synology NAS

Posted: Wednesday 22 March 2017 13:59
by Erwinvos72
thnx to your post rjblake i saw my OID was .51
After that it worked. the values are much the same

Free space in Go (synology says 6.7TB, script ,6.918TB)
Free used space in % give me the % which is used, so i changed my text.

CPU en Mem usage i dont use, i use the motherboard feature in domoticz.

Re: HowTo: monitor Synology NAS

Posted: Wednesday 22 March 2017 15:27
by kubrik
I could suggest this free tool to test and find snmp values: https://www.paessler.com/tools/snmptester

Re: HowTo: monitor Synology NAS

Posted: Wednesday 22 March 2017 15:56
by wizjos
For a member of the Dutch Synology forum who needs to monitor various Synologys I've made an extension of the current script that lets you enter a the name of the volume want to investigate:

Code: Select all

	# Free space volume in Gb

	# Extra variable stating the name of the volume you want to read the free space of
	searchVolume="volume1"

	# read the output of the complete hrStorageDescr
	tmpVolume=`snmpwalk -v 2c -c $PASSWORD  $NASIP .1.3.6.1.2.1.25.2.3.1.3`
	# adjust string separator to line-break
	IFS=$'\n'
	# array with all hrStorageDescr's
	storageArray=($tmpVolume) 
	for index in "${!storageArray[@]}"
	do
		# is the current hrStorageDescr equal to searchVolume 
		if [[ ${storageArray[index]} =~ .*$searchVolume.* ]]
		then
			# get the complete hrStorageDescr line sought
			foundVolume=${storageArray[index]}
			# adjust string separator to '.'
			IFS=$'.'
			# split into array (eg. element 0='HOST-RESOURCES-MIB::hrStorageDescr'; element 1 ='41 = STRING: /volume1')
			foundStorageArray=($foundVolume)
			# get first two numbers as the right hrStorageDescr element number
			hrStorageDescr=${foundStorageArray[1]:0:2}
		fi
	done
	echo "hrStorageDescr of $searchVolume = $hrStorageDescr"
	# re-adjust string separator to line-break
	IFS=$'\n'
	tmpHDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.4.$hrStorageDescr`
	echo "HDUnit:" $tmpHDUnit
	HDUnit=${tmpHDUnit%% *}
	HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.$hrStorageDescr`
	echo "HDTotal:" $HDTotal
	HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.$hrStorageDescr`
	echo "HDUsed:" $HDUsed
	HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
	echo $HDFree

	# Send data
	echo "Sending data to device#:" $NAS_HD_SPACE_IDX
	curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
	echo "Data sent"

	# Free space volume in percent
	HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.$hrStorageDescr`
	echo "HDTotal:" $HDTotal
	HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.$hrStorageDescr`
	echo "HDUsed:" $HDUsed
	HDUsedPerc=$((($HDUsed * 100) / $HDTotal))
	echo "HDUsedPerc:" $HDUsedPerc

	# Send data
	echo "Sending data to device#:" $NAS_HD_SPACE_PERC_IDX
	curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDUsedPerc"
	echo "Data sent"
Works like a charm on both my Syno's.
Hope you guys find it usefull :P

Regards,

Wizjos

Re: HowTo: monitor Synology NAS

Posted: Wednesday 22 March 2017 16:11
by rjblake
@Wizjos - nice elegant solution - thanks for sharing

Re: HowTo: monitor Synology NAS

Posted: Tuesday 30 May 2017 12:08
by duduf
Martijn85 wrote:
duduf wrote:Anyone???
Do you have turned on SNMP on the NAS?
Sorry for the very late answer but I don't get a message saying someone reply at my question. I decide today to try again to get it works.
SNMP is on on the NAS.
Any idea what the problem can be?

Re: HowTo: monitor Synology NAS

Posted: Tuesday 30 May 2017 12:17
by Egregius
Why not keep it simple and just run a script on the nas to check disk space and sent warning when over a treshold?

Re: HowTo: monitor Synology NAS

Posted: Tuesday 30 May 2017 12:18
by EdwinK
wizjos wrote:For a member of the Dutch Synology forum who needs to monitor various Synologys I've made an extension of the current script that lets you enter a the name of the volume want to investigate:


Works like a charm on both my Syno's.
Hope you guys find it usefull :P

Regards,

Wizjos
Would be nice to monitor my two D110j's (if I ever can find those Power supplies).

Re: HowTo: monitor Synology NAS

Posted: Tuesday 30 May 2017 12:49
by wizjos
EdKo66 wrote:Would be nice to monitor my two D110j's (if I ever can find those Power supplies).
I'm not sure if I'm able to help you find them :mrgreen:
But if you need assistance with the script please tell me.

Regards,
Wizjos

Re: HowTo: monitor Synology NAS

Posted: Tuesday 13 June 2017 16:10
by walberg
ThaBoo wrote:@rvmourik Thanx for the script!

Got it all set up within 30 minutes.
Configuration: DS1010+ DSM 4.3-3810, Raspberry PI Domoticz V1.1492 ( and a Plugwise Circle for the power consumption)

Synology Domotics.gif
Does this script (with Plugwise Circle) also work on Domoticz on Synology? and how do i name this script?

Re: HowTo: monitor Synology NAS

Posted: Saturday 05 August 2017 7:24
by HM31
[/quote]Does this script (with Plugwise Circle) also work on Domoticz on Synology? and how do i name this script?[/quote]
Finaly, thanks to everybody in this thread, I think I got it to work with Domoticz installed on a Synology NAS (DSM 5.2) to monitor another NAS (DSM 6.0 with two HDD in 1 JBOD volume). But without Plugwise Circle.

Just have to put it in cron to get complete.

Here is the code :

Code: Select all

 #!/bin/bash
 
 # Settings
 
 NASIP="192.168.x.x"         # NAS IP Address
 PASSWORD="xxxxx"           # SNMP Password
 DOMO_IP="192.168.x.y"       # Domoticz IP Address
 DOMO_PORT="8084"            # Domoticz Port
 NAS_IDX="62"                 # NAS Switch IDX
 NAS_HD1_TEMP_IDX="63"        # NAS HD1 Temp IDX
 NAS_HD2_TEMP_IDX="64"        # NAS HD2 Temp IDX
 NAS_HD_SPACE_IDX="65"        # NAS HD Space IDX in Go
 NAS_HD_SPACE_PERC_IDX="66"   # NAS HD Space IDX in %
 NAS_CPU_IDX="68"             # NAS CPU IDX
 NAS_MEM_IDX="67"             # NAS MEM IDX
 
 
 # Check if NAS in online 
 
 PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`
 
 echo $PINGTIME
 if expr "$PINGTIME" '>' 0
 then
   curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
 
       if [ $? -eq 0 ] ; then
        echo "NAS already ON"
 
        # Temperature HD1
        HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
 
        # Temperature HD2
        HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
 
        # Free space volume in Go !! # Last OID digits based on snmpwalk -v 2c -c"password" "NAS IP" 1.3.6.1.2.1.25.2.3.1 
        tmpHDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.40`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUnit=${tmpHDUnit%% *}  
        HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.40`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
 
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
 
        # Free space volume in percent
        HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.40`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
     	HDFreePerc=$(((($HDTotal - $HDUsed) * 100) / $HDTotal))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
 
	# CPU utilisation
        CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	CpuUse=$(($CpuUser + $CpuSystem))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
 
	# Memory Used in %
	tmpMemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
	MemAvailable=${tmpMemAvailable%% *}
	tmpMemtotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`
	Memtotal=${tmpMemtotal%% *}
	tmpMemShared=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`
	MemShared=${tmpMemShared%% *}
	tmpMemBuffer=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`
	MemBuffer=${tmpMemBuffer%% *}
	tmpMemCached=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`
	MemCached=${tmpMemCached%% *}
	MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
	MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal))
	#// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))      
	# Send data
  	curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent" 
else
        echo "NAS ON"
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=On"
 
        # Temperature HD1
        HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
 
        # Temperature HD2
        HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
 
        # Free space volume in Go !! # Last OID digit based on snmpwalk -v 2c -c"password" "NAS IP" 1.3.6.1.2.1.25.2.3.1 
        tmpHDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.40`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUnit=${tmpHDUnit%% *}
        HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.40`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
 
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
 
        # Free space volume in percent
        HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.40`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
     	HDFreePerc=$(((($HDTotal - $HDUsed) * 100) / $HDTotal))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
 
	# CPU utilisation
        CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	CpuUse=$(($CpuUser + $CpuSystem))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
 
        # Memory Used in %                                                                    
        tmpMemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`     
        MemAvailable=${tmpMemAvailable%% *}                                                   
        tmpMemtotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`         
        Memtotal=${tmpMemtotal%% *}                                                           
        tmpMemShared=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`       
        MemShared=${tmpMemShared%% *}                                                         
        tmpMemBuffer=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`       
        MemBuffer=${tmpMemBuffer%% *}                                                         
        tmpMemCached=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`       
        MemCached=${tmpMemCached%% *}                                                         
	MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
	MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal))
	#// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))      
	# Send data
	curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent" 
      fi
 
 else
        curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
        if [ $? -eq 0 ] ; then
                echo "NAS already OFF"
                exit
        else
                echo "NAS OFF"
                # Send data
                curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=Off"
        fi
#fi
 fi

Re: HowTo: monitor Synology NAS

Posted: Wednesday 11 October 2017 23:28
by DAVIZINHO
Hello!
I use the script and wiki instrucctions to monitor a ds414 and work fin. I searched the correct id for my devices but with the instrucctions of this forum was easy.

The problem is with the "counter virtual swith", in the device seccion of domoticz i see it with the correct values. But in "utility section" apears strangr dates and diferent in title and in the body of sensor. I don´t understand nothing :-(
I use counter virtual switch

any advice???

and other question, i find the correct id for my 4 hdd. its posible to find the id for a usb device?