github.com/ewagmig/fabric@v2.1.1+incompatible/core/ledger/util/couchdb/metrics.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package couchdb
     8  
     9  import (
    10  	"time"
    11  
    12  	"github.com/hyperledger/fabric/common/metrics"
    13  )
    14  
    15  var (
    16  	apiProcessingTimeOpts = metrics.HistogramOpts{
    17  		Namespace:    "couchdb",
    18  		Subsystem:    "",
    19  		Name:         "processing_time",
    20  		Help:         "Time taken in seconds for the function to complete request to CouchDB",
    21  		LabelNames:   []string{"database", "function_name", "result"},
    22  		StatsdFormat: "%{#fqname}.%{database}.%{function_name}.%{result}",
    23  	}
    24  )
    25  
    26  type stats struct {
    27  	apiProcessingTime metrics.Histogram
    28  }
    29  
    30  func newStats(metricsProvider metrics.Provider) *stats {
    31  	return &stats{
    32  		apiProcessingTime: metricsProvider.NewHistogram(apiProcessingTimeOpts),
    33  	}
    34  }
    35  
    36  func (s *stats) observeProcessingTime(startTime time.Time, dbName, functionName, result string) {
    37  	s.apiProcessingTime.With(
    38  		"database", dbName,
    39  		"function_name", functionName,
    40  		"result", result,
    41  	).Observe(time.Since(startTime).Seconds())
    42  }