Search Exchange

Search All Sites

Nagios Live Webinars

Let our experts show you how Nagios can help your organization.

Contact Us

Phone: 1-888-NAGIOS-1
Email: sales@nagios.com

Login

Remember Me

Directory Tree

Synology status

Rating
70 votes
Favoured:
11
Current Version
2.5
Last Release Date
2016-12-07
Compatible With
  • Nagios 1.x
  • Nagios 2.x
  • Nagios 3.x
  • Nagios 4.x
  • Nagios XI
  • Nagios Fusion
Hits
191682
Files:
FileDescription
check_snmp_synologynagios plugin
Network Monitoring Software - Download Nagios XI
Log Management Software - Nagios Log Server - Download
Netflow Analysis Software - Nagios Network Analyzer - Download
Synology status
this plugin check the health of your Synology NAS
- System status (Power, Fans)
- Disks status
- RAID (Volume) status
- DSM update status
- Temperatures
- Storage percentage of use
- UPS informations
New version ! 07.12.2016

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
Reviews (52)
RAID status health not working, disk 11 is faulty.

Synology model: "DS3615xs"
Synology s/n: "foobar"
DSM Version: "DSM 6.2-25556"
DSM update: Unavailable
System Status: Normal
Temperature: 40 (Normal)
Power Status: Normal
System Fan Status: Normal
CPU Fan Status: Normal
Number of disks: 12
"Drive 1" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:34
"Drive 2" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:34
"Drive 3" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:34
"Drive 4" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:35
"Drive 5" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:34
"Drive 6" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:35
"Drive 7" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:33
"Drive 8" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:35
"Drive 9" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:34
"Drive 10" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:35
"Drive 11" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:35
"Drive 12" (model: "WD4002FYYZ-01B7CB0") status:Normal temperature:34
Number of RAID volume: 2
"Volume 1" status:Normal 8% used
"Storage Pool 1" status:Normal

OK - Synology "DS3615xs" (s/n: "foobar", "DSM 6.2-25556") is in good health

I tried every edit suggested in the comment section.
byrblaas1975, September 28, 2021
If your synology has docker or some similar active the script will fail because it will find multiple /volume1 instances.

To prevent this change the line #317 to: (in which you excluded /volume1/ (the last slash and thus only grep /volume1)
storageID[$i]=$(echo "$syno_diskspace" | grep "= "?/${storageName[$i]}"?" | grep -v "= "?/volume1/"?" | cut -d "=" -f1 | rev | cut -d "." -f1 | rev)
This worked for me on DSM 5.2
On DSM 6 I get this error
Any ideas ?

peter@rcapp04:/srv/docker/volumes/nagios/opt/Custom-Nagios-Plugins$ docker exec -it nagios4 bash
root@rcapp04-nagios:/# cd /opt/Custom-Nagios-Plugins/
root@rcapp04-nagios:/opt/Custom-Nagios-Plugins# ./check_snmp_synology -2 public -h rcdata02 -t raid
./check_snmp_synology: line 368: 54
55
58
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/volume1/@docker
/volume1/@docker/btrfs
/volume1/@docker/containers/41582c69eb60f17066850470fdfb150a20a445882d30a6083c4fbb59a9b4293c/mounts/shm
8192 Bytes
8192 Bytes
4096 Bytes
2108048671
2108048671
16384
367403977
367403977
367403977
0 * 100 / 54
55
58
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/volume1/@docker
/volume1/@docker/btrfs
/volume1/@docker/containers/41582c69eb60f17066850470fdfb150a20a445882d30a6083c4fbb59a9b4293c/mounts/shm
8192 Bytes
8192 Bytes
4096 Bytes
2108048671
2108048671
2108048671
16384
367403977
367403977
0: syntax error in expression (error token is "55
58
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/volume1/@docker
/volume1/@docker/btrfs
/volume1/@docker/containers/41582c69eb60f17066850470fdfb150a20a445882d30a6083c4fbb59a9b4293c/mounts/shm
8192 Bytes
8192 Bytes
4096 Bytes
2108048671
2108048671
16384
367403977
367403977
367403977
0 * 100 / 54
55
58
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/volume1/@docker
/volume1/@docker/btrfs
/volume1/@docker/containers/41582c69eb60f17066850470fdfb150a20a445882d30a6083c4fbb59a9b4293c/mounts/shm
8192 Bytes
8192 Bytes
4096 Bytes
2108048671
2108048671
2108048671
16384
367403977
367403977
0")
To fix this error I think there should be a space after /${storageName[$i]} in line 317 to prevent the grep for /volume1 also matching /volume10.

storageID[$i]=$(echo "$syno_diskspace" | grep "= "?/${storageName[$i]}"?" | cut -d "=" -f1 | rev | cut -d "." -f1 | rev)
bynishith, March 5, 2020
This plugin works well on DSM 6.2.

Below are the commands:
./check_snmp_synology -2 public -h 172.16.1.62 -t disk
Number of disks: 4
"Drive 1" (model: "WD2RX-68EUZN0 ") status:Normal temperature:28
"Drive 2" (model: "WD2RX-68EUZN0 ") status:Normal temperature:29
"Drive 3" (model: "WD2RX-68EUZN0 ") status:Normal temperature:29
"Drive 4" (model: "WD2RX-68EUZN0 ") status:Normal temperature:29
################################
./check_snmp_synology -2 public -h 172.16.1.62 -t temperature
Temperature: 40 (Normal)

OK - Synology is in good health
################################
./check_snmp_synology -2 public -h 172.16.1.62 -t system
Synology model: "DS918+"
Synology s/n: ""
System Status: Normal

OK - Synology is in good health
################################
Added additional UPS OIDs/stats, added output for performance data for system temperature and UPS

Link: https://github.com/cottington/nagios-Synology
byDermone, September 12, 2019
Update of the improvement of Corben2 correction and optimisation of snmpwalk.

Link : https://github.com/Dermone/nagios-Synology

Correct this error :
/check_snmp_synology: line 227: [: : integer expression expected
/check_snmp_synology: line 227: [: : integer expression expected
/check_snmp_synology: line 227: [: : integer expression expected
Script works well. I've made some changes to it though. I changed it to correctly get the volume usage in DSM 6.2, and I've changed it to split up the check types so that different checks can be different services in Nagios. My changed version can be found here:
https://github.com/corben2/check_snmp_synology
byrez99, April 2, 2019
As per PiotrM89's suggestion back in 2017, using snmpbulkwalk fixed my timeout issues. Try changing the following on Line 25
SNMPWALK=$(which snmpwalk) to SNMPWALK=$(which snmpbulkwalk)
I would give this an excellent rating, but this is the only plugin out of 56 hosts that gives me any grief. I get the random SNMP timeouts sporadically throughout the day. I have investigates a rolling tcp dump to see if its on the network end, its not (as 30+ other hosts are in the same data center and do not have this issue, plugged into the same switch, with the same load balancing issues). I even disabled the dual NIC on the Synology RS2414RP+ (DSM 6.0.3-8754 Update 8) to see if somehow the load balancing or something goofy was hanging it up. Not it either, I see someone below me has the identical issue. I have tried disabling different aspects of this plugin as well to see if these stop, they don't. These spam repeatedly:
(Service check timed out after 180.01 seconds)
(Service check timed out after 180.01 seconds)
(Service check timed out after 180.01 seconds)
After expanding to 180s I figured this would resolve the issue, it didn't either. I love the visibility it gives, I just feel like its getting hung up on something.
bywyang, January 30, 2019
1 of 1 people found this review helpful
--- /usr/lib64/nagios/plugins/check_snmp_synology~ 2018-12-07 19:11:35.231831343 +0000
+++ /usr/lib64/nagios/plugins/check_snmp_synology 2019-01-30 21:23:40.471135880 +0000
@@ -307,3 +307,8 @@
- RAIDName[$i]=$(echo "$syno" | grep $OID_RAIDName.$(($i-1)) | cut -d "=" -f2)
- RAIDStatus[$i]=$(echo "$syno" | grep $OID_RAIDStatus.$(($i-1)) | cut -d "=" -f2 | sed 's/^[ \t]*//;s/[ \t]*$//')
-
+ # modified by William Yang / DataPulse
+ # the regexes below were not anchored on the tail end, which created situations where
+ # a record could contain multiple lines. Caused a lot of heartache. Adding the
+ # anchor [^\.0-9] ensures no subsquent numeral or OID component is matched, causing
+ # the code to be much more resilient. We added 10 volumes one maintenance window,
+ # and we had to track this down....
+ RAIDName[$i]=$(echo "$syno" | grep "$OID_RAIDName.$(($i-1))[^\.0-9]" | cut -d "=" -f2)
+ RAIDStatus[$i]=$(echo "$syno" | grep "$OID_RAIDStatus.$(($i-1))[^\.0-9]" | cut -d "=" -f2 | sed 's/^[ \t]*//;s/[ \t]*$//')
@@ -317,0 +323,2 @@
byfwerbinek, January 9, 2019
1 of 1 people found this review helpful
This plugin used to work very well for many different Syno models.
But since the update to DSM 6.2-23824, the requests via this plugin seem to take forever, and we get timeouts for all NAS systems.
Can this please be analyzed and the plugin updated?
I am giving this a not perfect score and would change it in a heartbeat if the max number of disks were updated to support 52. I was able to monitor health of the device and disks of a few of my devices, but the majority of our devices have more than 52 disks.
byladinek, November 5, 2018
I am using this plugin with success on many Nagios instances. However now I tried it against RS818+ with 6.2-23824, and getting error same as man_al describes:
CRITICAL - Problem with SNMP request, check user/password/host
Analyzing this problem, SNMPWALK runs up to.1.3.6.1.4.1.6574.5.1.1.8.9 = 2, then times out.
Timeout: No Response from which following test evaluates as error and exits with exit code 2.
I am getting an error trying to run this on a NAS with 12 disks.

./check_snmp_synology: line 227: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 288: [: : integer expression expected
./check_snmp_synology: line 324: 36
37
38
39
40
51
52
53
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/tmp
/run
/dev/shm
/sys/fs/cgroup
/run/cgmanager/fs
/volume2
/volume1
/volume3
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
502328
502328
502328
1
25
1449963710
959068290
959019398
308048
5815
16191
1
0
0
22540
601869912
30464948 * 100 / 36
37
38
39
40
51
52
53
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/tmp
/run
/dev/shm
/sys/fs/cgroup
/run/cgmanager/fs
/volume2
/volume1
/volume3
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
596382
502328
502328
502328
1
25
1449963710
959068290
959019398
5815
16191
1
0
0
22540
601869912
30464948: syntax error in expression (error token is "37
38
39
40
51
52
53
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/tmp
/run
/dev/shm
/sys/fs/cgroup
/run/cgmanager/fs
/volume2
/volume1
/volume3
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
502328
502328
502328
1
25
1449963710
959068290
959019398
308048
5815
16191
1
0
0
22540
601869912
30464948 * 100 / 36
37
38
39
40
51
52
53
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
.1.3.6.1.2.1.25.2.1.4
/tmp
/run
/dev/shm
/sys/fs/cgroup
/run/cgmanager/fs
/volume2
/volume1
/volume3
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
4096 Bytes
596382
502328
502328
502328
1
25
1449963710
959068290
959019398
5815
16191
1
0
0
22540
601869912
30464948")
The plugin works very fine - but since we've been updated to DSM 6.2-23739 on our RS3614xs+ we get the following message:
./check_snmp_synology -2 public -h 192.168.x.x

CRITICAL - Problem with SNMP request, check user/password/host

SNMP Community is right and snmpwalk works.
Any idea?
bysteve, June 13, 2018
I'd be interested in your code changes fledorze, removing/ignoring elements may help with the some of the timeout issues.
byfledorze, June 6, 2018
I added more generic options -r and -e to include/exclude elements, in replacement of -i option that allows to ignore DSM updates only. Tell me if you want the code.
byJSYOR, May 18, 2018
Could someone please write a step by step guide to get this installed on a nagios core ubuntu server please thanks.
byMrZylinder, May 16, 2018
Quite a nice plugin to use and works fine. I modified it by adding perfdata for system temperature, volume usage, cpu usage and mem usage aswell additional arguments for cpu und mem usage thresholds.
Page 1 of 3