From cc287e9af0cee83cb79cab3db154114b47232db6 Mon Sep 17 00:00:00 2001 From: Alexey Remizov Date: Thu, 15 Aug 2019 00:12:51 +0300 Subject: [PATCH] Parse values of type timestamp --- main.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 2708fb9..ddb5322 100644 --- a/main.go +++ b/main.go @@ -83,7 +83,7 @@ func (e *Exporter) collectMetrics(stats *Stats, ch chan<- prometheus.Metric) { } func (e *Exporter) collectTree(name string, data interface{}, labels prometheus.Labels, ch chan<- prometheus.Metric) { - if v, ok := data.(float64); ok { + if v, ok := parseData(data); ok { if len(labels) == 0 { metric := prometheus.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, @@ -184,6 +184,20 @@ func (e *Exporter) collectPlugins(name string, section string, data interface{}, } } +func parseData(data interface{}) (float64, bool) { + if value, ok := data.(float64); ok { + return value, ok + } + + if v, ok := data.(string); ok { + if timestamp, err := time.Parse(time.RFC3339, v); err == nil { + return float64(timestamp.Unix()), true + } + } + + return 0, false +} + func (e *Exporter) fetchStats() (*Stats, error) { body, err := e.fetch(e.nodeStatsUri) if err != nil {