{{define "node"}}
{{.Node.State}} {{with .Node.OS}} · {{.}}{{end}}{{with .Node.MgmtAddr}} · {{.}}{{end}} · last seen {{or .Node.LastSeenAgo "never"}} ago · logs
{{if .OnAdminListener}}{{else}}{{template "nav" .Nav}}{{end}}{{.}}
{{end}}{{end}} {{if .Unhealthy}}{{join .Unhealthy}}
{{end}} {{end}} {{if or .Node.IBPorts .Node.Fabrics}}{{if .Node.Fabrics}}On {{join .Node.Fabrics}}.{{else}}On no fabric: no port a declared fabric names can carry traffic, so no multi-node replica is placed here.{{end}}
{{if .Node.IBPorts}}| Adapter | State | Rate | Fabric | Errors since boot | Sent | Received |
|---|---|---|---|---|---|---|
{{.HCA}}/{{.Port}}{{if eq .LinkLayer "Ethernet"}} RoCE{{end}} |
{{.State}}{{with .PhysState}} {{.}}{{end}} | {{if .RateGbps}}{{.RateGbps}} Gb/s{{else}}—{{end}} | {{or .Fabric "—"}} | {{if .Errors}}{{range $k, $v := .Errors}}{{$k}} {{$v}} {{end}}{{else}}none{{end}} | {{if .TxBytes}}{{bytes (u64 .TxBytes)}}{{else}}—{{end}} | {{if .RxBytes}}{{bytes (u64 .RxBytes)}}{{else}}—{{end}} |
Re-read on every heartbeat. A port that goes down takes its fabric off this node within seconds; one that comes back returns it. Errors are cumulative since the adapter came up: a number that grows is the one to look at.
{{end}} {{end}}| Model | Replica | State | CPU | Memory |
|---|---|---|---|---|
| {{.Model}} | {{.Replica}} |
{{.State}} | {{template "minibar" pctbar .CPUShare}}{{printf "%.1f" .CPUCores}} cores | {{if .MemoryBytes}}{{bytes .MemoryBytes}}{{else}}—{{end}} |
No engines are placed on this node.
{{end}}Engines: {{if .Node.Engines}}{{join .Node.Engines}}{{else}}none installed{{end}}{{if .Node.Models}} · {{len .Node.Models}} model file(s) on disk{{end}}.
No history: {{.Err}}
{{else}}No metrics store is configured, so there is no history here; monitoring.prometheus in the server configuration adds it.