63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package smartbft
|
|
|
|
import "github.com/hyperledger/fabric/common/metrics"
|
|
|
|
var (
|
|
clusterSizeOpts = metrics.GaugeOpts{
|
|
Namespace: "consensus",
|
|
Subsystem: "BFT",
|
|
Name: "cluster_size",
|
|
Help: "Number of nodes in this channel.",
|
|
LabelNames: []string{"channel"},
|
|
StatsdFormat: "%{#fqname}.%{channel}",
|
|
}
|
|
committedBlockNumberOpts = metrics.GaugeOpts{
|
|
Namespace: "consensus",
|
|
Subsystem: "BFT",
|
|
Name: "committed_block_number",
|
|
Help: "The number of the latest committed block.",
|
|
LabelNames: []string{"channel"},
|
|
StatsdFormat: "%{#fqname}.%{channel}",
|
|
}
|
|
isLeaderOpts = metrics.GaugeOpts{
|
|
Namespace: "consensus",
|
|
Subsystem: "BFT",
|
|
Name: "is_leader",
|
|
Help: "The leadership status of the current node according to the latest committed block: 1 if it is the leader else 0.",
|
|
LabelNames: []string{"channel"},
|
|
StatsdFormat: "%{#fqname}.%{channel}",
|
|
}
|
|
leaderIDOpts = metrics.GaugeOpts{
|
|
Namespace: "consensus",
|
|
Subsystem: "BFT",
|
|
Name: "leader_id",
|
|
Help: "The id of the current leader according to the latest committed block.",
|
|
LabelNames: []string{"channel"},
|
|
StatsdFormat: "%{#fqname}.%{channel}",
|
|
}
|
|
)
|
|
|
|
// Metrics defines the metrics for the cluster.
|
|
type Metrics struct {
|
|
ClusterSize metrics.Gauge
|
|
CommittedBlockNumber metrics.Gauge
|
|
IsLeader metrics.Gauge
|
|
LeaderID metrics.Gauge
|
|
}
|
|
|
|
// NewMetrics creates the Metrics
|
|
func NewMetrics(p metrics.Provider) *Metrics {
|
|
return &Metrics{
|
|
ClusterSize: p.NewGauge(clusterSizeOpts),
|
|
CommittedBlockNumber: p.NewGauge(committedBlockNumberOpts),
|
|
IsLeader: p.NewGauge(isLeaderOpts),
|
|
LeaderID: p.NewGauge(leaderIDOpts),
|
|
}
|
|
}
|