From a9ed9ae93643170bd1bc9557e4dcab3d0c8fb4f3 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Mon, 25 May 2015 17:01:53 +0000 Subject: [PATCH] more work on munin * install the munin-node package * don't install munin-plugins-extra (if the user wants it they can add it) * expose the munin www directory via the management daemon so that it can handle authorization, rather than manintaining a separate password file --- conf/nginx-primaryonly.conf | 1 + management/daemon.py | 13 ++++++- setup/munin.sh | 68 +++++++++---------------------------- tools/munin_update.sh | 22 ------------ 4 files changed, 29 insertions(+), 75 deletions(-) mode change 100644 => 100755 setup/munin.sh delete mode 100644 tools/munin_update.sh diff --git a/conf/nginx-primaryonly.conf b/conf/nginx-primaryonly.conf index 2ad5d7d..2b74b68 100644 --- a/conf/nginx-primaryonly.conf +++ b/conf/nginx-primaryonly.conf @@ -2,6 +2,7 @@ # Proxy /admin to our Python based control panel daemon. It is # listening on IPv4 only so use an IP address and not 'localhost'. rewrite ^/admin$ /admin/; + rewrite ^/admin/munin$ /admin/munin redirect; location /admin/ { proxy_pass http://127.0.0.1:10222/; proxy_set_header X-Forwarded-For $remote_addr; diff --git a/management/daemon.py b/management/daemon.py index 7115967..2cf0ec7 100755 --- a/management/daemon.py +++ b/management/daemon.py @@ -4,7 +4,7 @@ import os, os.path, re, json from functools import wraps -from flask import Flask, request, render_template, abort, Response +from flask import Flask, request, render_template, abort, Response, send_from_directory import auth, utils from mailconfig import get_mail_users, get_mail_users_ex, get_admins, add_mail_user, set_mail_password, remove_mail_user @@ -384,6 +384,17 @@ def backup_status(): from backup import backup_status return json_response(backup_status(env)) +# MUNIN + +@app.route('/munin/') +@app.route('/munin/') +@authorized_personnel_only +def munin(filename=""): + # Checks administrative access (@authorized_personnel_only) and then just proxies + # the request to static files. + if filename == "": filename = "index.html" + return send_from_directory("/var/cache/munin/www", filename) + # APP if __name__ == '__main__': diff --git a/setup/munin.sh b/setup/munin.sh old mode 100644 new mode 100755 index 83cbb71..8ee0ae5 --- a/setup/munin.sh +++ b/setup/munin.sh @@ -6,63 +6,27 @@ source setup/functions.sh # load our functions source /etc/mailinabox.conf # load global vars # install Munin -apt_install munin munin-plugins-extra +apt_install munin munin-node # edit config cat > /etc/munin/munin.conf < /etc/nginx/conf.d/munin.conf </etc/nginx/htpasswd - -# write user:password -for i in "${!users_array[@]}"; do - echo "${users_array[i]}:${passwords_array[i]:14}" >> /etc/nginx/htpasswd -done