check_synology 
About
A monitoring plugin for checking different values on a Synology DiskStation, compatible with Nagios and Icinga.
The plugin was tested successfully with DS214play, DS215j, DS216+, DS218 and
DS718+ models. For communication, it uses SNMPv3 with MD5 + AES.
If you want to add a missing check or another value, you are most welcome to submit a patch / pull request. As a reference for discovering the right MIBs / OIDs, please have a look at the official Synology DiskStation MIB Guide.
Setup
check_synology is based on the easysnmp SNMP library, which is a binding to
the Net-SNMP package. You might need to install the corresponding packages on
your operating system.
An example to invoke the installation on a Debian-based system is:
apt install --yes libsnmp-dev snmp-mibs-downloader
pip install git+https://github.com/wernerfred/check_synologyUsage
check_synology --helpcheck_synology
usage: check_synology [-h] [-w W] [-c C] [-t T] [-r R] [-p PORT] [-e PROTOCOL] hostname username authkey privkey {load,memory,disk,storage,update,status}A custom port can be specified by using -p. The default value is 161.
A custom privacy protocol can be specified by using -e. The default value is AES128.
Custom timeouts (-t) and retries (-r) can be specified by using -t and -r respectively. The default values are -t 10 and -r 3.
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 (status, temperature, health status) | if status is "SystemPartitionFailed" or "Crashed", will trigger CRITICAL if temperature is higher than w/c in °C, will trigger WARNING/CRITICAL if health status is "Warning", will trigger WARNING, if health status is "Critical" or "Failing", will trigger CRITICAL | 
| 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 | if update is "Unavailable", will trigger OK if update is "Available", will trigger WARNING otherwise: UNKNOWN | 
| status | Shows model, s/n, temp and status of system, fan, cpu fan and power supply | if temp higher than w/c in °C | 
Example check
check_synology 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.74cIcinga 2 integration
For integrating the check program into Icinga 2, you can use the configuration files
in the icinga2 subdirectory. You can easily acquire the files using:
wget https://raw.githubusercontent.com/wernerfred/check_synology/master/icinga2/synology-command.conf
wget https://raw.githubusercontent.com/wernerfred/check_synology/master/icinga2/synology-services.conf
wget https://raw.githubusercontent.com/wernerfred/check_synology/master/icinga2/synology-host.confIn order to put the check_synology program at the right location aligned with the
definition within synology-command.conf, regardless where it has been installed
on your system, use:
ln -s $(which check_synology) /usr/lib/nagios/plugins/check_synologyDevelopment
For setting up a development sandbox, you might want to follow this walkthrough.
Acquire sources:
git clone https://github.com/wernerfred/check_synology
cd check_synologyInstall program in development mode into a Python virtual environment:
python3 -m venv .venv
source .venv/bin/activate
pip install --editable=.Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
