Documentation ¶
Overview ¶
Package metrics provides a set of metrics for the op-node.
Index ¶
- Constants
- type CacheMetrics
- type EventMetrics
- type Metricer
- type Metrics
- func (m *Metrics) ClientPayloadByNumberEvent(num uint64, resultCode byte, duration time.Duration)
- func (m *Metrics) CountSequencedTxs(count int)
- func (m *Metrics) DecPeerCount()
- func (m *Metrics) DecStreamCount()
- func (m *Metrics) Document() []metrics.DocumentedMetric
- func (m *Metrics) IncPeerCount()
- func (m *Metrics) IncStreamCount()
- func (m *Metrics) PayloadsQuarantineSize(n int)
- func (m *Metrics) RecordAccept(allow bool)
- func (m *Metrics) RecordBandwidth(ctx context.Context, bwc *libp2pmetrics.BandwidthCounter)
- func (m *Metrics) RecordChannelInputBytes(inputCompressedBytes int)
- func (m *Metrics) RecordChannelTimedOut()
- func (m *Metrics) RecordDerivationError()
- func (m *Metrics) RecordDial(allow bool)
- func (m *Metrics) RecordFrame()
- func (m *Metrics) RecordGossipEvent(evType int32)
- func (m *Metrics) RecordHeadChannelOpened()
- func (m *Metrics) RecordIPUnban()
- func (m *Metrics) RecordInfo(version string)
- func (m *Metrics) RecordL1Ref(name string, ref eth.L1BlockRef)
- func (m *Metrics) RecordL1ReorgDepth(d uint64)
- func (m *Metrics) RecordL1RequestTime(method string, duration time.Duration)
- func (m *Metrics) RecordL2Ref(name string, ref eth.L2BlockRef)
- func (m *Metrics) RecordPeerUnban()
- func (m *Metrics) RecordPipelineReset()
- func (m *Metrics) RecordPublishingError()
- func (m *Metrics) RecordRPCClientRequest(method string) func(err error)
- func (m *Metrics) RecordRPCClientResponse(method string, err error)
- func (m *Metrics) RecordRPCServerRequest(method string) func()
- func (m *Metrics) RecordReceivedUnsafePayload(payload *eth.ExecutionPayload)
- func (m *Metrics) RecordSequencerBuildingDiffTime(duration time.Duration)
- func (m *Metrics) RecordSequencerInconsistentL1Origin(from eth.BlockID, to eth.BlockID)
- func (m *Metrics) RecordSequencerReset()
- func (m *Metrics) RecordSequencerSealingTime(duration time.Duration)
- func (m *Metrics) RecordSequencingError()
- func (m *Metrics) RecordUnsafePayloadsBuffer(length uint64, memSize uint64, next eth.BlockID)
- func (m *Metrics) RecordUp()
- func (m *Metrics) Serve(ctx context.Context, hostname string, port int) error
- func (m *Metrics) ServerPayloadByNumberEvent(num uint64, resultCode byte, duration time.Duration)
- func (m *Metrics) SetDerivationIdle(status bool)
- func (m *Metrics) SetPeerScores(allScores []store.PeerScores)
Constants ¶
const ( Namespace = "op_node" RPCServerSubsystem = "rpc_server" RPCClientSubsystem = "rpc_client" BatchMethod = "<batch>" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CacheMetrics ¶
type CacheMetrics struct { SizeVec *prometheus.GaugeVec GetVec *prometheus.CounterVec AddVec *prometheus.CounterVec }
CacheMetrics implements the Metrics interface in the caching package, implementing reusable metrics for different caches.
func NewCacheMetrics ¶
func (*CacheMetrics) CacheAdd ¶
func (m *CacheMetrics) CacheAdd(typeLabel string, typeCacheSize int, evicted bool)
CacheAdd meters the addition of an item with a given type to the cache, metering the change of the cache size of that type, and indicating a corresponding eviction if any.
func (*CacheMetrics) CacheGet ¶
func (m *CacheMetrics) CacheGet(typeLabel string, hit bool)
CacheGet meters a lookup of an item with a given type to the cache and indicating if the lookup was a hit.
type EventMetrics ¶
type EventMetrics struct { Total prometheus.Counter LastTime prometheus.Gauge }
func NewEventMetrics ¶
func (*EventMetrics) RecordEvent ¶
func (e *EventMetrics) RecordEvent()
type Metricer ¶
type Metricer interface { RecordInfo(version string) RecordUp() RecordRPCServerRequest(method string) func() RecordRPCClientRequest(method string) func(err error) RecordRPCClientResponse(method string, err error) SetDerivationIdle(status bool) RecordPipelineReset() RecordSequencingError() RecordPublishingError() RecordDerivationError() RecordReceivedUnsafePayload(payload *eth.ExecutionPayload) RecordL1Ref(name string, ref eth.L1BlockRef) RecordL2Ref(name string, ref eth.L2BlockRef) RecordUnsafePayloadsBuffer(length uint64, memSize uint64, next eth.BlockID) CountSequencedTxs(count int) RecordL1ReorgDepth(d uint64) RecordSequencerInconsistentL1Origin(from eth.BlockID, to eth.BlockID) RecordSequencerReset() RecordGossipEvent(evType int32) IncPeerCount() DecPeerCount() IncStreamCount() DecStreamCount() RecordBandwidth(ctx context.Context, bwc *libp2pmetrics.BandwidthCounter) RecordSequencerBuildingDiffTime(duration time.Duration) RecordSequencerSealingTime(duration time.Duration) Document() []metrics.DocumentedMetric RecordChannelInputBytes(num int) RecordHeadChannelOpened() RecordChannelTimedOut() RecordFrame() // P2P Metrics SetPeerScores(allScores []store.PeerScores) ClientPayloadByNumberEvent(num uint64, resultCode byte, duration time.Duration) ServerPayloadByNumberEvent(num uint64, resultCode byte, duration time.Duration) PayloadsQuarantineSize(n int) RecordPeerUnban() RecordIPUnban() RecordDial(allow bool) RecordAccept(allow bool) // contains filtered or unexported methods }
type Metrics ¶
type Metrics struct { Info *prometheus.GaugeVec Up prometheus.Gauge RPCServerRequestsTotal *prometheus.CounterVec RPCServerRequestDurationSeconds *prometheus.HistogramVec RPCClientRequestsTotal *prometheus.CounterVec RPCClientRequestDurationSeconds *prometheus.HistogramVec RPCClientResponsesTotal *prometheus.CounterVec L1SourceCache *CacheMetrics L2SourceCache *CacheMetrics DerivationIdle prometheus.Gauge PipelineResets *EventMetrics UnsafePayloads *EventMetrics DerivationErrors *EventMetrics SequencingErrors *EventMetrics PublishingErrors *EventMetrics P2PReqDurationSeconds *prometheus.HistogramVec P2PReqTotal *prometheus.CounterVec P2PPayloadByNumber *prometheus.GaugeVec PayloadsQuarantineTotal prometheus.Gauge SequencerInconsistentL1Origin *EventMetrics SequencerResets *EventMetrics L1RequestDurationSeconds *prometheus.HistogramVec SequencerBuildingDiffDurationSeconds prometheus.Histogram SequencerBuildingDiffTotal prometheus.Counter SequencerSealingDurationSeconds prometheus.Histogram SequencerSealingTotal prometheus.Counter UnsafePayloadsBufferLen prometheus.Gauge UnsafePayloadsBufferMemSize prometheus.Gauge RefsNumber *prometheus.GaugeVec RefsTime *prometheus.GaugeVec RefsHash *prometheus.GaugeVec RefsSeqNr *prometheus.GaugeVec RefsLatency *prometheus.GaugeVec // hash of the last seen block per name, so we don't reduce/increase latency on updates of the same data, // and only count the first occurrence LatencySeen map[string]common.Hash L1ReorgDepth prometheus.Histogram TransactionsSequencedTotal prometheus.Counter // P2P Metrics PeerCount prometheus.Gauge StreamCount prometheus.Gauge GossipEventsTotal *prometheus.CounterVec BandwidthTotal *prometheus.GaugeVec PeerUnbans prometheus.Counter IPUnbans prometheus.Counter Dials *prometheus.CounterVec Accepts *prometheus.CounterVec PeerScores *prometheus.HistogramVec ChannelInputBytes prometheus.Counter // contains filtered or unexported fields }
Metrics tracks all the metrics for the op-node.
func NewMetrics ¶
NewMetrics creates a new Metrics instance with the given process name.
func (*Metrics) ClientPayloadByNumberEvent ¶ added in v1.0.3
func (*Metrics) CountSequencedTxs ¶
func (*Metrics) DecPeerCount ¶
func (m *Metrics) DecPeerCount()
func (*Metrics) DecStreamCount ¶
func (m *Metrics) DecStreamCount()
func (*Metrics) Document ¶
func (m *Metrics) Document() []metrics.DocumentedMetric
func (*Metrics) IncPeerCount ¶
func (m *Metrics) IncPeerCount()
func (*Metrics) IncStreamCount ¶
func (m *Metrics) IncStreamCount()
func (*Metrics) PayloadsQuarantineSize ¶ added in v1.0.3
func (*Metrics) RecordAccept ¶ added in v1.1.2
func (*Metrics) RecordBandwidth ¶
func (m *Metrics) RecordBandwidth(ctx context.Context, bwc *libp2pmetrics.BandwidthCounter)
func (*Metrics) RecordChannelInputBytes ¶ added in v1.0.3
func (*Metrics) RecordChannelTimedOut ¶ added in v1.1.4
func (m *Metrics) RecordChannelTimedOut()
func (*Metrics) RecordDerivationError ¶
func (m *Metrics) RecordDerivationError()
func (*Metrics) RecordDial ¶ added in v1.1.2
func (*Metrics) RecordFrame ¶ added in v1.1.4
func (m *Metrics) RecordFrame()
func (*Metrics) RecordGossipEvent ¶
func (*Metrics) RecordHeadChannelOpened ¶ added in v1.1.4
func (m *Metrics) RecordHeadChannelOpened()
func (*Metrics) RecordIPUnban ¶ added in v1.1.2
func (m *Metrics) RecordIPUnban()
func (*Metrics) RecordInfo ¶
RecordInfo sets a pseudo-metric that contains versioning and config info for the opnode.
func (*Metrics) RecordL1Ref ¶
func (m *Metrics) RecordL1Ref(name string, ref eth.L1BlockRef)
func (*Metrics) RecordL1ReorgDepth ¶
func (*Metrics) RecordL1RequestTime ¶ added in v1.0.8
RecordL1RequestTime tracks the amount of time the derivation pipeline spent waiting for L1 data requests.
func (*Metrics) RecordL2Ref ¶
func (m *Metrics) RecordL2Ref(name string, ref eth.L2BlockRef)
func (*Metrics) RecordPeerUnban ¶ added in v1.1.2
func (m *Metrics) RecordPeerUnban()
func (*Metrics) RecordPipelineReset ¶
func (m *Metrics) RecordPipelineReset()
func (*Metrics) RecordPublishingError ¶
func (m *Metrics) RecordPublishingError()
func (*Metrics) RecordRPCClientRequest ¶
RecordRPCClientRequest is a helper method to record an RPC client request. It bumps the requests metric, tracks the response duration, and records the response's error code.
func (*Metrics) RecordRPCClientResponse ¶
RecordRPCClientResponse records an RPC response. It will convert the passed-in error into something metrics friendly. Nil errors get converted into <nil>, RPC errors are converted into rpc_<error code>, HTTP errors are converted into http_<status code>, and everything else is converted into <unknown>.
func (*Metrics) RecordRPCServerRequest ¶
RecordRPCServerRequest is a helper method to record an incoming RPC call to the opnode's RPC server. It bumps the requests metric, and tracks how long it takes to serve a response.
func (*Metrics) RecordReceivedUnsafePayload ¶
func (m *Metrics) RecordReceivedUnsafePayload(payload *eth.ExecutionPayload)
func (*Metrics) RecordSequencerBuildingDiffTime ¶
RecordSequencerBuildingDiffTime tracks the amount of time the sequencer was allowed between start to finish, incl. sealing, minus the block time. Ideally this is 0, realistically the sequencer scheduler may be busy with other jobs like syncing sometimes.
func (*Metrics) RecordSequencerInconsistentL1Origin ¶
func (*Metrics) RecordSequencerReset ¶
func (m *Metrics) RecordSequencerReset()
func (*Metrics) RecordSequencerSealingTime ¶
RecordSequencerSealingTime tracks the amount of time the sequencer took to finish sealing the block. Ideally this is 0, realistically it may take some time.
func (*Metrics) RecordSequencingError ¶
func (m *Metrics) RecordSequencingError()
func (*Metrics) RecordUnsafePayloadsBuffer ¶
func (*Metrics) Serve ¶
Serve starts the metrics server on the given hostname and port. The server will be closed when the passed-in context is cancelled.
func (*Metrics) ServerPayloadByNumberEvent ¶ added in v1.0.3
func (*Metrics) SetDerivationIdle ¶
func (*Metrics) SetPeerScores ¶
func (m *Metrics) SetPeerScores(allScores []store.PeerScores)
SetPeerScores updates the peer score metrics. Accepts a slice of peer scores in any order.