diff --git a/check_nextcloud/README.md b/check_nextcloud/README.md index c18e25b..8d4431d 100644 --- a/check_nextcloud/README.md +++ b/check_nextcloud/README.md @@ -1,11 +1,13 @@ -# check_nextcloud +# Nagios/Centron check | Nextcloud serverinfo Nagios/Centreon plugin for nextcloud serverinfo API (https://github.com/nextcloud/serverinfo) +This branch contains the check for Python 3. A version for Python 2.7 can be found [here](https://github.com/BornToBeRoot/check_nextcloud/tree/stable-python2.7). + ## Syntax / Help ``` -./check_nextcloud.py -u username -p password -H cloud.example.com -c [system|storage|shares|webserver|php|database|users] +./check_nextcloud.py -u username -p password -H cloud.example.com -c [system|storage|shares|webserver|php|database|users|apps] Options: @@ -16,12 +18,14 @@ Options: on the nextcloud server -p PASSWORD, --password=PASSWORD Password of the user + -t TOKEN, --nc-token=TOKEN + NC-Token for the Serverinfo API -H HOSTNAME, --hostname=HOSTNAME Nextcloud server address (make sure that the address is a trusted domain in the config.php) -c CHECK, --check=CHECK The thing you want to check - [system|storage|shares|webserver|php|database|activeUsers|uploadFilesize] + [system|storage|shares|webserver|php|database|activeUsers|uploadFilesize|apps] --upload-filesize Filesize in MiB, GiB without spaces (default="512.0GiB") --protocol=PROTOCOL Protocol you want to use [http|https] (default="https") @@ -76,3 +80,77 @@ OK - Upload max filesize: 2.0GiB CRITICAL - Upload max filesize is set to 512.0MiB, but should be 2.0GiB ``` + + + +## Icinga config example + + +Adjust the command path to your local situation. + +``` +object CheckCommand "check_nextcloud" { + command = [ "/var/lib/nagios/src/check_nextcloud/check/check_nextcloud.py" ] + arguments = { + "--nc-token" = { + value = "$nextcloud_token$" + description = "NC-Token for the Serverinfo API" + } + "--hostname" = { + value = "$nextcloud_hostname$" + description = "Hostname" + } + "--api-url" = { + value = "$nextcloud_api_url$" + set_if = "$nextcloud_api_url$" + description = "Api-url" + } + "--check" = { + value = "$nextcloud_check$" + description = "Which check to run" + } + "--perfdata-format" = { + value = "nagios" + description = "The perfdata format we like" + } + } +} +``` + +``` +apply Service for (checkname in ["system","storage","shares","webserver","php","database","activeUsers","uploadFilesize","apps"]) { + import "generic-service" + name = "check-nextcloud-" + checkname + check_interval = 30m + retry_interval = 10m + display_name = "Nextcloud monitor " + checkname + vars.notification_interval = 1d + + vars.nextcloud_check = checkname + vars.nextcloud_hostname = host.vars.nextcloud_hostname + vars.nextcloud_token = host.vars.nextcloud_token + vars.nextcloud_api_url = host.vars.nextcloud_api_url + vars.notification["mail"] = { } + check_command = "check_nextcloud" + + assign where (host.address || host.address6) && host.vars.nextcloud_token +} +``` + +``` +object Host "server42.example.com" { + + display_name = "My Nextcloud server" + address = "" + + ... + + # The token can be set with: occ config:app:set serverinfo token --value yourtoken + vars.nextcloud_token = "XXX" + vars.nextcloud_hostname = "nextcloud.example.com" + + # Optional if you e.g. use a subdirectory. + vars.nextcloud_api_url = "/subdir/ocs/v2.php/apps/serverinfo/api/v1/info" +} + +``` diff --git a/check_nextcloud/check/check_nextcloud.py b/check_nextcloud/check/check_nextcloud.py index 12f92bc..2bf5cd1 100644 --- a/check_nextcloud/check/check_nextcloud.py +++ b/check_nextcloud/check/check_nextcloud.py @@ -59,7 +59,7 @@ parser.add_option('--upload-filesize', dest='upload_filesize', default='512.0MiB parser.add_option('--protocol', dest='protocol', choices=['https', 'http'], default='https', help='Protocol you want to use [http|https] (default="https")') parser.add_option('--ignore-proxy', dest='ignore_proxy', default=False, action='store_true', help='Ignore any configured proxy server on this system for this request (default="false")') parser.add_option('--ignore-sslcert', dest='ignore_sslcert', default=False, action='store_true', help='Ignore ssl certificate (default="false")') -parser.add_option('--api-url', dest='api_url', type='string', default='/ocs/v2.php/apps/serverinfo/api/v1/info', help='Url of the api (default="/ocs/v2.php/apps/serverinfo/api/v1/info")') +parser.add_option('--api-url', dest='api_url', type='string', default='/ocs/v2.php/apps/serverinfo/api/v1/info?skipApps=false&skipUpdate=false', help='Url of the api (default="/ocs/v2.php/apps/serverinfo/api/v1/info?skipApps=false&skipUpdate=false")') (options, args) = parser.parse_args() @@ -283,7 +283,10 @@ if options.check == 'uploadFilesize': if options.check == 'apps': xml_apps = xml_root.find('data').find('nextcloud').find('system').find('apps') - xml_apps_num_updates_available = int(xml_apps.find('num_updates_available').text) + if xml_apps is not None: + xml_apps_num_updates_available = int(xml_apps.find('num_updates_available').text) + else: + xml_apps_num_updates_available = 0 if xml_apps_num_updates_available == 0: print('OK - No apps requiring update')