Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
/.idea
/.vscode
/tmp
vendor

# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
Expand Down
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ VERSION ?= "$(shell git describe --tags --abbrev=0 | cut -c2-)"
COMMIT_HASH ?= "$(shell git describe --long --dirty --always --match "" || true)"
CLEAN_COMMIT ?= "$(shell git describe --long --always --match "" || true)"
COMMIT_TIME ?= "$(shell git show -s --format=%ct $(CLEAN_COMMIT) || true)"
BUILD_TAGS ?=
LDFLAGS ?= -s -w \
-X github.com/ethersphere/bee/v2.version="$(VERSION)" \
-X github.com/ethersphere/bee/v2.commitHash="$(COMMIT_HASH)" \
Expand All @@ -31,11 +32,14 @@ LDFLAGS ?= -s -w \
.PHONY: all
all: build lint test-race binary

.PHONY: binary
.PHONY: binary binary-nometrics
binary: export CGO_ENABLED=0
binary: dist FORCE
$(GO) version
$(GO) build -trimpath -ldflags "$(LDFLAGS)" -o dist/bee ./cmd/bee
$(GO) build -trimpath -ldflags "$(LDFLAGS)" -tags "$(BUILD_TAGS)" -o dist/bee ./cmd/bee

binary-nometrics:
$(MAKE) binary BUILD_TAGS=nometrics

dist:
mkdir $@
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ require (
github.com/pelletier/go-toml v1.8.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/client_model v0.6.1
github.com/prometheus/common v0.62.0
github.com/prometheus/procfs v0.15.1 // indirect
github.com/prometheus/statsd_exporter v0.22.7 // indirect
Expand Down
91 changes: 45 additions & 46 deletions pkg/accounting/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,169 +6,168 @@ package accounting

import (
m "github.com/ethersphere/bee/v2/pkg/metrics"
"github.com/prometheus/client_golang/prometheus"
)

type metrics struct {
// all metrics fields must be exported
// to be able to return them by Metrics()
// using reflection
TotalDebitedAmount prometheus.Counter
TotalCreditedAmount prometheus.Counter
DebitEventsCount prometheus.Counter
CreditEventsCount prometheus.Counter
AccountingDisconnectsEnforceRefreshCount prometheus.Counter
AccountingRefreshAttemptCount prometheus.Counter
AccountingNonFatalRefreshFailCount prometheus.Counter
AccountingDisconnectsOverdrawCount prometheus.Counter
AccountingDisconnectsGhostOverdrawCount prometheus.Counter
AccountingDisconnectsReconnectCount prometheus.Counter
AccountingBlocksCount prometheus.Counter
AccountingReserveCount prometheus.Counter
TotalOriginatedCreditedAmount prometheus.Counter
OriginatedCreditEventsCount prometheus.Counter
SettleErrorCount prometheus.Counter
PaymentAttemptCount prometheus.Counter
PaymentErrorCount prometheus.Counter
ErrTimeOutOfSyncAlleged prometheus.Counter
ErrTimeOutOfSyncRecent prometheus.Counter
ErrTimeOutOfSyncInterval prometheus.Counter
ErrRefreshmentBelowExpected prometheus.Counter
ErrRefreshmentAboveExpected prometheus.Counter
TotalDebitedAmount m.Counter
TotalCreditedAmount m.Counter
DebitEventsCount m.Counter
CreditEventsCount m.Counter
AccountingDisconnectsEnforceRefreshCount m.Counter
AccountingRefreshAttemptCount m.Counter
AccountingNonFatalRefreshFailCount m.Counter
AccountingDisconnectsOverdrawCount m.Counter
AccountingDisconnectsGhostOverdrawCount m.Counter
AccountingDisconnectsReconnectCount m.Counter
AccountingBlocksCount m.Counter
AccountingReserveCount m.Counter
TotalOriginatedCreditedAmount m.Counter
OriginatedCreditEventsCount m.Counter
SettleErrorCount m.Counter
PaymentAttemptCount m.Counter
PaymentErrorCount m.Counter
ErrTimeOutOfSyncAlleged m.Counter
ErrTimeOutOfSyncRecent m.Counter
ErrTimeOutOfSyncInterval m.Counter
ErrRefreshmentBelowExpected m.Counter
ErrRefreshmentAboveExpected m.Counter
}

func newMetrics() metrics {
subsystem := "accounting"

return metrics{
TotalDebitedAmount: prometheus.NewCounter(prometheus.CounterOpts{
TotalDebitedAmount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "total_debited_amount",
Help: "Amount of BZZ debited to peers (potential income of the node)",
}),
TotalCreditedAmount: prometheus.NewCounter(prometheus.CounterOpts{
TotalCreditedAmount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "total_credited_amount",
Help: "Amount of BZZ credited to peers (potential cost of the node)",
}),
DebitEventsCount: prometheus.NewCounter(prometheus.CounterOpts{
DebitEventsCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "debit_events_count",
Help: "Number of occurrences of BZZ debit events towards peers",
}),
CreditEventsCount: prometheus.NewCounter(prometheus.CounterOpts{
CreditEventsCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "credit_events_count",
Help: "Number of occurrences of BZZ credit events towards peers",
}),
AccountingDisconnectsEnforceRefreshCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingDisconnectsEnforceRefreshCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_enforce_refresh_count",
Help: "Number of occurrences of peers disconnected based on failed refreshment attempts",
}),
AccountingRefreshAttemptCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingRefreshAttemptCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "refresh_attempt_count",
Help: "Number of attempts of refresh op",
}),
AccountingNonFatalRefreshFailCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingNonFatalRefreshFailCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "non_fatal_refresh_fail_count",
Help: "Number of occurrences of refreshments failing for peers because of peer timestamp ahead of ours",
}),
AccountingDisconnectsOverdrawCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingDisconnectsOverdrawCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_overdraw_count",
Help: "Number of occurrences of peers disconnected based on payment thresholds",
}),
AccountingDisconnectsGhostOverdrawCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingDisconnectsGhostOverdrawCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_ghost_overdraw_count",
Help: "Number of occurrences of peers disconnected based on undebitable requests thresholds",
}),
AccountingDisconnectsReconnectCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingDisconnectsReconnectCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_reconnect_count",
Help: "Number of occurrences of peers disconnected based on early attempt to reconnect",
}),

AccountingBlocksCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingBlocksCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "accounting_blocks_count",
Help: "Number of occurrences of temporarily skipping a peer to avoid crossing their disconnect thresholds",
}),
AccountingReserveCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingReserveCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "accounting_reserve_count",
Help: "Number of reserve calls",
}),
TotalOriginatedCreditedAmount: prometheus.NewCounter(prometheus.CounterOpts{
TotalOriginatedCreditedAmount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "total_originated_credited_amount",
Help: "Amount of BZZ credited to peers (potential cost of the node) for originated traffic",
}),
OriginatedCreditEventsCount: prometheus.NewCounter(prometheus.CounterOpts{
OriginatedCreditEventsCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "originated_credit_events_count",
Help: "Number of occurrences of BZZ credit events as originator towards peers",
}),
SettleErrorCount: prometheus.NewCounter(prometheus.CounterOpts{
SettleErrorCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "settle_error_count",
Help: "Number of errors occurring in settle method",
}),
PaymentErrorCount: prometheus.NewCounter(prometheus.CounterOpts{
PaymentErrorCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "payment_error_count",
Help: "Number of errors occurring during payment op",
}),
PaymentAttemptCount: prometheus.NewCounter(prometheus.CounterOpts{
PaymentAttemptCount: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "payment_attempt_count",
Help: "Number of attempts of payment op",
}),
ErrRefreshmentBelowExpected: prometheus.NewCounter(prometheus.CounterOpts{
ErrRefreshmentBelowExpected: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "refreshment_below_expected",
Help: "Number of times the peer received a refreshment that is below expected",
}),
ErrRefreshmentAboveExpected: prometheus.NewCounter(prometheus.CounterOpts{
ErrRefreshmentAboveExpected: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "refreshment_above_expected",
Help: "Number of times the peer received a refreshment that is above expected",
}),
ErrTimeOutOfSyncAlleged: prometheus.NewCounter(prometheus.CounterOpts{
ErrTimeOutOfSyncAlleged: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "time_out_of_sync_alleged",
Help: "Number of times the timestamps from peer were decreasing",
}),
ErrTimeOutOfSyncRecent: prometheus.NewCounter(prometheus.CounterOpts{
ErrTimeOutOfSyncRecent: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "time_out_of_sync_recent",
Help: "Number of times the timestamps from peer differed from our measurement by more than 2 seconds",
}),
ErrTimeOutOfSyncInterval: prometheus.NewCounter(prometheus.CounterOpts{
ErrTimeOutOfSyncInterval: m.NewCounter(m.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "time_out_of_sync_interval",
Expand All @@ -178,6 +177,6 @@ func newMetrics() metrics {
}

// Metrics returns the prometheus Collector for the accounting service.
func (a *Accounting) Metrics() []prometheus.Collector {
func (a *Accounting) Metrics() []m.Collector {
return m.PrometheusCollectorsFromFields(a.metrics)
}
4 changes: 2 additions & 2 deletions pkg/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import (
"github.com/ethersphere/bee/v2/pkg/gsoc"
"github.com/ethersphere/bee/v2/pkg/jsonhttp"
"github.com/ethersphere/bee/v2/pkg/log"
m "github.com/ethersphere/bee/v2/pkg/metrics"
"github.com/ethersphere/bee/v2/pkg/p2p"
"github.com/ethersphere/bee/v2/pkg/pingpong"
"github.com/ethersphere/bee/v2/pkg/postage"
Expand Down Expand Up @@ -63,7 +64,6 @@ import (
"github.com/go-playground/validator/v10"
"github.com/gorilla/mux"
"github.com/hashicorp/go-multierror"
"github.com/prometheus/client_golang/prometheus"
"golang.org/x/sync/semaphore"
)

Expand Down Expand Up @@ -164,7 +164,7 @@ type Service struct {
accesscontrol accesscontrol.Controller
postageContract postagecontract.Interface
probe *Probe
metricsRegistry *prometheus.Registry
metricsRegistry m.MetricsRegistererGatherer
stakingContract staking.Contract
Options

Expand Down
Loading
Loading