wernerfred / check_synology

This plugin will check a lot of different values on your Synology DiskStation.
MIT License
17 stars 25 forks source link
icinga2 icinga2-plugin monitoring-plugin nagios python3 snmpv3 synology synology-diskstation

check_synology Release

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_synology

Usage

check_synology --help
check_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.74c

Icinga 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.conf

In 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_synology

Development

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_synology

Install 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):

KreativeKrise
KreativeKrise

šŸ’»
Nicolai
Nicolai

šŸ’» šŸ“¦
Byolock
Byolock

šŸ’» šŸ›
Andreas Motl
Andreas Motl

šŸ’» šŸ¤” šŸ’”
Thomas Galliker
Thomas Galliker

šŸ’»
Kraeutergarten
Kraeutergarten

šŸ““
jebabin
jebabin

šŸ“–
KreativeKrise
KreativeKrise

šŸ’»
Nicolai
Nicolai

šŸ’» šŸ“¦
Byolock
Byolock

šŸ’» šŸ›
Andreas Motl
Andreas Motl

šŸ’» šŸ¤” šŸ’”
Thomas Galliker
Thomas Galliker

šŸ’»
Kraeutergarten
Kraeutergarten

šŸ““
jebabin
jebabin

šŸ“–
Kent Coble
Kent Coble

šŸ”Œ
Tobias Knipping
Tobias Knipping

šŸ’»
fibberblank
fibberblank

šŸ’»
dropthemic
dropthemic

šŸ’»
Christian Gut
Christian Gut

šŸ’»
bigitag
bigitag

šŸ’»
Julian Petri
Julian Petri

šŸ’»

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