config: move metrics.Config into config.BasicService
Config package should be as lightweight as possible and now it depends on the whole metrics package just to get one structure from it.
This commit is contained in:
parent
fab8dfb9f8
commit
dc59dc991b
6 changed files with 18 additions and 16 deletions
|
@ -10,7 +10,6 @@ import (
|
||||||
"github.com/nspcc-dev/neo-go/pkg/config"
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/config/netmode"
|
"github.com/nspcc-dev/neo-go/pkg/config/netmode"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/core/storage"
|
"github.com/nspcc-dev/neo-go/pkg/core/storage"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/network/metrics"
|
|
||||||
"github.com/nspcc-dev/neo-go/pkg/rpc"
|
"github.com/nspcc-dev/neo-go/pkg/rpc"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
|
@ -317,7 +316,7 @@ func TestConfigureAddresses(t *testing.T) {
|
||||||
t.Run("custom Pprof address", func(t *testing.T) {
|
t.Run("custom Pprof address", func(t *testing.T) {
|
||||||
cfg := &config.ApplicationConfiguration{
|
cfg := &config.ApplicationConfiguration{
|
||||||
Address: defaultAddress,
|
Address: defaultAddress,
|
||||||
Pprof: metrics.Config{
|
Pprof: config.BasicService{
|
||||||
Address: customAddress,
|
Address: customAddress,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -330,7 +329,7 @@ func TestConfigureAddresses(t *testing.T) {
|
||||||
t.Run("custom Prometheus address", func(t *testing.T) {
|
t.Run("custom Prometheus address", func(t *testing.T) {
|
||||||
cfg := &config.ApplicationConfiguration{
|
cfg := &config.ApplicationConfiguration{
|
||||||
Address: defaultAddress,
|
Address: defaultAddress,
|
||||||
Prometheus: metrics.Config{
|
Prometheus: config.BasicService{
|
||||||
Address: customAddress,
|
Address: customAddress,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/nspcc-dev/neo-go/pkg/core/storage"
|
"github.com/nspcc-dev/neo-go/pkg/core/storage"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/network/metrics"
|
|
||||||
"github.com/nspcc-dev/neo-go/pkg/rpc"
|
"github.com/nspcc-dev/neo-go/pkg/rpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,8 +18,8 @@ type ApplicationConfiguration struct {
|
||||||
NodePort uint16 `yaml:"NodePort"`
|
NodePort uint16 `yaml:"NodePort"`
|
||||||
PingInterval int64 `yaml:"PingInterval"`
|
PingInterval int64 `yaml:"PingInterval"`
|
||||||
PingTimeout int64 `yaml:"PingTimeout"`
|
PingTimeout int64 `yaml:"PingTimeout"`
|
||||||
Pprof metrics.Config `yaml:"Pprof"`
|
Pprof BasicService `yaml:"Pprof"`
|
||||||
Prometheus metrics.Config `yaml:"Prometheus"`
|
Prometheus BasicService `yaml:"Prometheus"`
|
||||||
ProtoTickInterval int64 `yaml:"ProtoTickInterval"`
|
ProtoTickInterval int64 `yaml:"ProtoTickInterval"`
|
||||||
Relay bool `yaml:"Relay"`
|
Relay bool `yaml:"Relay"`
|
||||||
RPC rpc.Config `yaml:"RPC"`
|
RPC rpc.Config `yaml:"RPC"`
|
||||||
|
|
8
pkg/config/basic_service.go
Normal file
8
pkg/config/basic_service.go
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
// BasicService is used for simple services like Pprof or Prometheus monitoring.
|
||||||
|
type BasicService struct {
|
||||||
|
Enabled bool `yaml:"Enabled"`
|
||||||
|
Address string `yaml:"Address"`
|
||||||
|
Port string `yaml:"Port"`
|
||||||
|
}
|
|
@ -4,24 +4,18 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Service serves metrics.
|
// Service serves metrics.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
*http.Server
|
*http.Server
|
||||||
config Config
|
config config.BasicService
|
||||||
log *zap.Logger
|
log *zap.Logger
|
||||||
serviceType string
|
serviceType string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config config used for monitoring.
|
|
||||||
type Config struct {
|
|
||||||
Enabled bool `yaml:"Enabled"`
|
|
||||||
Address string `yaml:"Address"`
|
|
||||||
Port string `yaml:"Port"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start runs http service with the exposed endpoint on the configured port.
|
// Start runs http service with the exposed endpoint on the configured port.
|
||||||
func (ms *Service) Start() {
|
func (ms *Service) Start() {
|
||||||
if ms.config.Enabled {
|
if ms.config.Enabled {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/pprof"
|
"net/http/pprof"
|
||||||
|
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ import (
|
||||||
type PprofService Service
|
type PprofService Service
|
||||||
|
|
||||||
// NewPprofService creates a new service for gathering pprof metrics.
|
// NewPprofService creates a new service for gathering pprof metrics.
|
||||||
func NewPprofService(cfg Config, log *zap.Logger) *Service {
|
func NewPprofService(cfg config.BasicService, log *zap.Logger) *Service {
|
||||||
if log == nil {
|
if log == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package metrics
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
@ -11,7 +12,7 @@ import (
|
||||||
type PrometheusService Service
|
type PrometheusService Service
|
||||||
|
|
||||||
// NewPrometheusService creates a new service for gathering prometheus metrics.
|
// NewPrometheusService creates a new service for gathering prometheus metrics.
|
||||||
func NewPrometheusService(cfg Config, log *zap.Logger) *Service {
|
func NewPrometheusService(cfg config.BasicService, log *zap.Logger) *Service {
|
||||||
if log == nil {
|
if log == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue