@@ -3,7 +3,9 @@ package worker
3
3
import (
4
4
"context"
5
5
"flag"
6
+ "net"
6
7
"os"
8
+ "strconv"
7
9
"sync"
8
10
"time"
9
11
@@ -14,7 +16,9 @@ import (
14
16
"github.com/weaveworks/common/httpgrpc"
15
17
"google.golang.org/grpc"
16
18
19
+ "github.com/cortexproject/cortex/pkg/ring"
17
20
"github.com/cortexproject/cortex/pkg/util"
21
+ "github.com/cortexproject/cortex/pkg/util/flagext"
18
22
"github.com/cortexproject/cortex/pkg/util/grpcclient"
19
23
"github.com/cortexproject/cortex/pkg/util/services"
20
24
)
@@ -33,6 +37,10 @@ type Config struct {
33
37
GRPCClientConfig grpcclient.Config `yaml:"grpc_client_config"`
34
38
35
39
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"`
36
44
}
37
45
38
46
func (cfg * Config ) RegisterFlags (f * flag.FlagSet ) {
@@ -46,6 +54,10 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
46
54
f .StringVar (& cfg .QuerierID , "querier.id" , "" , "Querier ID, sent to frontend service to identify requests from the same querier. Defaults to hostname." )
47
55
48
56
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" )
49
61
}
50
62
51
63
func (cfg * Config ) Validate (log log.Logger ) error {
@@ -109,7 +121,14 @@ func NewQuerierWorker(cfg Config, handler RequestHandler, log log.Logger, reg pr
109
121
level .Info (log ).Log ("msg" , "Starting querier worker connected to query-scheduler" , "scheduler" , cfg .SchedulerAddress )
110
122
111
123
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 )
113
132
114
133
case cfg .FrontendAddress != "" :
115
134
level .Info (log ).Log ("msg" , "Starting querier worker connected to query-frontend" , "frontend" , cfg .FrontendAddress )
0 commit comments