Compare commits

...

2 commits

Author SHA1 Message Date
673e3ea0b2
Add machine id to sysinfo
All checks were successful
/ go-test (push) Successful in 9m47s
2024-12-07 17:43:03 +01:00
79476151b5
Fix uptime unit 2024-12-07 17:22:49 +01:00
2 changed files with 20 additions and 1 deletions

View file

@ -20,6 +20,7 @@ const (
hosnameFile = "/etc/hostname" hosnameFile = "/etc/hostname"
osRealeaseFile = "/etc/os-release" osRealeaseFile = "/etc/os-release"
versionFile = "/proc/version" versionFile = "/proc/version"
machineIDFile = "/etc/machine-id"
) )
var labels = []string{ var labels = []string{
@ -28,6 +29,7 @@ var labels = []string{
"os", "os",
"distro", "distro",
"distro_version", "distro_version",
"machine_id",
} }
type SysinfoCollector struct { type SysinfoCollector struct {
@ -36,10 +38,12 @@ type SysinfoCollector struct {
os string os string
distro string distro string
distroVersion string distroVersion string
machineID string
hostnameFile string hostnameFile string
osReleaseFile string osReleaseFile string
versionFile string versionFile string
machineIDFile string
promExporter *prometheus.GaugeVec promExporter *prometheus.GaugeVec
updateFreq time.Duration updateFreq time.Duration
@ -57,6 +61,7 @@ func (c *SysinfoCollector) labels() prometheus.Labels {
"os": c.os, "os": c.os,
"distro": c.distro, "distro": c.distro,
"distro_version": c.distroVersion, "distro_version": c.distroVersion,
"machine_id": c.machineID,
} }
} }
@ -111,6 +116,16 @@ func (c *SysinfoCollector) updateDistro() error {
return nil return nil
} }
func (c *SysinfoCollector) updateMachineID() error {
machineIDContent, err := os.ReadFile(c.machineIDFile)
if err != nil {
return err
}
c.machineID = strings.TrimSpace(string(machineIDContent))
return nil
}
func (c *SysinfoCollector) update() error { func (c *SysinfoCollector) update() error {
if err := c.updateKernelVersion(); err != nil { if err := c.updateKernelVersion(); err != nil {
return fmt.Errorf("failed to get kernel version: %w", err) return fmt.Errorf("failed to get kernel version: %w", err)
@ -121,6 +136,9 @@ func (c *SysinfoCollector) update() error {
if err := c.updateDistro(); err != nil { if err := c.updateDistro(); err != nil {
return fmt.Errorf("failed to get distro info: %w", err) return fmt.Errorf("failed to get distro info: %w", err)
} }
if err := c.updateMachineID(); err != nil {
return fmt.Errorf("failed to get machine-id: %w", err)
}
c.promExporter.With(c.labels()).Set(1) c.promExporter.With(c.labels()).Set(1)
return nil return nil
@ -158,6 +176,7 @@ func New() *SysinfoCollector {
hostnameFile: hosnameFile, hostnameFile: hosnameFile,
osReleaseFile: osRealeaseFile, osReleaseFile: osRealeaseFile,
versionFile: versionFile, versionFile: versionFile,
machineIDFile: machineIDFile,
promExporter: prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "system", Name: "info", Help: "System global information"}, labels), promExporter: prometheus.NewGaugeVec(prometheus.GaugeOpts{Namespace: "system", Name: "info", Help: "System global information"}, labels),
} }
} }

View file

@ -82,7 +82,7 @@ func New() *UptimeCollector {
procFileLocation: procUptimeLocation, procFileLocation: procUptimeLocation,
uptimeFreq: 1 * time.Second, uptimeFreq: 1 * time.Second,
uptime: 0, uptime: 0,
uptimeProm: prometheus.NewGauge(prometheus.GaugeOpts{Namespace: "system", Name: "uptime_nanosec", Help: "System uptime in nanoseconds"}), uptimeProm: prometheus.NewGauge(prometheus.GaugeOpts{Namespace: "system", Name: "uptime_sec", Help: "System uptime in seconds"}),
} }
} }