github.com/binyushen/fabric@v2.1.1+incompatible/core/chaincode/metrics.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package chaincode
     8  
     9  import "github.com/hyperledger/fabric/common/metrics"
    10  
    11  var (
    12  	launchDuration = metrics.HistogramOpts{
    13  		Namespace:    "chaincode",
    14  		Name:         "launch_duration",
    15  		Help:         "The time to launch a chaincode.",
    16  		LabelNames:   []string{"chaincode", "success"},
    17  		StatsdFormat: "%{#fqname}.%{chaincode}.%{success}",
    18  	}
    19  	launchFailures = metrics.CounterOpts{
    20  		Namespace:    "chaincode",
    21  		Name:         "launch_failures",
    22  		Help:         "The number of chaincode launches that have failed.",
    23  		LabelNames:   []string{"chaincode"},
    24  		StatsdFormat: "%{#fqname}.%{chaincode}",
    25  	}
    26  	launchTimeouts = metrics.CounterOpts{
    27  		Namespace:    "chaincode",
    28  		Name:         "launch_timeouts",
    29  		Help:         "The number of chaincode launches that have timed out.",
    30  		LabelNames:   []string{"chaincode"},
    31  		StatsdFormat: "%{#fqname}.%{chaincode}",
    32  	}
    33  
    34  	shimRequestsReceived = metrics.CounterOpts{
    35  		Namespace:    "chaincode",
    36  		Name:         "shim_requests_received",
    37  		Help:         "The number of chaincode shim requests received.",
    38  		LabelNames:   []string{"type", "channel", "chaincode"},
    39  		StatsdFormat: "%{#fqname}.%{type}.%{channel}.%{chaincode}",
    40  	}
    41  	shimRequestsCompleted = metrics.CounterOpts{
    42  		Namespace:    "chaincode",
    43  		Name:         "shim_requests_completed",
    44  		Help:         "The number of chaincode shim requests completed.",
    45  		LabelNames:   []string{"type", "channel", "chaincode", "success"},
    46  		StatsdFormat: "%{#fqname}.%{type}.%{channel}.%{chaincode}.%{success}",
    47  	}
    48  	shimRequestDuration = metrics.HistogramOpts{
    49  		Namespace:    "chaincode",
    50  		Name:         "shim_request_duration",
    51  		Help:         "The time to complete chaincode shim requests.",
    52  		LabelNames:   []string{"type", "channel", "chaincode", "success"},
    53  		StatsdFormat: "%{#fqname}.%{type}.%{channel}.%{chaincode}.%{success}",
    54  	}
    55  	executeTimeouts = metrics.CounterOpts{
    56  		Namespace:    "chaincode",
    57  		Name:         "execute_timeouts",
    58  		Help:         "The number of chaincode executions (Init or Invoke) that have timed out.",
    59  		LabelNames:   []string{"chaincode"},
    60  		StatsdFormat: "%{#fqname}.%{chaincode}",
    61  	}
    62  )
    63  
    64  type HandlerMetrics struct {
    65  	ShimRequestsReceived  metrics.Counter
    66  	ShimRequestsCompleted metrics.Counter
    67  	ShimRequestDuration   metrics.Histogram
    68  	ExecuteTimeouts       metrics.Counter
    69  }
    70  
    71  func NewHandlerMetrics(p metrics.Provider) *HandlerMetrics {
    72  	return &HandlerMetrics{
    73  		ShimRequestsReceived:  p.NewCounter(shimRequestsReceived),
    74  		ShimRequestsCompleted: p.NewCounter(shimRequestsCompleted),
    75  		ShimRequestDuration:   p.NewHistogram(shimRequestDuration),
    76  		ExecuteTimeouts:       p.NewCounter(executeTimeouts),
    77  	}
    78  }
    79  
    80  type LaunchMetrics struct {
    81  	LaunchDuration metrics.Histogram
    82  	LaunchFailures metrics.Counter
    83  	LaunchTimeouts metrics.Counter
    84  }
    85  
    86  func NewLaunchMetrics(p metrics.Provider) *LaunchMetrics {
    87  	return &LaunchMetrics{
    88  		LaunchDuration: p.NewHistogram(launchDuration),
    89  		LaunchFailures: p.NewCounter(launchFailures),
    90  		LaunchTimeouts: p.NewCounter(launchTimeouts),
    91  	}
    92  }