Commit bd933fab authored by Sabnock01's avatar Sabnock01

chore: op-service metrics cleanup

parent 0025fff1
......@@ -7,9 +7,9 @@ import (
"github.com/urfave/cli/v2"
"github.com/ethereum-optimism/optimism/op-batcher/batcher"
"github.com/ethereum-optimism/optimism/op-batcher/cmd/doc"
"github.com/ethereum-optimism/optimism/op-batcher/flags"
oplog "github.com/ethereum-optimism/optimism/op-service/log"
"github.com/ethereum-optimism/optimism/op-service/metrics/doc"
"github.com/ethereum/go-ethereum/log"
)
......
......@@ -12,7 +12,6 @@ import (
"github.com/ethereum/go-ethereum/log"
opnode "github.com/ethereum-optimism/optimism/op-node"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/p2p"
p2pcli "github.com/ethereum-optimism/optimism/op-node/p2p/cli"
"github.com/ethereum-optimism/optimism/op-node/rollup"
......@@ -45,7 +44,7 @@ func Main(cliCtx *cli.Context) error {
logCfg := oplog.ReadCLIConfig(cliCtx)
logger := oplog.NewLogger(oplog.AppOut(cliCtx), logCfg)
oplog.SetGlobalLogHandler(logger.GetHandler())
m := metrics.NewMetrics("default")
m := opmetrics.NewMetrics("default")
ctx := context.Background()
config, err := opnode.NewRollupConfig(logger, cliCtx)
......
......@@ -7,12 +7,12 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/rollup/derive"
"github.com/ethereum-optimism/optimism/op-node/rollup/driver"
"github.com/ethereum-optimism/optimism/op-node/rollup/sync"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
)
// MockL1OriginSelector is a shim to override the origin as sequencer, so we can force it to stay on an older origin.
......
......@@ -47,7 +47,6 @@ import (
"github.com/ethereum-optimism/optimism/op-e2e/config"
"github.com/ethereum-optimism/optimism/op-e2e/e2eutils"
"github.com/ethereum-optimism/optimism/op-node/chaincfg"
"github.com/ethereum-optimism/optimism/op-node/metrics"
rollupNode "github.com/ethereum-optimism/optimism/op-node/node"
"github.com/ethereum-optimism/optimism/op-node/p2p"
"github.com/ethereum-optimism/optimism/op-node/rollup"
......@@ -57,6 +56,7 @@ import (
l2os "github.com/ethereum-optimism/optimism/op-proposer/proposer"
"github.com/ethereum-optimism/optimism/op-service/eth"
oplog "github.com/ethereum-optimism/optimism/op-service/log"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
"github.com/ethereum-optimism/optimism/op-service/txmgr"
)
......
......@@ -33,13 +33,13 @@ import (
"github.com/ethereum-optimism/optimism/op-e2e/config"
"github.com/ethereum-optimism/optimism/op-e2e/e2eutils/wait"
"github.com/ethereum-optimism/optimism/op-node/client"
"github.com/ethereum-optimism/optimism/op-node/metrics"
rollupNode "github.com/ethereum-optimism/optimism/op-node/node"
"github.com/ethereum-optimism/optimism/op-node/p2p"
"github.com/ethereum-optimism/optimism/op-node/rollup/derive"
"github.com/ethereum-optimism/optimism/op-node/rollup/driver"
"github.com/ethereum-optimism/optimism/op-node/sources"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
oppprof "github.com/ethereum-optimism/optimism/op-service/pprof"
"github.com/ethereum-optimism/optimism/op-service/retry"
"github.com/ethereum-optimism/optimism/op-service/testlog"
......
......@@ -4,7 +4,7 @@ import (
"context"
"math/big"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
......
......@@ -14,7 +14,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
"golang.org/x/time/rate"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum/go-ethereum/rpc"
)
......
......@@ -6,7 +6,7 @@ import (
"os"
"strings"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/olekukonko/tablewriter"
"github.com/urfave/cli/v2"
)
......
......@@ -18,11 +18,11 @@ import (
"github.com/ethereum-optimism/optimism/op-node/cmd/p2p"
"github.com/ethereum-optimism/optimism/op-node/flags"
"github.com/ethereum-optimism/optimism/op-node/heartbeat"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/node"
"github.com/ethereum-optimism/optimism/op-node/version"
opservice "github.com/ethereum-optimism/optimism/op-service"
oplog "github.com/ethereum-optimism/optimism/op-service/log"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/opio"
oppprof "github.com/ethereum-optimism/optimism/op-service/pprof"
)
......
......@@ -15,11 +15,11 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/op-node/client"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/p2p"
"github.com/ethereum-optimism/optimism/op-node/rollup/driver"
"github.com/ethereum-optimism/optimism/op-node/sources"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/retry"
)
......
......@@ -12,10 +12,10 @@ import (
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/p2p"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/sources"
"github.com/ethereum-optimism/optimism/op-service/metrics"
)
type rpcServer struct {
......
......@@ -16,11 +16,11 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/testutils"
"github.com/ethereum-optimism/optimism/op-node/version"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
......
......@@ -7,9 +7,9 @@ import (
"github.com/ethereum-optimism/optimism/op-node/p2p/store"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/p2p/gating/mocks"
"github.com/ethereum-optimism/optimism/op-service/clock"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
log "github.com/ethereum/go-ethereum/log"
"github.com/libp2p/go-libp2p/core/network"
......
......@@ -23,10 +23,10 @@ import (
"github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/testutils"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
......
......@@ -22,13 +22,13 @@ import (
"github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/p2p/gating"
"github.com/ethereum-optimism/optimism/op-node/p2p/monitor"
"github.com/ethereum-optimism/optimism/op-node/p2p/store"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-service/clock"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
)
// NodeP2P is a p2p node, which can be used to gossip messages.
......
......@@ -4,7 +4,7 @@ import (
"github.com/libp2p/go-libp2p/core/network"
ma "github.com/multiformats/go-multiaddr"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum/go-ethereum/log"
)
......
......@@ -25,7 +25,7 @@ import (
"github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-service/metrics"
)
// TODO: dynamic peering
......
......@@ -17,9 +17,9 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
......
......@@ -8,10 +8,10 @@ import (
"strings"
"testing"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/testutils"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
......
......@@ -14,11 +14,11 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/rollup/sync"
"github.com/ethereum-optimism/optimism/op-node/testutils"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
......
......@@ -16,11 +16,11 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/rollup/derive"
"github.com/ethereum-optimism/optimism/op-node/testutils"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
......
......@@ -6,11 +6,11 @@ import (
"fmt"
"io"
"github.com/ethereum-optimism/optimism/op-node/metrics"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-node/rollup/derive"
"github.com/ethereum-optimism/optimism/op-node/rollup/sync"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/ethereum/go-ethereum/log"
)
......
package doc
import (
"encoding/json"
"fmt"
"os"
"strings"
"github.com/ethereum-optimism/optimism/op-proposer/metrics"
"github.com/olekukonko/tablewriter"
"github.com/urfave/cli/v2"
)
var Subcommands = cli.Commands{
{
Name: "metrics",
Usage: "Dumps a list of supported metrics to stdout",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "format",
Value: "markdown",
Usage: "Output format (json|markdown)",
},
},
Action: func(ctx *cli.Context) error {
m := metrics.NewMetrics("default")
supportedMetrics := m.Document()
format := ctx.String("format")
if format != "markdown" && format != "json" {
return fmt.Errorf("invalid format: %s", format)
}
if format == "json" {
enc := json.NewEncoder(os.Stdout)
return enc.Encode(supportedMetrics)
}
table := tablewriter.NewWriter(os.Stdout)
table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
table.SetCenterSeparator("|")
table.SetAutoWrapText(false)
table.SetHeader([]string{"Metric", "Description", "Labels", "Type"})
var data [][]string
for _, metric := range supportedMetrics {
labels := strings.Join(metric.Labels, ",")
data = append(data, []string{metric.Name, metric.Help, labels, metric.Type})
}
table.AppendBulk(data)
table.Render()
return nil
},
},
}
......@@ -6,10 +6,10 @@ import (
"github.com/urfave/cli/v2"
"github.com/ethereum-optimism/optimism/op-proposer/cmd/doc"
"github.com/ethereum-optimism/optimism/op-proposer/flags"
"github.com/ethereum-optimism/optimism/op-proposer/proposer"
oplog "github.com/ethereum-optimism/optimism/op-service/log"
"github.com/ethereum-optimism/optimism/op-service/metrics/doc"
"github.com/ethereum/go-ethereum/log"
)
......
package metrics
import (
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/prometheus/client_golang/prometheus"
)
......@@ -34,7 +33,7 @@ func (m *CacheMetrics) CacheGet(typeLabel string, hit bool) {
}
}
func NewCacheMetrics(factory metrics.Factory, ns string, name string, displayName string) *CacheMetrics {
func NewCacheMetrics(factory Factory, ns string, name string, displayName string) *CacheMetrics {
return &CacheMetrics{
SizeVec: factory.NewGaugeVec(prometheus.GaugeOpts{
Namespace: ns,
......
......@@ -25,23 +25,33 @@ func DefaultCLIConfig() CLIConfig {
}
}
type FlagValue string
func (fv FlagValue) Set(value string) error {
*(*string)(&fv) = value
return nil
}
func (fv FlagValue) String() string {
return string(fv)
}
func CLIFlags(envPrefix string) []cli.Flag {
return []cli.Flag{
&cli.BoolFlag{
&cli.GenericFlag{
Name: EnabledFlagName,
Usage: "Enable the metrics server",
EnvVars: opservice.PrefixEnvVar(envPrefix, "METRICS_ENABLED"),
},
&cli.StringFlag{
&cli.GenericFlag{
Name: ListenAddrFlagName,
Usage: "Metrics listening address",
Value: defaultListenAddr, // TODO(CLI-4159): Switch to 127.0.0.1
Value: FlagValue(defaultListenAddr), // TODO(CLI-4159): Switch to 127.0.0.1
EnvVars: opservice.PrefixEnvVar(envPrefix, "METRICS_ADDR"),
},
&cli.IntFlag{
&cli.GenericFlag{
Name: PortFlagName,
Usage: "Metrics listening port",
Value: defaultListenPort,
Value: FlagValue(defaultListenAddr),
EnvVars: opservice.PrefixEnvVar(envPrefix, "METRICS_PORT"),
},
}
......
......@@ -6,7 +6,7 @@ import (
"os"
"strings"
"github.com/ethereum-optimism/optimism/op-batcher/metrics"
"github.com/ethereum-optimism/optimism/op-service/metrics"
"github.com/olekukonko/tablewriter"
"github.com/urfave/cli/v2"
)
......
......@@ -13,7 +13,6 @@ import (
"github.com/ethereum-optimism/optimism/op-node/p2p/store"
ophttp "github.com/ethereum-optimism/optimism/op-service/httputil"
"github.com/ethereum-optimism/optimism/op-service/metrics"
pb "github.com/libp2p/go-libp2p-pubsub/pb"
libp2pmetrics "github.com/libp2p/go-libp2p/core/metrics"
......@@ -65,7 +64,7 @@ type Metricer interface {
RecordBandwidth(ctx context.Context, bwc *libp2pmetrics.BandwidthCounter)
RecordSequencerBuildingDiffTime(duration time.Duration)
RecordSequencerSealingTime(duration time.Duration)
Document() []metrics.DocumentedMetric
Document() []DocumentedMetric
RecordChannelInputBytes(num int)
RecordHeadChannelOpened()
RecordChannelTimedOut()
......@@ -98,11 +97,11 @@ type Metrics struct {
DerivationIdle prometheus.Gauge
PipelineResets *metrics.Event
UnsafePayloads *metrics.Event
DerivationErrors *metrics.Event
SequencingErrors *metrics.Event
PublishingErrors *metrics.Event
PipelineResets *Event
UnsafePayloads *Event
DerivationErrors *Event
SequencingErrors *Event
PublishingErrors *Event
P2PReqDurationSeconds *prometheus.HistogramVec
P2PReqTotal *prometheus.CounterVec
......@@ -110,8 +109,8 @@ type Metrics struct {
PayloadsQuarantineTotal prometheus.Gauge
SequencerInconsistentL1Origin *metrics.Event
SequencerResets *metrics.Event
SequencerInconsistentL1Origin *Event
SequencerResets *Event
L1RequestDurationSeconds *prometheus.HistogramVec
......@@ -124,16 +123,16 @@ type Metrics struct {
UnsafePayloadsBufferLen prometheus.Gauge
UnsafePayloadsBufferMemSize prometheus.Gauge
metrics.RefMetrics
RefMetrics
L1ReorgDepth prometheus.Histogram
TransactionsSequencedTotal prometheus.Counter
// Channel Bank Metrics
headChannelOpenedEvent *metrics.Event
channelTimedOutEvent *metrics.Event
frameAddedEvent *metrics.Event
headChannelOpenedEvent *Event
channelTimedOutEvent *Event
frameAddedEvent *Event
// P2P Metrics
PeerCount prometheus.Gauge
......@@ -155,7 +154,7 @@ type Metrics struct {
ProtocolVersions *prometheus.GaugeVec
registry *prometheus.Registry
factory metrics.Factory
factory Factory
}
var _ Metricer = (*Metrics)(nil)
......@@ -170,7 +169,7 @@ func NewMetrics(procName string) *Metrics {
registry := prometheus.NewRegistry()
registry.MustRegister(collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}))
registry.MustRegister(collectors.NewGoCollector())
factory := metrics.With(registry)
factory := With(registry)
return &Metrics{
Info: factory.NewGaugeVec(prometheus.GaugeOpts{
......@@ -239,14 +238,14 @@ func NewMetrics(procName string) *Metrics {
Help: "1 if the derivation pipeline is idle",
}),
PipelineResets: metrics.NewEvent(factory, ns, "", "pipeline_resets", "derivation pipeline resets"),
UnsafePayloads: metrics.NewEvent(factory, ns, "", "unsafe_payloads", "unsafe payloads"),
DerivationErrors: metrics.NewEvent(factory, ns, "", "derivation_errors", "derivation errors"),
SequencingErrors: metrics.NewEvent(factory, ns, "", "sequencing_errors", "sequencing errors"),
PublishingErrors: metrics.NewEvent(factory, ns, "", "publishing_errors", "p2p publishing errors"),
PipelineResets: NewEvent(factory, ns, "", "pipeline_resets", "derivation pipeline resets"),
UnsafePayloads: NewEvent(factory, ns, "", "unsafe_payloads", "unsafe payloads"),
DerivationErrors: NewEvent(factory, ns, "", "derivation_errors", "derivation errors"),
SequencingErrors: NewEvent(factory, ns, "", "sequencing_errors", "sequencing errors"),
PublishingErrors: NewEvent(factory, ns, "", "publishing_errors", "p2p publishing errors"),
SequencerInconsistentL1Origin: metrics.NewEvent(factory, ns, "", "sequencer_inconsistent_l1_origin", "events when the sequencer selects an inconsistent L1 origin"),
SequencerResets: metrics.NewEvent(factory, ns, "", "sequencer_resets", "sequencer resets"),
SequencerInconsistentL1Origin: NewEvent(factory, ns, "", "sequencer_inconsistent_l1_origin", "events when the sequencer selects an inconsistent L1 origin"),
SequencerResets: NewEvent(factory, ns, "", "sequencer_resets", "sequencer resets"),
UnsafePayloadsBufferLen: factory.NewGauge(prometheus.GaugeOpts{
Namespace: ns,
......@@ -259,7 +258,7 @@ func NewMetrics(procName string) *Metrics {
Help: "Total estimated memory size of buffered L2 unsafe payloads",
}),
RefMetrics: metrics.MakeRefMetrics(ns, factory),
RefMetrics: MakeRefMetrics(ns, factory),
L1ReorgDepth: factory.NewHistogram(prometheus.HistogramOpts{
Namespace: ns,
......@@ -333,9 +332,9 @@ func NewMetrics(procName string) *Metrics {
Help: "Count of incoming dial attempts to accept, with label to filter to allowed attempts",
}, []string{"allow"}),
headChannelOpenedEvent: metrics.NewEvent(factory, ns, "", "head_channel", "New channel at the front of the channel bank"),
channelTimedOutEvent: metrics.NewEvent(factory, ns, "", "channel_timeout", "Channel has timed out"),
frameAddedEvent: metrics.NewEvent(factory, ns, "", "frame_added", "New frame ingested in the channel bank"),
headChannelOpenedEvent: NewEvent(factory, ns, "", "head_channel", "New channel at the front of the channel bank"),
channelTimedOutEvent: NewEvent(factory, ns, "", "channel_timeout", "Channel has timed out"),
frameAddedEvent: NewEvent(factory, ns, "", "frame_added", "New frame ingested in the channel bank"),
ChannelInputBytes: factory.NewCounter(prometheus.CounterOpts{
Namespace: ns,
......@@ -437,7 +436,7 @@ func NewMetrics(procName string) *Metrics {
}
}
// SetPeerScores updates the peer score metrics.
// SetPeerScores updates the peer score
// Accepts a slice of peer scores in any order.
func (m *Metrics) SetPeerScores(allScores []store.PeerScores) {
for _, scores := range allScores {
......@@ -638,7 +637,7 @@ func (m *Metrics) Serve(ctx context.Context, hostname string, port int) error {
return server.ListenAndServe()
}
func (m *Metrics) Document() []metrics.DocumentedMetric {
func (m *Metrics) Document() []DocumentedMetric {
return m.factory.Document()
}
......@@ -800,7 +799,7 @@ func (n *noopMetricer) RecordSequencerBuildingDiffTime(duration time.Duration) {
func (n *noopMetricer) RecordSequencerSealingTime(duration time.Duration) {
}
func (n *noopMetricer) Document() []metrics.DocumentedMetric {
func (n *noopMetricer) Document() []DocumentedMetric {
return nil
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment