From e1e2f3c087c9ec78a2f39a1d1c317449bddbee67 Mon Sep 17 00:00:00 2001 From: mountain Date: Mon, 27 Nov 2023 23:27:53 +0900 Subject: [PATCH] =?UTF-8?q?endian=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/custom_exporter.go | 4 +++- client/operation.go | 12 +++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/client/custom_exporter.go b/client/custom_exporter.go index 911fc51..68441f7 100644 --- a/client/custom_exporter.go +++ b/client/custom_exporter.go @@ -30,7 +30,7 @@ type metricValueAccessor struct { ptr *uint64 } -func (va metricValueAccessor) set(val float64) { +func (va *metricValueAccessor) set(val float64) { atomic.StoreUint64(va.ptr, math.Float64bits(val)) } @@ -69,6 +69,7 @@ func (e *exporterForPrometheus) registMetric(namespace string, desc metric.Metri func (e *exporterForPrometheus) Describe(ch chan<- *prometheus.Desc) { ptr := atomic.LoadPointer(&e.metricPtr) container := *(*[]metricDesc)(ptr) + for _, v := range container { ch <- v.Desc } @@ -77,6 +78,7 @@ func (e *exporterForPrometheus) Describe(ch chan<- *prometheus.Desc) { func (e *exporterForPrometheus) Collect(ch chan<- prometheus.Metric) { ptr := atomic.LoadPointer(&e.metricPtr) container := *(*[]metricDesc)(ptr) + for _, v := range container { ch <- prometheus.MustNewConstMetric(v.Desc, v.valueType, math.Float64frombits(atomic.LoadUint64(v.val))) } diff --git a/client/operation.go b/client/operation.go index afe9c97..0996521 100644 --- a/client/operation.go +++ b/client/operation.go @@ -277,14 +277,16 @@ func (hc *houstonClient) launch(meta *procmeta) error { exporter := newExporterForPrometheus() accessor := exporter.registMetric(hc.config.MetricNamespace, metric) - prometheus.Register(exporter) - - metricValues[metric.Key] = accessor - logger.Println("metric registered :", metric) + if err := prometheus.Register(exporter); err != nil { + logger.Println("prometheus.Register error :", err) + } else { + metricValues[metric.Key] = accessor + logger.Println("metric registered :", metric) + } } } else { keybytes := metricBuffer[:8] - valbits := binary.BigEndian.Uint64(metricBuffer[8:]) + valbits := binary.LittleEndian.Uint64(metricBuffer[8:]) val := math.Float64frombits(valbits) if accessor, ok := metricValues[string(keybytes)]; ok {