This plugin will check a lot of different values on your Synology DiskStation.

check_synology Release

This plugin uses snmpv3 with MD5 + AES to check a lot of different values on your Synology DiskStation.

This check plugin needs pysnmp to be installed on your system. You can install it with: pip3 install pysnmp


> python3 -h
usage: hostname username authkey privkey {mode} [-h] [-w W] [-c C] [-p PORT]

Example check:

> python3 hostname snmp_user auth_key priv_key load
OK - load average: 1.48, 1.71, 1.74 | load1=1.48c load5=1.71c load15=1.74c

Available modes:

mode description warning/critical
load Checks the load1, load5 and load15 values if more than w/c in int (only load1)
memory Checks the physical installed memory (unused, cached and total) if less usable than w/c in %
disk Detects and checks all disks (name, status, temperature) if temp higher than w/c in °C
if c is set it will also trigger if status
is Failure or Crashed
storage Detects and checks all disks (free, total, %) if more used than w/c in %
update Shows the current DSM version and if DSM update is available set w/c to any int this triggers:
warning if available and critical
if other than un-/available
status Shows model, s/n, temp and status of system, fan, cpu fan and power supply if temp higher than w/c in °C

Note: A custom port can be specified by using -p. The port defaults to 161.

Example CheckCommand for use with icinga2:

object CheckCommand "check_synology" {
  command = ["/usr/bin/python3", PluginDir + "/" ]

  arguments = {
    "--host" = {
       skip_key = true
       order = 0
       value = "$synology_host$"
    "--username" = {
       skip_key = true
       order = 1
       value = "$synology_snmp_user$"
    "--authkey" = {
       skip_key = true
       order = 2
       value = "$synology_snmp_authkey$"
    "--privkey" = {
       skip_key = true
       order = 3
       value = "$synology_snmp_privkey$"
    "--mode" = {
       skip_key = true
       order = 4
       value = "$synology_mode$"
    "-w" = "$synology_warning$"
    "-c" = "$synology_critical$"

Example Service for use with icinga2:

apply Service "syno-load" {
  import "generic-service"

  check_command = "check_synology"

  vars.synology_mode = "load"
  vars.synology_host = "$address$"

  vars.synology_warning = "$synology_load_w$"
  vars.synology_critical = "$synology_load_c$"

  assign where host.vars.os == "DSM"

Make sure to set synology_snmp_user, synology_snmp_autkey and synology_snmp_privkey (e.g. in the host config file).

If you want to add a missing check or another value to be added than you can use the official Synology MIB Guide as a hint for the right MIBs / OIDs and start a pull-request.

This plugin was tested successfully with DS215j and DS718+

Note: As of version 0.2 and higher only python3 is supported. Version 0.1 was the last python2 compatible release.

Contributors ✨

Thanks goes to these wonderful people (emoji key):




💻 📦


💻 🐛

This project follows the all-contributors specification. Contributions of any kind welcome!