forked from TrueCloudLab/frostfs-node
[#552] Add systemd notifications to ir service
Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
This commit is contained in:
parent
ef07c1a3c9
commit
2d4c0a0f4a
3 changed files with 37 additions and 0 deletions
|
@ -119,3 +119,6 @@ prometheus:
|
||||||
enabled: true
|
enabled: true
|
||||||
address: localhost:9090 # Endpoint for application prometheus metrics; disabled by default
|
address: localhost:9090 # Endpoint for application prometheus metrics; disabled by default
|
||||||
shutdown_timeout: 30s # Timeout for metrics HTTP server graceful shutdown
|
shutdown_timeout: 30s # Timeout for metrics HTTP server graceful shutdown
|
||||||
|
|
||||||
|
systemdnotify:
|
||||||
|
enabled: true
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
control "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/control/ir"
|
control "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/control/ir"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/precision"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/precision"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/sdnotify"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/state"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/state"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/core/block"
|
"github.com/nspcc-dev/neo-go/pkg/core/block"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
|
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
|
||||||
|
@ -73,6 +74,7 @@ type (
|
||||||
predefinedValidators keys.PublicKeys
|
predefinedValidators keys.PublicKeys
|
||||||
initialEpochTickDelta uint32
|
initialEpochTickDelta uint32
|
||||||
withoutMainNet bool
|
withoutMainNet bool
|
||||||
|
sdNotify bool
|
||||||
|
|
||||||
// runtime processors
|
// runtime processors
|
||||||
netmapProcessor *netmap.Processor
|
netmapProcessor *netmap.Processor
|
||||||
|
@ -336,6 +338,11 @@ func New(ctx context.Context, log *logger.Logger, cfg *viper.Viper, errChan chan
|
||||||
irMetrics: metrics,
|
irMetrics: metrics,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server.sdNotify, err = server.initSdNotify(cfg)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
server.setHealthStatus(control.HealthStatus_HEALTH_STATUS_UNDEFINED)
|
server.setHealthStatus(control.HealthStatus_HEALTH_STATUS_UNDEFINED)
|
||||||
|
|
||||||
// parse notary support
|
// parse notary support
|
||||||
|
@ -404,6 +411,13 @@ func New(ctx context.Context, log *logger.Logger, cfg *viper.Viper, errChan chan
|
||||||
return server, nil
|
return server, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) initSdNotify(cfg *viper.Viper) (bool, error) {
|
||||||
|
if cfg.GetBool("systemdnotify.enabled") {
|
||||||
|
return true, sdnotify.InitSocket()
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
func createListener(ctx context.Context, cli *client.Client, p *chainParams) (event.Listener, error) {
|
func createListener(ctx context.Context, cli *client.Client, p *chainParams) (event.Listener, error) {
|
||||||
var (
|
var (
|
||||||
sub subscriber.Subscriber
|
sub subscriber.Subscriber
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/innerring/processors/governance"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/innerring/processors/governance"
|
||||||
control "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/control/ir"
|
control "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/control/ir"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/sdnotify"
|
||||||
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/state"
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/state"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/util"
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
@ -154,6 +155,7 @@ func (s *Server) ResetEpochTimer(h uint32) error {
|
||||||
|
|
||||||
func (s *Server) setHealthStatus(hs control.HealthStatus) {
|
func (s *Server) setHealthStatus(hs control.HealthStatus) {
|
||||||
s.healthStatus.Store(int32(hs))
|
s.healthStatus.Store(int32(hs))
|
||||||
|
s.notifySystemd(hs)
|
||||||
if s.irMetrics != nil {
|
if s.irMetrics != nil {
|
||||||
s.irMetrics.SetHealth(int32(hs))
|
s.irMetrics.SetHealth(int32(hs))
|
||||||
}
|
}
|
||||||
|
@ -173,3 +175,21 @@ func initPersistentStateStorage(cfg *viper.Viper) (*state.PersistentStorage, err
|
||||||
|
|
||||||
return persistStorage, nil
|
return persistStorage, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) notifySystemd(st control.HealthStatus) {
|
||||||
|
if !s.sdNotify {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var err error
|
||||||
|
switch st {
|
||||||
|
case control.HealthStatus_READY:
|
||||||
|
err = sdnotify.FlagAndStatus(sdnotify.ReadyEnabled)
|
||||||
|
case control.HealthStatus_SHUTTING_DOWN:
|
||||||
|
err = sdnotify.FlagAndStatus(sdnotify.StoppingEnabled)
|
||||||
|
default:
|
||||||
|
err = sdnotify.Status(fmt.Sprintf("%v", st))
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
s.log.Error(logs.FailedToReportStatusToSystemd, zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue