Commit 78b737be authored by Alain Takoudjou's avatar Alain Takoudjou

monitor-fix: get collector database path from configuration file

parent f6bfa177
...@@ -46,7 +46,7 @@ recipe = slapos.recipe.template ...@@ -46,7 +46,7 @@ recipe = slapos.recipe.template
url = ${:_profile_base_location_}/monitor.cfg.in url = ${:_profile_base_location_}/monitor.cfg.in
output = ${buildout:directory}/monitor.cfg output = ${buildout:directory}/monitor.cfg
filename = monitor.cfg filename = monitor.cfg
md5sum = 05ed0063a8de43d3711b23605cdab4d7 md5sum = 87d7c22ed77a0e77b06b6c7869024b74
mode = 0644 mode = 0644
[monitor-bin] [monitor-bin]
...@@ -104,7 +104,7 @@ mode = 0644 ...@@ -104,7 +104,7 @@ mode = 0644
recipe = hexagonit.recipe.download recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/webfile-directory/${:filename} url = ${:_profile_base_location_}/webfile-directory/${:filename}
download-only = true download-only = true
md5sum = 739a6e470ef174b9d0b523aa349860cb md5sum = 6aed44f5048b58cc01408caf265a3c4d
filename = ressources.cgi.in filename = ressources.cgi.in
mode = 0644 mode = 0644
...@@ -173,7 +173,7 @@ mode = 0644 ...@@ -173,7 +173,7 @@ mode = 0644
recipe = hexagonit.recipe.download recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/${:filename} url = ${:_profile_base_location_}/${:filename}
download-only = true download-only = true
md5sum = b0b22c8c2fd8dfbf6ee7271aaa09a7d2 md5sum = 08c31783601214109e803ab69ea83aa1
filename = collect.py filename = collect.py
mode = 0644 mode = 0644
......
...@@ -34,13 +34,9 @@ from datetime import datetime, timedelta ...@@ -34,13 +34,9 @@ from datetime import datetime, timedelta
class Database: class Database:
database_name = "collector.db" def __init__(self, db_path = None):
table_list = ["user", "computer", "system", "disk", \ assert os.path.exists(db_path) and os.path.isfile(db_path)
"temperature", "heating"] self.uri = db_path
def __init__(self, directory = None):
assert self.database_name is not None
self.uri = os.path.join(directory, self.database_name)
self.connection = None self.connection = None
self.cursor = None self.cursor = None
...@@ -109,7 +105,7 @@ class Database: ...@@ -109,7 +105,7 @@ class Database:
self.close() self.close()
if len(sample_amount) and len(memory_sum): if len(sample_amount) and len(memory_sum):
return round(memory_sum[0][0]/sample_amount[0][0], 2) return round(memory_sum[0][0]/(sample_amount[0][0]*1024*1024.0), 2)
def getPartitionConsumption(self, partition_id, where=""): def getPartitionConsumption(self, partition_id, where=""):
self.connect() self.connect()
...@@ -132,7 +128,7 @@ group by pid order by cpu_result desc""" % ( ...@@ -132,7 +128,7 @@ group by pid order by cpu_result desc""" % (
comsumption_list.append([result[6], round((result[1]/count), 2), comsumption_list.append([result[6], round((result[1]/count), 2),
round((result[2]/count), 2), round((result[2]/count), 2),
round(result[3], 2), round((result[4]/count), 2), round(result[3], 2), round((result[4]/count), 2),
round((result[5]/count), 2)]) round((result[5]/(count*1024*1024.0)), 2)])
self.close() self.close()
return comsumption_list return comsumption_list
...@@ -158,6 +154,6 @@ date='%s' and partition='%s' and (time between '%s' and '%s') %s""" % ( ...@@ -158,6 +154,6 @@ date='%s' and partition='%s' and (time between '%s' and '%s') %s""" % (
'cpu_time': round(result[2][0], 2), 'cpu_time': round(result[2][0], 2),
'cpu_num_threads': round(result[3][0], 2), 'cpu_num_threads': round(result[3][0], 2),
'memory_percent': round(result[4][0], 2), 'memory_percent': round(result[4][0], 2),
'memory_rss': round(result[5][0], 2)} 'memory_rss': round(result[5][0]/(1024*1024.0), 2)}
return None return None
...@@ -200,13 +200,12 @@ recipe = slapos.recipe.template:jinja2 ...@@ -200,13 +200,12 @@ recipe = slapos.recipe.template:jinja2
template = ${ressources-cgi:location}/${ressources-cgi:filename} template = ${ressources-cgi:location}/${ressources-cgi:filename}
rendered = $${monitor-directory:monitoring-cgi}/$${:filename} rendered = $${monitor-directory:monitoring-cgi}/$${:filename}
filename = ressources.cgi filename = ressources.cgi
mode = 0744 mode = $${deploy-settings-cgi:mode}
# XXX - We need to find a proper way to set db_path here, maybe by using zero-parameters ??
context = context =
key monitor_bin monitor-parameters:executable key monitor_bin monitor-parameters:executable
raw python_executable ${buildout:directory}/bin/${extra-eggs:interpreter} raw python_executable ${buildout:directory}/bin/${extra-eggs:interpreter}
key root_folder buildout:directory key root_folder buildout:directory
raw db_path /srv/slapgrid/var/data-log/ raw config_cfg $${buildout:directory}/$${public:filename}
[make-rss] [make-rss]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
...@@ -345,6 +344,7 @@ name = example.com ...@@ -345,6 +344,7 @@ name = example.com
recipe = slapos.cookbook:zero-knowledge.write recipe = slapos.cookbook:zero-knowledge.write
filename = knowledge0.cfg filename = knowledge0.cfg
status-history-length = 5 status-history-length = 5
collect-db-path = /srv/slapgrid/var/data-log/collector.db
[zero-parameters] [zero-parameters]
recipe = slapos.cookbook:zero-knowledge.read recipe = slapos.cookbook:zero-knowledge.read
......
...@@ -7,16 +7,32 @@ import os ...@@ -7,16 +7,32 @@ import os
import pwd import pwd
from time import strftime from time import strftime
from datetime import datetime from datetime import datetime
import ConfigParser
import collect import collect
cgitb.enable(display=0, logdir="/tmp/cgi.log") cgitb.enable(display=0, logdir="/tmp/cgi.log")
form = cgi.FieldStorage() form = cgi.FieldStorage()
db_path = "{{ db_path }}" config_file = "{{ config_cfg }}"
action = form.getvalue("action", "") action = form.getvalue("action", "")
home = "{{ root_folder }}".strip() home = "{{ root_folder }}".strip()
db_path = ""
if not os.path.exists(config_file):
print """<html><head></head>
<body><h2>Could not find database path in configuration file.
the file %s might not exist.</h2></body></html>""" % config_file
exit(0)
parser = ConfigParser.ConfigParser()
parser.read(config_file)
try:
db_path = parser.get('public', 'collect-db-path')
except ConfigParser.NoOptionError, e:
print """<html><head></head>
<body><h2>Could not find database path in configuration file.
<br/>%s</h2></body></html>""" % str(e)
exit(0)
if action: if action:
db = collect.Database(directory=db_path) db = collect.Database(db_path=db_path)
stat_info = os.stat(home) stat_info = os.stat(home)
partition_user = pwd.getpwuid(stat_info.st_uid)[0] partition_user = pwd.getpwuid(stat_info.st_uid)[0]
result_dict = {} result_dict = {}
...@@ -44,6 +60,7 @@ else: ...@@ -44,6 +60,7 @@ else:
.tg .tg-s6z2 td{text-align:center} .tg .tg-s6z2 td{text-align:center}
.tg .tg-zapm{background-color:#f9f9f9;} .tg .tg-zapm{background-color:#f9f9f9;}
.tg .tg-4eph{background-color:#f9f9f9} .tg .tg-4eph{background-color:#f9f9f9}
.tg tr:hover td{background-color: #FAFAFA}
.head{ .head{
background-color:#0078e7; background-color:#0078e7;
border:0px solid #ffffff; border:0px solid #ffffff;
...@@ -98,7 +115,7 @@ $(document).ready(function () { ...@@ -98,7 +115,7 @@ $(document).ready(function () {
table1 += '<th class="tg-s6z2">Threads</th><th class="tg-s6z2">Memory Usage</th>'; table1 += '<th class="tg-s6z2">Threads</th><th class="tg-s6z2">Memory Usage</th>';
table1 += '<th class="tg-s6z2">Memory %</th></tr>'; table1 += '<th class="tg-s6z2">Memory %</th></tr>';
table3 = '<tr><th class="tg-s6z2">CPU Load Average</th>'; table3 = '<tr><th class="tg-s6z2">CPU Load Average %</th>';
table3 += '<th class="tg-s6z2">Memory Consumption Average</th></tr>'; table3 += '<th class="tg-s6z2">Memory Consumption Average</th></tr>';
line2 = "<tr class='tg-4eph tg-s6z2'>" line2 = "<tr class='tg-4eph tg-s6z2'>"
...@@ -106,7 +123,7 @@ $(document).ready(function () { ...@@ -106,7 +123,7 @@ $(document).ready(function () {
line2 += "<td>" + result['status']['cpu_percent'] + "</td>"; line2 += "<td>" + result['status']['cpu_percent'] + "</td>";
line2 += "<td>" + result['status']['cpu_time'] + "</td>"; line2 += "<td>" + result['status']['cpu_time'] + "</td>";
line2 += "<td>" + result['status']['cpu_num_threads'] + "</td>"; line2 += "<td>" + result['status']['cpu_num_threads'] + "</td>";
line2 += "<td>" + result['status']['memory_rss'] + "</td>"; line2 += "<td>" + result['status']['memory_rss'] + " Mb</td>";
line2 += "<td>" + result['status']['memory_percent'] + "</td>"; line2 += "<td>" + result['status']['memory_percent'] + "</td>";
line2 += "</tr>"; line2 += "</tr>";
for (var i=0; i<consump.length; i++) { for (var i=0; i<consump.length; i++) {
...@@ -117,14 +134,14 @@ $(document).ready(function () { ...@@ -117,14 +134,14 @@ $(document).ready(function () {
line += "<td>" + consump[i][1] + "</td>"; line += "<td>" + consump[i][1] + "</td>";
line += "<td>" + consump[i][2] + "</td>"; line += "<td>" + consump[i][2] + "</td>";
line += "<td>" + consump[i][3] + "</td>"; line += "<td>" + consump[i][3] + "</td>";
line += "<td>" + consump[i][5] + "</td>"; line += "<td>" + consump[i][5] + " Mb</td>";
line += "<td>" + consump[i][4] + "</td>"; line += "<td>" + consump[i][4] + "</td>";
line += "</tr>"; line += "</tr>";
} }
table3 += "<tr class='tg-4eph tg-s6z2'>" table3 += "<tr class='tg-4eph tg-s6z2'>"
table3 += "<td>" + result['cpu-load'] + "</td>"; table3 += "<td>" + result['cpu-load'] + "</td>";
table3 += "<td>" + result['memory'] + "</td></tr></table>"; table3 += "<td>" + result['memory'] + " Mb</td></tr></table>";
$("#box3").html(table3); $("#box3").html(table3);
$("#box2").html(table2 + line2 + '</table>'); $("#box2").html(table2 + line2 + '</table>');
......
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