# check_couchdb

## Introduction

Check couchdb status.

### Requirements

* curl
* jq
* a running couchdb service
* authentication (see section Installation below)

## Syntax

```text
> check_couchdb -h
______________________________________________________________________

CHECK_COUCHDB
v0.3

(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3

https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_couchdb.html
______________________________________________________________________

Show couchdb status.

SYNTAX:
check_couchdb [-h] [-t FILE] -m MODE

OPTIONS:
    -h or --help   show this help.
    -c CFGFILE     set a custom config file
                   default: /etc/icingaclient/.couchdb
    -m MODE        test a value; for debugging purposes the full json 
                   response will be shown

    MODE is one of
      up           show general couchdb status
      replication  show last replication status

EXAMPLE:
check_couchdb -m up
    Check if couchdb is up and running

```

## Installation

The check script by default sources a file ``/etc/icingaclient/.couchdb``.
It is a shell script with read permissions for the icinga user.
It contains a line with the url to couchdb

```shell
# ls -l /etc/icingaclient/.couchdb
-r--------. 1 icingaclient icingaclient 110 Aug 29 09:53 /etc/icingaclient/.couchdb

# cat /etc/icingaclient/.couchdb
export COUCH_URL=http://USERNAME:PASSWORD@localhost:5984
```

The variable COUCH_URL will be used to request status information.

With parameter ``-c CFGFILE`` can define another location where to find the variable COUCH_URL.

## Checks

With the parameter ``-m METHOD`` you define what kind of check to perform.

### up

Simple check if couchdb is up and running.

From url ``/up`` it fetches the value status.
It switches to critical if one of the seeds is not "ok".

`check_couchdb -m up` returns

```txt
OK: Couchdb status (value in /_up is 'ok')
Reponse: 
{
  "status": "ok",                                   <<< checked value
  "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": {}
  }
}
 ```

### replication

From url ``/up`` it fetches seeds -> [node] -> last_replication_status.
It switches to critical if one of the seeds is not "ok".

``check_couchdb -m replication`` returns

```txt
OK: Couchdb replication
Reponse: 
{
  "status": "ok",
  "seeds": {
    "couchdb@192.168.25.172": {
      "timestamp": "2023-08-28T07:27:54.938619Z",
      "last_replication_status": "ok",              <<< checked value
      "pending_updates": {
        "_nodes": 0,
        "_dbs": 0,
        "_users": 0
      }
    },
    "couchdb@192.168.25.61": {}
  }
}
```