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

@ -23,7 +23,6 @@ import (
"unsafe"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/gocommon/metric"
"repositories.action2quare.com/ayo/houston/shared"
"repositories.action2quare.com/ayo/houston/shared/protos"
@ -107,7 +106,6 @@ type houstonClient struct {
config clientConfig
version string
standalone bool
metricExporter metric.Exporter
siblingProcIndex map[string]uint64
}
@ -268,7 +266,6 @@ func NewClient(standalone bool) (HoustonClient, error) {
timestamp: exefi.ModTime().String(),
version: string(ver),
standalone: standalone,
metricExporter: metric.NewPrometheusExport(clientConfig.MetricNamespace),
siblingProcIndex: make(map[string]uint64),
}

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]