2020-03-17 20:27:40 +01:00
#! /bin/bash
2020-11-10 19:29:47 +01:00
STORAGE_DIR = "/var/www/xmpp.chapril.org/upload/"
2020-03-17 20:27:40 +01:00
main( ) {
echo "h2. ## Global info"
echo ""
echo " * Total accounts: $( sudo -u ejabberd ejabberdctl registered_users chapril.org | egrep -v -e 'r\.giskard' -e '(lisa|bart)\.simpson' | wc -l) "
echo " * Total messages stored (MAM): $( count_archived_messages) "
2020-03-17 20:38:47 +01:00
echo " * Total rooms active: $( sudo -u ejabberd ejabberdctl muc_online_rooms global | wc -l) "
2020-03-17 20:27:40 +01:00
# echo "Active users: $(sudo -u ejabberd ejabberdctl connected_users_number)"
echo ""
echo "h2. ## HTTP upload storage:"
echo ""
echo " * User quota: $( get_hard_quota) M "
2020-11-10 19:29:47 +01:00
echo " * Total disk usage: $( du -sh ${ STORAGE_DIR } | awk '{print $1}' ) "
2020-03-17 20:27:40 +01:00
per_account_storage_usage
# echo "s2s outgoing connections: $(sudo -u ejabberd ejabberdctl incoming_s2s_number)"
# echo "s2s incoming connections: $(sudo -u ejabberd ejabberdctl outgoing_s2s_number)"
}
get_hard_quota( ) {
grep hard_quota /etc/ejabberd/ejabberd.yml -A2 | grep all | sed -r 's/^\s*-\s([0-9]+).*/\1/'
}
per_account_storage_usage( ) {
# TODO Directories to ignore because they are used for tests accounts (bart and lisa simpsons)
IGNORE_DIRS = "35eae3ddc83d72e4d3fad3160a400db688d7d936 9be859c77649f33d207cbe0d74a126b2fd31cb33"
echo "Per user disk usage:"
tmp = " $( du -sh ${ STORAGE_DIR } * | sort -hr | awk '{print $1}' ) "
echo "** Max: " $( echo " ${ tmp } " | head -n 1)
# echo " Min: "$(echo "${tmp}" | tail -n 1)
subfolders_count = $( find ${ STORAGE_DIR } -mindepth 1 -maxdepth 1 -type d | wc -l)
total_size = $( du -s ${ STORAGE_DIR } | awk '{print $1}' )
avg = $(( ( ${ total_size } / 1024 ) / ${ subfolders_count } ))
echo " ** Avg: ${ avg } M "
}
count_archived_messages( ) {
psql -U ejabberd -h localhost ejabberd -c "select count(*) from archive where peer not like 'irc%' and username not in ('r.giskard', 'lisa.simpson', 'bart.simpson')" -t | grep -v '^$' | awk '{print $1}'
}
main