Skip to content

Commit 5b0a074

Browse files
authored
feat: change metrics names to match semconv (#1038)
* feat: change metrics names to match semconv * feat: rename some metrics * chore: set legacy metric name by default :( * chore: filter metrics to rename
1 parent 3e11690 commit 5b0a074

File tree

8 files changed

+163
-57
lines changed

8 files changed

+163
-57
lines changed

cmd/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ type commonConfig struct {
1313
NumscriptInterpreter bool `mapstructure:"experimental-numscript-interpreter"`
1414
NumscriptInterpreterFlags []string `mapstructure:"experimental-numscript-interpreter-flags"`
1515
ExperimentalFeaturesEnabled bool `mapstructure:"experimental-features"`
16-
ExperimentalExporters bool `mapstructure:"experimental-exporters"`
16+
ExperimentalExporters bool `mapstructure:"experimental-exporters"`
17+
SemconvMetricsNames bool `mapstructure:"semconv-metrics-names"`
1718
}
1819

1920
func decodeCronSchedule(sourceType, destType reflect.Type, value any) (any, error) {

cmd/serve.go

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import (
55
"github.com/formancehq/go-libs/v3/logging"
66
"github.com/formancehq/ledger/internal/api/common"
77
"github.com/formancehq/ledger/internal/replication"
8-
drivers "github.com/formancehq/ledger/internal/replication/drivers"
8+
"github.com/formancehq/ledger/internal/replication/drivers"
99
"github.com/formancehq/ledger/internal/replication/drivers/alldrivers"
1010
systemstore "github.com/formancehq/ledger/internal/storage/system"
11+
"github.com/formancehq/ledger/internal/tracing"
1112
"github.com/formancehq/ledger/internal/worker"
1213
"google.golang.org/grpc"
1314
"google.golang.org/grpc/credentials/insecure"
@@ -69,6 +70,7 @@ const (
6970
DefaultPageSizeFlag = "default-page-size"
7071
MaxPageSizeFlag = "max-page-size"
7172
WorkerEnabledFlag = "worker"
73+
SemconvMetricsNames = "semconv-metrics-names"
7274
)
7375

7476
func NewServeCommand() *cobra.Command {
@@ -89,9 +91,7 @@ func NewServeCommand() *cobra.Command {
8991

9092
options := []fx.Option{
9193
fx.NopLogger,
92-
otlp.FXModuleFromFlags(cmd, otlp.WithServiceVersion(Version)),
93-
otlptraces.FXModuleFromFlags(cmd),
94-
otlpmetrics.FXModuleFromFlags(cmd),
94+
otlpModule(cmd, cfg.commonConfig),
9595
publish.FXModuleFromFlags(cmd, service.IsDebug(cmd)),
9696
auth.FXModuleFromFlags(cmd),
9797
bunconnect.Module(*connectionOptions, service.IsDebug(cmd)),
@@ -129,15 +129,15 @@ func NewServeCommand() *cobra.Command {
129129
}),
130130
fx.Decorate(func(
131131
params struct {
132-
fx.In
132+
fx.In
133133

134-
Handler chi.Router
135-
HealthController *health.HealthController
136-
Logger logging.Logger
134+
Handler chi.Router
135+
HealthController *health.HealthController
136+
Logger logging.Logger
137137

138-
MeterProvider *metric.MeterProvider `optional:"true"`
139-
Exporter *otlpmetrics.InMemoryExporter `optional:"true"`
140-
},
138+
MeterProvider *metric.MeterProvider `optional:"true"`
139+
Exporter *otlpmetrics.InMemoryExporter `optional:"true"`
140+
},
141141
) chi.Router {
142142
return assembleFinalRouter(
143143
service.IsDebug(cmd),
@@ -184,6 +184,7 @@ func NewServeCommand() *cobra.Command {
184184
cmd.Flags().Bool(NumscriptInterpreterFlag, false, "Enable experimental numscript rewrite")
185185
cmd.Flags().String(NumscriptInterpreterFlagsToPass, "", "Feature flags to pass to the experimental numscript interpreter")
186186
cmd.Flags().String(WorkerGRPCAddressFlag, "localhost:8081", "GRPC address")
187+
cmd.Flags().Bool(SemconvMetricsNames, false, "Use semconv metrics names (recommended)")
187188

188189
addWorkerFlags(cmd)
189190
bunconnect.AddFlags(cmd.Flags())
@@ -245,3 +246,23 @@ func assembleFinalRouter(
245246

246247
return wrappedRouter
247248
}
249+
250+
func otlpModule(cmd *cobra.Command, cfg commonConfig) fx.Option {
251+
return fx.Options(
252+
otlp.FXModuleFromFlags(cmd, otlp.WithServiceVersion(Version)),
253+
otlptraces.FXModuleFromFlags(cmd),
254+
otlpmetrics.ProvideMetricsProviderOption(func() metric.Option {
255+
return metric.WithView(func(instrument metric.Instrument) (metric.Stream, bool) {
256+
if cfg.SemconvMetricsNames {
257+
return metric.Stream{}, false
258+
}
259+
return metric.Stream{
260+
Name: tracing.LegacyMetricsName(instrument.Name),
261+
Description: instrument.Description,
262+
Unit: instrument.Unit,
263+
}, true
264+
})
265+
}),
266+
otlpmetrics.FXModuleFromFlags(cmd),
267+
)
268+
}

cmd/worker.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package cmd
33
import (
44
"fmt"
55
"github.com/formancehq/go-libs/v3/bun/bunconnect"
6-
"github.com/formancehq/go-libs/v3/otlp"
76
"github.com/formancehq/go-libs/v3/otlp/otlpmetrics"
87
"github.com/formancehq/go-libs/v3/otlp/otlptraces"
98
"github.com/formancehq/go-libs/v3/service"
@@ -78,9 +77,7 @@ func NewWorkerCommand() *cobra.Command {
7877

7978
return service.New(cmd.OutOrStdout(),
8079
fx.NopLogger,
81-
otlp.FXModuleFromFlags(cmd),
82-
otlptraces.FXModuleFromFlags(cmd),
83-
otlpmetrics.FXModuleFromFlags(cmd),
80+
otlpModule(cmd, cfg.commonConfig),
8481
bunconnect.Module(*connectionOptions, service.IsDebug(cmd)),
8582
storage.NewFXModule(storage.ModuleConfig{}),
8683
drivers.NewFXModule(),

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ services:
4343
- "16686:16686/tcp"
4444

4545
worker:
46-
image: golang:1.23-alpine
46+
image: golang:1.24-alpine
4747
entrypoint: go run main.go worker
4848
volumes:
4949
- .:/src

internal/controller/ledger/controller_default.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@ func NewDefaultController(
120120
}
121121

122122
var err error
123-
ret.executeMachineHistogram, err = ret.meter.Int64Histogram("numscript.run")
123+
ret.executeMachineHistogram, err = ret.meter.Int64Histogram("controller.numscript_run")
124124
if err != nil {
125125
panic(err)
126126
}
127-
ret.deadLockCounter, err = ret.meter.Int64Counter("deadlocks")
127+
ret.deadLockCounter, err = ret.meter.Int64Counter("controller.deadlocks")
128128
if err != nil {
129129
panic(err)
130130
}

internal/controller/ledger/controller_with_traces.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -55,95 +55,95 @@ func NewControllerWithTraces(underlying Controller, tracer trace.Tracer, meter m
5555
}
5656

5757
var err error
58-
ret.beginTxHistogram, err = meter.Int64Histogram("BeginTX")
58+
ret.beginTxHistogram, err = meter.Int64Histogram("controller.begin_tx")
5959
if err != nil {
6060
panic(err)
6161
}
62-
ret.listTransactionsHistogram, err = meter.Int64Histogram("ListTransactions")
62+
ret.listTransactionsHistogram, err = meter.Int64Histogram("controller.list_transactions")
6363
if err != nil {
6464
panic(err)
6565
}
66-
ret.commitHistogram, err = meter.Int64Histogram("Commit")
66+
ret.commitHistogram, err = meter.Int64Histogram("controller.commit")
6767
if err != nil {
6868
panic(err)
6969
}
70-
ret.rollbackHistogram, err = meter.Int64Histogram("Rollback")
70+
ret.rollbackHistogram, err = meter.Int64Histogram("controller.rollback")
7171
if err != nil {
7272
panic(err)
7373
}
74-
ret.countTransactionsHistogram, err = meter.Int64Histogram("CountTransactions")
74+
ret.countTransactionsHistogram, err = meter.Int64Histogram("controller.count_transactions")
7575
if err != nil {
7676
panic(err)
7777
}
78-
ret.getTransactionHistogram, err = meter.Int64Histogram("GetTransaction")
78+
ret.getTransactionHistogram, err = meter.Int64Histogram("controller.get_transaction")
7979
if err != nil {
8080
panic(err)
8181
}
82-
ret.countAccountsHistogram, err = meter.Int64Histogram("CountAccounts")
82+
ret.countAccountsHistogram, err = meter.Int64Histogram("controller.count_accounts")
8383
if err != nil {
8484
panic(err)
8585
}
86-
ret.listAccountsHistogram, err = meter.Int64Histogram("ListAccounts")
86+
ret.listAccountsHistogram, err = meter.Int64Histogram("controller.list_accounts")
8787
if err != nil {
8888
panic(err)
8989
}
90-
ret.getAccountHistogram, err = meter.Int64Histogram("GetAccount")
90+
ret.getAccountHistogram, err = meter.Int64Histogram("controller.get_account")
9191
if err != nil {
9292
panic(err)
9393
}
94-
ret.getAggregatedBalancesHistogram, err = meter.Int64Histogram("GetAggregatedBalances")
94+
ret.getAggregatedBalancesHistogram, err = meter.Int64Histogram("controller.get_aggregated_balances")
9595
if err != nil {
9696
panic(err)
9797
}
98-
ret.listLogsHistogram, err = meter.Int64Histogram("ListLogs")
98+
ret.listLogsHistogram, err = meter.Int64Histogram("controller.list_logs")
9999
if err != nil {
100100
panic(err)
101101
}
102-
ret.importHistogram, err = meter.Int64Histogram("Import")
102+
ret.importHistogram, err = meter.Int64Histogram("controller.import")
103103
if err != nil {
104104
panic(err)
105105
}
106-
ret.exportHistogram, err = meter.Int64Histogram("Export")
106+
ret.exportHistogram, err = meter.Int64Histogram("controller.export")
107107
if err != nil {
108108
panic(err)
109109
}
110-
ret.isDatabaseUpToDateHistogram, err = meter.Int64Histogram("IsDatabaseUpToDate")
110+
ret.isDatabaseUpToDateHistogram, err = meter.Int64Histogram("controller.is_database_up_to_date")
111111
if err != nil {
112112
panic(err)
113113
}
114-
ret.getVolumesWithBalancesHistogram, err = meter.Int64Histogram("GetVolumesWithBalances")
114+
ret.getVolumesWithBalancesHistogram, err = meter.Int64Histogram("controller.get_volumes_with_balances")
115115
if err != nil {
116116
panic(err)
117117
}
118-
ret.getStatsHistogram, err = meter.Int64Histogram("GetStats")
118+
ret.getStatsHistogram, err = meter.Int64Histogram("controller.get_stats")
119119
if err != nil {
120120
panic(err)
121121
}
122-
ret.createTransactionHistogram, err = meter.Int64Histogram("CreateTransaction")
122+
ret.createTransactionHistogram, err = meter.Int64Histogram("controller.create_transaction")
123123
if err != nil {
124124
panic(err)
125125
}
126-
ret.revertTransactionHistogram, err = meter.Int64Histogram("RevertTransaction")
126+
ret.revertTransactionHistogram, err = meter.Int64Histogram("controller.revert_transaction")
127127
if err != nil {
128128
panic(err)
129129
}
130-
ret.saveTransactionMetadataHistogram, err = meter.Int64Histogram("SaveTransactionMetadata")
130+
ret.saveTransactionMetadataHistogram, err = meter.Int64Histogram("controller.save_transaction_metadata")
131131
if err != nil {
132132
panic(err)
133133
}
134-
ret.saveAccountMetadataHistogram, err = meter.Int64Histogram("SaveAccountMetadata")
134+
ret.saveAccountMetadataHistogram, err = meter.Int64Histogram("controller.save_account_metadata")
135135
if err != nil {
136136
panic(err)
137137
}
138-
ret.deleteTransactionMetadataHistogram, err = meter.Int64Histogram("DeleteTransactionMetadata")
138+
ret.deleteTransactionMetadataHistogram, err = meter.Int64Histogram("controller.delete_transaction_metadata")
139139
if err != nil {
140140
panic(err)
141141
}
142-
ret.deleteAccountMetadataHistogram, err = meter.Int64Histogram("DeleteAccountMetadata")
142+
ret.deleteAccountMetadataHistogram, err = meter.Int64Histogram("controller.delete_account_metadata")
143143
if err != nil {
144144
panic(err)
145145
}
146-
ret.lockLedgerHistogram, err = meter.Int64Histogram("LockLedger")
146+
ret.lockLedgerHistogram, err = meter.Int64Histogram("controller.lock_ledger")
147147
if err != nil {
148148
panic(err)
149149
}

internal/storage/ledger/store.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -174,77 +174,77 @@ func New(db bun.IDB, bucket bucket.Bucket, l ledger.Ledger, opts ...Option) *Sto
174174
}
175175

176176
var err error
177-
ret.checkBucketSchemaHistogram, err = ret.meter.Int64Histogram("store.checkBucketSchema")
177+
ret.checkBucketSchemaHistogram, err = ret.meter.Int64Histogram("store.check_bucket_schema")
178178
if err != nil {
179179
panic(err)
180180
}
181181

182-
ret.checkLedgerSchemaHistogram, err = ret.meter.Int64Histogram("store.checkLedgerSchema")
182+
ret.checkLedgerSchemaHistogram, err = ret.meter.Int64Histogram("store.check_ledger_schema")
183183
if err != nil {
184184
panic(err)
185185
}
186186

187-
ret.updateAccountsMetadataHistogram, err = ret.meter.Int64Histogram("store.updateAccountsMetadata")
187+
ret.updateAccountsMetadataHistogram, err = ret.meter.Int64Histogram("store.update_accounts_metadata")
188188
if err != nil {
189189
panic(err)
190190
}
191191

192-
ret.deleteAccountMetadataHistogram, err = ret.meter.Int64Histogram("store.deleteAccountMetadata")
192+
ret.deleteAccountMetadataHistogram, err = ret.meter.Int64Histogram("store.delete_account_metadata")
193193
if err != nil {
194194
panic(err)
195195
}
196196

197-
ret.upsertAccountsHistogram, err = ret.meter.Int64Histogram("store.upsertAccounts")
197+
ret.upsertAccountsHistogram, err = ret.meter.Int64Histogram("store.upsert_accounts")
198198
if err != nil {
199199
panic(err)
200200
}
201201

202-
ret.getBalancesHistogram, err = ret.meter.Int64Histogram("store.getBalances")
202+
ret.getBalancesHistogram, err = ret.meter.Int64Histogram("store.get_balances")
203203
if err != nil {
204204
panic(err)
205205
}
206206

207-
ret.insertLogHistogram, err = ret.meter.Int64Histogram("store.insertLog")
207+
ret.insertLogHistogram, err = ret.meter.Int64Histogram("store.insert_log")
208208
if err != nil {
209209
panic(err)
210210
}
211211

212-
ret.readLogWithIdempotencyKeyHistogram, err = ret.meter.Int64Histogram("store.readLogWithIdempotencyKey")
212+
ret.readLogWithIdempotencyKeyHistogram, err = ret.meter.Int64Histogram("store.read_log_with_idempotency_key")
213213
if err != nil {
214214
panic(err)
215215
}
216216

217-
ret.insertMovesHistogram, err = ret.meter.Int64Histogram("store.insertMoves")
217+
ret.insertMovesHistogram, err = ret.meter.Int64Histogram("store.insert_moves")
218218
if err != nil {
219219
panic(err)
220220
}
221221

222-
ret.insertTransactionHistogram, err = ret.meter.Int64Histogram("store.insertTransaction")
222+
ret.insertTransactionHistogram, err = ret.meter.Int64Histogram("store.insert_transaction")
223223
if err != nil {
224224
panic(err)
225225
}
226226

227-
ret.revertTransactionHistogram, err = ret.meter.Int64Histogram("store.revertTransaction")
227+
ret.revertTransactionHistogram, err = ret.meter.Int64Histogram("store.revert_transaction")
228228
if err != nil {
229229
panic(err)
230230
}
231231

232-
ret.updateTransactionMetadataHistogram, err = ret.meter.Int64Histogram("store.updateTransactionMetadata")
232+
ret.updateTransactionMetadataHistogram, err = ret.meter.Int64Histogram("store.update_transaction_metadata")
233233
if err != nil {
234234
panic(err)
235235
}
236236

237-
ret.deleteTransactionMetadataHistogram, err = ret.meter.Int64Histogram("store.deleteTransactionMetadata")
237+
ret.deleteTransactionMetadataHistogram, err = ret.meter.Int64Histogram("store.delete_transaction_metadata")
238238
if err != nil {
239239
panic(err)
240240
}
241241

242-
ret.updateBalancesHistogram, err = ret.meter.Int64Histogram("store.updateBalances")
242+
ret.updateBalancesHistogram, err = ret.meter.Int64Histogram("store.update_balances")
243243
if err != nil {
244244
panic(err)
245245
}
246246

247-
ret.getVolumesWithBalancesHistogram, err = ret.meter.Int64Histogram("store.getVolumesWithBalances")
247+
ret.getVolumesWithBalancesHistogram, err = ret.meter.Int64Histogram("store.get_volumes_with_balances")
248248
if err != nil {
249249
panic(err)
250250
}

0 commit comments

Comments
 (0)