Skip to content

Commit 22f2649

Browse files
cert-checker: Allow scraping pprof data (#8833)
Fixes #8829
1 parent 055b129 commit 22f2649

3 files changed

Lines changed: 14 additions & 6 deletions

File tree

cmd/cert-checker/main.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,8 @@ type Config struct {
543543
DB cmd.DBConfig
544544
cmd.HostnamePolicyConfig
545545

546+
DebugAddr string `validate:"omitempty,hostname_port"`
547+
546548
Workers int `validate:"required,min=1"`
547549
// LookupDNSAuthority can only be specified with PushgatewayService. It's a single
548550
// <hostname|IPv4|[IPv6]>:<port> of the DNS server to be used for resolution
@@ -634,6 +636,7 @@ func getPushgatewayURL(ctx context.Context, dnsAuthority string, svc cmd.Service
634636
}
635637

636638
func main() {
639+
debugAddr := flag.String("debug-addr", "", "Debug server address override")
637640
configFile := flag.String("config", "", "File path to the configuration file for this service")
638641
flag.Parse()
639642
if *configFile == "" {
@@ -645,13 +648,17 @@ func main() {
645648
err := cmd.ReadConfigFile(*configFile, &config)
646649
cmd.FailOnError(err, "Reading JSON config file into config structure")
647650

651+
if *debugAddr != "" {
652+
config.CertChecker.DebugAddr = *debugAddr
653+
}
654+
648655
features.Set(config.CertChecker.Features)
649656

650-
logger := cmd.NewLogger(config.Syslog)
657+
stats, logger, oTelShutdown := cmd.StatsAndLogging(config.Syslog, cmd.OpenTelemetryConfig{}, config.CertChecker.DebugAddr)
658+
defer oTelShutdown(context.Background())
651659
cmd.LogStartup(logger)
652660

653-
reg := prometheus.NewRegistry()
654-
metrics := newCertCheckerMetrics(reg)
661+
metrics := newCertCheckerMetrics(stats)
655662

656663
acceptableValidityDurations := make(map[time.Duration]bool)
657664
if len(config.CertChecker.AcceptableValidityDurations) > 0 {
@@ -746,7 +753,7 @@ func main() {
746753
if err != nil {
747754
logger.Error(ctx, "failed to get pushgateway URL", err)
748755
} else {
749-
err = cmd.PushMetrics("cert-checker", pushgatewayURL, reg, logger)
756+
err = cmd.PushMetrics("cert-checker", pushgatewayURL, stats, logger)
750757
if err != nil {
751758
logger.Error(ctx, "failed to push metrics to pushgateway", err, slog.String("url", pushgatewayURL))
752759
} else {

cmd/shell.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ var backupLogger singletonLogger
201201
// is called, because gRPC's SetLogger doesn't use any locking.
202202
//
203203
// This function does not return an error, and will panic on problems.
204-
func StatsAndLogging(logConf blog.Config, otConf OpenTelemetryConfig, addr string) (prometheus.Registerer, blog.Logger, func(context.Context)) {
204+
func StatsAndLogging(logConf blog.Config, otConf OpenTelemetryConfig, addr string) (*prometheus.Registry, blog.Logger, func(context.Context)) {
205205
logger := NewLogger(logConf)
206206

207207
shutdown := NewOpenTelemetry(otConf, logger)
@@ -265,7 +265,7 @@ func newVersionCollector() prometheus.Collector {
265265
)
266266
}
267267

268-
func newStatsRegistry(addr string, logger blog.Logger) prometheus.Registerer {
268+
func newStatsRegistry(addr string, logger blog.Logger) *prometheus.Registry {
269269
registry := prometheus.NewRegistry()
270270

271271
if addr == "" {

test/config-next/cert-checker.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"certChecker": {
3+
"debugAddr": ":8007",
34
"db": {
45
"dbConnectFile": "test/secrets/cert_checker_dburl",
56
"maxOpenConns": 10

0 commit comments

Comments
 (0)