diff --git a/sensors.go b/sensors.go new file mode 100644 index 0000000..c5fef02 --- /dev/null +++ b/sensors.go @@ -0,0 +1,43 @@ +// +// Copyright (c) 2019 Ted Unangst +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +package main + +import ( + "syscall" + "time" +) + +type Sensors struct { + Memory float64 + Uptime float64 + CPU float64 +} + +var boottime = time.Now() + +func getSensors() Sensors { + var usage syscall.Rusage + syscall.Getrusage(syscall.RUSAGE_SELF, &usage) + + now := time.Now() + + var sensors Sensors + sensors.Memory = float64(usage.Maxrss) / 1024.0 + sensors.Uptime = now.Sub(boottime).Seconds() + sensors.CPU = time.Duration(usage.Utime.Nano()).Seconds() + + return sensors +} diff --git a/views/about.html b/views/about.html index 037620e..3ed58a0 100644 --- a/views/about.html +++ b/views/about.html @@ -2,6 +2,10 @@
{{ .AboutMsg }} -

version: {{ .HonkVersion }} +

version: {{ .HonkVersion }} +
memory: {{ printf "%.02f" .Sensors.Memory }}MB +
uptime: {{ printf "%.02f" .Sensors.Uptime }}s +
cputime: {{ printf "%.02f" .Sensors.CPU }}s +

diff --git a/web.go b/web.go index aa91e1e..4545c6c 100644 --- a/web.go +++ b/web.go @@ -1902,6 +1902,9 @@ func servehtml(w http.ResponseWriter, r *http.Request) { templinfo["AboutMsg"] = aboutMsg templinfo["LoginMsg"] = loginMsg templinfo["HonkVersion"] = honkVersion + if r.URL.Path == "/about" { + templinfo["Sensors"] = getSensors() + } if u == nil { w.Header().Set("Cache-Control", "max-age=60") }