@@ -19,7 +19,6 @@ package main
1919import (
2020 "context"
2121 "fmt"
22- "io/ioutil"
2322 "log"
2423 "net"
2524 "net/http"
@@ -80,19 +79,22 @@ func main() {
8079}
8180
8281func runOCAgent () {
83- yamlBlob , err := ioutil .ReadFile (configYAMLFile )
82+ viperCfg .SetConfigFile (configYAMLFile )
83+ err := viperCfg .ReadInConfig ()
8484 if err != nil {
8585 log .Fatalf ("Cannot read the YAML file %v error: %v" , configYAMLFile , err )
8686 }
87- agentConfig , err := config .ParseOCAgentConfig (yamlBlob )
87+
88+ var agentConfig config.Config
89+ err = viperCfg .Unmarshal (& agentConfig )
8890 if err != nil {
89- log .Fatalf ("Failed to parse own configuration %v error : %v" , configYAMLFile , err )
91+ log .Fatalf ("Error unmarshalling yaml config file %v: %v" , configYAMLFile , err )
9092 }
9193
9294 // Ensure that we check and catch any logical errors with the
9395 // configuration e.g. if an receiver shares the same address
9496 // as an exporter which would cause a self DOS and waste resources.
95- if err := agentConfig .CheckLogicalConflicts (yamlBlob ); err != nil {
97+ if err := agentConfig .CheckLogicalConflicts (); err != nil {
9698 log .Fatalf ("Configuration logical error: %v" , err )
9799 }
98100
@@ -110,12 +112,6 @@ func runOCAgent() {
110112 log .Fatalf ("Failed to start net/http/pprof: %v" , err )
111113 }
112114
113- // TODO(skaris): move the rest of the configs to use viper
114- err = viperutils .LoadYAMLBytes (viperCfg , []byte (yamlBlob ))
115- if err != nil {
116- log .Fatalf ("Config: failed to create viper from YAML: %v" , err )
117- }
118-
119115 traceExporters , metricsExporters , closeFns , err := config .ExportersFromViperConfig (logger , viperCfg )
120116 if err != nil {
121117 log .Fatalf ("Config: failed to create exporters from YAML: %v" , err )
@@ -125,7 +121,7 @@ func runOCAgent() {
125121 commonMetricsSink := processor .NewMultiMetricsDataProcessor (metricsExporters )
126122
127123 // Add other receivers here as they are implemented
128- ocReceiverDoneFn , err := runOCReceiver (logger , agentConfig , commonSpanSink , commonMetricsSink )
124+ ocReceiverDoneFn , err := runOCReceiver (logger , & agentConfig , commonSpanSink , commonMetricsSink )
129125 if err != nil {
130126 log .Fatal (err )
131127 }
@@ -138,6 +134,7 @@ func runOCAgent() {
138134 closeFns = append (closeFns , zCloseFn )
139135 }
140136
137+ // TODO: Generalize the startup of these receivers when unifying them w/ collector
141138 // If the Zipkin receiver is enabled, then run it
142139 if agentConfig .ZipkinReceiverEnabled () {
143140 zipkinReceiverAddr := agentConfig .ZipkinReceiverAddress ()
@@ -167,7 +164,7 @@ func runOCAgent() {
167164
168165 // If the Prometheus receiver is enabled, then run it.
169166 if agentConfig .PrometheusReceiverEnabled () {
170- promDoneFn , err := runPrometheusReceiver (agentConfig . PrometheusConfiguration () , commonMetricsSink )
167+ promDoneFn , err := runPrometheusReceiver (viperCfg , commonMetricsSink )
171168 if err != nil {
172169 log .Fatal (err )
173170 }
@@ -228,10 +225,10 @@ func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp processor.TraceD
228225 opencensusreceiver .WithCorsOrigins (corsOrigins ))
229226
230227 if err != nil {
231- return nil , fmt .Errorf ("Failed to create the OpenCensus receiver on address %q: error %v" , addr , err )
228+ return nil , fmt .Errorf ("failed to create the OpenCensus receiver on address %q: error %v" , addr , err )
232229 }
233230 if err := view .Register (observability .AllViews ... ); err != nil {
234- return nil , fmt .Errorf ("Failed to register internal.AllViews: %v" , err )
231+ return nil , fmt .Errorf ("failed to register internal.AllViews: %v" , err )
235232 }
236233
237234 // Temporarily disabling the grpc metrics since they do not provide good data at this moment,
@@ -245,19 +242,19 @@ func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp processor.TraceD
245242 switch {
246243 case acfg .CanRunOpenCensusTraceReceiver () && acfg .CanRunOpenCensusMetricsReceiver ():
247244 if err := ocr .Start (ctx , tdp , mdp ); err != nil {
248- return nil , fmt .Errorf ("Failed to start Trace and Metrics Receivers: %v" , err )
245+ return nil , fmt .Errorf ("failed to start Trace and Metrics Receivers: %v" , err )
249246 }
250247 log .Printf ("Running OpenCensus Trace and Metrics receivers as a gRPC service at %q" , addr )
251248
252249 case acfg .CanRunOpenCensusTraceReceiver ():
253250 if err := ocr .StartTraceReception (ctx , tdp ); err != nil {
254- return nil , fmt .Errorf ("Failed to start TraceReceiver: %v" , err )
251+ return nil , fmt .Errorf ("failed to start TraceReceiver: %v" , err )
255252 }
256253 log .Printf ("Running OpenCensus Trace receiver as a gRPC service at %q" , addr )
257254
258255 case acfg .CanRunOpenCensusMetricsReceiver ():
259256 if err := ocr .StartMetricsReception (ctx , mdp ); err != nil {
260- return nil , fmt .Errorf ("Failed to start MetricsReceiver: %v" , err )
257+ return nil , fmt .Errorf ("failed to start MetricsReceiver: %v" , err )
261258 }
262259 log .Printf ("Running OpenCensus Metrics receiver as a gRPC service at %q" , addr )
263260 }
@@ -283,10 +280,10 @@ func runJaegerReceiver(collectorThriftPort, collectorHTTPPort int, next processo
283280 // and not use their defaults of 5778, 6831, 6832
284281 })
285282 if err != nil {
286- return nil , fmt .Errorf ("Failed to create new Jaeger receiver: %v" , err )
283+ return nil , fmt .Errorf ("failed to create new Jaeger receiver: %v" , err )
287284 }
288285 if err := jtr .StartTraceReception (context .Background (), next ); err != nil {
289- return nil , fmt .Errorf ("Failed to start Jaeger receiver: %v" , err )
286+ return nil , fmt .Errorf ("failed to start Jaeger receiver: %v" , err )
290287 }
291288 doneFn = func () error {
292289 return jtr .StopTraceReception (context .Background ())
@@ -298,11 +295,11 @@ func runJaegerReceiver(collectorThriftPort, collectorHTTPPort int, next processo
298295func runZipkinReceiver (addr string , next processor.TraceDataProcessor ) (doneFn func () error , err error ) {
299296 zi , err := zipkinreceiver .New (addr )
300297 if err != nil {
301- return nil , fmt .Errorf ("Failed to create the Zipkin receiver: %v" , err )
298+ return nil , fmt .Errorf ("failed to create the Zipkin receiver: %v" , err )
302299 }
303300
304301 if err := zi .StartTraceReception (context .Background (), next ); err != nil {
305- return nil , fmt .Errorf ("Cannot start Zipkin receiver with address %q: %v" , addr , err )
302+ return nil , fmt .Errorf ("cannot start Zipkin receiver with address %q: %v" , addr , err )
306303 }
307304 doneFn = func () error {
308305 return zi .StopTraceReception (context .Background ())
@@ -314,11 +311,11 @@ func runZipkinReceiver(addr string, next processor.TraceDataProcessor) (doneFn f
314311func runZipkinScribeReceiver (config * config.ScribeReceiverConfig , next processor.TraceDataProcessor ) (doneFn func () error , err error ) {
315312 zs , err := scribe .NewReceiver (config .Address , config .Port , config .Category )
316313 if err != nil {
317- return nil , fmt .Errorf ("Failed to create the Zipkin Scribe receiver: %v" , err )
314+ return nil , fmt .Errorf ("failed to create the Zipkin Scribe receiver: %v" , err )
318315 }
319316
320317 if err := zs .StartTraceReception (context .Background (), next ); err != nil {
321- return nil , fmt .Errorf ("Cannot start Zipkin Scribe receiver with %v: %v" , config , err )
318+ return nil , fmt .Errorf ("cannot start Zipkin Scribe receiver with %v: %v" , config , err )
322319 }
323320 doneFn = func () error {
324321 return zs .StopTraceReception (context .Background ())
@@ -327,8 +324,8 @@ func runZipkinScribeReceiver(config *config.ScribeReceiverConfig, next processor
327324 return doneFn , nil
328325}
329326
330- func runPrometheusReceiver (promConfig * prometheusreceiver. Configuration , next processor.MetricsDataProcessor ) (doneFn func () error , err error ) {
331- pmr , err := prometheusreceiver .New (promConfig )
327+ func runPrometheusReceiver (v * viper. Viper , next processor.MetricsDataProcessor ) (doneFn func () error , err error ) {
328+ pmr , err := prometheusreceiver .New (v . Sub ( "receivers.prometheus" ) )
332329 if err != nil {
333330 return nil , err
334331 }
0 commit comments