Skip to content

Commit d7cb179

Browse files
marcosdotpspleshakov
authored andcommitted
add tls support
Author: mpenate <[email protected]> Date: Fri Nov 6 17:23:10 2020 +0100
1 parent 7c45b23 commit d7cb179

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,13 @@ Usage of ./nginx-prometheus-exporter:
9292
-web.listen-address string
9393
An address or unix domain socket path to listen on for web interface and telemetry. The default value can be overwritten by LISTEN_ADDRESS environment variable. (default ":9113")
9494
-web.telemetry-path string
95-
A path under which to expose metrics. The default value can be overwritten by TELEMETRY_PATH environment variable. (default "/metrics")
95+
A path under which to expose metrics. The default value can be overwritten by TELEMETRY_PATH environment variable. (default "/metrics")
96+
-web.secured-metrics
97+
Expose metrics using https. The default value can be overwritten by SECURED_METRICS variable. (default false)
98+
-web.ssl-server-cert string
99+
Path to the PEM encoded certificate for the nginx-exporter metrics server(when web.secured-metrics=true). The default value can be overwritten by SSL_SERVER_CERT variable.
100+
-web.ssl-server-key string
101+
Path to the PEM encoded key for the nginx-exporter metrics server (when web.secured-metrics=true). The default value can be overwritten by SSL_SERVER_KEY variable.
96102
-version
97103
Display the NGINX exporter version. (default false)
98104
```

exporter.go

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ var (
223223

224224
// Defaults values
225225
defaultListenAddress = getEnv("LISTEN_ADDRESS", ":9113")
226+
defaultSecuredMetrics = getEnvBool("SECURED_METRICS", false)
227+
defaultSslServerCert = getEnv("SSL_SERVER_CERT", "")
228+
defaultSslServerKey = getEnv("SSL_SERVER_KEY", "")
226229
defaultMetricsPath = getEnv("TELEMETRY_PATH", "/metrics")
227230
defaultNginxPlus = getEnvBool("NGINX_PLUS", false)
228231
defaultScrapeURI = getEnv("SCRAPE_URI", "http://127.0.0.1:8080/stub_status")
@@ -239,6 +242,15 @@ var (
239242
listenAddr = flag.String("web.listen-address",
240243
defaultListenAddress,
241244
"An address or unix domain socket path to listen on for web interface and telemetry. The default value can be overwritten by LISTEN_ADDRESS environment variable.")
245+
securedMetrics = flag.Bool("web.secured-metrics",
246+
defaultSecuredMetrics,
247+
"Expose metrics using https. The default value can be overwritten by SECURED_METRICS variable.")
248+
sslServerCert = flag.String("web.ssl-server-cert",
249+
defaultSslServerCert,
250+
"Path to the PEM encoded certificate for the nginx-exporter metrics server(when web.secured-metrics=true). The default value can be overwritten by SSL_SERVER_CERT variable.")
251+
sslServerKey = flag.String("web.ssl-server-key",
252+
defaultSslServerKey,
253+
"Path to the PEM encoded key for the nginx-exporter metrics server (when web.secured-metrics=true). The default value can be overwritten by SSL_SERVER_KEY variable.")
242254
metricsPath = flag.String("web.telemetry-path",
243255
defaultMetricsPath,
244256
"A path under which to expose metrics. The default value can be overwritten by TELEMETRY_PATH environment variable.")
@@ -409,8 +421,22 @@ func main() {
409421
log.Fatalf("Could not create listener: %v", err)
410422
}
411423

412-
log.Printf("NGINX Prometheus Exporter has successfully started")
413-
log.Fatal(srv.Serve(listener))
424+
if *securedMetrics {
425+
_, err = os.Stat(*sslServerCert)
426+
if err != nil {
427+
log.Fatalf("Cert file is not set, not readable or non-existent. Make sure you set -web.ssl-server-cert when starting your exporter with -web.secured-metrics=true: %v", err)
428+
}
429+
_, err = os.Stat(*sslServerKey)
430+
if err != nil {
431+
log.Fatalf("Key file is not set, not readable or non-existent. Make sure you set -web.ssl-server-key when starting your exporter with -web.secured-metrics=true: %v", err)
432+
}
433+
log.Printf("NGINX Prometheus Exporter has successfully started using https")
434+
log.Fatal(srv.ServeTLS(listener, *sslServerCert, *sslServerKey))
435+
} else {
436+
log.Printf("NGINX Prometheus Exporter has successfully started")
437+
log.Fatal(srv.Serve(listener))
438+
}
439+
414440
}
415441

416442
type userAgentRoundTripper struct {

0 commit comments

Comments
 (0)