diff --git a/modules/servers/tyr/glance.nix b/modules/servers/tyr/glance.nix index 77b65d4..5da1f26 100644 --- a/modules/servers/tyr/glance.nix +++ b/modules/servers/tyr/glance.nix @@ -1,4 +1,4 @@ -{ +{config, ...}: { services.glance = { enable = true; openFirewall = true; @@ -45,10 +45,235 @@ ]; } { - type = "videos"; - channels = [ - "UCR-DXc1voovS8nhAvccRZhg" - ]; + type = "custom-api"; + title = "Beszel stats"; + cache = "5m"; + options = { + base-url = "\${BESZEL_URL}"; + api-key = "\${BESZEL_TOKEN}"; + }; + template = '' + {{/* Required config options */}} + {{ $baseURL := .Options.StringOr "base-url" "" }} + {{ $apiKey := .Options.StringOr "api-key" "" }} + + {{/* Error message template */}} + {{ define "errorMsg" }} +
+{{ . }}
+ {{ end }} + + {{ define "formatGigabytes" }} + {{ $value := . }} + {{ $label := "GB" }} + {{- if lt $value 1.0 }} + {{ $value = mul $value 1000.0 }} + {{ $label = "MB" }} + {{- else if lt $value 1000.0 }} + {{ else }} + {{ $value = div $value 1000.0 }} + {{ $label = "TB" }} + {{ end }} + {{ printf "%.1f" $value }} {{ $label }} + {{ end }} + + {{/* Check required fields */}} + {{ if or (eq $baseURL "") (eq $apiKey "") }} + {{ template "errorMsg" "Some required options are not set." }} + {{ else }} + + {{ $token := concat "Bearer " $apiKey }} + + {{ $systemsResponse := newRequest (print $baseURL "/api/collections/systems/records") + | withHeader "Authorization" $token + | getResponse }} + {{ $systems := $systemsResponse.JSON.Array "items" }} + + + {{ range $n, $system := $systems }} + {{ $status := $system.String "status" }} + + {{ $systemStatsRequest := newRequest (print $baseURL "/api/collections/system_stats/records") + | withHeader "Authorization" $token + | withParameter "sort" "-created" + | withParameter "page" "1" + | withParameter "perPage" "1" + | withParameter "filter" (print "type='1m'&&system='" ($system.String "id") "'") + | getResponse }} + {{ $systemStats := index ($systemStatsRequest.JSON.Array "items") 0 }} + + {{ $hostname := $system.String "name" }} + {{ $uptimeSec := $system.Float "info.u" }} + + {{ $systemTemp := $system.Float "info.dt"}} + + {{ $cpuLoad := $system.Float "info.cpu" }} + {{ $cpuLoad1m := $system.Float "info.l1" }} + {{ $cpuLoad15m := $system.Float "info.l15" }} + + {{ $memoryUsedPercent := $system.Float "info.mp" }} + {{ $memoryTotalGb := $systemStats.Float "stats.m" }} + {{ $memoryUsedGb := $systemStats.Float "stats.mu" }} + + {{ $swapTotalGb := $systemStats.Float "stats.s" }} + {{ $swapUsedGb := $systemStats.Float "stats.su" }} + {{ $swapUsedPercent := mul (div $swapUsedGb $swapTotalGb) 100.0 }} + + {{ $rootUsedPercent := $system.Float "info.dp" }} + {{ $rootTotalGb := $systemStats.Float "stats.d" }} + {{ $rootUsedGb := $systemStats.Float "stats.du" }} + +