diff --git a/Dockerfile b/Dockerfile index 6c9ecd4..b467219 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM golang:1.15 as builder -LABEL VERSION=v0.10.0 \ +LABEL VERSION=v0.11.0 \ ARCH=AMD64 \ DESCRIPTION="A monitoring of prometheus for druid" \ MAINTAINER="OpsTree Solutions" diff --git a/Makefile b/Makefile index 57a590b..e8e885a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ # Image URL to use all building/pushing image targets REGISTRY ?= quay.io REPOSITORY ?= $(REGISTRY)/opstree +IMAGE ?= druid-exporter +VERSION ?= v0.11 get-depends: go get -v ./... @@ -9,7 +11,13 @@ build-code: get-depends go build -o druid-exporter build-image: - docker build -t quay.io/opstree/druid-exporter:v0.10 -f Dockerfile . + docker build -t ${REPOSITORY}/${IMAGE}:${VERSION} -f Dockerfile . + +push-image: + docker push ${REPOSITORY}/${IMAGE}:${VERSION} + +fmt: + go fmt ./... check-fmt: test -z "$(shell gofmt -l .)" diff --git a/helm/templates/tests/connection-test.yaml b/helm/templates/tests/connection-test.yaml index 754bb88..7ed37a7 100644 --- a/helm/templates/tests/connection-test.yaml +++ b/helm/templates/tests/connection-test.yaml @@ -18,4 +18,4 @@ spec: command: ['wget'] args: ['-qO-', '{{ include "prometheus-druid-exporter.fullname" . }}:{{ .Values.exporterPort }}/metrics'] restartPolicy: Never -{{- end }} \ No newline at end of file +{{- end }} diff --git a/listener/druid_endpoint.go b/listener/druid_endpoint.go index 66a915d..b3f2c87 100644 --- a/listener/druid_endpoint.go +++ b/listener/druid_endpoint.go @@ -45,6 +45,7 @@ func DruidHTTPEndpoint(metricsCleanupTTL int, disableHistogram bool, histogram * service := fmt.Sprintf("%v", data["service"]) hostname := fmt.Sprintf("%v", data["host"]) datasource := data["dataSource"] + id := fmt.Sprintf("%v", data["id"]) value, _ := strconv.ParseFloat(fmt.Sprintf("%v", data["value"]), 64) // Reverse DNS Lookup @@ -61,63 +62,70 @@ func DruidHTTPEndpoint(metricsCleanupTTL int, disableHistogram bool, histogram * logrus.Tracef(" hostname => (%s -> %s)", hostname, host) logrus.Tracef(" datasource => %v", datasource) logrus.Tracef(" value => %v", value) + logrus.Tracef(" id => %v", id) } if data["dataSource"] != nil { if arrDatasource, ok := datasource.([]interface{}); ok { // Array datasource for _, entryDatasource := range arrDatasource { - if !disableHistogram { - histogram.With(prometheus.Labels{ - "metric_name": strings.Replace(metric, "/", "-", 3), - "service": strings.Replace(service, "/", "-", 3), - "datasource": entryDatasource.(string), - "host": host, - }).Observe(value) - } + if !disableHistogram { + histogram.With(prometheus.Labels{ + "metric_name": strings.Replace(metric, "/", "-", 3), + "service": strings.Replace(service, "/", "-", 3), + "datasource": entryDatasource.(string), + "host": host, + "id": id, + }).Observe(value) + } labels := prometheus.Labels{ "metric_name": strings.Replace(metric, "/", "-", 3), "service": strings.Replace(service, "/", "-", 3), "datasource": entryDatasource.(string), "host": host, + "id": id, } gaugeCleaner.add(labels) gauge.With(labels).Set(value) } } else { // Single datasource - if !disableHistogram { - histogram.With(prometheus.Labels{ - "metric_name": strings.Replace(metric, "/", "-", 3), - "service": strings.Replace(service, "/", "-", 3), - "datasource": datasource.(string), - "host": host, - }).Observe(value) - } + if !disableHistogram { + histogram.With(prometheus.Labels{ + "metric_name": strings.Replace(metric, "/", "-", 3), + "service": strings.Replace(service, "/", "-", 3), + "datasource": datasource.(string), + "host": host, + "id": id, + }).Observe(value) + } labels := prometheus.Labels{ "metric_name": strings.Replace(metric, "/", "-", 3), "service": strings.Replace(service, "/", "-", 3), "datasource": datasource.(string), "host": host, + "id": id, } gaugeCleaner.add(labels) gauge.With(labels).Set(value) } } else { // Missing datasource case - if !disableHistogram { - histogram.With(prometheus.Labels{ - "metric_name": strings.Replace(metric, "/", "-", 3), - "service": strings.Replace(service, "/", "-", 3), - "datasource": "", - "host": host, - }).Observe(value) - } + if !disableHistogram { + histogram.With(prometheus.Labels{ + "metric_name": strings.Replace(metric, "/", "-", 3), + "service": strings.Replace(service, "/", "-", 3), + "datasource": "", + "host": host, + "id": id, + }).Observe(value) + } labels := prometheus.Labels{ "metric_name": strings.Replace(metric, "/", "-", 3), "service": strings.Replace(service, "/", "-", 3), "datasource": "", "host": host, + "id": id, } gaugeCleaner.add(labels) gauge.With(labels).Set(value) diff --git a/main.go b/main.go index 1a27b40..60e2bf9 100644 --- a/main.go +++ b/main.go @@ -28,14 +28,14 @@ var ( "Log format for druid exporter, text or json, EnvVar - LOG_FORMAT. (Default: text)", ).Default("text").OverrideDefaultFromEnvar("LOG_FORMAT").Short('f').String() disableHistogram = kingpin.Flag( - "no-histogram", - "Flag whether to export histogram metrics or not.", - ).Default("false").OverrideDefaultFromEnvar("NO_HISTOGRAM").Bool() + "no-histogram", + "Flag whether to export histogram metrics or not.", + ).Default("false").OverrideDefaultFromEnvar("NO_HISTOGRAM").Bool() metricsCleanupTTL = kingpin.Flag( - "metrics-cleanup-ttl", - "Flag to provide time in minutes for metrics cleanup.", - ).Default("5").OverrideDefaultFromEnvar("METRICS_CLEANUP_TTL").Int() + "metrics-cleanup-ttl", + "Flag to provide time in minutes for metrics cleanup.", + ).Default("5").OverrideDefaultFromEnvar("METRICS_CLEANUP_TTL").Int() druidEmittedDataHistogram = prometheus.NewHistogramVec( prometheus.HistogramOpts{ Name: "druid_emitted_metrics_histogram",