Changeset 712 in code for trunk


Ignore:
Timestamp:
Nov 17, 2021, 2:58:19 PM (4 years ago)
Author:
contact
Message:

Add Prometheus instrumentation for the database

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/cmd/soju/main.go

    r707 r712  
    294294        }
    295295
     296        if db, ok := db.(soju.MetricsCollectorDatabase); ok && srv.MetricsRegistry != nil {
     297                srv.MetricsRegistry.MustRegister(db.MetricsCollector())
     298        }
     299
    296300        sigCh := make(chan os.Signal, 1)
    297301        signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)
  • trunk/db.go

    r674 r712  
    77        "strings"
    88        "time"
     9
     10        "github.com/prometheus/client_golang/prometheus"
    911)
    1012
     
    2729        ListDeliveryReceipts(ctx context.Context, networkID int64) ([]DeliveryReceipt, error)
    2830        StoreClientDeliveryReceipts(ctx context.Context, networkID int64, client string, receipts []DeliveryReceipt) error
     31}
     32
     33type MetricsCollectorDatabase interface {
     34        Database
     35        MetricsCollector() prometheus.Collector
    2936}
    3037
  • trunk/db_postgres.go

    r664 r712  
    1111
    1212        _ "github.com/lib/pq"
     13        "github.com/prometheus/client_golang/prometheus"
     14        promcollectors "github.com/prometheus/client_golang/prometheus/collectors"
    1315)
    1416
     
    147149func (db *PostgresDB) Close() error {
    148150        return db.db.Close()
     151}
     152
     153func (db *PostgresDB) MetricsCollector() prometheus.Collector {
     154        return promcollectors.NewDBStatsCollector(db.db, "main")
    149155}
    150156
  • trunk/db_sqlite.go

    r664 r712  
    1111
    1212        _ "github.com/mattn/go-sqlite3"
     13        "github.com/prometheus/client_golang/prometheus"
     14        promcollectors "github.com/prometheus/client_golang/prometheus/collectors"
    1315)
    1416
     
    239241}
    240242
     243func (db *SqliteDB) MetricsCollector() prometheus.Collector {
     244        return promcollectors.NewDBStatsCollector(db.db, "main")
     245}
     246
    241247func (db *SqliteDB) Stats(ctx context.Context) (*DatabaseStats, error) {
    242248        db.lock.RLock()
Note: See TracChangeset for help on using the changeset viewer.