Skip to content

Commit 0549efd

Browse files
authored
Support configuration files (#462)
* Support configuration files Signed-off-by: Pavol Loffay <ploffay@redhat.com> * Fix review comments Signed-off-by: Pavol Loffay <ploffay@redhat.com> * rename to AddConfigFileFlag Signed-off-by: Pavol Loffay <ploffay@redhat.com> * Add config file name to logs Signed-off-by: Pavol Loffay <ploffay@redhat.com>
1 parent 54151f8 commit 0549efd

File tree

5 files changed

+34
-4
lines changed

5 files changed

+34
-4
lines changed

cmd/agent/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"go.uber.org/zap"
2424

2525
"github.com/uber/jaeger/cmd/agent/app"
26+
"github.com/uber/jaeger/cmd/flags"
2627
"github.com/uber/jaeger/pkg/config"
2728
"github.com/uber/jaeger/pkg/metrics"
2829
)
@@ -35,6 +36,8 @@ func main() {
3536
Short: "Jaeger agent is a local daemon program which collects tracing data.",
3637
Long: `Jaeger agent is a daemon program that runs on every host and receives tracing data submitted by Jaeger client libraries.`,
3738
RunE: func(cmd *cobra.Command, args []string) error {
39+
flags.TryLoadConfigFile(v, logger)
40+
3841
builder := &app.Builder{}
3942
builder.InitFromViper(v)
4043
runtime.GOMAXPROCS(runtime.NumCPU())
@@ -58,6 +61,7 @@ func main() {
5861
config.AddFlags(
5962
v,
6063
command,
64+
flags.AddConfigFileFlag,
6165
app.AddFlags,
6266
metrics.AddFlags,
6367
)

cmd/collector/main.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,15 @@ func main() {
6161
Long: `Jaeger collector receives traces from Jaeger agents and agent and runs them through
6262
a processing pipeline.`,
6363
Run: func(cmd *cobra.Command, args []string) {
64+
flags.TryLoadConfigFile(v, logger)
65+
66+
sFlags := new(flags.SharedFlags).InitFromViper(v)
6467
casOptions.InitFromViper(v)
6568
esOptions.InitFromViper(v)
6669

6770
baseMetrics := xkit.Wrap(serviceName, expvar.NewFactory(10))
6871

6972
builderOpts := new(builder.CollectorOptions).InitFromViper(v)
70-
sFlags := new(flags.SharedFlags).InitFromViper(v)
7173

7274
hc, err := healthcheck.Serve(http.StatusServiceUnavailable, builderOpts.CollectorHealthCheckHTTPPort, logger)
7375
if err != nil {
@@ -130,6 +132,7 @@ func main() {
130132
config.AddFlags(
131133
v,
132134
command,
135+
flags.AddConfigFileFlag,
133136
flags.AddFlags,
134137
builder.AddFlags,
135138
casOptions.AddFlags,

cmd/flags/flags.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"time"
2323

2424
"github.com/spf13/viper"
25+
"go.uber.org/zap"
2526
)
2627

2728
const (
@@ -34,8 +35,25 @@ const (
3435
spanStorageType = "span-storage.type"
3536
logLevel = "log-level"
3637
dependencyStorageDataFrequency = "dependency-storage.data-frequency"
38+
configFile = "config-file"
3739
)
3840

41+
// AddConfigFileFlag adds flags for ExternalConfFlags
42+
func AddConfigFileFlag(flagSet *flag.FlagSet) {
43+
flagSet.String(configFile, "", "Configuration file in JSON, TOML, YAML, HCL, or Java properties formats (default none). See spf13/viper for precedence.")
44+
}
45+
46+
// TryLoadConfigFile initializes viper with config file specified as flag
47+
func TryLoadConfigFile(v *viper.Viper, logger *zap.Logger) {
48+
if file := v.GetString(configFile); file != "" {
49+
v.SetConfigFile(file)
50+
err := v.ReadInConfig()
51+
if err != nil {
52+
logger.Fatal("Error loading config file", zap.Error(err), zap.String(configFile, file))
53+
}
54+
}
55+
}
56+
3957
// SharedFlags holds flags configuration
4058
type SharedFlags struct {
4159
// SpanStorage defines common settings for Span Storage.

cmd/query/main.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ func main() {
5454
Short: "Jaeger query is a service to access tracing data",
5555
Long: `Jaeger query is a service to access tracing data and host UI.`,
5656
Run: func(cmd *cobra.Command, args []string) {
57+
flags.TryLoadConfigFile(v, logger)
58+
59+
sFlags := new(flags.SharedFlags).InitFromViper(v)
5760
casOptions.InitFromViper(v)
5861
esOptions.InitFromViper(v)
5962
queryOpts := new(builder.QueryOptions).InitFromViper(v)
60-
sFlags := new(flags.SharedFlags).InitFromViper(v)
6163

6264
hc, err := healthcheck.Serve(http.StatusServiceUnavailable, queryOpts.QueryHealthCheckHTTPPort, logger)
6365
if err != nil {
@@ -123,6 +125,7 @@ func main() {
123125
config.AddFlags(
124126
v,
125127
command,
128+
flags.AddConfigFileFlag,
126129
flags.AddFlags,
127130
casOptions.AddFlags,
128131
esOptions.AddFlags,

cmd/standalone/main.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,11 @@ func main() {
5959
Long: `Jaeger all-in-one distribution with agent, collector and query. Use with caution this version
6060
uses only in-memory database.`,
6161
RunE: func(cmd *cobra.Command, args []string) error {
62-
runtime.GOMAXPROCS(runtime.NumCPU())
62+
flags.TryLoadConfigFile(v, logger)
6363

64-
cOpts := new(collector.CollectorOptions).InitFromViper(v)
64+
runtime.GOMAXPROCS(runtime.NumCPU())
6565
sFlags := new(flags.SharedFlags).InitFromViper(v)
66+
cOpts := new(collector.CollectorOptions).InitFromViper(v)
6667
qOpts := new(query.QueryOptions).InitFromViper(v)
6768

6869
metricsFactory := xkit.Wrap("jaeger-standalone", expvar.NewFactory(10))
@@ -80,6 +81,7 @@ func main() {
8081
config.AddFlags(
8182
v,
8283
command,
84+
flags.AddConfigFileFlag,
8385
flags.AddFlags,
8486
collector.AddFlags,
8587
query.AddFlags,

0 commit comments

Comments
 (0)