From a48ab34dd019b52ba3c5808d3f46063227a6ba89 Mon Sep 17 00:00:00 2001 From: "Matt T. Proud" Date: Sun, 28 Apr 2013 19:40:30 +0200 Subject: [PATCH] Refresh Prometheus client API usage. The client API has been updated per https://github.com/prometheus/client_golang/pull/9. --- retrieval/instrumentation.go | 26 +++++++++++------------ retrieval/target.go | 29 ++++++++++++-------------- storage/metric/instrumentation.go | 34 +++++++++++++++---------------- web/web.go | 6 +++--- 4 files changed, 44 insertions(+), 51 deletions(-) diff --git a/retrieval/instrumentation.go b/retrieval/instrumentation.go index 214237622..4d94fa9de 100644 --- a/retrieval/instrumentation.go +++ b/retrieval/instrumentation.go @@ -14,9 +14,7 @@ package retrieval import ( - "github.com/prometheus/client_golang" - "github.com/prometheus/client_golang/maths" - "github.com/prometheus/client_golang/metrics" + "github.com/prometheus/client_golang/prometheus" ) const ( @@ -30,24 +28,24 @@ const ( ) var ( - networkLatencyHistogram = &metrics.HistogramSpecification{ - Starts: metrics.LogarithmicSizedBucketsFor(0, 1000), - BucketBuilder: metrics.AccumulatingBucketBuilder(metrics.EvictAndReplaceWith(10, maths.Average), 100), + networkLatencyHistogram = &prometheus.HistogramSpecification{ + Starts: prometheus.LogarithmicSizedBucketsFor(0, 1000), + BucketBuilder: prometheus.AccumulatingBucketBuilder(prometheus.EvictAndReplaceWith(10, prometheus.AverageReducer), 100), ReportablePercentiles: []float64{0.01, 0.05, 0.5, 0.90, 0.99}, } - targetOperationLatencies = metrics.NewHistogram(networkLatencyHistogram) + targetOperationLatencies = prometheus.NewHistogram(networkLatencyHistogram) - retrievalDurations = metrics.NewHistogram(&metrics.HistogramSpecification{ - Starts: metrics.LogarithmicSizedBucketsFor(0, 10000), - BucketBuilder: metrics.AccumulatingBucketBuilder(metrics.EvictAndReplaceWith(10, maths.Average), 100), + retrievalDurations = prometheus.NewHistogram(&prometheus.HistogramSpecification{ + Starts: prometheus.LogarithmicSizedBucketsFor(0, 10000), + BucketBuilder: prometheus.AccumulatingBucketBuilder(prometheus.EvictAndReplaceWith(10, prometheus.AverageReducer), 100), ReportablePercentiles: []float64{0.01, 0.05, 0.5, 0.90, 0.99}}) - targetOperations = metrics.NewCounter() + targetOperations = prometheus.NewCounter() ) func init() { - registry.Register("prometheus_target_operations_total", "The total numbers of operations of the various targets that are being monitored.", registry.NilLabels, targetOperations) - registry.Register("prometheus_target_operation_latency_ms", "The latencies for various target operations.", registry.NilLabels, targetOperationLatencies) - registry.Register("prometheus_targetpool_duration_ms", "The durations for each TargetPool to retrieve state from all included entities.", registry.NilLabels, retrievalDurations) + prometheus.Register("prometheus_target_operations_total", "The total numbers of operations of the various targets that are being monitored.", prometheus.NilLabels, targetOperations) + prometheus.Register("prometheus_target_operation_latency_ms", "The latencies for various target operations.", prometheus.NilLabels, targetOperationLatencies) + prometheus.Register("prometheus_targetpool_duration_ms", "The durations for each TargetPool to retrieve state from all included entities.", prometheus.NilLabels, retrievalDurations) } diff --git a/retrieval/target.go b/retrieval/target.go index 1017d6ef4..5a40c2ecb 100644 --- a/retrieval/target.go +++ b/retrieval/target.go @@ -14,7 +14,6 @@ package retrieval import ( "fmt" - "github.com/prometheus/client_golang/metrics" "github.com/prometheus/prometheus/model" "github.com/prometheus/prometheus/retrieval/format" "log" @@ -182,7 +181,18 @@ func (t *target) Scrape(earliest time.Time, results chan format.Result) (err err done := make(chan bool) - request := func() { + go func(start time.Time) { + defer func() { + ms := float64(time.Since(start)) / float64(time.Millisecond) + labels := map[string]string{address: t.Address(), outcome: success} + if err != nil { + labels[outcome] = failure + } + + targetOperationLatencies.Add(labels, ms) + targetOperations.Increment(labels) + }() + defer func() { done <- true }() @@ -211,20 +221,7 @@ func (t *target) Scrape(earliest time.Time, results chan format.Result) (err err if err != nil { return } - } - - accumulator := func(d time.Duration) { - ms := float64(d) / float64(time.Millisecond) - labels := map[string]string{address: t.Address(), outcome: success} - if err != nil { - labels[outcome] = failure - } - - targetOperationLatencies.Add(labels, ms) - targetOperations.Increment(labels) - } - - go metrics.InstrumentCall(request, accumulator) + }(time.Now()) select { case <-done: diff --git a/storage/metric/instrumentation.go b/storage/metric/instrumentation.go index 136853bdc..6c07f4db0 100644 --- a/storage/metric/instrumentation.go +++ b/storage/metric/instrumentation.go @@ -14,9 +14,7 @@ package metric import ( - "github.com/prometheus/client_golang" - "github.com/prometheus/client_golang/maths" - "github.com/prometheus/client_golang/metrics" + "github.com/prometheus/client_golang/prometheus" "time" ) @@ -60,19 +58,19 @@ const ( ) var ( - diskLatencyHistogram = &metrics.HistogramSpecification{ - Starts: metrics.LogarithmicSizedBucketsFor(0, 5000), - BucketBuilder: metrics.AccumulatingBucketBuilder(metrics.EvictAndReplaceWith(10, maths.Average), 100), + diskLatencyHistogram = &prometheus.HistogramSpecification{ + Starts: prometheus.LogarithmicSizedBucketsFor(0, 5000), + BucketBuilder: prometheus.AccumulatingBucketBuilder(prometheus.EvictAndReplaceWith(10, prometheus.AverageReducer), 100), ReportablePercentiles: []float64{0.01, 0.05, 0.5, 0.90, 0.99}, } - curationDuration = metrics.NewCounter() - curationDurations = metrics.NewHistogram(diskLatencyHistogram) - curationFilterOperations = metrics.NewCounter() - storageOperations = metrics.NewCounter() - storageOperationDurations = metrics.NewCounter() - storageLatency = metrics.NewHistogram(diskLatencyHistogram) - queueSizes = metrics.NewGauge() + curationDuration = prometheus.NewCounter() + curationDurations = prometheus.NewHistogram(diskLatencyHistogram) + curationFilterOperations = prometheus.NewCounter() + storageOperations = prometheus.NewCounter() + storageOperationDurations = prometheus.NewCounter() + storageLatency = prometheus.NewHistogram(diskLatencyHistogram) + queueSizes = prometheus.NewGauge() ) func recordOutcome(duration time.Duration, err error, success, failure map[string]string) { @@ -88,9 +86,9 @@ func recordOutcome(duration time.Duration, err error, success, failure map[strin } func init() { - registry.Register("prometheus_metric_disk_operations_total", "Total number of metric-related disk operations.", registry.NilLabels, storageOperations) - registry.Register("prometheus_metric_disk_latency_microseconds", "Latency for metric disk operations in microseconds.", registry.NilLabels, storageLatency) - registry.Register("prometheus_storage_operation_time_total_microseconds", "The total time spent performing a given storage operation.", registry.NilLabels, storageOperationDurations) - registry.Register("prometheus_storage_queue_sizes_total", "The various sizes and capacities of the storage queues.", registry.NilLabels, queueSizes) - registry.Register("curation_filter_operations_total", "The number of curation filter operations completed.", registry.NilLabels, curationFilterOperations) + prometheus.Register("prometheus_metric_disk_operations_total", "Total number of metric-related disk operations.", prometheus.NilLabels, storageOperations) + prometheus.Register("prometheus_metric_disk_latency_microseconds", "Latency for metric disk operations in microseconds.", prometheus.NilLabels, storageLatency) + prometheus.Register("prometheus_storage_operation_time_total_microseconds", "The total time spent performing a given storage operation.", prometheus.NilLabels, storageOperationDurations) + prometheus.Register("prometheus_storage_queue_sizes_total", "The various sizes and capacities of the storage queues.", prometheus.NilLabels, queueSizes) + prometheus.Register("curation_filter_operations_total", "The number of curation filter operations completed.", prometheus.NilLabels, curationFilterOperations) } diff --git a/web/web.go b/web/web.go index 5917f626e..ae6f226af 100644 --- a/web/web.go +++ b/web/web.go @@ -17,8 +17,8 @@ import ( "code.google.com/p/gorest" "flag" "fmt" - "github.com/prometheus/client_golang" - "github.com/prometheus/client_golang/exp" + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/exp" "github.com/prometheus/prometheus/appstate" "github.com/prometheus/prometheus/web/api" "github.com/prometheus/prometheus/web/blob" @@ -49,7 +49,7 @@ func StartServing(appState *appstate.ApplicationState) { exp.HandleFunc("/console", consoleHandler) exp.Handle("/api/", gorest.Handle()) - exp.Handle("/metrics.json", registry.DefaultHandler) + exp.Handle("/metrics.json", prometheus.DefaultHandler) if *useLocalAssets { exp.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("web/static")))) } else {