Add product name & version to os collector

This commit is contained in:
Philipp Trulson 2019-10-01 18:54:50 +02:00
parent abd5a53045
commit 375a74f1e8
2 changed files with 19 additions and 1 deletions

View File

@ -17,6 +17,7 @@ func init() {
// A OSCollector is a Prometheus collector for WMI metrics // A OSCollector is a Prometheus collector for WMI metrics
type OSCollector struct { type OSCollector struct {
OSInformation *prometheus.Desc
PhysicalMemoryFreeBytes *prometheus.Desc PhysicalMemoryFreeBytes *prometheus.Desc
PagingFreeBytes *prometheus.Desc PagingFreeBytes *prometheus.Desc
VirtualMemoryFreeBytes *prometheus.Desc VirtualMemoryFreeBytes *prometheus.Desc
@ -36,6 +37,12 @@ func NewOSCollector() (Collector, error) {
const subsystem = "os" const subsystem = "os"
return &OSCollector{ return &OSCollector{
OSInformation: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "info"),
"OperatingSystem.Caption, OperatingSystem.Version",
[]string{"product", "version"},
nil,
),
PagingLimitBytes: prometheus.NewDesc( PagingLimitBytes: prometheus.NewDesc(
prometheus.BuildFQName(Namespace, subsystem, "paging_limit_bytes"), prometheus.BuildFQName(Namespace, subsystem, "paging_limit_bytes"),
"OperatingSystem.SizeStoredInPagingFiles", "OperatingSystem.SizeStoredInPagingFiles",
@ -124,9 +131,11 @@ func (c *OSCollector) Collect(ctx *ScrapeContext, ch chan<- prometheus.Metric) e
// Win32_OperatingSystem docs: // Win32_OperatingSystem docs:
// - https://msdn.microsoft.com/en-us/library/aa394239 - Win32_OperatingSystem class // - https://msdn.microsoft.com/en-us/library/aa394239 - Win32_OperatingSystem class
type Win32_OperatingSystem struct { type Win32_OperatingSystem struct {
Caption string
FreePhysicalMemory uint64 FreePhysicalMemory uint64
FreeSpaceInPagingFiles uint64 FreeSpaceInPagingFiles uint64
FreeVirtualMemory uint64 FreeVirtualMemory uint64
LocalDateTime time.Time
MaxNumberOfProcesses uint32 MaxNumberOfProcesses uint32
MaxProcessMemorySize uint64 MaxProcessMemorySize uint64
NumberOfProcesses uint32 NumberOfProcesses uint32
@ -134,7 +143,7 @@ type Win32_OperatingSystem struct {
SizeStoredInPagingFiles uint64 SizeStoredInPagingFiles uint64
TotalVirtualMemorySize uint64 TotalVirtualMemorySize uint64
TotalVisibleMemorySize uint64 TotalVisibleMemorySize uint64
LocalDateTime time.Time Version string
} }
func (c *OSCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Desc, error) { 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") 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( ch <- prometheus.MustNewConstMetric(
c.PhysicalMemoryFreeBytes, c.PhysicalMemoryFreeBytes,
prometheus.GaugeValue, prometheus.GaugeValue,

View File

@ -16,6 +16,7 @@ None
Name | Description | Type | Labels 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_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_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 `wmi_os_physical_memory_free_bytes` | Bytes of physical memory currently unused and available | gauge | None