diff options
Diffstat (limited to 'nextcloud_dbsize')
-rw-r--r-- | nextcloud_dbsize | 70 |
1 files changed, 70 insertions, 0 deletions
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) |