mirror of
https://github.com/coder/coder.git
synced 2026-06-03 13:08:25 +00:00
chore: add more pprof labels for various go routines (#19243)
- ReplicaSync - Notifications - MetricsAggregator - DBPurge
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/coderd/pproflabel"
|
||||
"github.com/coder/quartz"
|
||||
)
|
||||
|
||||
@@ -38,7 +39,7 @@ func New(ctx context.Context, logger slog.Logger, db database.Store, clk quartz.
|
||||
|
||||
// Start the ticker with the initial delay.
|
||||
ticker := clk.NewTicker(delay)
|
||||
doTick := func(start time.Time) {
|
||||
doTick := func(ctx context.Context, start time.Time) {
|
||||
defer ticker.Reset(delay)
|
||||
// Start a transaction to grab advisory lock, we don't want to run
|
||||
// multiple purges at the same time (multiple replicas).
|
||||
@@ -85,21 +86,21 @@ func New(ctx context.Context, logger slog.Logger, db database.Store, clk quartz.
|
||||
}
|
||||
}
|
||||
|
||||
go func() {
|
||||
pproflabel.Go(ctx, pproflabel.Service(pproflabel.ServiceDBPurge), func(ctx context.Context) {
|
||||
defer close(closed)
|
||||
defer ticker.Stop()
|
||||
// Force an initial tick.
|
||||
doTick(dbtime.Time(clk.Now()).UTC())
|
||||
doTick(ctx, dbtime.Time(clk.Now()).UTC())
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case tick := <-ticker.C:
|
||||
ticker.Stop()
|
||||
doTick(dbtime.Time(tick).UTC())
|
||||
doTick(ctx, dbtime.Time(tick).UTC())
|
||||
}
|
||||
}
|
||||
}()
|
||||
})
|
||||
return &instance{
|
||||
cancel: cancelFunc,
|
||||
closed: closed,
|
||||
|
||||
@@ -11,12 +11,13 @@ import (
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"cdr.dev/slog"
|
||||
"github.com/coder/quartz"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/pubsub"
|
||||
"github.com/coder/coder/v2/coderd/notifications/dispatch"
|
||||
"github.com/coder/coder/v2/coderd/pproflabel"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/quartz"
|
||||
)
|
||||
|
||||
var ErrInvalidDispatchTimeout = xerrors.New("dispatch timeout must be less than lease period")
|
||||
@@ -145,7 +146,7 @@ func (m *Manager) Run(ctx context.Context) {
|
||||
|
||||
m.runOnce.Do(func() {
|
||||
// Closes when Stop() is called or context is canceled.
|
||||
go func() {
|
||||
pproflabel.Go(ctx, pproflabel.Service(pproflabel.ServiceNotifications), func(ctx context.Context) {
|
||||
err := m.loop(ctx)
|
||||
if err != nil {
|
||||
if xerrors.Is(err, ErrManagerAlreadyClosed) {
|
||||
@@ -154,7 +155,7 @@ func (m *Manager) Run(ctx context.Context) {
|
||||
m.log.Error(ctx, "notification manager stopped with error", slog.Error(err))
|
||||
}
|
||||
}
|
||||
}()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -21,9 +21,17 @@ const (
|
||||
|
||||
ServiceHTTPServer = "http-api"
|
||||
ServiceLifecycles = "lifecycle-executor"
|
||||
ServiceMetricCollector = "metrics-collector"
|
||||
ServicePrebuildReconciler = "prebuilds-reconciler"
|
||||
ServiceTerraformProvisioner = "terraform-provisioner"
|
||||
ServiceDBPurge = "db-purge"
|
||||
ServiceNotifications = "notifications"
|
||||
ServiceReplicaSync = "replica-sync"
|
||||
// ServiceMetricCollector collects metrics from insights in the database and
|
||||
// exports them in a prometheus collector format.
|
||||
ServiceMetricCollector = "metrics-collector"
|
||||
// ServiceAgentMetricAggregator merges agent metrics and exports them in a
|
||||
// prometheus collector format.
|
||||
ServiceAgentMetricAggregator = "agent-metrics-aggregator"
|
||||
|
||||
RequestTypeTag = "coder_request_type"
|
||||
)
|
||||
|
||||
@@ -11,11 +11,11 @@ import (
|
||||
"github.com/prometheus/common/model"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/agentmetrics"
|
||||
|
||||
"cdr.dev/slog"
|
||||
|
||||
agentproto "github.com/coder/coder/v2/agent/proto"
|
||||
"github.com/coder/coder/v2/coderd/agentmetrics"
|
||||
"github.com/coder/coder/v2/coderd/pproflabel"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -298,7 +298,7 @@ func (ma *MetricsAggregator) Run(ctx context.Context) func() {
|
||||
done := make(chan struct{})
|
||||
|
||||
cleanupTicker := time.NewTicker(ma.metricsCleanupInterval)
|
||||
go func() {
|
||||
pproflabel.Go(ctx, pproflabel.Service(pproflabel.ServiceAgentMetricAggregator), func(ctx context.Context) {
|
||||
defer close(done)
|
||||
defer cleanupTicker.Stop()
|
||||
|
||||
@@ -395,7 +395,7 @@ func (ma *MetricsAggregator) Run(ctx context.Context) func() {
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
})
|
||||
return func() {
|
||||
cancelFunc()
|
||||
<-done
|
||||
|
||||
Reference in New Issue
Block a user