@@ -3,7 +3,9 @@ package worker
33import (
44 "context"
55 "flag"
6+ "net"
67 "os"
8+ "strconv"
79 "sync"
810 "time"
911
@@ -14,7 +16,9 @@ import (
1416 "github.com/weaveworks/common/httpgrpc"
1517 "google.golang.org/grpc"
1618
19+ "github.com/cortexproject/cortex/pkg/ring"
1720 "github.com/cortexproject/cortex/pkg/util"
21+ "github.com/cortexproject/cortex/pkg/util/flagext"
1822 "github.com/cortexproject/cortex/pkg/util/grpcclient"
1923 "github.com/cortexproject/cortex/pkg/util/services"
2024)
@@ -33,6 +37,10 @@ type Config struct {
3337 GRPCClientConfig grpcclient.Config `yaml:"grpc_client_config"`
3438
3539 TargetHeaders []string `yaml:"-"` // Propagated by config.
40+
41+ InstanceInterfaceNames []string `yaml:"instance_interface_names"`
42+ ListenPort int `yaml:"-"`
43+ InstanceAddr string `yaml:"instance_addr" doc:"hidden"`
3644}
3745
3846func (cfg * Config ) RegisterFlags (f * flag.FlagSet ) {
@@ -46,6 +54,10 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
4654 f .StringVar (& cfg .QuerierID , "querier.id" , "" , "Querier ID, sent to frontend service to identify requests from the same querier. Defaults to hostname." )
4755
4856 cfg .GRPCClientConfig .RegisterFlagsWithPrefix ("querier.frontend-client" , "" , f )
57+
58+ cfg .InstanceInterfaceNames = []string {"eth0" , "en0" }
59+ f .Var ((* flagext .StringSlice )(& cfg .InstanceInterfaceNames ), "querier.instance-interface-names" , "Name of network interface to read address from." )
60+ f .StringVar (& cfg .InstanceAddr , "querier.instance-addr" , "" , "IP address of the querier" )
4961}
5062
5163func (cfg * Config ) Validate (log log.Logger ) error {
@@ -109,7 +121,14 @@ func NewQuerierWorker(cfg Config, handler RequestHandler, log log.Logger, reg pr
109121 level .Info (log ).Log ("msg" , "Starting querier worker connected to query-scheduler" , "scheduler" , cfg .SchedulerAddress )
110122
111123 address = cfg .SchedulerAddress
112- processor , servs = newSchedulerProcessor (cfg , handler , log , reg )
124+
125+ ipAddr , err := ring .GetInstanceAddr (cfg .InstanceAddr , cfg .InstanceInterfaceNames , log )
126+ if err != nil {
127+ return nil , err
128+ }
129+ querierAddr := net .JoinHostPort (ipAddr , strconv .Itoa (cfg .ListenPort ))
130+
131+ processor , servs = newSchedulerProcessor (cfg , handler , log , reg , querierAddr )
113132
114133 case cfg .FrontendAddress != "" :
115134 level .Info (log ).Log ("msg" , "Starting querier worker connected to query-frontend" , "frontend" , cfg .FrontendAddress )
0 commit comments