add sensors to the about page

This commit is contained in:
Ted Unangst 2019-11-08 19:11:37 -05:00
parent 4b9cdf912b
commit a7fae95682
3 changed files with 51 additions and 1 deletions

43
sensors.go Normal file
View File

@ -0,0 +1,43 @@
//
// Copyright (c) 2019 Ted Unangst <tedu@tedunangst.com>
//
// 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
}

View File

@ -2,6 +2,10 @@
<main>
<div class="info">
{{ .AboutMsg }}
<p style="text-align:right"><small>version: {{ .HonkVersion }}</small>
<p><small>version: {{ .HonkVersion }}
<br>memory: {{ printf "%.02f" .Sensors.Memory }}MB
<br>uptime: {{ printf "%.02f" .Sensors.Uptime }}s
<br>cputime: {{ printf "%.02f" .Sensors.CPU }}s
</small>
</div>
</main>

3
web.go
View File

@ -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")
}