From a59b73e06ba5df13814a74c16e3eea7743a36032 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 18 Jun 2024 17:18:49 +0800 Subject: [PATCH] fix collector-agent failed to report raw metrics --- cmd/monitor/collector/bootstrap-agent.yaml | 18 ++++++--- .../plugins/exporters/collector/provider.go | 40 +++++++++++++++++-- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/cmd/monitor/collector/bootstrap-agent.yaml b/cmd/monitor/collector/bootstrap-agent.yaml index 9d3327d0efe..a9bc3846d89 100644 --- a/cmd/monitor/collector/bootstrap-agent.yaml +++ b/cmd/monitor/collector/bootstrap-agent.yaml @@ -7,6 +7,12 @@ health: erda.oap.collector.core: pipelines: + raws: + - receivers: [ "erda.oap.collector.receiver.collector" ] + processors: + - "erda.oap.collector.processor.dropper@application-agent" + exporters: [ "erda.oap.collector.exporter.collector@metrics" ] + metrics: - receivers: #- "erda.oap.collector.receiver.dummy" @@ -24,11 +30,6 @@ erda.oap.collector.core: - "erda.oap.collector.exporter.collector@metrics" batch_size: ${METRIC_PROMETHEUS_BATCH_SIZE:1024} - - receivers: [ "erda.oap.collector.receiver.collector" ] - processors: - - "erda.oap.collector.processor.dropper@application-agent" - exporters: [ "erda.oap.collector.exporter.collector@metrics" ] - external_metrics: - receivers: - "erda.oap.collector.receiver.prometheus-remote-write@external_metrics" @@ -51,6 +52,13 @@ erda.oap.collector.core: erda.oap.collector.receiver.prometheus-remote-write@default: +grpc-client@erda.core.token: + addr: "${ERDA_SERVER_GRPC_ADDR:erda-server:8096}" +erda.core.token-client: + +erda.oap.collector.authentication: + sync_interval: ${COLLECTOR_AUTHENTICATION_AK_SYNC_INTERVAL:2m} + erda.oap.collector.receiver.collector: auth: username: "${COLLECTOR_AUTH_USERNAME:collector}" diff --git a/internal/tools/monitor/oap/collector/plugins/exporters/collector/provider.go b/internal/tools/monitor/oap/collector/plugins/exporters/collector/provider.go index acfb888c3e2..4cac35a2807 100644 --- a/internal/tools/monitor/oap/collector/plugins/exporters/collector/provider.go +++ b/internal/tools/monitor/oap/collector/plugins/exporters/collector/provider.go @@ -99,9 +99,43 @@ func (p *provider) ExportMetric(items ...*metric.Metric) error { return nil } -func (p *provider) ExportLog(items ...*log.Log) error { return nil } -func (p *provider) ExportSpan(items ...*trace.Span) error { return nil } -func (p *provider) ExportRaw(items ...*odata.Raw) error { return nil } +func (p *provider) ExportLog(items ...*log.Log) error { return nil } +func (p *provider) ExportSpan(items ...*trace.Span) error { return nil } +func (p *provider) ExportRaw(items ...*odata.Raw) error { + data := make([]*metric.Metric, 0, len(items)) + for _, item := range items { + m := metric.Metric{} + if err := json.Unmarshal(item.Data, &m); err != nil { + return fmt.Errorf("unmarshal data err: %w", err) + } + data = append(data, &m) + } + objs := map[string][]*metric.Metric{ + "metrics": data, + } + buf, err := json.Marshal(&objs) + if err != nil { + return fmt.Errorf("serialize err: %w", err) + } + buf, err = p.cp.Compress(buf) + if err != nil { + return fmt.Errorf("compress err: %w", err) + } + req, err := http.NewRequest(http.MethodPost, p.Cfg.URL, bytes.NewReader(buf)) + if err != nil { + return fmt.Errorf("create request err: %w", err) + } + setHeaders(req, p.Cfg.Headers) + p.au.Secure(req) + code, err := doRequest(p.client, req) + if err != nil { + return fmt.Errorf("do request err: %w", err) + } + if code < 200 || code >= 300 { + return fmt.Errorf("response status code %d is not success", code) + } + return nil +} func (p *provider) ExportProfile(items ...*profile.Output) error { return nil } func (p *provider) ComponentConfig() interface{} {