104 lines
3.6 KiB
Go
104 lines
3.6 KiB
Go
/*
|
|
Copyright State Street Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package endorser
|
|
|
|
import "github.com/hyperledger/fabric/common/metrics"
|
|
|
|
var (
|
|
proposalDurationHistogramOpts = metrics.HistogramOpts{
|
|
Namespace: "endorser",
|
|
Name: "proposal_duration",
|
|
Help: "The time to complete a proposal.",
|
|
LabelNames: []string{"channel", "chaincode", "success"},
|
|
StatsdFormat: "%{#fqname}.%{channel}.%{chaincode}.%{success}",
|
|
}
|
|
|
|
receivedProposalsCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "proposals_received",
|
|
Help: "The number of proposals received.",
|
|
}
|
|
|
|
successfulProposalsCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "successful_proposals",
|
|
Help: "The number of successful proposals.",
|
|
}
|
|
|
|
proposalValidationFailureCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "proposal_validation_failures",
|
|
Help: "The number of proposals that have failed initial validation.",
|
|
}
|
|
|
|
proposalChannelACLFailureOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "proposal_acl_failures",
|
|
Help: "The number of proposals that failed ACL checks.",
|
|
LabelNames: []string{"channel", "chaincode"},
|
|
StatsdFormat: "%{#fqname}.%{channel}.%{chaincode}",
|
|
}
|
|
|
|
initFailureCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "chaincode_instantiation_failures",
|
|
Help: "The number of chaincode instantiations or upgrade that have failed.",
|
|
LabelNames: []string{"channel", "chaincode"},
|
|
StatsdFormat: "%{#fqname}.%{channel}.%{chaincode}",
|
|
}
|
|
|
|
endorsementFailureCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "endorsement_failures",
|
|
Help: "The number of failed endorsements.",
|
|
LabelNames: []string{"channel", "chaincode", "chaincodeerror"},
|
|
StatsdFormat: "%{#fqname}.%{channel}.%{chaincode}.%{chaincodeerror}",
|
|
}
|
|
|
|
duplicateTxsFailureCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "duplicate_transaction_failures",
|
|
Help: "The number of failed proposals due to duplicate transaction ID.",
|
|
LabelNames: []string{"channel", "chaincode"},
|
|
StatsdFormat: "%{#fqname}.%{channel}.%{chaincode}",
|
|
}
|
|
|
|
simulationFailureCounterOpts = metrics.CounterOpts{
|
|
Namespace: "endorser",
|
|
Name: "proposal_simulation_failures",
|
|
Help: "The number of failed proposal simulations",
|
|
LabelNames: []string{"channel", "chaincode"},
|
|
StatsdFormat: "%{#fqname}.%{channel}.%{chaincode}",
|
|
}
|
|
)
|
|
|
|
type Metrics struct {
|
|
ProposalDuration metrics.Histogram
|
|
ProposalsReceived metrics.Counter
|
|
SuccessfulProposals metrics.Counter
|
|
ProposalValidationFailed metrics.Counter
|
|
ProposalACLCheckFailed metrics.Counter
|
|
InitFailed metrics.Counter
|
|
EndorsementsFailed metrics.Counter
|
|
DuplicateTxsFailure metrics.Counter
|
|
SimulationFailure metrics.Counter
|
|
}
|
|
|
|
func NewMetrics(p metrics.Provider) *Metrics {
|
|
return &Metrics{
|
|
ProposalDuration: p.NewHistogram(proposalDurationHistogramOpts),
|
|
ProposalsReceived: p.NewCounter(receivedProposalsCounterOpts),
|
|
SuccessfulProposals: p.NewCounter(successfulProposalsCounterOpts),
|
|
ProposalValidationFailed: p.NewCounter(proposalValidationFailureCounterOpts),
|
|
ProposalACLCheckFailed: p.NewCounter(proposalChannelACLFailureOpts),
|
|
InitFailed: p.NewCounter(initFailureCounterOpts),
|
|
EndorsementsFailed: p.NewCounter(endorsementFailureCounterOpts),
|
|
DuplicateTxsFailure: p.NewCounter(duplicateTxsFailureCounterOpts),
|
|
SimulationFailure: p.NewCounter(simulationFailureCounterOpts),
|
|
}
|
|
}
|