Skip to content

Commit cb3956a

Browse files
added Host header option
1 parent 0af7705 commit cb3956a

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION = 1.5.0
1+
VERSION = 1.5.1
22
TAG = $(VERSION)
33
PREFIX = nginx/nginx-prometheus-exporter
44
# renovate: datasource=github-tags depName=golangci/golangci-lint

client/nginx.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Reading: %d Writing: %d Waiting: %d
1818
type NginxClient struct {
1919
httpClient *http.Client
2020
apiEndpoint string
21+
hostHeader string
2122
}
2223

2324
// StubStats represents NGINX stub_status metrics.
@@ -37,10 +38,11 @@ type StubConnections struct {
3738
}
3839

3940
// NewNginxClient creates an NginxClient.
40-
func NewNginxClient(httpClient *http.Client, apiEndpoint string) *NginxClient {
41+
func NewNginxClient(httpClient *http.Client, apiEndpoint string, hostHeader string) *NginxClient {
4142
client := &NginxClient{
4243
apiEndpoint: apiEndpoint,
4344
httpClient: httpClient,
45+
hostHeader: hostHeader,
4446
}
4547

4648
return client
@@ -55,6 +57,11 @@ func (client *NginxClient) GetStubStats() (*StubStats, error) {
5557
if err != nil {
5658
return nil, fmt.Errorf("failed to create a get request: %w", err)
5759
}
60+
61+
if len(client.hostHeader) > 0 {
62+
req.Host = client.hostHeader
63+
}
64+
5865
resp, err := client.httpClient.Do(req)
5966
if err != nil {
6067
return nil, fmt.Errorf("failed to get %v: %w", client.apiEndpoint, err)

exporter.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ var (
9393
sslClientCert = kingpin.Flag("nginx.ssl-client-cert", "Path to the PEM encoded client certificate file to use when connecting to the server.").Default("").Envar("SSL_CLIENT_CERT").String()
9494
sslClientKey = kingpin.Flag("nginx.ssl-client-key", "Path to the PEM encoded client certificate key file to use when connecting to the server.").Default("").Envar("SSL_CLIENT_KEY").String()
9595
useProxyProto = kingpin.Flag("nginx.proxy-protocol", "Pass proxy protocol payload to nginx listeners.").Default("false").Envar("PROXY_PROTOCOL").Bool()
96+
HostHeader = kingpin.Flag("nginx.hostheader", "Host header to add to HTTP request.").Default("").Envar("HOST_HEADER").String()
9697

9798
// Custom command-line flags.
9899
timeout = createPositiveDurationFlag(kingpin.Flag("nginx.timeout", "A timeout for scraping metrics from NGINX or NGINX Plus.").Default("5s").Envar("TIMEOUT").HintOptions("5s", "10s", "30s", "1m", "5m"))
@@ -164,14 +165,14 @@ func main() {
164165
}
165166

166167
if len(*scrapeURIs) == 1 {
167-
registerCollector(logger, transport, (*scrapeURIs)[0], constLabels)
168+
registerCollector(logger, transport, (*scrapeURIs)[0], constLabels, *HostHeader)
168169
} else {
169170
for _, addr := range *scrapeURIs {
170171
// add scrape URI to const labels
171172
labels := maps.Clone(constLabels)
172173
labels["addr"] = addr
173174

174-
registerCollector(logger, transport, addr, labels)
175+
registerCollector(logger, transport, addr, labels, *HostHeader)
175176
}
176177
}
177178

@@ -224,8 +225,7 @@ func main() {
224225
}
225226

226227
func registerCollector(logger *slog.Logger, transport *http.Transport,
227-
addr string, labels map[string]string,
228-
) {
228+
addr string, labels map[string]string, hostheader string) {
229229
var socketPath string
230230

231231
if strings.HasPrefix(addr, "unix:") {
@@ -309,7 +309,7 @@ func registerCollector(logger *slog.Logger, transport *http.Transport,
309309
variableLabelNames := collector.NewVariableLabelNames(nil, nil, nil, nil, nil, nil, nil)
310310
prometheus.MustRegister(collector.NewNginxPlusCollector(plusClient, "nginxplus", variableLabelNames, labels, logger))
311311
} else {
312-
ossClient := client.NewNginxClient(httpClient, addr)
312+
ossClient := client.NewNginxClient(httpClient, addr, hostheader)
313313
prometheus.MustRegister(collector.NewNginxCollector(ossClient, "nginx", labels, logger))
314314
}
315315
}

0 commit comments

Comments
 (0)