Skip to content

Commit dba31fb

Browse files
kirqz23jmank88
andauthored
Record beholder config info metric periodically (#20994)
* Record beholder config info metric periodically * Remove duplicated call * Create a background service that records beholder config metric * Add logging to beholder config recorder * Refactor to use service engine and gotick * Update logger name * Update core/services/beholder/config_recorder.go Co-authored-by: Jordan Krage <jmank88@gmail.com> --------- Co-authored-by: Jordan Krage <jmank88@gmail.com>
1 parent 55625b2 commit dba31fb

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

core/cmd/shell_local.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838

3939
"github.com/smartcontractkit/chainlink/v2/core/build"
4040
"github.com/smartcontractkit/chainlink/v2/core/logger"
41+
beholderServices "github.com/smartcontractkit/chainlink/v2/core/services/beholder"
4142
"github.com/smartcontractkit/chainlink/v2/core/services/keystore"
4243
"github.com/smartcontractkit/chainlink/v2/core/services/keystore/chaintype"
4344
"github.com/smartcontractkit/chainlink/v2/core/services/pg"
@@ -322,6 +323,12 @@ func (s *Shell) runNode(c *cli.Context) error {
322323
lggr := logger.Sugared(s.Logger.Named("RunNode"))
323324
lggr.Infow("configuration args", "config files", s.configFiles, "secret files", s.secretsFiles)
324325

326+
beholderConfigRecorder := beholderServices.NewConfigRecorder(lggr, 1*time.Hour)
327+
if err := beholderConfigRecorder.Start(ctx); err != nil {
328+
return fmt.Errorf("failed to start beholder config recorder service: %w", err)
329+
}
330+
defer beholderConfigRecorder.Close()
331+
325332
s.Config.LogConfiguration(lggr.Debugf, lggr.Warnf)
326333

327334
if err := s.Config.Validate(); err != nil {
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package beholder
2+
3+
import (
4+
"context"
5+
"time"
6+
7+
"github.com/smartcontractkit/chainlink-common/pkg/beholder"
8+
"github.com/smartcontractkit/chainlink-common/pkg/services"
9+
"github.com/smartcontractkit/chainlink/v2/core/logger"
10+
)
11+
12+
// ConfigRecorder periodically records Beholder config info metric.
13+
type ConfigRecorder struct {
14+
services.Service
15+
eng *services.Engine
16+
17+
interval time.Duration
18+
}
19+
20+
func NewConfigRecorder(logger logger.Logger, interval time.Duration) *ConfigRecorder {
21+
cr := &ConfigRecorder{
22+
interval: interval,
23+
}
24+
cr.Service, cr.eng = services.Config{
25+
Name: "BeholderConfigRecorder",
26+
Start: cr.start,
27+
}.NewServiceEngine(logger)
28+
return cr
29+
}
30+
31+
func (s *ConfigRecorder) start(ctx context.Context) error {
32+
ticker := services.TickerConfig{}.NewTicker(s.interval)
33+
s.eng.GoTick(ticker, func(ctx context.Context) {
34+
if err := beholder.GetClient().RecordConfigMetric(ctx); err != nil {
35+
s.eng.Errorf("failed to record beholder config metric: %v", err)
36+
}
37+
})
38+
return nil
39+
}

0 commit comments

Comments
 (0)