Metrics now have expiration if not updated
This commit is contained in:
@@ -21,6 +21,7 @@ type PveMetricsCollector interface {
|
||||
type PveMetricsManager struct {
|
||||
apiClient *proxmox.PveApiClient // Proxmox virtual environment API client instance.
|
||||
collectors []PveMetricsCollector // Metrics collector instances.
|
||||
registry *TTLRegistry // Registry which handles autoamtic dangling metrics deletion.
|
||||
|
||||
latencySummary *prometheus.SummaryVec // Collection latency summary.
|
||||
interval int // Collection interval.
|
||||
@@ -32,45 +33,46 @@ type PveMetricsManager struct {
|
||||
func NewPveMetricsManager(apiClient *proxmox.PveApiClient, conf *configuration.PveConfiguration) *PveMetricsManager {
|
||||
c := PveMetricsManager{apiClient: apiClient, interval: conf.Interval}
|
||||
metricsCf := conf.Metrics
|
||||
c.registry = NewTTLRegistry()
|
||||
|
||||
// Cluster state metrics collector.
|
||||
if metricsCf.ClusterState {
|
||||
c.RegisterCollector(NewPveClusterStateCollector(apiClient))
|
||||
c.RegisterCollector(NewPveClusterStateCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node state metrics collector.
|
||||
if metricsCf.NodeStatus {
|
||||
c.RegisterCollector(NewPveNodeStatusCollector(apiClient))
|
||||
c.RegisterCollector(NewPveNodeStatusCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node subscription state collector.
|
||||
if metricsCf.Subscription {
|
||||
c.RegisterCollector(NewPveSubscriptionCollector(apiClient))
|
||||
c.RegisterCollector(NewPveSubscriptionCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node disk collector.
|
||||
if metricsCf.Disk {
|
||||
c.RegisterCollector(NewPveNodeDiskCollector(apiClient))
|
||||
c.RegisterCollector(NewPveNodeDiskCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node SDN collector.
|
||||
if metricsCf.SDN {
|
||||
c.RegisterCollector(NewPveSdnCollector(apiClient))
|
||||
c.RegisterCollector(NewPveSdnCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node storage collector.
|
||||
if metricsCf.Storage {
|
||||
c.RegisterCollector(NewPveStorageCollector(apiClient))
|
||||
c.RegisterCollector(NewPveStorageCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node container collector.
|
||||
if metricsCf.LXC {
|
||||
c.RegisterCollector(NewPveContainerCollector(apiClient))
|
||||
c.RegisterCollector(NewPveContainerCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Node virtual machine collector.
|
||||
if metricsCf.QEMU {
|
||||
c.RegisterCollector(NewPveVirtualMachineCollector(apiClient))
|
||||
c.RegisterCollector(NewPveVirtualMachineCollector(apiClient, c.registry))
|
||||
}
|
||||
|
||||
// Metrics collection latency summary.
|
||||
@@ -79,6 +81,8 @@ func NewPveMetricsManager(apiClient *proxmox.PveApiClient, conf *configuration.P
|
||||
Help: "Summary of metrics collection latency milliseconds from PVE API.",
|
||||
}, []string{"collector"})
|
||||
|
||||
c.registry.StartCleanupLoop(5 * time.Second)
|
||||
|
||||
return &c
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user