diff --git a/agent/system.go b/agent/system.go index 3cd03144..126d6b1c 100644 --- a/agent/system.go +++ b/agent/system.go @@ -6,6 +6,7 @@ import ( "fmt" "log/slog" "os" + "runtime" "strconv" "strings" "time" @@ -41,6 +42,11 @@ func (a *Agent) refreshStaticInfo() { } a.systemDetails.Hostname, _ = os.Hostname() + if arch, err := host.KernelArch(); err == nil { + a.systemDetails.Arch = arch + } else { + a.systemDetails.Arch = runtime.GOARCH + } platform, _, version, _ := host.PlatformInformation() diff --git a/internal/entities/system/system.go b/internal/entities/system/system.go index c64b036d..9671f422 100644 --- a/internal/entities/system/system.go +++ b/internal/entities/system/system.go @@ -158,10 +158,11 @@ type Details struct { Hostname string `cbor:"0,keyasint"` Kernel string `cbor:"1,keyasint,omitempty"` Cores int `cbor:"2,keyasint"` - Threads int `cbor:"3,keyasint,omitempty"` + Threads int `cbor:"3,keyasint"` CpuModel string `cbor:"4,keyasint"` Os Os `cbor:"5,keyasint"` OsName string `cbor:"6,keyasint"` + Arch string `cbor:"7,keyasint"` Podman bool `cbor:"8,keyasint,omitempty"` MemoryTotal uint64 `cbor:"9,keyasint"` } diff --git a/internal/hub/systems/system.go b/internal/hub/systems/system.go index 09bb82c9..45224792 100644 --- a/internal/hub/systems/system.go +++ b/internal/hub/systems/system.go @@ -236,6 +236,7 @@ func createStaticInfoRecord(app core.App, data *system.Details, systemId string) record.Set("cpu", data.CpuModel) record.Set("os", data.Os) record.Set("os_name", data.OsName) + record.Set("arch", data.Arch) record.Set("memory", data.MemoryTotal) record.Set("podman", data.Podman) return app.SaveNoValidate(record) diff --git a/internal/migrations/0_collections_snapshot_0_18_0_dev_0.go b/internal/migrations/0_collections_snapshot_0_18_0_dev_1.go similarity index 99% rename from internal/migrations/0_collections_snapshot_0_18_0_dev_0.go rename to internal/migrations/0_collections_snapshot_0_18_0_dev_1.go index e59dbaca..320b4eed 100644 --- a/internal/migrations/0_collections_snapshot_0_18_0_dev_0.go +++ b/internal/migrations/0_collections_snapshot_0_18_0_dev_1.go @@ -1539,6 +1539,20 @@ func init() { "system": false, "type": "text" }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text4161937994", + "max": 0, + "min": 0, + "name": "arch", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, { "hidden": false, "id": "number4245036687", diff --git a/internal/site/src/components/routes/system/info-bar.tsx b/internal/site/src/components/routes/system/info-bar.tsx index 0b6c0a2c..aac9ea9d 100644 --- a/internal/site/src/components/routes/system/info-bar.tsx +++ b/internal/site/src/components/routes/system/info-bar.tsx @@ -7,6 +7,7 @@ import { cn, formatBytes, getHostDisplayValue, secondsToString, toFixedFloat } f import { Separator } from "@/components/ui/separator" import { AppleIcon, + BinaryIcon, ChevronRightSquareIcon, ClockArrowUp, CpuIcon, @@ -46,7 +47,7 @@ export default function InfoBar({ } pb.collection("system_details") .getOne(system.id, { - fields: "hostname,kernel,cores,threads,cpu,os,os_name,memory,podman", + fields: "hostname,kernel,cores,threads,cpu,os,os_name,arch,memory,podman", headers: { "Cache-Control": "public, max-age=60", }, @@ -72,6 +73,7 @@ export default function InfoBar({ const cpuModel = details?.cpu ?? system.info.m const os = details?.os ?? system.info.os ?? Os.Linux const osName = details?.os_name + const arch = details?.arch const memory = details?.memory const osInfo = { @@ -116,6 +118,7 @@ export default function InfoBar({ }, { value: uptime, Icon: ClockArrowUp, label: t`Uptime`, hide: !system.info.u }, osInfo[os], + { value: arch, Icon: BinaryIcon, hide: !arch }, ] as { value: string | number | undefined label?: string @@ -123,6 +126,12 @@ export default function InfoBar({ hide?: boolean }[] + info.push({ + value: `${cpuModel} (${cores}c${threads ? `/${threads}t` : ""})`, + Icon: CpuIcon, + hide: !cpuModel, + }) + if (memory) { const memValue = formatBytes(memory, false, undefined, false) info.push({ @@ -133,12 +142,6 @@ export default function InfoBar({ }) } - info.push({ - value: `${cpuModel} (${cores}c${threads ? `/${threads}t` : ""})`, - Icon: CpuIcon, - hide: !cpuModel, - }) - return info }, [system, details, t])