From d1ea8d65ef38dec6db7a6800e96dbafea2738ac1 Mon Sep 17 00:00:00 2001 From: nico Date: Sun, 9 Sep 2018 16:20:32 +0200 Subject: Nextcloud Munin DB Plugin + added nextcloud db size plugin * removed some unnecessary code --- nextcloud_dbsize | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ nextcloud_shares | 4 ++-- nextcloud_users | 4 ++-- 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 nextcloud_dbsize diff --git a/nextcloud_dbsize b/nextcloud_dbsize new file mode 100644 index 0000000..7f0920d --- /dev/null +++ b/nextcloud_dbsize @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Plugin to monitor the nextcloud database size +# +# Parameters understood: +# config (required) +# autoconf (optional - used by munin-config) +# +# Magic markers - optional - used by installation scripts and +# munin-config: +# +# #%# family=manual +# #%# capabilities=autoconf +import requests +import sys +import os + + +class NextcloudDB: + if (sys.argv.__len__() == 2) and (sys.argv[1] == "config"): + print('graph_title Nextcloud Database Size') + print('graph_args --base 1024 -l 0') + print('graph_vlabel size in byte') + print('graph_info graph showing the database size in byte') + print('graph_category nextcloud') + + print('db_size.label database size in byte') + print('db_size.info users connected in the last 5 minutes') + print('db_size.draw AREA') + elif (sys.argv.__len__() == 2) and (sys.argv[1] == 'autoconf'): + # check host if env variables are set + try: + if None not in {os.environ['url'], os.environ['username'], os.environ['password']}: + print('yes') + except KeyError: + print('no env configuration options are missing') + else: + # read the configuration from munin environment + URL = os.environ['url'] + auth = (os.environ['username'], os.environ['password']) + + # init requests session with specific header and credentials + s = requests.Session() + s.auth = auth + s.headers.update({'Accept': 'application/json'}) + + # request data from api + r = s.get(URL) + + # if status code is successful close connection and continue + if r.status_code == 200: + s.close() + api_response = r.json() + db_size = api_response['ocs']['data']['server']['database']['size'] + print('db_size.value %s' % db_size) + + elif r.status_code == 996: + print('server error') + elif r.status_code == 997: + print('not authorized') + elif r.status_code == 998: + print('not found') + else: + print('unknown error') + + +if __name__ == "__main__": + NextcloudDB() + quit(0) diff --git a/nextcloud_shares b/nextcloud_shares index fb527a6..ba247d5 100755 --- a/nextcloud_shares +++ b/nextcloud_shares @@ -45,8 +45,8 @@ class NextcloudShares: try: if None not in {os.environ['url'], os.environ['username'], os.environ['password']}: print('yes') - except KeyError as e: - print('no configuration options are missing: %s' % e) + except KeyError: + print('no env configuration options are missing') else: # read the configuration from munin environment URL = os.environ['url'] diff --git a/nextcloud_users b/nextcloud_users index 46312fb..eac5ae6 100755 --- a/nextcloud_users +++ b/nextcloud_users @@ -37,8 +37,8 @@ class NextcloudUsers: try: if None not in {os.environ['url'], os.environ['username'], os.environ['password']}: print('yes') - except KeyError as e: - print('no configuration options are missing: %s' % e) + except KeyError: + print('no env configuration options are missing') else: # read the configuration from munin environment URL = os.environ['url'] -- cgit v1.2.3-54-g00ecf