From cc2557f5ce1ce8f0fb18c097432448c3eea17c01 Mon Sep 17 00:00:00 2001 From: Jan Grewe <jan.grewe@flixbus.com> Date: Thu, 7 Jun 2018 15:25:45 +0200 Subject: [PATCH] Enable HTTPS, rename flags, add Dockerfile --- Dockerfile | 12 ++++++++++++ glide.lock | 8 ++++---- glide.yaml | 2 +- main.go | 27 ++++++++++++++------------- 4 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..87bab7c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM golang:1.9.0 AS builder +WORKDIR /go/src/gitlab.mfb.io/devops/nexenta_exporter +COPY . . +RUN curl -s https://glide.sh/get | sh +RUN glide install +RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w -extldflags '-static'" -o nexenta_exporter + +FROM scratch +LABEL maintainer "Jan Grewe <jan.grewe@flixbus.com>" +COPY --from=builder /go/src/gitlab.mfb.io/devops/nexenta_exporter/nexenta_exporter /nexenta_exporter +EXPOSE 9457 +ENTRYPOINT ["/nexenta_exporter"] diff --git a/glide.lock b/glide.lock index 7487ced..57d4748 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: 0bbc534a255abb51b978492c5d43b4ae0f7a8c89e969571a8b7979d1ddaea9a8 -updated: 2018-06-05T16:46:38.641011889+02:00 +hash: 09dcc55682d2ed07028b0682a29000bd39d1c225a2cd313e9b9049e72b990cd2 +updated: 2018-06-07T14:53:28.640281981+02:00 imports: - name: github.com/beorn7/perks version: 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9 @@ -37,11 +37,11 @@ imports: - name: github.com/Sirupsen/logrus version: ea8897e79973357ba785ac2533559a6297e83c44 - name: golang.org/x/crypto - version: df8d4716b3472e4a531c33cedbe537dae921a1a9 + version: b47b1587369238182299fe4dad77d05b8b461e06 subpackages: - ssh/terminal - name: golang.org/x/sys - version: c11f84a56e43e20a78cee75a7c034031ecf57d1f + version: 9527bec2660bd847c050fda93a0f0c6dee0800bb subpackages: - unix - windows diff --git a/glide.yaml b/glide.yaml index 4007dee..9e0bbad 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,4 +1,4 @@ -package: gitlab.mfb.io/devops/nexenta-exporter +package: gitlab.mfb.io/devops/nexenta_exporter import: - package: github.com/prometheus/client_golang version: ~0.9.0-pre1 diff --git a/main.go b/main.go index 1276f33..fbb24dd 100644 --- a/main.go +++ b/main.go @@ -26,11 +26,11 @@ const ( var ( listenAddr = flag.String("listen-address", ":9457", "The address to listen on for HTTP requests.") metricsEndpoint = flag.String("metrics-endpoint", "/metrics", "Path under which to expose metrics.") - apiHost = flag.String("host", "nexenta", "Nexenta API host.") - apiPort = flag.String("port", "8457", "Nexenta API port.") - apiUser = flag.String("user", "admin", "Nexenta API username.") - apiPass = flag.String("password", "password", "Nexenta API password.") - apiSsl = flag.Bool("ssl", false, "Use SSL for the Nexenta API.") + apiHost = flag.String("api-host", "nexenta", "Nexenta API host.") + apiPort = flag.String("api-port", "8457", "Nexenta API port.") + apiUser = flag.String("api-user", "admin", "Nexenta API username.") + apiPass = flag.String("api-password", "password", "Nexenta API password.") + apiSsl = flag.Bool("api-ssl", false, "Use SSL for the Nexenta API.") insecure = flag.Bool("insecure", false, "Ignore server certificate if using https.") showVersion = flag.Bool("version", false, "Print version information.") ) @@ -173,14 +173,14 @@ func (e *Exporter) collect(ch chan<- prometheus.Metric) error { // Volumes volumes, err := e.getVolumes(ch) if err != nil { - err = fmt.Errorf("getVolumes(): %v", err) + return fmt.Errorf("getVolumes(): %v", err) } if len(volumes) > 0 { for _, volume := range volumes { err = e.getVolumeStatus(ch, volume) if err != nil { - err = fmt.Errorf("getVolumeStatus(): %v", err) + return fmt.Errorf("getVolumeStatus(): %v", err) } } } @@ -188,14 +188,14 @@ func (e *Exporter) collect(ch chan<- prometheus.Metric) error { // JBODs jbods, err := e.getJBODs(ch) if err != nil { - err = fmt.Errorf("getJBODs(): %v", err) + return fmt.Errorf("getJBODs(): %v", err) } if len(jbods) > 0 { for _, jbod := range jbods { err = e.getJBODSensors(ch, jbod) if err != nil { - err = fmt.Errorf("getJBODSensors(): %v", err) + return fmt.Errorf("getJBODSensors(): %v", err) } } } @@ -203,7 +203,7 @@ func (e *Exporter) collect(ch chan<- prometheus.Metric) error { // License err = e.getLicenseInfo(ch) if err != nil { - err = fmt.Errorf("getLicenseInfo(): %v", err) + return fmt.Errorf("getLicenseInfo(): %v", err) } return err @@ -325,8 +325,6 @@ func (e *Exporter) queryApi(ch chan<- prometheus.Metric, object string, method s return nil, fmt.Errorf("Request Error: Status %s %s", resp.Status, data) } - //log.Infof("response: %s", data) - var apiResponse = new(ApiResponse) err = json.Unmarshal(data, &apiResponse); if err != nil { return nil, err } @@ -347,7 +345,10 @@ func main() { os.Exit(0) } - exporter := NewExporter("http://" + *apiUser + ":" + *apiPass + "@" + *apiHost + ":" + *apiPort + apiPath) + apiProtocol := "http" + if *apiSsl { apiProtocol = "https" } + + exporter := NewExporter(apiProtocol + "://" + *apiUser + ":" + *apiPass + "@" + *apiHost + ":" + *apiPort + apiPath) prometheus.MustRegister(exporter) prometheus.MustRegister(version.NewCollector("nexenta_exporter")) -- GitLab