mirror of
https://github.com/pomerium/pomerium.git
synced 2025-07-08 12:28:18 +02:00
pgxpool: enable metrics (#5653)
## Summary Enables metrics for the `pgxpool` that is used by the PostgreSQL databroker backend. Metrics are updated at 1s interval. Will add the following metric output in the regular Prometheus `/metrics` endpoint: ``` # HELP pomerium_pgxpool_acquire_duration_nanoseconds_total Total duration of all successful acquires from the pool in nanoseconds. # TYPE pomerium_pgxpool_acquire_duration_nanoseconds_total counter pomerium_pgxpool_acquire_duration_nanoseconds_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 5.1058702e+07 # HELP pomerium_pgxpool_acquired_connections Number of currently acquired connections in the pool. # TYPE pomerium_pgxpool_acquired_connections gauge pomerium_pgxpool_acquired_connections{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 0 # HELP pomerium_pgxpool_acquires_total Cumulative count of successful acquires from the pool. # TYPE pomerium_pgxpool_acquires_total counter pomerium_pgxpool_acquires_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 91 # HELP pomerium_pgxpool_canceled_acquires_total Cumulative count of acquires from the pool that were canceled by a context. # TYPE pomerium_pgxpool_canceled_acquires_total counter pomerium_pgxpool_canceled_acquires_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 0 # HELP pomerium_pgxpool_constructing_connections_milliseconds Number of connections with construction in progress in the pool. # TYPE pomerium_pgxpool_constructing_connections_milliseconds gauge pomerium_pgxpool_constructing_connections_milliseconds{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 0 # HELP pomerium_pgxpool_empty_acquire_total Cumulative count of successful acquires from the pool that waited for a resource to be released or constructed because the pool was empty. # TYPE pomerium_pgxpool_empty_acquire_total counter pomerium_pgxpool_empty_acquire_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 6 # HELP pomerium_pgxpool_idle_connections Number of currently idle connections in the pool. # TYPE pomerium_pgxpool_idle_connections gauge pomerium_pgxpool_idle_connections{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 5 # HELP pomerium_pgxpool_max_connections Maximum size of the pool. # TYPE pomerium_pgxpool_max_connections gauge pomerium_pgxpool_max_connections{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 10 # HELP pomerium_pgxpool_max_idle_destroys_total Cumulative count of connections destroyed because they exceeded MaxConnectionsIdleTime. # TYPE pomerium_pgxpool_max_idle_destroys_total counter pomerium_pgxpool_max_idle_destroys_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 0 # HELP pomerium_pgxpool_max_lifetime_destroys_total Cumulative count of connections destroyed because they exceeded MaxConnectionsLifetime. # TYPE pomerium_pgxpool_max_lifetime_destroys_total counter pomerium_pgxpool_max_lifetime_destroys_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 0 # HELP pomerium_pgxpool_new_connections_total Cumulative count of new connections opened. # TYPE pomerium_pgxpool_new_connections_total counter pomerium_pgxpool_new_connections_total{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 6 # HELP pomerium_pgxpool_total_connections Total number of resources currently in the pool. The value is the sum of ConstructingConnections, AcquiredConnections, and IdleConnections. # TYPE pomerium_pgxpool_total_connections gauge pomerium_pgxpool_total_connections{db_client_connection_pool_name="localhost:5432/pomerium",db_system="postgresql",otel_scope_name="github.com/exaring/otelpgx",otel_scope_version="v0.9.1",hostname="MacBookPro"} 5 ``` ## Related issues <!-- For example... - #159 --> ## User Explanation <!-- How would you explain this change to the user? If this change doesn't create any user-facing changes, you can leave this blank. If filled out, add the `docs` label --> ## Checklist - [x] reference any related issues - [x] updated unit tests - [x] add appropriate label (`enhancement`, `bug`, `breaking`, `dependencies`, `ci`) - [x] ready for review
This commit is contained in:
parent
777b3b12d2
commit
a66002eba6
1 changed files with 9 additions and 4 deletions
|
@ -361,24 +361,29 @@ func (backend *Backend) init(ctx context.Context) (serverVersion uint64, pool *p
|
|||
|
||||
pool, err = pgxpool.NewWithConfig(context.Background(), config)
|
||||
if err != nil {
|
||||
return serverVersion, nil, err
|
||||
return serverVersion, nil, fmt.Errorf("error creating pgxpool: %w", err)
|
||||
}
|
||||
|
||||
err = otelpgx.RecordStats(pool)
|
||||
if err != nil {
|
||||
return serverVersion, nil, fmt.Errorf("error recording stats: %w", err)
|
||||
}
|
||||
|
||||
tx, err := pool.Begin(ctx)
|
||||
if err != nil {
|
||||
return serverVersion, nil, err
|
||||
return serverVersion, nil, fmt.Errorf("error starting transaction: %w", err)
|
||||
}
|
||||
|
||||
serverVersion, err = migrate(ctx, tx)
|
||||
if err != nil {
|
||||
_ = tx.Rollback(ctx)
|
||||
return serverVersion, nil, err
|
||||
return serverVersion, nil, fmt.Errorf("error running migrations: %w", err)
|
||||
}
|
||||
|
||||
err = tx.Commit(ctx)
|
||||
if err != nil {
|
||||
_ = tx.Rollback(ctx)
|
||||
return serverVersion, nil, err
|
||||
return serverVersion, nil, fmt.Errorf("error committing transaction: %w", err)
|
||||
}
|
||||
|
||||
backend.serverVersion = serverVersion
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue