metrix exporter를 프로세스 단위로 내림

This commit is contained in:
2023-11-30 14:47:11 +09:00
parent 1d3266bbaf
commit 2744a0a990
4 changed files with 14 additions and 18 deletions

View File

@ -269,6 +269,9 @@ func (hc *houstonClient) launch(meta *procmeta) error {
}
}()
metricExporter := metric.NewPrometheusExport(hc.config.MetricNamespace)
defer metricExporter.Shutdown()
for {
buff, err := reader.ReadBytes('\n')
if err != nil {
@ -289,16 +292,22 @@ func (hc *houstonClient) launch(meta *procmeta) error {
metricBuffer = metricBuffer[:len(metricBuffer)-2]
if metricBuffer[0] == '{' {
var metric metric.MetricDescription
if err := json.Unmarshal(metricBuffer, &metric); err != nil {
var desc metric.MetricDescription
if err := json.Unmarshal(metricBuffer, &desc); err != nil {
logger.Println("unmarshal metric failed :", err, string(metricBuffer))
continue
}
if index != 0 {
if desc.ConstLabels == nil {
desc.ConstLabels = make(map[string]string)
}
desc.ConstLabels["index"] = fmt.Sprintf("%d", index)
}
hc.metricExporter.RegisterMetric(&metric)
metricExporter.RegisterMetric(&desc)
} else {
key, val := metric.ReadMetricValue(metricBuffer)
hc.metricExporter.UpdateMetric(key, val)
metricExporter.UpdateMetric(key, val)
}
metricBuffer = metricBuffer[:0]