@@ -23,17 +23,19 @@ import (
2323)
2424
2525const (
26- receiversRoot = "receivers"
27- jaegerEntry = "jaeger"
28- opencensusEntry = "opencensus"
29- zipkinEntry = "zipkin"
26+ receiversRoot = "receivers"
27+ jaegerEntry = "jaeger"
28+ opencensusEntry = "opencensus"
29+ zipkinEntry = "zipkin"
30+ zipkinScribeEntry = "zipkin-scribe"
3031
3132 // flags
32- configCfg = "config"
33- jaegerReceiverFlg = "receive-jaeger"
34- ocReceiverFlg = "receive-oc-trace"
35- zipkinReceiverFlg = "receive-zipkin"
36- debugProcessorFlg = "debug-processor"
33+ configCfg = "config"
34+ jaegerReceiverFlg = "receive-jaeger"
35+ ocReceiverFlg = "receive-oc-trace"
36+ zipkinReceiverFlg = "receive-zipkin"
37+ zipkinScribeReceiverFlg = "receive-zipkin-scribe"
38+ debugProcessorFlg = "debug-processor"
3739)
3840
3941// Flags adds flags related to basic building of the collector application to the given flagset.
@@ -45,6 +47,8 @@ func Flags(flags *flag.FlagSet) {
4547 fmt .Sprintf ("Flag to run the OpenCensus trace receiver, default settings: %+v" , * NewDefaultOpenCensusReceiverCfg ()))
4648 flags .Bool (zipkinReceiverFlg , false ,
4749 fmt .Sprintf ("Flag to run the Zipkin receiver, default settings: %+v" , * NewDefaultZipkinReceiverCfg ()))
50+ flags .Bool (zipkinScribeReceiverFlg , false ,
51+ fmt .Sprintf ("Flag to run the Zipkin Scribe receiver, default settings: %+v" , * NewDefaultZipkinScribeReceiverCfg ()))
4852 flags .Bool (debugProcessorFlg , false , "Flag to add a debug processor (combine with log level DEBUG to log incoming spans)" )
4953}
5054
@@ -136,6 +140,41 @@ func (cfg *ZipkinReceiverCfg) InitFromViper(v *viper.Viper) (*ZipkinReceiverCfg,
136140 return cfg , initFromViper (cfg , v , receiversRoot , zipkinEntry )
137141}
138142
143+ // ScribeReceiverCfg carries the settings for the Zipkin Scribe receiver.
144+ type ScribeReceiverCfg struct {
145+ // Address is an IP address or a name that can be resolved to a local address.
146+ //
147+ // It can use a name, but this is not recommended, because it will create
148+ // a listener for at most one of the host's IP addresses.
149+ //
150+ // The default value bind to all available interfaces on the local computer.
151+ Address string `mapstructure:"address"`
152+ Port uint16 `mapstructure:"port"`
153+ // Category is the string that will be used to identify the scribe log messages
154+ // that contain Zipkin spans.
155+ Category string `mapstructure:"category"`
156+ }
157+
158+ // ZipkinScribeReceiverEnabled checks if the Zipkin Scribe receiver is enabled, via a command-line flag, environment
159+ // variable, or configuration file.
160+ func ZipkinScribeReceiverEnabled (v * viper.Viper ) bool {
161+ return featureEnabled (v , zipkinScribeReceiverFlg , receiversRoot , zipkinScribeEntry )
162+ }
163+
164+ // NewDefaultZipkinScribeReceiverCfg returns an instance of config.ScribeReceiverConfig with default values.
165+ func NewDefaultZipkinScribeReceiverCfg () * ScribeReceiverCfg {
166+ opts := & ScribeReceiverCfg {
167+ Port : 9410 ,
168+ Category : "zipkin" ,
169+ }
170+ return opts
171+ }
172+
173+ // InitFromViper returns a ScribeReceiverCfg according to the configuration.
174+ func (cfg * ScribeReceiverCfg ) InitFromViper (v * viper.Viper ) (* ScribeReceiverCfg , error ) {
175+ return cfg , initFromViper (cfg , v , receiversRoot , zipkinEntry )
176+ }
177+
139178// Helper functions
140179
141180func initFromViper (cfg interface {}, v * viper.Viper , labels ... string ) error {
0 commit comments