diff --git a/CHANGELOG.md b/CHANGELOG.md index 20c74ba5..1b6efd08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Mail: * The Sieve port is now open so tools like the Thunderbird Sieve program can be used to edit mail filters. +Control Panel: + +* Report free memory usage. + v0.15 (January 1, 2016) ----------------------- diff --git a/management/status_checks.py b/management/status_checks.py index e4d9d73e..a7e4a624 100755 --- a/management/status_checks.py +++ b/management/status_checks.py @@ -9,6 +9,7 @@ import sys, os, os.path, re, subprocess, datetime, multiprocessing.pool import dns.reversename, dns.resolver import dateutil.parser, dateutil.tz import idna +import psutil from dns_update import get_dns_zones, build_tlsa_record, get_custom_dns_config, get_secondary_dns, get_custom_dns_record from web_update import get_web_domains, get_domains_with_a_records @@ -166,6 +167,7 @@ def run_system_checks(rounded_values, env, output): check_miab_version(env, output) check_system_aliases(env, output) check_free_disk_space(rounded_values, env, output) + check_free_memory(rounded_values, env, output) def check_ssh_password(env, output): # Check that SSH login with password is disabled. The openssh-server @@ -216,6 +218,20 @@ def check_free_disk_space(rounded_values, env, output): else: output.print_error(disk_msg) +def check_free_memory(rounded_values, env, output): + # Check free memory. + percent_free = 100 - psutil.virtual_memory().percent + memory_msg = "System memory is %s%% free." % str(round(percent_free)) + if percent_free >= 30: + if rounded_values: memory_msg = "System free memory is at least 30%." + output.print_ok(memory_msg) + elif percent_free >= 15: + if rounded_values: memory_msg = "System free memory is below 30%." + output.print_warning(memory_msg) + else: + if rounded_values: memory_msg = "System free memory is below 15%." + output.print_error(memory_msg) + def run_network_checks(env, output): # Also see setup/network-checks.sh. diff --git a/setup/management.sh b/setup/management.sh index 3ca1687c..35e59c41 100755 --- a/setup/management.sh +++ b/setup/management.sh @@ -11,7 +11,7 @@ if [ -f /usr/local/lib/python2.7/dist-packages/boto/__init__.py ]; then hide_out # build-essential libssl-dev libffi-dev python3-dev: Required to pip install cryptography. apt_install python3-flask links duplicity python-boto libyaml-dev python3-dnspython python3-dateutil \ build-essential libssl-dev libffi-dev python3-dev python-pip -hide_output pip3 install --upgrade rtyaml "email_validator>=1.0.0" "idna>=2.0.0" "cryptography>=1.0.2" boto +hide_output pip3 install --upgrade rtyaml "email_validator>=1.0.0" "idna>=2.0.0" "cryptography>=1.0.2" boto psutil # email_validator is repeated in setup/questions.sh