github.com/osdi23p228/fabric@v0.0.0-20221218062954-77808885f5db/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/osdi23p228/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 }