From d18fe3e3a1a9e8d90c9c0ec660db04ce0f617140 Mon Sep 17 00:00:00 2001 From: mountain Date: Thu, 23 Nov 2023 14:55:37 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=94=ED=8A=B8=EB=A6=AD=20=EC=A4=91?= =?UTF-8?q?=EB=B3=B5=20=EB=93=B1=EB=A1=9D=EC=8B=9C=20=ED=81=AC=EB=9E=98?= =?UTF-8?q?=EC=8B=9C=20=EB=A7=89=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/operation.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/client/operation.go b/client/operation.go index b0a6870..228b6e1 100644 --- a/client/operation.go +++ b/client/operation.go @@ -250,19 +250,28 @@ func (hc *houstonClient) launch(meta *procmeta) error { } if readingMetric { + logger.Println("readingMetric is on :", string(buff)) if metricBuffer[len(metricBuffer)-2] == metric.METRIC_TAIL_INLINE { readingMetric = false + logger.Println("readingMetric is off :", string(buff)) metricBuffer = metricBuffer[:len(metricBuffer)-2] if metricBuffer[0] == '{' { var metric metric.MetricDescription - json.Unmarshal(metricBuffer, &metric) + if err := json.Unmarshal(metricBuffer, &metric); err != nil { + logger.Println("unmarshal metric failed :", err, string(metricBuffer)) + continue + } - exporter := newExporterForPrometheus() - accessor := exporter.registMetric(childProcName, metric) - prometheus.MustRegister(exporter) + if _, registered := metricValues[metric.Key]; !registered { + exporter := newExporterForPrometheus() + accessor := exporter.registMetric(childProcName, metric) - metricValues[metric.Key] = accessor + prometheus.Register(exporter) + + metricValues[metric.Key] = accessor + logger.Println("metric registered :", metric) + } } else { keybytes := metricBuffer[:8] valbits := binary.BigEndian.Uint64(metricBuffer[8:])