Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
43519a24
Unverified
Commit
43519a24
authored
Mar 20, 2023
by
Madhur Shrimal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor to use ref metrics
parent
9f453e7b
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
125 additions
and
39 deletions
+125
-39
metrics.go
op-batcher/metrics/metrics.go
+1
-1
metrics.go
op-proposer/metrics/metrics.go
+100
-0
noop.go
op-proposer/metrics/noop.go
+13
-0
l2_output_submitter.go
op-proposer/proposer/l2_output_submitter.go
+11
-13
proposer.go
op-service/metrics/proposer.go
+0
-25
No files found.
op-batcher/metrics/metrics.go
View file @
43519a24
...
...
@@ -185,7 +185,7 @@ func (m *Metrics) RecordLatestL1Block(l1ref eth.L1BlockRef) {
m
.
RecordL1Ref
(
"latest"
,
l1ref
)
}
// RecordL2BlockLoaded should be called when a new L2 block was loaded into the
// RecordL2Block
s
Loaded should be called when a new L2 block was loaded into the
// channel manager (but not processed yet).
func
(
m
*
Metrics
)
RecordL2BlocksLoaded
(
l2ref
eth
.
L2BlockRef
)
{
m
.
RecordL2Ref
(
StageLoaded
,
l2ref
)
...
...
op-proposer/metrics/metrics.go
0 → 100644
View file @
43519a24
package
metrics
import
(
"context"
"github.com/ethereum-optimism/optimism/op-node/eth"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/prometheus/client_golang/prometheus"
opmetrics
"github.com/ethereum-optimism/optimism/op-service/metrics"
)
const
Namespace
=
"op_proposer"
type
Metricer
interface
{
RecordInfo
(
version
string
)
RecordUp
()
// Records all L1 and L2 block events
opmetrics
.
RefMetricer
RecordL2BlocksProposed
(
l2ref
eth
.
L2BlockRef
)
}
type
Metrics
struct
{
ns
string
registry
*
prometheus
.
Registry
factory
opmetrics
.
Factory
opmetrics
.
RefMetrics
Info
prometheus
.
GaugeVec
Up
prometheus
.
Gauge
}
var
_
Metricer
=
(
*
Metrics
)(
nil
)
func
NewMetrics
(
procName
string
)
*
Metrics
{
if
procName
==
""
{
procName
=
"default"
}
ns
:=
Namespace
+
"_"
+
procName
registry
:=
opmetrics
.
NewRegistry
()
factory
:=
opmetrics
.
With
(
registry
)
return
&
Metrics
{
ns
:
ns
,
registry
:
registry
,
factory
:
factory
,
RefMetrics
:
opmetrics
.
MakeRefMetrics
(
ns
,
factory
),
Info
:
*
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
Namespace
:
ns
,
Name
:
"info"
,
Help
:
"Pseudo-metric tracking version and config info"
,
},
[]
string
{
"version"
,
}),
Up
:
factory
.
NewGauge
(
prometheus
.
GaugeOpts
{
Namespace
:
ns
,
Name
:
"up"
,
Help
:
"1 if the op-proposer has finished starting up"
,
}),
}
}
func
(
m
*
Metrics
)
Serve
(
ctx
context
.
Context
,
host
string
,
port
int
)
error
{
return
opmetrics
.
ListenAndServe
(
ctx
,
m
.
registry
,
host
,
port
)
}
func
(
m
*
Metrics
)
StartBalanceMetrics
(
ctx
context
.
Context
,
l
log
.
Logger
,
client
*
ethclient
.
Client
,
account
common
.
Address
)
{
opmetrics
.
LaunchBalanceMetrics
(
ctx
,
l
,
m
.
registry
,
m
.
ns
,
client
,
account
)
}
// RecordInfo sets a pseudo-metric that contains versioning and
// config info for the op-proposer.
func
(
m
*
Metrics
)
RecordInfo
(
version
string
)
{
m
.
Info
.
WithLabelValues
(
version
)
.
Set
(
1
)
}
// RecordUp sets the up metric to 1.
func
(
m
*
Metrics
)
RecordUp
()
{
prometheus
.
MustRegister
()
m
.
Up
.
Set
(
1
)
}
const
(
BlockProposed
=
"proposed"
)
// RecordL2BlocksProposed should be called when new L2 block is proposed
func
(
m
*
Metrics
)
RecordL2BlocksProposed
(
l2ref
eth
.
L2BlockRef
)
{
m
.
RecordL2Ref
(
BlockProposed
,
l2ref
)
}
op-proposer/metrics/noop.go
0 → 100644
View file @
43519a24
package
metrics
import
(
"github.com/ethereum-optimism/optimism/op-node/eth"
opmetrics
"github.com/ethereum-optimism/optimism/op-service/metrics"
)
type
noopMetrics
struct
{
opmetrics
.
NoopRefMetrics
}
func
(
*
noopMetrics
)
RecordInfo
(
version
string
)
{}
func
(
*
noopMetrics
)
RecordUp
()
{}
func
(
*
noopMetrics
)
RecordL2BlocksProposed
(
l2ref
eth
.
L2BlockRef
)
{}
op-proposer/proposer/l2_output_submitter.go
View file @
43519a24
...
...
@@ -13,6 +13,8 @@ import (
"syscall"
"time"
"github.com/ethereum-optimism/optimism/op-proposer/metrics"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
...
...
@@ -26,7 +28,6 @@ import (
"github.com/ethereum-optimism/optimism/op-node/sources"
opcrypto
"github.com/ethereum-optimism/optimism/op-service/crypto"
oplog
"github.com/ethereum-optimism/optimism/op-service/log"
opmetrics
"github.com/ethereum-optimism/optimism/op-service/metrics"
oppprof
"github.com/ethereum-optimism/optimism/op-service/pprof"
oprpc
"github.com/ethereum-optimism/optimism/op-service/rpc"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
...
...
@@ -49,9 +50,10 @@ func Main(version string, cliCtx *cli.Context) error {
}
l
:=
oplog
.
NewLogger
(
cfg
.
LogConfig
)
m
:=
metrics
.
NewMetrics
(
"default"
)
l
.
Info
(
"Initializing L2 Output Submitter"
)
l2OutputSubmitter
,
err
:=
NewL2OutputSubmitterFromCLIConfig
(
cfg
,
l
)
l2OutputSubmitter
,
err
:=
NewL2OutputSubmitterFromCLIConfig
(
cfg
,
l
,
m
)
if
err
!=
nil
{
l
.
Error
(
"Unable to create the L2 Output Submitter"
,
"error"
,
err
)
return
err
...
...
@@ -78,19 +80,15 @@ func Main(version string, cliCtx *cli.Context) error {
}()
}
registry
:=
opmetrics
.
NewRegistry
()
metricsCfg
:=
cfg
.
MetricsConfig
if
metricsCfg
.
Enabled
{
metricsRegistry
:=
opmetrics
.
InitProposerMetricsRegistry
(
registry
,
""
)
l2OutputSubmitter
.
mr
=
metricsRegistry
l
.
Info
(
"starting metrics server"
,
"addr"
,
metricsCfg
.
ListenAddr
,
"port"
,
metricsCfg
.
ListenPort
)
go
func
()
{
if
err
:=
opmetrics
.
ListenAndServe
(
ctx
,
registry
,
metricsCfg
.
ListenAddr
,
metricsCfg
.
ListenPort
);
err
!=
nil
{
if
err
:=
m
.
Serve
(
ctx
,
metricsCfg
.
ListenAddr
,
metricsCfg
.
ListenPort
);
err
!=
nil
{
l
.
Error
(
"error starting metrics server"
,
err
)
}
}()
addr
:=
l2OutputSubmitter
.
from
opmetrics
.
LaunchBalanceMetrics
(
ctx
,
l
,
registry
,
""
,
l2OutputSubmitter
.
l1Client
,
addr
)
m
.
StartBalanceMetrics
(
ctx
,
l
,
l2OutputSubmitter
.
l1Client
,
l2OutputSubmitter
.
from
)
}
rpcCfg
:=
cfg
.
RPCConfig
...
...
@@ -119,8 +117,8 @@ type L2OutputSubmitter struct {
wg
sync
.
WaitGroup
done
chan
struct
{}
log
log
.
Logger
mr
*
opmetrics
.
ProposerMetricsRegistry
metricsEnabled
bool
metr
metrics
.
Metricer
ctx
context
.
Context
cancel
context
.
CancelFunc
...
...
@@ -147,7 +145,7 @@ type L2OutputSubmitter struct {
}
// NewL2OutputSubmitterFromCLIConfig creates a new L2 Output Submitter given the CLI Config
func
NewL2OutputSubmitterFromCLIConfig
(
cfg
CLIConfig
,
l
log
.
Logger
)
(
*
L2OutputSubmitter
,
error
)
{
func
NewL2OutputSubmitterFromCLIConfig
(
cfg
CLIConfig
,
l
log
.
Logger
,
m
metrics
.
Metricer
)
(
*
L2OutputSubmitter
,
error
)
{
signer
,
fromAddress
,
err
:=
opcrypto
.
SignerFactoryFromConfig
(
l
,
cfg
.
PrivateKey
,
cfg
.
Mnemonic
,
cfg
.
L2OutputHDPath
,
cfg
.
SignerConfig
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -190,11 +188,11 @@ func NewL2OutputSubmitterFromCLIConfig(cfg CLIConfig, l log.Logger) (*L2OutputSu
metricsEnabled
:
cfg
.
MetricsConfig
.
Enabled
,
}
return
NewL2OutputSubmitter
(
proposerCfg
,
l
)
return
NewL2OutputSubmitter
(
proposerCfg
,
l
,
m
)
}
// NewL2OutputSubmitter creates a new L2 Output Submitter
func
NewL2OutputSubmitter
(
cfg
Config
,
l
log
.
Logger
)
(
*
L2OutputSubmitter
,
error
)
{
func
NewL2OutputSubmitter
(
cfg
Config
,
l
log
.
Logger
,
m
metrics
.
Metricer
)
(
*
L2OutputSubmitter
,
error
)
{
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
cCtx
,
cCancel
:=
context
.
WithTimeout
(
ctx
,
defaultDialTimeout
)
...
...
@@ -234,6 +232,7 @@ func NewL2OutputSubmitter(cfg Config, l log.Logger) (*L2OutputSubmitter, error)
ctx
:
ctx
,
cancel
:
cancel
,
metricsEnabled
:
cfg
.
metricsEnabled
,
metr
:
m
,
l1Client
:
cfg
.
L1Client
,
rollupClient
:
cfg
.
RollupClient
,
...
...
@@ -383,7 +382,6 @@ func (l *L2OutputSubmitter) SendTransaction(ctx context.Context, tx *types.Trans
if
l
.
metricsEnabled
{
// Emit the proposed block Number
opmetrics
.
EmitBlockNumber
(
l
.
mr
.
BlockNumberGauge
,
receipt
.
BlockNumber
)
}
// The transaction was successfully submitted
...
...
op-service/metrics/proposer.go
deleted
100644 → 0
View file @
9f453e7b
package
metrics
import
(
"math/big"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
type
ProposerMetricsRegistry
struct
{
BlockNumberGauge
prometheus
.
Gauge
}
func
InitProposerMetricsRegistry
(
r
*
prometheus
.
Registry
,
ns
string
)
*
ProposerMetricsRegistry
{
blockNumberGauge
:=
promauto
.
With
(
r
)
.
NewGauge
(
prometheus
.
GaugeOpts
{
Namespace
:
ns
,
Name
:
"latest_block_number"
,
Help
:
"Latest L2 proposed block number"
,
})
return
&
ProposerMetricsRegistry
{
BlockNumberGauge
:
blockNumberGauge
}
}
func
EmitBlockNumber
(
gauge
prometheus
.
Gauge
,
blockNumber
*
big
.
Int
)
{
gauge
.
Set
(
float64
(
blockNumber
.
Uint64
()))
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment