RegisterFlagsAndApplyDefaults registers flag.
(prefix string, f *flag.FlagSet)
| 81 | |
| 82 | // RegisterFlagsAndApplyDefaults registers flag. |
| 83 | func (c *Config) RegisterFlagsAndApplyDefaults(prefix string, f *flag.FlagSet) { |
| 84 | c.Target = SingleBinary |
| 85 | c.StreamOverHTTPEnabled = false |
| 86 | |
| 87 | // Memory settings |
| 88 | c.Memory = MemoryConfig{ |
| 89 | AutoMemLimitEnabled: false, |
| 90 | AutoMemLimitRatio: 0.8, |
| 91 | } |
| 92 | |
| 93 | // global settings |
| 94 | f.StringVar(&c.Target, "target", SingleBinary, "target module") |
| 95 | f.BoolVar(&c.AuthEnabled, "auth.enabled", false, "Set to true to enable auth (deprecated: use multitenancy.enabled)") |
| 96 | f.BoolVar(&c.MultitenancyEnabled, "multitenancy.enabled", false, "Set to true to enable multitenancy.") |
| 97 | f.StringVar(&c.HTTPAPIPrefix, "http-api-prefix", "", "String prefix for all http api endpoints.") |
| 98 | f.BoolVar(&c.EnableGoRuntimeMetrics, "enable-go-runtime-metrics", false, "Set to true to enable all Go runtime metrics") |
| 99 | f.DurationVar(&c.ShutdownDelay, "shutdown-delay", 0, "How long to wait between SIGTERM and shutdown. After receiving SIGTERM, Tempo will report not-ready status via /ready endpoint.") |
| 100 | f.BoolVar(&c.SpanProfiling, "span-profiling", false, "Set to true to enable span profiling (pyroscope pprof labels on OTel spans).") |
| 101 | |
| 102 | // Server settings |
| 103 | flagext.DefaultValues(&c.Server) |
| 104 | c.Server.LogLevel.RegisterFlags(f) |
| 105 | |
| 106 | // Internal server settings |
| 107 | flagext.DefaultValues(&c.InternalServer) |
| 108 | |
| 109 | // Set log level for internal server as the same as server |
| 110 | c.InternalServer.LogLevel = c.Server.LogLevel |
| 111 | c.InternalServer.LogFormat = c.Server.LogFormat |
| 112 | |
| 113 | // Increase max message size to 16MB |
| 114 | c.Server.GRPCServerMaxRecvMsgSize = 16 * 1024 * 1024 |
| 115 | c.Server.GRPCServerMaxSendMsgSize = 16 * 1024 * 1024 |
| 116 | |
| 117 | // The following GRPC server settings are added to address this issue - https://github.com/grafana/tempo/issues/493 |
| 118 | // The settings prevent the grpc server from sending a GOAWAY message if a client sends heartbeat messages |
| 119 | // too frequently (due to lack of real traffic). |
| 120 | c.Server.GRPCServerMinTimeBetweenPings = 10 * time.Second |
| 121 | c.Server.GRPCServerPingWithoutStreamAllowed = true |
| 122 | |
| 123 | f.IntVar(&c.Server.HTTPListenPort, "server.http-listen-port", 3200, "HTTP server listen port.") |
| 124 | f.IntVar(&c.Server.GRPCListenPort, "server.grpc-listen-port", 9095, "gRPC server listen port.") |
| 125 | |
| 126 | // Memberlist settings |
| 127 | fs := flag.NewFlagSet("", flag.PanicOnError) // create a new flag set b/c we don't want all the memberlist settings in our flags. we're just doing this to get defaults |
| 128 | c.MemberlistKV.RegisterFlags(fs) |
| 129 | _ = fs.Parse([]string{}) |
| 130 | // these defaults were chosen to balance resource usage vs. ring propagation speed. they are a "toned down" version of |
| 131 | // the memberlist defaults |
| 132 | c.MemberlistKV.RetransmitMult = 2 |
| 133 | c.MemberlistKV.GossipInterval = time.Second |
| 134 | c.MemberlistKV.GossipNodes = 2 |
| 135 | c.MemberlistKV.EnableCompression = false |
| 136 | |
| 137 | f.Var(&c.MemberlistKV.JoinMembers, "memberlist.host-port", "Host port to connect to memberlist cluster.") |
| 138 | f.IntVar(&c.MemberlistKV.TCPTransport.BindPort, "memberlist.bind-port", 7946, "Port for memberlist to communicate on") |
| 139 | f.IntVar(&c.MemberlistKV.MessageHistoryBufferBytes, "memberlist.message-history-buffer-bytes", 0, "") |
| 140 |
no test coverage detected