From 375a74f1e8b196dec2eb734ed3c3170cf1cbe4a9 Mon Sep 17 00:00:00 2001 From: Philipp Trulson Date: Tue, 1 Oct 2019 18:54:50 +0200 Subject: [PATCH] Add product name & version to os collector --- collector/os.go | 19 ++++++++++++++++++- docs/collector.os.md | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/collector/os.go b/collector/os.go index b13e0d3b..50c82b62 100644 --- a/collector/os.go +++ b/collector/os.go @@ -17,6 +17,7 @@ func init() { // A OSCollector is a Prometheus collector for WMI metrics type OSCollector struct { + OSInformation *prometheus.Desc PhysicalMemoryFreeBytes *prometheus.Desc PagingFreeBytes *prometheus.Desc VirtualMemoryFreeBytes *prometheus.Desc @@ -36,6 +37,12 @@ func NewOSCollector() (Collector, error) { const subsystem = "os" return &OSCollector{ + OSInformation: prometheus.NewDesc( + prometheus.BuildFQName(Namespace, subsystem, "info"), + "OperatingSystem.Caption, OperatingSystem.Version", + []string{"product", "version"}, + nil, + ), PagingLimitBytes: prometheus.NewDesc( prometheus.BuildFQName(Namespace, subsystem, "paging_limit_bytes"), "OperatingSystem.SizeStoredInPagingFiles", @@ -124,9 +131,11 @@ func (c *OSCollector) Collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) e // Win32_OperatingSystem docs: // - https://msdn.microsoft.com/en-us/library/aa394239 - Win32_OperatingSystem class type Win32_OperatingSystem struct { + Caption string FreePhysicalMemory uint64 FreeSpaceInPagingFiles uint64 FreeVirtualMemory uint64 + LocalDateTime time.Time MaxNumberOfProcesses uint32 MaxProcessMemorySize uint64 NumberOfProcesses uint32 @@ -134,7 +143,7 @@ type Win32_OperatingSystem struct { SizeStoredInPagingFiles uint64 TotalVirtualMemorySize uint64 TotalVisibleMemorySize uint64 - LocalDateTime time.Time + Version string } func (c *OSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, error) { @@ -148,6 +157,14 @@ func (c *OSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, er return nil, errors.New("WMI query returned empty result set") } + ch <- prometheus.MustNewConstMetric( + c.OSInformation, + prometheus.GaugeValue, + 1.0, + dst[0].Caption, + dst[0].Version, + ) + ch <- prometheus.MustNewConstMetric( c.PhysicalMemoryFreeBytes, prometheus.GaugeValue, diff --git a/docs/collector.os.md b/docs/collector.os.md index 29c525a3..a4ad5b91 100644 --- a/docs/collector.os.md +++ b/docs/collector.os.md @@ -16,6 +16,7 @@ None Name | Description | Type | Labels -----|-------------|------|------- +`wmi_os_info` | Contains full product name & version in labels | gauge | `product`, `version` `wmi_os_paging_limit_bytes` | Total number of bytes that can be sotred in the operating system paging files. 0 (zero) indicates that there are no paging files | gauge | None `wmi_os_paging_free_bytes` | Number of bytes that can be mapped into the operating system paging files without causing any other pages to be swapped out | gauge | None `wmi_os_physical_memory_free_bytes` | Bytes of physical memory currently unused and available | gauge | None