2 -- Convenient functions for HTML output
6 return "<td>" .. content .. "</td>"
9 function th(style, content)
11 return "<th class='"..style.."'>"..content.."</th>"
13 return "<th>"..content.."</th>"
17 function tr(style,...)
19 ret = "<tr class='"..style.."'>"
24 for i,s in ipairs(arg) do
28 ret = ret .. "</tr>\n"
34 return "<h2>"..str.."</h2>\n"
38 -- Formats sensor information to HTML 'tr'
39 function sensor_to_tr(id,sensor)
42 td(sensor["measure_last"]),
43 td(sensor["measure_min"]),
44 td(sensor["measure_max"]))
48 -- Formats number of bytes to string
49 function format_mem_size(bytes)
54 if (bytes < 1024) then
58 mo_bytes = 1024 * 1024;
60 if (bytes < mo_bytes) then
61 return math.ceil(bytes / 1024) .. " Ko"
64 go_bytes = 1024 * mo_bytes;
66 if (bytes < go_bytes) then
67 return math.ceil(bytes / mo_bytes) .. " Mo"
70 return math.ceil(bytes / go_bytes) .. " Go"
73 -- Formats uptime to string
74 function format_uptime(uptime)
75 uptime_s = sysinfo["uptime"]%60
76 uptime_mn = math.floor( (sysinfo["uptime"] / 60) % 60)
77 uptime_h = math.floor( (sysinfo["uptime"] / (60*60)) % 24)
78 uptime_d = math.floor(sysinfo["uptime"] / (60*60*24))
80 return uptime_d .. "d " ..
82 string.format("%02.d",uptime_mn) .. "mn " ..
83 string.format("%02d",uptime_s) .. "s"
86 str = "<html><head><link rel='stylesheet' type='text/css' href='/style.css' /></head><body><h1>Psensor Monitoring Server</h1>"
94 str = str .. "<p><strong>Uptime</strong>: " .. format_uptime(sysinfo["uptime"]) .. "</p>"
100 str = str .. h2("CPU")
102 str = str .. "<table>"
104 th(nil,"Current usage"),
111 if sysinfo["load"] then
112 str = str .. td(math.ceil(100*sysinfo["load"]) .. "%")
114 str = str .. td("N/A")
117 str = str .. td(string.format("%.2f",sysinfo["load_1mn"])) ..
118 td(string.format("%.2f",sysinfo["load_5mn"])) ..
119 td(string.format("%.2f",sysinfo["load_15mn"])) ..
127 totalram = format_mem_size(sysinfo["totalram"] * sysinfo["mem_unit"])
128 freeram = format_mem_size(sysinfo["freeram"] * sysinfo["mem_unit"])
129 sharedram = format_mem_size(sysinfo["sharedram"] * sysinfo["mem_unit"])
130 bufferram = format_mem_size(sysinfo["bufferram"] * sysinfo["mem_unit"])
131 usedram = format_mem_size(sysinfo["totalram"] - sysinfo["freeram"])
133 totalswap = format_mem_size(sysinfo["totalswap"] * sysinfo["mem_unit"])
134 freeswap = format_mem_size(sysinfo["freeswap"] * sysinfo["mem_unit"])
135 usedswap = format_mem_size(sysinfo["totalswap"] - sysinfo["freeswap"])
174 str = str .. "<h2>Sensors</h2>"
176 .. "<tr class='title'><th>Name</th><th>Value</th><th>Min</th><th>Max</th></tr>"
178 for i,sensor in ipairs(sensors) do
179 str = str .. sensor_to_tr(i,sensor)
182 str = str .. "</table><hr /><a href='http://wpitchoune.net/psensor'>psensor-server</a></body></html>"