1
1
// Copyright The OpenTelemetry Authors
2
2
// SPDX-License-Identifier: Apache-2.0
3
3
4
- package gpu
4
+ package gpu // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver/internal/gpu"
5
5
6
6
import (
7
- "context"
8
- "errors"
9
- "fmt"
10
7
"time"
11
8
12
9
configutil "github.com/prometheus/common/config"
@@ -15,14 +12,8 @@ import (
15
12
"github.com/prometheus/prometheus/discovery"
16
13
"github.com/prometheus/prometheus/discovery/kubernetes"
17
14
"github.com/prometheus/prometheus/model/relabel"
18
- "go.opentelemetry.io/collector/component"
19
- "go.opentelemetry.io/collector/consumer"
20
- "go.opentelemetry.io/collector/pdata/pmetric"
21
- "go.opentelemetry.io/collector/receiver"
22
- "go.uber.org/zap"
23
15
24
16
ci "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight"
25
- "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver"
26
17
)
27
18
28
19
const (
@@ -33,77 +24,13 @@ const (
33
24
scraperK8sServiceSelector = "k8s-app=dcgm-exporter-service"
34
25
)
35
26
36
- type DcgmScraper struct {
37
- ctx context.Context
38
- settings component.TelemetrySettings
39
- host component.Host
40
- hostInfoProvider hostInfoProvider
41
- prometheusReceiver receiver.Metrics
42
- k8sDecorator Decorator
43
- running bool
44
- }
45
-
46
- type DcgmScraperOpts struct {
47
- Ctx context.Context
48
- TelemetrySettings component.TelemetrySettings
49
- Consumer consumer.Metrics
50
- Host component.Host
51
- HostInfoProvider hostInfoProvider
52
- K8sDecorator Decorator
53
- Logger * zap.Logger
54
- }
55
-
56
27
type hostInfoProvider interface {
57
28
GetClusterName () string
58
29
GetInstanceID () string
59
30
GetInstanceType () string
60
31
}
61
32
62
- func NewDcgmScraper (opts DcgmScraperOpts ) (* DcgmScraper , error ) {
63
- if opts .Consumer == nil {
64
- return nil , errors .New ("consumer cannot be nil" )
65
- }
66
- if opts .Host == nil {
67
- return nil , errors .New ("host cannot be nil" )
68
- }
69
- if opts .HostInfoProvider == nil {
70
- return nil , errors .New ("cluster name provider cannot be nil" )
71
- }
72
-
73
- promConfig := prometheusreceiver.Config {
74
- PrometheusConfig : & config.Config {
75
- ScrapeConfigs : []* config.ScrapeConfig {getScraperConfig (opts .HostInfoProvider )},
76
- },
77
- }
78
-
79
- params := receiver.CreateSettings {
80
- TelemetrySettings : opts .TelemetrySettings ,
81
- }
82
-
83
- decoConsumer := decorateConsumer {
84
- containerOrchestrator : ci .EKS ,
85
- nextConsumer : opts .Consumer ,
86
- k8sDecorator : opts .K8sDecorator ,
87
- logger : opts .Logger ,
88
- }
89
-
90
- promFactory := prometheusreceiver .NewFactory ()
91
- promReceiver , err := promFactory .CreateMetricsReceiver (opts .Ctx , params , & promConfig , & decoConsumer )
92
- if err != nil {
93
- return nil , fmt .Errorf ("failed to create prometheus receiver: %w" , err )
94
- }
95
-
96
- return & DcgmScraper {
97
- ctx : opts .Ctx ,
98
- settings : opts .TelemetrySettings ,
99
- host : opts .Host ,
100
- hostInfoProvider : opts .HostInfoProvider ,
101
- prometheusReceiver : promReceiver ,
102
- k8sDecorator : opts .K8sDecorator ,
103
- }, nil
104
- }
105
-
106
- func getScraperConfig (hostInfoProvider hostInfoProvider ) * config.ScrapeConfig {
33
+ func GetScraperConfig (hostInfoProvider hostInfoProvider ) * config.ScrapeConfig {
107
34
return & config.ScrapeConfig {
108
35
HTTPClientConfig : configutil.HTTPClientConfig {
109
36
TLSConfig : configutil.TLSConfig {
@@ -209,35 +136,3 @@ func getMetricRelabelConfig(hostInfoProvider hostInfoProvider) []*relabel.Config
209
136
},
210
137
}
211
138
}
212
-
213
- func (ds * DcgmScraper ) GetMetrics () []pmetric.Metrics {
214
- // This method will never return metrics because the metrics are collected by the scraper.
215
- // This method will ensure the scraper is running
216
- if ! ds .running {
217
- ds .settings .Logger .Info ("The scraper is not running, starting up the scraper" )
218
- err := ds .prometheusReceiver .Start (ds .ctx , ds .host )
219
- if err != nil {
220
- ds .settings .Logger .Error ("Unable to start PrometheusReceiver" , zap .Error (err ))
221
- }
222
- ds .running = err == nil
223
- }
224
-
225
- return nil
226
- }
227
-
228
- func (ds * DcgmScraper ) Shutdown () {
229
- if ds .running {
230
- err := ds .prometheusReceiver .Shutdown (ds .ctx )
231
- if err != nil {
232
- ds .settings .Logger .Error ("Unable to shutdown PrometheusReceiver" , zap .Error (err ))
233
- }
234
- ds .running = false
235
- }
236
-
237
- if ds .k8sDecorator != nil {
238
- err := ds .k8sDecorator .Shutdown ()
239
- if err != nil {
240
- ds .settings .Logger .Error ("Unable to shutdown K8sDecorator" , zap .Error (err ))
241
- }
242
- }
243
- }
0 commit comments