Add machine id to sysinfo
All checks were successful
/ go-test (push) Successful in 9m47s

This commit is contained in:
Melora Hugues 2024-12-07 17:43:03 +01:00
parent 79476151b5
commit 673e3ea0b2
Signed by: faercol
SSH key fingerprint: SHA256:lzUKsKDIw1w0bcLnoBu84oYJOnLmi7SeKetszpyDCFY

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),
}
}