Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
Synology status
- Nagios 1.x
- Nagios 2.x
- Nagios 3.x
- Nagios 4.x
- Nagios XI
- Nagios Fusion
File | Description |
---|---|
check_snmp_synology | nagios plugin |
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
- System status (Power, Fans)
- Disks status
- RAID (Volume) status
- DSM update status
- Temperatures
- Storage percentage of use
- UPS informations
This script check:
- System status (Power and Fans)
- Disks status
- RAID status
and now also:
- Use SNMPv2 or SNMPv3
- Check for DSM update
- Check a NAS with 52 disks max
- Check temperature
- Check percentage of use of your storages
- Display UPS information
./check_snmp_synology --help
usage: ./check_snmp_synology [OPTION] -u [user] -p [pass] -h [hostname]
options:
-u [snmp username] Username for SNMPv3
-p [snmp password] Password for SNMPv3
-2 [community name] Use SNMPv2 (no need user/password) & define community name (ex: public)
-h [hostname or IP](:port) Hostname or IP. You can also define a different port
-W [warning temp] Warning temperature (for disks & synology) (default 50)
-C [critical temp] Critical temperature (for disks & synology) (default 60)
-w [warning %] Warning storage usage percentage (default 80)
-c [critical %] Critical storage usage percentage (default 95)
-i Ignore DSM updates
-U Show informations about the connected UPS (only information, no control)
-v Verbose - print all informations about your Synology
examples:
./check_snmp_synology -u admin -p 1234 -h nas.intranet
./check_snmp_synology -u admin -p 1234 -h nas.intranet -v
./check_snmp_synology -2 public -h nas.intranet
./check_snmp_synology -2 public -h nas.intranet:10161
Original Line:
storageID[$i]=$(echo "$syno_diskspace" | grep "= "?/${storageName[$i]}$"?" | cut -d "=" -f1 | rev | cut -d "." -f1 | rev)
Replaced with:
storageID[$i]=$(echo "$syno_diskspace" | grep "= "?/${storageName[$i]}"?" | cut -d "=" -f1 | rev | cut -d "." -f1 | rev)
I am not sure if this will break anything else but it seems to be doing what I need it to now.
storageID[$i]=$(echo "$syno_diskspace" | grep "= "?/${storageName[$i]}$"?" | cut -d "=" -f1 | rev | cut -d "." -f1 | rev)
with this:
storageID[$i]=$(echo "$syno_diskspace" | grep "= "/${storageName[$i]}"" | cut -d "=" -f1 | rev | cut -d "." -f1 | rev)
and you should now get the correct volume usage (in percent) and the correct return state (depending on your -w and -c parameters).
check_snmp_synology -u my_user -p my_pass -h my_host -v -i
Also I tried call like this: check_snmp_synology -u my_user -p my_pass -h my_host -w 85 -c 90 -v -i
verbose output:
Synology model: "RS3617xs+"
DSM Version: "DSM 6.1-15152"
DSM update: Available
System Status: Normal
Temperature: 32 (Normal)
Power Status: Normal
System Fan Status: Normal
CPU Fan Status: Normal
Number of disks: 12
"Disk 1" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:29
"Disk 2" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:27
"Disk 3" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:27
"Disk 4" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:27
"Disk 5" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:30
"Disk 6" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:28
"Disk 7" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:27
"Disk 8" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:28
"Disk 9" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:31
"Disk 10" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:28
"Disk 11" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:28
"Disk 12" (model: "WD4001FFSX-68JNUN0 ") status:Normal temperature:28
Number of RAID volume: 1
"Volume 1" status:Normal
OK - Synology "RS3617xs+ is in good health
NAS storage is on 92%.
Also I check on 4 NAS different models:
Synology model: "RS3617xs+"
Synology model: "RS2414+"
Synology model: "RS2212+"
Synology model: "RS3412xs"
With 2 different DSM:
DSM Version: "DSM 6.1-15152"
DSM Version: "DSM 6.1-15047"
Did some one find solution for this?
Here's the verbose output.
Synology model: "RS3614xs+"
Synology s/n: "1620M9N181700"
DSM Version: "DSM 6.1-15152"
DSM update: Available
System Status: Normal
Temperature: 42 (Normal)
Power Status: Normal
System Fan Status: Normal
CPU Fan Status: Normal
Number of disks: 12
"Disk 1" (model: "ST6000VN0001-1SF17Z ") status:Initialized temperature:41
"Disk 2" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 3" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 4" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:40
"Disk 5" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 6" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 7" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 8" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:41
"Disk 9" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:41
"Disk 10" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 11" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:42
"Disk 12" (model: "ST6000VN0001-1SF17Z ") status:Normal temperature:40
Number of RAID volume: 2
"Volume 1" status:Normal
"Disk Group 1" status:Normal
WARNING - Synology "RS3614xs+" (s/n: "1620M9N181700", "DSM 6.1-15152"), DSM update available
According to the web interface of the device, volume on is 93% full. Any ideas?
However I found an issue with it. When polling a device running DSM 6.1, it returns integer expression expected.
Breaking the script down, the syno variable isn't populated.
Basically, snmpget times out. This appears to be due to amount of OIDs I'm querying. There is 12 disks in the system so there is around 50+ oids. I kept rerunning snmpget, removing a oid until it returned data and it was around 42.
Using Ubuntu 16.04, snmpget 5.7.2
I have some problems with this script, it seems something it's wrong, shows me the advise: "(No output on stdout) stderr: /usr/local/nagios/libexec/check_snmp_synology: line 323: 53"
What's wrong?
Thanks!!!
Hello,
It's probably cause by the Docker plugin. Can you try to uninstalled it ?
"CRITICAL - Problem with SNMP request"
try many things, but i think its a bug in your check_snmp_synology.
And yes, i use your newest version.
Can you contact me by mail please.
We will find a solution ;)
is there any way to change the Port from 161 to another one?
Regards.
Yes , you can specify the port like that:
./check_snmp_synology -2 public -h 192.168.100.12:10161
I added a comment in the help
I had some requirements which the plugin didn't meet. Therefore, I have added some minor improvements such as separated command line options for DSM Update and enable performance data, etc.
The author didn't respond to my mail. Therefore, I have published my version on GitHub, see: https://github.com/exensio/synology-nagios-plugin
I modify it in order to ignore DSM updates. It works perfectly.
These are the lines for add option -I to ignore DSM updates :
...
case $DSMUpgradeAvailable in
"1") DSMUpgradeAvailable="Available"; healthWarningStatus=1; updateMessage="DSM update available";;
"2") DSMUpgradeAvailable="Unavailable"; healthWarningStatus=0; updateMessage="Update unavailable";;
"3") DSMUpgradeAvailable="Connecting"; healthWarningStatus=0; updateMessage="Update in progress";;
"4") DSMUpgradeAvailable="Disconnected"; healthWarningStatus=1; updateMessage="DSM Update Disconnected";;
"5") DSMUpgradeAvailable="Others"; healthWarningStatus=1; updateMessage="Check DSM Update";;
esac
if [ "$ignoreUpdate" = "yes" ] ; then
healthWarningStatus=0;
healthString="$healthString, Info : $updateMessage";
else
healthString="$healthString, $updateMessage";
fi
...
and on the last lines, I modify the output for Ok status :
...
if [ "$healthCriticalStatus" = "0" ] && [ "$healthWarningStatus" = "0" ] ; then
echo "OK - $healthString Appliance is in good health"
exit 0
fi
...
I added directy on the script! Thanks
Your plugin works rather fine but I have a problem: when I mount an USB drive. The USB drive is mounted in the /volume1/usbdrive and the script fails.
We have a recurring warning from your plugin saying that DSM update is disconnected. I think that's because Synology has its servers down. People can have the Syno out of network so I think it will be nice to be able to disable this warning.
Another request: will it be possible to only select some tests? For example I will be interested in no dsm update tests or different volumes warning/critical levels...
Thank you for the plugin
./check_snmp_synology: line 307: 49
.1.3.6.1.2.1.25.2.1.4
/volume10
4096 Bytes
438650334
648744698
3576310 * 100 / 49
.1.3.6.1.2.1.25.2.1.4
/volume10
4096 Bytes
1032116978
438650334
3576310: syntax error: invalid arithmetic operator (error token is ".1.3.6.1.2.1.25.2.1.4
/volume10
4096 Bytes
438650334
648744698
3576310 * 100 / 49
.1.3.6.1.2.1.25.2.1.4
/volume10
4096 Bytes
1032116978
438650334
3576310")
tried to find on myself, but as not a programer, no chance.. :) any help very appreciated,
regards martin
Synology model: "RS814"
Synology s/n: "14A0LZN498800"
DSM Version: "DSM 5.1-5022"
DSM update: Unavailable
System Status: Normal
Temperature: 72 (CRITICAL)
Power Status: Normal
System Fan Status: Normal
CPU Fan Status: Normal
Number of disks: 4
"Disk 1" (model: "WD40EFRX-68WT0N0 ") status:Normal temperature:39
"Disk 2" (model: "WD40EFRX-68WT0N0 ") status:Normal temperature:40
"Disk 3" (model: "WD40EFRX-68WT0N0 ") status:Normal temperature:40
"Disk 4" (model: "WD40EFRX-68WT0N0 ") status:Normal temperature:38
Number of RAID volume: 1
"Volume 1" status:Normal 40% used
What is the difference with disk values?
This is the value return by your Synology, there is always a difference between disks (1 or 2 degrees)
For the temperature of your Synology, it's very high. You can try to run:
snmpget -OQne -v 2c -c public SYNOLOGY_IP 1.3.6.1.4.1.6574.1.2.0
1.3.6.1.4.1.6574.1.2.0 ? this is the OID for Synology temperature
And check on web interface the value.
Please review your note...
CRITICAL - Problem with SNMP request
I already tried with different Synology's.
Can you try with my new version of the script, please
Im sorry I am a very beginner in nagios.
I paste your script into /usr/local/nagios/libexec but when I execute ./check_snmp_synology -h myip I got
-bash: ./check_snmp_synology: No files or folders of this type
Could you please help me ?
I have the same problem. My Synology displays: WARNING - Synology "RS2414rp+" (s/n: "XXXXXXXXXX", "DSM 5.1-5022") needs to be updated.
Could you please explain to me, how do you have solved the problem ?
What do you have change between line 119 to 123 ?
Thanks for your answer.
Can you try with my new version of the script ? there is many bug correction and new features
there is perhabs a bug.
for the parameter OID_upgradeAvailable set you between line 119 to 123 all status of the parameter healthStatus on 3. This give all time a warning to do updates.
I changed in a other version for me that only by the status updates available the warning comes to do the updates.