#!/bin/bash ################################################################# # # Plugin to monitor the size of a nextcloud instance including a # separate graph for all users # ################################################################# # # Parameters understood: # # config (required) # ################################################################# # # Requirements # - bash (or change first line to sh instead of bash or any other shell) # - existing and readable directory to scan # - du command, it exists on most of the *nix operating systems # ################################################################# # # Configuration # # directory to of the nextcloud instance DIR="/var/www/vhosts/sebastianvendt.de/cloud.sebastianvendt.de" # unique id for every directory starting with 1 for the root directory ID=1; # - make sure that user/group that executes this script has access to the directory you have configured # otherwise run it as another user, edit plugins-conf.d/munin-node and stuff it with example below code (not suggested) # remember to remove hashes from the beginning of the lines # # [du] # user root # # - by default the value is in MegaBytes, to change it you should edit below line in the script to something else, recognizable by du (see man du) # du -sm $DIR in MB # du -sk $DIR in KB # ################################################################# # # Changelog # # Revision 0.1 SAT 16 Jan 2021 Sebastian Vendt # - initial release, # ################################################################# ################################################################# ################################################################# #retrive the users USERS=$(find $DIR/data/ -maxdepth 1 -type d -printf "%f\n" | awk '!/updater/ && !/data/ && !/appdata/ && !/files_/ && !/__groupfolders/') if [ "$1" = "autoconf" ]; then if [ -d $DIR ]; then echo "yes" else echo "no (check your path)" fi exit 0 fi if [ "$1" = "config" ]; then echo "graph_title Directory size of nextcloud instance" echo "graph_vlabel size MB" echo "graph_category nextcloud" echo "graph_info Size of $DIR and all seperate users" #root directory echo "dir$ID.label /" echo "dir$ID.min 0" echo "dir$ID.info Shows du -bs for overall nextcloud instance" for usr in $USERS; do ID=$(($ID+1)) echo "dir$ID.label data/$usr" echo "dir$ID.min 0" echo "dir$ID.info Shows du -bs for the user" done; exit 0 fi ID=1 echo -n "dir$ID.value " if [ -d $DIR ]; then SIZE=`du -bs $DIR | cut -f1` echo $SIZE else echo "U" exit 1 fi for usr in $USERS; do ID=$(($ID+1)) echo -n "dir$ID.value " if [ -d $DIR/data/$usr ]; then SIZE=`du -bs $DIR/data/$usr | cut -f1` echo $SIZE else echo "U" exit 1 fi done; exit 0