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"
osRealeaseFile = "/etc/os-release"
versionFile = "/proc/version"
machineIDFile = "/etc/machine-id"
)
var labels = []string{
@ -28,6 +29,7 @@ var labels = []string{
"os",
"distro",
"distro_version",
"machine_id",
}
type SysinfoCollector struct {
@ -36,10 +38,12 @@ type SysinfoCollector struct {
os string
distro string
distroVersion string
machineID string
hostnameFile string
osReleaseFile string
versionFile string
machineIDFile string
promExporter *prometheus.GaugeVec
updateFreq time.Duration
@ -57,6 +61,7 @@ func (c *SysinfoCollector) labels() prometheus.Labels {
"os": c.os,
"distro": c.distro,
"distro_version": c.distroVersion,
"machine_id": c.machineID,
}
}
@ -111,6 +116,16 @@ func (c *SysinfoCollector) updateDistro() error {
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 {
if err := c.updateKernelVersion(); err != nil {
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 {
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)
return nil
@ -158,6 +176,7 @@ func New() *SysinfoCollector {
hostnameFile: hosnameFile,
osReleaseFile: osRealeaseFile,
versionFile: versionFile,
machineIDFile: machineIDFile,
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,
uptimeFreq: 1 * time.Second,
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"}),
}
}