diff --git a/check_snmp_data b/check_snmp_data
new file mode 100755
index 0000000000000000000000000000000000000000..bc135bb19373a61b124f1bc64a6a62273124df19
--- /dev/null
+++ b/check_snmp_data
@@ -0,0 +1,235 @@
+#!/usr/bin/env bash
+# ======================================================================
+#
+# NAGIOS / ICINGA CHECK :: check_snmp_data
+# this plugin checks snmp performance data
+#
+# DOCS:
+#   - Synology - see docs:
+#     https://global.download.synology.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
+#
+#   - IODs uc davis http://oidref.com/1.3.6.1.4.1.2021
+#
+# ----------------------------------------------------------------------
+#
+# SYNTAX: 
+# label    --> DATA:[method]:label:[text]
+# n x data --> DATA:[method]:data:[perf-label]:[oid]:[optional unit]
+#
+# DATA:cpu:label:CPU usage
+# DATA:cpu:data:cpu-user:1.3.6.1.4.1.2021.11.9.0:%
+# DATA:cpu:data:cpu-system:1.3.6.1.4.1.2021.11.10.0:%
+# DATA:cpu:data:cpu-idle:1.3.6.1.4.1.2021.11.11.0:%
+#
+# DATA:load:label:System load
+# DATA:load:data:load1:1.3.6.1.4.1.2021.10.1.5.1:
+# DATA:load:data:load5:1.3.6.1.4.1.2021.10.1.5.2:
+# DATA:load:data:load15:1.3.6.1.4.1.2021.10.1.5.3:
+#
+# DATA:netio:label:Network IO (experimental)
+# DATA:netio:data:in:1.3.6.1.2.1.4.3.0:
+# DATA:netio:data:out:1.3.6.1.2.1.4.10.0:
+#    
+# DATA:synotemp:label:Synology NAS temperature
+# DATA:synotemp:data:temp:1.3.6.1.4.1.6574.1.2.0:°C
+#
+# ----------------------------------------------------------------------
+# 2020-08-11  <axel.hahn@iml.unibe.ch>  initial version
+# ======================================================================
+
+. `dirname $0`/inc_pluginfunctions
+
+# --- basic vars
+ABOUT="SNMP performance data v0.2"
+SNMPCOMMUNITY="public"
+SNMPVERSION="2c"
+SNMPGET=$(which snmpget)
+
+HOSTNAME="127.0.0.1"
+METHOD=""
+
+# --- OID declarations
+# OID_syno="1.3.6.1.4.1.6574"
+# OID_ucdavis="1.3.6.1.4.1.2021" # University of California, Davis - private UCD SNMP MIB extensions
+
+# --- output variables
+SYNO=""
+out=""
+
+#---------------------------------------------------
+# FUNCTIONS
+#---------------------------------------------------
+
+# --- write verbose text
+_wd()
+{
+    if [ "$verbose" = "yes" ] ; then 
+        out="${out}$*
+" ; fi
+}
+
+#---------------------------------------------------
+# --- get config entries in the DATA comment lines
+
+# get line(s) for config
+# param  string  one of label|data
+_cfg_reader(){
+    grep "^#\ DATA:$METHOD:$1:" $0
+}
+_cfg_getlabel(){
+    _cfg_reader "label" | cut -f 4- -d ":"
+}
+_cfg_dataitem(){
+    _cfg_reader "data" | cut -f $1 -d ":" | while read item
+    do
+        echo -n "$item "
+    done
+}
+
+# get a list existing methods
+_cfg_getMethods(){
+    grep "^#\ DATA:.*:label:" $0 | cut -f 2 -d ":"
+}
+
+#---------------------------------------------------
+# --- get a value from SNMP output data
+# global string  $SYNO  output of snmpget
+# param  string  mib    string
+_getresult(){
+    echo "$SYNO" | grep "${1} " | cut -d "=" -f2 | cut -f 2- -d " "
+}
+
+# --- get a value from SNMP output data
+# param  string  mib    string
+_get(){
+    _getresult $1 | cut -d ":" -f2 | cut -f 2- -d " "
+}
+
+# is given oid a counter?
+# function resturns "true" or "false" 
+_iscounter(){
+    _getresult $1 | cut -d ":" -f1 | grep -i "Counter" >/dev/null
+    if [ $? -eq 0 ]; then
+        echo "true"
+    else
+        echo "false"
+    fi
+}
+
+#---------------------------------------------------
+# --- show usage
+usage()
+{
+    cat <<EOH
+
+$ABOUT
+
+University of Bern * Institute of Medical Education
+GNU GPL 3.0
+
+USAGE:
+    ./check_snmp_data -h hostname [-C communitystring] -m method
+
+PARAMETERS:
+    -h  hostname       as fqdn or ip address
+    -C  communitystr   optional: community string for snmp; default is $SNMPCOMMUNITY
+    -v                 verbose output
+    -m  method         what to show
+                       method is one of ...
+EOH
+
+    # --- dynamic: add current methods
+    _cfg_getMethods | while read line
+    do
+        METHOD=`echo $line | cut -f 1 -d ":"`
+        descr=$(_cfg_getlabel)
+        printf "                          %-10s %-50s\n" $METHOD "$descr"
+    done
+
+    # --- finish usage
+    cat <<EOH2
+
+EXAMPLE:
+    ./check_snmp_data -h 192.168.100.12 -v -m cpu
+
+EOH2
+    ph.abort ""
+}
+
+
+#---------------------------------------------------
+# MAIN
+#---------------------------------------------------
+
+while getopts h:m:v OPTNAME; do
+        case "$OPTNAME" in
+
+        h)
+                HOSTNAME="$OPTARG"
+                option_found=1
+                ;;
+		C)
+			    SNMPCOMMUNITY="$OPTARG"
+			    ;;
+        m)
+                METHOD="$OPTARG"
+                ;;
+        v)
+                verbose="yes"
+                _wd ""
+                ;;
+        *)
+                usage
+                ;;
+        esac
+done
+
+if [ "$option_found" = "0" ] || [ "$HOSTNAME" = "" ] ; then
+    usage
+    # remark: script aborts ...
+fi
+
+# --- read metadata of the selected METHOD
+info=$(_cfg_getlabel)
+if [ -z "$info" ]; then
+    echo ERROR: unknown METHOD [$METHOD]
+    usage
+fi
+
+prflist=( $(_cfg_dataitem 4) )
+oidlist=( $(_cfg_dataitem 5) )
+unitlist=( $(_cfg_dataitem 6) )
+
+
+# --- SNPGET to all wanted oids
+SYNO=`$SNMPGET -One -t 10 -v $SNMPVERSION -c $SNMPCOMMUNITY $HOSTNAME ${oidlist[*]} 2> /dev/null`
+
+if [ $? -ne 0 ] ; then
+    $SNMPGET -One -t 10 -v $SNMPVERSION -c $SNMPCOMMUNITY $HOSTNAME ${oidlist[*]}
+    ph.abort "Problem with SNMP request"
+fi
+
+
+# --- performance data
+for index in ${!oidlist[*]}
+do
+    label="${prflist[$index]}"
+    value=$(_get ${oidlist[$index]})
+    unit="${unitlist[$index]}"
+
+    # handle counter data
+    if [ "$(_iscounter ${oidlist[$index]})" = "true" ]; then
+        value2=`ph.perfdeltaspeed "snmp-data-${method}-${label}" $value`
+        _wd "$( printf '%-14s total: %-14s delta: %6s %s per sec' $label $value $value2 $unit )"
+        value=$value2
+    else
+        _wd "$( printf '%-14s %s %s' $label $value $unit )"
+    fi
+
+    ph.perfadd "${label}" "${value}"
+done
+
+
+# --- output
+ph.status "SNMP performance data :: $info $out"
+ph.exit
\ No newline at end of file
diff --git a/check_snmp_data.md b/check_snmp_data.md
new file mode 100644
index 0000000000000000000000000000000000000000..d12ef6663f33e67db137ecf8495cd1f022573d42
--- /dev/null
+++ b/check_snmp_data.md
@@ -0,0 +1,115 @@
+# IML Checks for Icinga / Nagios
+
+[Home](readme.md)
+
+---
+
+## check SNMP data
+
+### Introduction
+
+**check_snmp_data** is a plugin for fetching performance data with a set of given OIDs.
+
+It can handle current values (i.e. load or cpu usage) and counter values (i.e. network io).
+
+### Syntax
+
+``$ check_snmp_data -h HOSTNAME [-C COOMMUNITYSTRING] -v -m METHOD``
+
+#### Parameters
+
+Starting the script without parameters shows a help.
+
+```
+
+SNMP performance data v1.0
+
+University of Bern * Institute of Medical Education
+GNU GPL 3.0
+
+USAGE:
+    ./check_snmp_data -h hostname [-C communitystring] -m method
+
+PARAMETERS:
+    -h  hostname       as fqdn or ip address
+    -C  communitystr   optional: community string for snmp; default is public
+    -v                 verbose output
+    -m  method         what to show
+                       method is one of ...
+                          cpu        CPU usage                                         
+                          load       System load                                       
+                          netio      Network IO (experimental)                         
+                          synotemp   Synology NAS temperature                          
+
+EXAMPLE:
+    ./check_snmp_data -h 192.168.100.12 -v -m cpu
+
+```
+
+### Examples
+
+#### Get values
+
+``./check_snmp_data -h 192.168.100.12 -v -m cpu``
+    
+Shows the current cpu usage of host *192.168.100.12*.
+The output is something like that:
+
+```
+OK: SNMP performance data :: CPU usage 
+cpu-user       0 %
+cpu-system     0 %
+cpu-idle       99 %
+
+ |cpu-user=0;;;0; cpu-system=0;;;0; cpu-idle=99;;;0;
+```
+
+The 3 lines with values starting from line 2 are written with *-v* option only.
+
+The performance data (last line) always will be sent.
+
+#### Get counter data
+
+``./check_snmp_data -h 192.168.100.12 -v -m netio``
+    
+If there is a check with counter data using *-v* option you see the counter value and the delta speed. It is calculated by
+
+```
+              [current_counter] - [last_counter]
+delta_speed = ----------------------------------
+                time_since_last_check_in_sec
+```
+The output looks like that:
+```
+OK: SNMP performance data :: Network IO (experimental) 
+in             total: 2669086814     delta:      1  per sec
+out            total: 2212665608     delta:      0  per sec
+
+ |in=1;;;0; out=0;;;0;
+```
+
+
+### Configuration
+
+check_snmp_data is a Bash script. If you open / view it you see a DATA section as comment lines on the top.
+
+It starts with a short description:
+```
+# SYNTAX:
+# label    --> DATA:[method]:label:[text]
+# n x data --> DATA:[method]:data:[perf-label]:[oid]:[optional unit]
+```
+... followed by the configuration data of the checks.
+```
+#
+# DATA:cpu:label:CPU usage
+# DATA:cpu:data:cpu-user:1.3.6.1.4.1.2021.11.9.0:%
+# DATA:cpu:data:cpu-system:1.3.6.1.4.1.2021.11.10.0:%
+# DATA:cpu:data:cpu-idle:1.3.6.1.4.1.2021.11.11.0:%
+```
+
+To fetch configuration data the text in $0 is grepped by ``^#\ DATA:``.
+
+There is a single line with **label** to define a short description of the check.
+
+There can be severeal lines with **data** to define the values to get. Each data line must have a uniq label within the same check.
diff --git a/check_snmp_synology b/check_snmp_synology
index 35a925ba84f68546025e3068afb271ce027f10a7..5b03318f8f8c6eba28d1d54317d4da675974cd60 100755
--- a/check_snmp_synology
+++ b/check_snmp_synology
@@ -243,7 +243,7 @@ do
    
     if [ ${idiskStatus} != "1" ] ; then
         ph.setStatus "critical"
-        healthString="$healthString, problem with ${diskID[$i]} (model:${diskModel[$i]}) status:${diskStatus[$i]} temperature:${diskTemp[$i]} C "
+        healthString="$healthString, problem with ${diskID[$i]} (model:${diskModel[$i]}) status:${diskStatus[$i]} temperature:${diskTemp[$i]} °C"
     fi
 
     _wd "${diskID[$i]} (model:${diskModel[$i]}) status: ${diskStatus[$i]} ($idiskStatus) temperature: ${diskTemp[$i]} °C"
diff --git a/readme.md b/readme.md
index 9f79b533a894ca52406ca15623f8f93360a7b927..5d5521cf1e9de3fc8b1d9fe581ef51dd8429660a 100644
--- a/readme.md
+++ b/readme.md
@@ -17,41 +17,39 @@ We use Icinga graphite module to show performance data. The templates are locate
 
 ## Scripts
 
+There is one include script used by all checks:
 [inc_pluginfunctions](inc_pluginfunctions.md)
 
 ## Checks
 
-check_apache_requests
-check_backup_one
-check_ceph_diskfree
-check_ceph_osd
-check_ceph_status
-check_clientbackup
-check_couchdb-lb
-check_cpu
-check_cronstatus
-check_disk-io
-check_dns_responsetime
-[check_eol](check_eol.md)
-check_haproxy_health
-check_haproxy_status
-check_memory
-check_netio
-check_netstat
-check_opencpu
-check_packages2install
-check_proc_mem
-check_proc_ressources
-check_proc_zombie
-check_reboot_required
-check_sensuplugins
-check_smartstatus
-check_snmp_syno.sh
-check_snmp_synology
-check_ssl
-check_systemdservices
-check_timesync
-check_uptime
-inc_pluginfunctions
-inc_pluginfunctions.md
-paramtest
\ No newline at end of file
+* check_apache_requests
+* check_backup_one
+* check_ceph_diskfree
+* check_ceph_osd
+* check_ceph_status
+* check_clientbackup
+* check_couchdb-lb
+* check_cpu
+* check_cronstatus
+* check_disk-io
+* check_dns_responsetime
+* [check_eol](check_eol.md)
+* check_haproxy_health
+* check_haproxy_status
+* check_memory
+* check_netio
+* check_netstat
+* check_opencpu
+* check_packages2install
+* check_proc_mem
+* check_proc_ressources
+* check_proc_zombie
+* check_reboot_required
+* check_sensuplugins
+* check_smartstatus
+* [check_snmp_data](check_snmp_data.md)
+* check_snmp_synology
+* check_ssl
+* check_systemdservices
+* check_timesync
+* check_uptime