Commit 914ff766 authored by Alain Takoudjou's avatar Alain Takoudjou

monitor: use nice to run commands with low priority, update README and free disk promise message

parent ce2accc8
This diff is collapsed.
...@@ -89,7 +89,7 @@ md5sum = 683ea85fc054094248baf5752dd089bf ...@@ -89,7 +89,7 @@ md5sum = 683ea85fc054094248baf5752dd089bf
[monitor-check-free-disk-space] [monitor-check-free-disk-space]
<= monitor-template-base <= monitor-template-base
filename = check_free_disk.in filename = check_free_disk.in
md5sum = bc61a77f8c06615dfa687ed48893bbc1 md5sum = e48f3804dc367e51a70063ab0e589e9e
# End templates files # End templates files
# XXX keep compatibility (with software/ipython_notebook/software.cfg ) # XXX keep compatibility (with software/ipython_notebook/software.cfg )
...@@ -102,7 +102,7 @@ recipe = slapos.recipe.template:jinja2 ...@@ -102,7 +102,7 @@ recipe = slapos.recipe.template:jinja2
filename = template-monitor.cfg filename = template-monitor.cfg
template = ${:_profile_base_location_}/instance-monitor.cfg.jinja2.in template = ${:_profile_base_location_}/instance-monitor.cfg.jinja2.in
rendered = ${buildout:directory}/template-monitor.cfg rendered = ${buildout:directory}/template-monitor.cfg
md5sum = be07297494e08377c4dfecb26c2919ef md5sum = 2c2aacb9fa97e35818bfa4543dffcb5a
context = context =
key apache_location apache:location key apache_location apache:location
key gzip_location gzip:location key gzip_location gzip:location
......
...@@ -102,13 +102,14 @@ parameter-list = ...@@ -102,13 +102,14 @@ parameter-list =
raw monitor-user ${monitor-instance-parameter:username} raw monitor-user ${monitor-instance-parameter:username}
htpasswd monitor-password ${monitor-htpassword-file:password-file} ${monitor-instance-parameter:username} ${httpd-monitor-htpasswd:htpasswd-path} htpasswd monitor-password ${monitor-htpassword-file:password-file} ${monitor-instance-parameter:username} ${httpd-monitor-htpasswd:htpasswd-path}
file promise-timeout ${monitor-promise-timeout-file:file} file promise-timeout ${monitor-promise-timeout-file:file}
file free-disk-space-MB ${promise-check-free-disk-space:config-file} file min-free-disk-MB ${promise-check-free-disk-space:config-file}
${monitor-instance-parameter:instance-configuration} ${monitor-instance-parameter:instance-configuration}
# htpasswd entry: htpasswd key password-file username htpasswd-file # htpasswd entry: htpasswd key password-file username htpasswd-file
collector-db = ${monitor-instance-parameter:collector-db} collector-db = ${monitor-instance-parameter:collector-db}
collect-script = {{ monitor_collect }} collect-script = {{ monitor_collect }}
python = {{ python_with_eggs }} python = {{ python_with_eggs }}
nice-cmd = ${xnice-bin:output}
promise-output-file = ${directory:monitor}/monitor-bootstrap-status promise-output-file = ${directory:monitor}/monitor-bootstrap-status
...@@ -230,9 +231,17 @@ context = ...@@ -230,9 +231,17 @@ context =
raw dash_binary {{ dash_executable_location }} raw dash_binary {{ dash_executable_location }}
command = kill -USR1 $(cat ${monitor-httpd-conf-parameter:pid-file}) command = kill -USR1 $(cat ${monitor-httpd-conf-parameter:pid-file})
[xnice-bin]
recipe = collective.recipe.template
input = inline:#!/bin/sh
# run something at lowest possible priority
exec nice -19 chrt --idle 0 ionice -c3 "$@"
output = ${directory:bin}/xnice
mode = 700
[monitor-globalstate-wrapper] [monitor-globalstate-wrapper]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
command-line = {{ monitor_genstatus }} '${monitor-conf:rendered}' '${monitor-instance-info:rendered}' command-line = ${xnice-bin:output} {{ monitor_genstatus }} '${monitor-conf:rendered}' '${monitor-instance-info:rendered}'
wrapper-path = ${directory:bin}/monitor-globalstate wrapper-path = ${directory:bin}/monitor-globalstate
[monitor-configurator-wrapper] [monitor-configurator-wrapper]
......
...@@ -34,10 +34,10 @@ if __name__ == '__main__': ...@@ -34,10 +34,10 @@ if __name__ == '__main__':
value = int(min_size_str) value = int(min_size_str)
if value >= 200: if value >= 200:
# Minimum value is 200Mb, it's already low # Minimum value is 200Mb, it's already low
min_free_size = int(min_size_str)*1024 min_free_size = int(min_size_str)*1024*1024
else: else:
with open(config_file, 'w') as f: with open(config_file, 'w') as f:
f.write(str(min_free_size/1024)) f.write(str(min_free_size/(1024*1024)))
real_free_space = user_free_space(home_path) real_free_space = user_free_space(home_path)
if real_free_space > min_free_size: if real_free_space > min_free_size:
print "Free disk space: OK" print "Free disk space: OK"
...@@ -45,7 +45,7 @@ if __name__ == '__main__': ...@@ -45,7 +45,7 @@ if __name__ == '__main__':
real_space_g = round(real_free_space/(1024.0*1024*1024), 2) real_space_g = round(real_free_space/(1024.0*1024*1024), 2)
min_space_g = round(min_free_size/(1024.0*1024*1024), 2) min_space_g = round(min_free_size/(1024.0*1024*1024), 2)
print 'Free disk space slow: remaning %s G, min is %s G' % ( print 'Free disk space low: remaning %s G (threshold: %s G)' % (
real_space_g, min_space_g) real_space_g, min_space_g)
print 'You can modify minimum value on your monitor interface.' print 'You can modify minimum value on your monitor interface.'
exit(1) exit(1)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment