diff --git a/check_couchdb b/check_couchdb
index 1164e6dd51f1b62c15403ac53668c15c0302f07c..243798de72b125873899ef409337adf834ea9bfa 100755
--- a/check_couchdb
+++ b/check_couchdb
@@ -19,11 +19,12 @@
 # 2023-08-28  v0.4  <axel.hahn@unibe.ch>  add check "pending"
 # 2023-08-28  v0.5  <axel.hahn@unibe.ch>  add checks "open_databases" + "open_os_files"
 # 2023-08-28  v0.6  <axel.hahn@unibe.ch>  add check "httpd_methods"
+# 2023-08-29  v0.7  <axel.hahn@unibe.ch>  add check "httpd"
 # ======================================================================
 
 . $(dirname $0)/inc_pluginfunctions
 
-export self_APPVERSION=0.6
+export self_APPVERSION=0.7
 
 cfgfile=/etc/icingaclient/.couchdb
 export RESPONSE
@@ -51,16 +52,24 @@ OPTIONS:
                   response will be shown
 
   MODE is one of
-  up              show general couchdb status
-  replication     show last replication status
-  pending         show count of pending updates for nodes, dbs and users
+  httpd           Show counters for http request types
+  httpd_methods   Show counters for http request methods
   open_databases  show number of open databases
   open_os_files   show number of file descriptors CouchDB has open
-  httpd_methods   Show counters for http request methods
+  replication     show last replication status
+  pending         show count of pending updates for nodes, dbs and users
+  replication     show last replication status
+  up              show general couchdb health status
 
 EXAMPLE:
 $_self -m up
-    Check if couchdb is up and running
+  Check if couchdb is up and running
+
+$_self -m httpd_methods
+  Show counters and change rate per sec of GET, POST, and other methods
+
+$_self -c /opt/couchdb/myconfig.sh -m up
+  Source another config to define COUCH_URL
 
 EOF
 }
@@ -118,35 +127,74 @@ fi
 
 case "${sMode}" in
     # ............................................................
-    "up")
-        REQ=/_up
-        abortOnWrongResponse "${REQ}" '"status":"'
+    "httpd")
+        REQ=/_node/_local/_stats/couchdb/httpd
+        abortOnWrongResponse "${REQ}" '"value":'
 
-        _status=$( jq '.status' <<< "${RESPONSE}" | tr -d '"')
-        if ! echo "$_status" | grep "ok" >/dev/null; then
-                ph.setStatus critical
-        fi
-        ph.status "Couchdb :: health status (value 'status' in ${REQ} is '$_status')"
-        echo "Reponse of ${REQ}: "; 
-        echo "${RESPONSE}" | jq
+        typeset -i _iValue
+        typeset -i _iDelta
+
+        _status=$( jq 'with_entries(.value |= .value)' <<< "${RESPONSE}" | grep '^  "' | grep -v '\{' | sed 's#[", ]##g' )
+        # this returns:
+        # aborted_requests:0
+        # bulk_requests:0
+        # requests:185531
+        # ...
+
+        ph.status "Couchdb :: Http request methods"
+        printf "%30s %10s %10s\n" "Property" "Counter" "Delta" | tr ' ' '_'
+        for myVar in $( grep "[a-z\_]" <<< "$_status" | cut -f 1 -d ':' )
+        do  
+            _iValue=$( grep "^${myVar}:" <<< "$_status" | cut -f 2 -d ':' )
+            _label="couchdb-${myVar//_/-}" # underscrore to minus
+            _iDelta=$( ph.perfdeltaspeed "${_label}" $_iValue )
+            printf "%30s %10s %10s per sec\n" "$myVar" $_iValue $_iDelta
+            ph.perfadd "${myVar}" "$_iDelta"    "" ""
+        done
+        echo
         ;;
     # ............................................................
-    "replication")
-        REQ=/_up
-        abortOnWrongResponse "${REQ}" '"status":"'
+    "httpd_methods")
+        REQ=/_node/_local/_stats/couchdb/httpd_request_methods
+        abortOnWrongResponse "${REQ}" '"value":'
 
-        _status=$( jq '.seeds[] | .last_replication_status' <<< "${RESPONSE}" | grep -v "null" | tr -d '"')
+        typeset -i _iValue
+        typeset -i _iDelta
 
-        # there can be multiple sections "seeds" and multiple line responses.
-        # remove all lines with "ok" and check if there is any "bad content" left
-        _nonok=$( echo "$_status" | grep -v "ok" )
-        if [ -n "$_nonok" ]; then
-                ph.setStatus critical
-        fi
+        _status=$( jq 'with_entries(.value |= .value)' <<< "${RESPONSE}" | sed 's#[", ]##g' | grep '^[A-Z]' )
+        # this returns:
+        # COPY:0
+        # DELETE:1
+        # GET:188183
+        # HEAD:0
+        # ...
 
-        ph.status "Couchdb :: replication (values 'last_replication_status' in ${REQ} are '$_status')"
-        echo "Reponse: of ${REQ}"; 
-        echo "${RESPONSE}" | jq
+        ph.status "Couchdb :: Http request methods"
+        printf "%10s %10s %10s\n" "Method" "Counter" "Delta" | tr ' ' '_'
+        for myVar in $( grep "[A-Z]" <<< "$_status" | cut -f 1 -d ':' )
+        do            
+            _iValue=$( grep "$myVar" <<< "$_status" | cut -f 2 -d ':' )
+            _iDelta=$( ph.perfdeltaspeed "couchdb-method-${myVar}" $_iValue)
+            printf "%10s %10s %10s per sec\n" "$myVar" $_iValue $_iDelta
+            ph.perfadd "${myVar}" "$_iDelta"    "" ""
+        done
+
+        # echo "${_status}" | jq
+        ;;
+    # ............................................................
+    "open_databases"|"open_os_files")
+        REQ=/_node/_local/_stats/couchdb/${sMode}
+        abortOnWrongResponse "${REQ}" '"value":'
+
+        typeset -i _iValue
+
+        # descr=$( jq '.desc'  <<< "${RESPONSE}" | tr -d '"')
+        _iValue=$( jq '.value' <<< "${RESPONSE}" )
+        ph.perfadd "${sMode}" "$_iValue"    "" ""
+        ph.status "Couchdb :: ${sMode} = $_iValue"
+        # echo "$descr"
+        # echo "Reponse: of ${REQ}"; 
+        # echo "${RESPONSE}" | jq
         ;;
     # ............................................................
     "pending")
@@ -176,40 +224,38 @@ case "${sMode}" in
         echo "${RESPONSE}" | jq
         ;;
     # ............................................................
-    "open_databases"|"open_os_files")
-        REQ=/_node/_local/_stats/couchdb/${sMode}
-        abortOnWrongResponse "${REQ}" '"value":'
+    "replication")
+        REQ=/_up
+        abortOnWrongResponse "${REQ}" '"status":"'
 
-        # descr=$( jq '.desc'  <<< "${RESPONSE}" | tr -d '"')
-        value=$( jq '.value' <<< "${RESPONSE}" )
-        ph.perfadd "${sMode}" "$value"    "" ""
-        ph.status "Couchdb :: ${sMode} = $value"
-        # echo "$descr"
+        _status=$( jq '.seeds[] | .last_replication_status' <<< "${RESPONSE}" | grep -v "null" | tr -d '"')
+
+        # there can be multiple sections "seeds" and multiple line responses.
+        # remove all lines with "ok" and check if there is any "bad content" left
+        _nonok=$( echo "$_status" | grep -v "ok" )
+        if [ -n "$_nonok" ]; then
+                ph.setStatus critical
+        fi
+
+        ph.status "Couchdb :: replication (values 'last_replication_status' in ${REQ} are '$_status')"
         echo "Reponse: of ${REQ}"; 
         echo "${RESPONSE}" | jq
         ;;
     # ............................................................
-    "httpd_methods")
-        REQ=/_node/_local/_stats/couchdb/httpd_request_methods
-        abortOnWrongResponse "${REQ}" '"value":'
+    "up")
+        REQ=/_up
+        abortOnWrongResponse "${REQ}" '"status":"'
 
-        _status=$( jq 'with_entries(.value |= .value)' <<< "${RESPONSE}" )
-        typeset -i _iValue
-        typeset -i _iDelta
+        _status=$( jq '.status' <<< "${RESPONSE}" | tr -d '"')
+        if ! echo "$_status" | grep "ok" >/dev/null; then
+                ph.setStatus critical
+        fi
+        ph.status "Couchdb :: health status"
+        echo "Reponse of ${REQ}: "; 
+        echo "${RESPONSE}" | jq
+        ;;
 
-        ph.status "Couchdb :: Http request methods"
-        echo "    Method    Counter     Delta"
-        for myMethod in $( grep "[A-Z]" <<< "$_status" | cut -f 1 -d ':' | tr -d ' ' | tr -d '"')
-        do
-            
-            _iValue=$( grep "$myMethod" <<< "$_status" | cut -f 2 -d ':' | tr -d ',' )
-            _iDelta=$( ph.perfdeltaspeed "couchdb-method-${myMethod}" $_iValue)
-            printf "%10s %10s %10s per sec\n" "$myMethod" $_iValue $_iDelta
-            ph.perfadd "${myMethod}" "$_iDelta"    "" ""
-        done
 
-        # echo "${_status}" | jq
-        ;;
     # ............................................................
     *)
         echo "ERRROR: [${sMode}] is an INVALID mode"
diff --git a/docs/20_Checks/check_couchdb.md b/docs/20_Checks/check_couchdb.md
index 87136803345fdde8b349827bf50d24d584730cf9..6171da8f24f81e013e18ce4bdf720048478c35b8 100644
--- a/docs/20_Checks/check_couchdb.md
+++ b/docs/20_Checks/check_couchdb.md
@@ -18,7 +18,7 @@ Check couchdb status.
 ______________________________________________________________________
 
 CHECK_COUCHDB
-v0.6
+v0.7
 
 (c) Institute for Medical Education - University of Bern
 Licence: GNU GPL 3
@@ -39,16 +39,24 @@ OPTIONS:
                   response will be shown
 
   MODE is one of
-  up              show general couchdb status
-  replication     show last replication status
-  pending         show count of pending updates for nodes, dbs and users
+  httpd           Show counters for http request types
+  httpd_methods   Show counters for http request methods
   open_databases  show number of open databases
   open_os_files   show number of file descriptors CouchDB has open
-  httpd_methods   Show counters for http request methods
+  replication     show last replication status
+  pending         show count of pending updates for nodes, dbs and users
+  replication     show last replication status
+  up              show general couchdb health status
 
 EXAMPLE:
 check_couchdb -m up
-    Check if couchdb is up and running
+  Check if couchdb is up and running
+
+check_couchdb -m httpd_methods
+  Show counters and change rate per sec of GET, POST, and other methods
+
+check_couchdb -c /opt/couchdb/myconfig.sh -m up
+  Source another config to define COUCH_URL
 
 ```
 
@@ -74,35 +82,87 @@ With parameter ``-c CFGFILE`` can define another location where to find the vari
 
 With the parameter ``-m METHOD`` you define what kind of check to perform.
 
-### up
+### httpd
 
-Simple check if couchdb is up and running.
+Show counters for http request types.
 
-From url ``/up`` it fetches the value status.
-It switches to critical if one of the seeds is not "ok".
+All values are taken from ``/_node/_local/_stats/couchdb/httpd``
 
-`check_couchdb -m up` returns
+``check_couchdb -m httpd_methods`` returns
 
 ```txt
-OK: Couchdb :: health status (value 'status' in /_up is 'ok')
-Reponse of /_up: 
-{
-  "status": "ok",
-  "seeds": {
-    "couchdb@192.168.25.172": {
-      "timestamp": "2023-08-28T07:27:54.938619Z",
-      "last_replication_status": "ok",
-      "pending_updates": {
-        "_nodes": 0,
-        "_dbs": 0,
-        "_users": 0
-      }
-    },
-    "couchdb@192.168.25.61": {}
-  }
-}
+OK: Couchdb :: Http request methods
+______________________Property____Counter______Delta
+              aborted_requests          0          0 per sec
+                 bulk_requests          0          0 per sec
+                      requests     190116          1 per sec
+                 view_timeouts          0          0 per sec
+                 find_timeouts          0          0 per sec
+              explain_timeouts          0          0 per sec
+             all_docs_timeouts          0          0 per sec
+       partition_view_requests          0          0 per sec
+       partition_find_requests          0          0 per sec
+    partition_explain_requests          0          0 per sec
+   partition_all_docs_requests          0          0 per sec
+       partition_view_timeouts          0          0 per sec
+       partition_find_timeouts          0          0 per sec
+    partition_explain_timeouts          0          0 per sec
+   partition_all_docs_timeouts          0          0 per sec
+          temporary_view_reads          0          0 per sec
+                    view_reads          0          0 per sec
+    clients_requesting_changes          0          0 per sec
+                purge_requests          0          0 per sec
+
+ |abortedrequests=0;; bulkrequests=0;; requests=1;; viewtimeouts=0;; findtimeouts=0;; explaintimeouts=0;; alldocstimeouts=0;; partitionviewrequests=0;; partitionfindrequests=0;; partitionexplainrequests=0;; partitionalldocsrequests=0;; partitionviewtimeouts=0;; partitionfindtimeouts=0;; partitionexplaintimeouts=0;; partitionalldocstimeouts=0;; temporaryviewreads=0;; viewreads=0;; clientsrequestingchanges=0;; purgerequests=0;;
+```
 
- ```
+### httpd_methods
+
+Show counters for http request methods.
+All values are taken from ``/_node/_local/_stats/couchdb/httpd_request_methods``
+
+``check_couchdb -m httpd_methods`` returns
+
+```txt
+OK: Couchdb :: Http request methods
+____Method____Counter______Delta
+      COPY          0          0 per sec
+    DELETE          1          0 per sec
+       GET     190332          1 per sec
+      HEAD          0          0 per sec
+   OPTIONS          0          0 per sec
+      POST          0          0 per sec
+       PUT          0          0 per sec
+ |copy=0;; delete=0;; get=1;; head=0;; options=0;; post=0;; put=0;;
+```
+
+### open_databases
+
+Show number of open databases
+The value is taken from ``/_node/_local/_stats/couchdb/open_databases``
+
+This check sends performance data.
+
+``check_couchdb -m open_databases`` returns
+
+```txt
+OK: Couchdb :: open_databases = 0
+ |opendatabases=0;; 
+```
+
+### open_os_files
+
+Show number of file descriptors CouchDB has open
+The value is taken from ``/_node/_local/_stats/couchdb/open_os_files``
+
+This check sends performance data.
+
+``check_couchdb -m open_os_files`` returns
+
+```txt
+OK: Couchdb :: open_os_files = 0
+ |openosfiles=0;; 
+```
 
 ### pending
 
@@ -168,59 +228,32 @@ Reponse: of /_up
 }
 ```
 
-### open_databases
-
-Show number of open databases
-
-This check sends performance data.
-
-``check_couchdb -m open_databases`` returns
-
-```txt
-OK: Couchdb :: open_databases = 0
-Reponse: of /_node/_local/_stats/couchdb/open_databases
-{
-  "value": 0,
-  "type": "counter",
-  "desc": "number of open databases"
-}
- |opendatabases=0;; 
-```
-
-### open_os_files
+### up
 
-Show number of file descriptors CouchDB has open
+Simple check if couchdb is up and running.
 
-This check sends performance data.
+From url ``/up`` it fetches the value status.
+It switches to critical if one of the seeds is not "ok".
 
-``check_couchdb -m open_os_files`` returns
+`check_couchdb -m up` returns
 
 ```txt
-OK: Couchdb :: open_os_files = 0
-Reponse: of /_node/_local/_stats/couchdb/open_os_files
+OK: Couchdb :: health status (value 'status' in /_up is 'ok')
+Reponse of /_up: 
 {
-  "value": 0,
-  "type": "counter",
-  "desc": "number of file descriptors CouchDB has open"
+  "status": "ok",
+  "seeds": {
+    "couchdb@192.168.25.172": {
+      "timestamp": "2023-08-28T07:27:54.938619Z",
+      "last_replication_status": "ok",
+      "pending_updates": {
+        "_nodes": 0,
+        "_dbs": 0,
+        "_users": 0
+      }
+    },
+    "couchdb@192.168.25.61": {}
+  }
 }
- |openosfiles=0;; 
-```
-
-### httpd_methods
-
-Show counters for http request methods.
-
-``check_couchdb -m httpd_methods`` returns
 
-```txt
-OK: Couchdb :: Http request methods
-    Method    Counter     Delta
-      COPY          0          0 per sec
-    DELETE          1          0 per sec
-       GET     116122          1 per sec
-      HEAD          0          0 per sec
-   OPTIONS          0          0 per sec
-      POST          0          0 per sec
-       PUT          0          0 per sec
- |copy=0;; delete=0;; get=1;; head=0;; options=0;; post=0;; put=0;; 
-```
\ No newline at end of file
+ ```