From baba51bc6a21cf4ea7fdf93e093b54889774485c Mon Sep 17 00:00:00 2001 From: Stefan Lengauer Date: Mon, 24 Feb 2020 17:00:22 +0100 Subject: [PATCH] Add collector for hostname information This can be useful for building grafana dashboards with dropdowns for multiple hosts Or for managed instances of Prometheus where the user is not able to add labels via config --- collector/cs.go | 29 +++++++++++++++++++++++++++++ docs/collector.cs.md | 1 + 2 files changed, 30 insertions(+) diff --git a/collector/cs.go b/collector/cs.go index 6c4ada3bd..a0576bc2b 100644 --- a/collector/cs.go +++ b/collector/cs.go @@ -18,6 +18,7 @@ func init() { type CSCollector struct { PhysicalMemoryBytes *prometheus.Desc LogicalProcessors *prometheus.Desc + Hostname *prometheus.Desc } // NewCSCollector ... @@ -37,6 +38,15 @@ func NewCSCollector() (Collector, error) { nil, nil, ), + Hostname: prometheus.NewDesc( + prometheus.BuildFQName(Namespace, subsystem, "hostname"), + "Labeled system hostname information as provided by ComputerSystem.DNSHostName and ComputerSystem.Domain", + []string{ + "hostname", + "domain", + "fqdn"}, + nil, + ), }, nil } @@ -55,6 +65,9 @@ func (c *CSCollector) Collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) e type Win32_ComputerSystem struct { NumberOfLogicalProcessors uint32 TotalPhysicalMemory uint64 + DNSHostname string + Domain string + Workgroup string } func (c *CSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, error) { @@ -79,5 +92,21 @@ func (c *CSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, er float64(dst[0].TotalPhysicalMemory), ) + var fqdn string + if dst[0].Domain != dst[0].Workgroup { + fqdn = dst[0].DNSHostname + "." + dst[0].Domain + } else { + fqdn = dst[0].DNSHostname + } + + ch <- prometheus.MustNewConstMetric( + c.Hostname, + prometheus.GaugeValue, + 1.0, + dst[0].DNSHostname, + dst[0].Domain, + fqdn, + ) + return nil, nil } diff --git a/docs/collector.cs.md b/docs/collector.cs.md index 8acd1a4b0..8a914e8eb 100644 --- a/docs/collector.cs.md +++ b/docs/collector.cs.md @@ -18,6 +18,7 @@ Name | Description | Type | Labels -----|-------------|------|------- `wmi_cs_logical_processors` | Number of installed logical processors | gauge | None `wmi_cs_physical_memory_bytes` | Total installed physical memory | gauge | None +`wmi_cs_hostname` | Labeled system hostname information | gauge | `hostname`, `domain`, `fqdn` ### Example metric _This collector does not yet have explained examples, we would appreciate your help adding them!_