From 72acc570e66c580f08b717579a4d4879d319ff25 Mon Sep 17 00:00:00 2001 From: nico Date: Thu, 6 Sep 2018 17:28:49 +0200 Subject: plugin description mprovements + added munin specific header with magic markers added + added value info to all values + added autoconf capability * sessions are now closed after use * moved allocation of url, username and password into plugin class --- nextcloud_shares | 36 ++++++++++++++++++++++++++++++++---- nextcloud_users | 33 +++++++++++++++++++++++++++++---- 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/nextcloud_shares b/nextcloud_shares index cf75234..1dc63dd 100644 --- a/nextcloud_shares +++ b/nextcloud_shares @@ -1,13 +1,22 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +# +# Plugin to monitor the amount shares to and from the specified nextcloud instance +# +# 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 re import requests import sys import os -URL = os.environ['url'] -auth = (os.environ['username'], os.environ['password']) - class NextcloudShares: if (sys.argv.__len__() == 2) and (sys.argv[1] == "config"): @@ -18,13 +27,31 @@ class NextcloudShares: print('graph_category nextcloud') print('num_fed_shares_received.label federated shares recieved') + print('num_fed_shares_received.info current total of federated shares recieved') print('num_fed_shares_sent.label federated shares sent') + print('num_fed_shares_received.info current total of federated shares sent') print('num_shares.label total number of shares') + print('num_shares.info current over all total of shares') print('num_shares_groups.label group shares') + print('num_shares_groups.info current total of group shares') print('num_shares_link.label link shares') + print('num_shares_link.info current total of shares through a link') print('num_shares_link_no_password.label link shares without a password') + print('num_shares_link_no_password.info current total of shares through a link without a password protection') print('num_shares_user.label user shares') + print('num_shares_user.info current total of user shares') + 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 as e: + print('no configuration options are missing: %s' % e) 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 @@ -33,8 +60,9 @@ class NextcloudShares: # request data from api r = s.get(URL) - # if status code is successful continue + # if status code is successful close connection and continue if r.status_code == 200: + s.close() api_response = r.json() shares = api_response['ocs']['data']['nextcloud']['shares'] diff --git a/nextcloud_users b/nextcloud_users index e311a12..445a6db 100644 --- a/nextcloud_users +++ b/nextcloud_users @@ -1,25 +1,49 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +# +# Plugin to monitor the amount of users sucessfully logging in to the specified nextcloud instance +# +# 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 -URL = os.environ['url'] -auth = (os.environ['username'], os.environ['password']) - class NextcloudUsers: if (sys.argv.__len__() == 2) and (sys.argv[1] == "config"): print('graph_title Nextcloud User Activity') print('graph_args --base 1024 -l 0') + print('graph_printf %.0lf') print('graph_vlabel connected users') print('graph_info graph showing the number of connected user') print('graph_category nextcloud') print('last5minutes.label last 5 minutes') + print('last5minutes.info users connected in the last 5 minutes') print('last1hour.label last hour') + print('last1hour.info users connected in the last hour') print('last24hours.label last 24 hours') + print('last24.hours.info users connected in the last 24 hours') + 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 as e: + print('no configuration options are missing: %s' % e) 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 @@ -28,8 +52,9 @@ class NextcloudUsers: # request data from api r = s.get(URL) - # if status code is successful continue + # if status code is successful close connection and continue if r.status_code == 200: + s.close() api_response = r.json() users = api_response['ocs']['data']['activeUsers'] -- cgit v1.2.3-18-g5258