diff --git a/lib/gat/handlers/pool/pools/hybrid/pool.go b/lib/gat/handlers/pool/pools/hybrid/pool.go index 6bf3aaf1eb2dbc3df533a6c51e38fa4af9bf98f0..b014d843b3ef2eedd8d3d870de9a983165753c73 100644 --- a/lib/gat/handlers/pool/pools/hybrid/pool.go +++ b/lib/gat/handlers/pool/pools/hybrid/pool.go @@ -15,6 +15,7 @@ import ( "gfx.cafe/gfx/pggat/lib/gat/handlers/pool" "gfx.cafe/gfx/pggat/lib/gat/handlers/pool/spool" "gfx.cafe/gfx/pggat/lib/gat/metrics" + "gfx.cafe/gfx/pggat/lib/instrumentation/prom" "gfx.cafe/gfx/pggat/lib/util/strutil" ) @@ -409,12 +410,19 @@ func (T *Pool) serveOnly(conn *fed.Conn, write bool) error { } func (T *Pool) Serve(conn *fed.Conn) error { + labels := prom.HybridPoolLabels{} switch conn.InitialParameters[strutil.MakeCIString("hybrid.mode")] { case "ro": + labels.Mode = "ro" + prom.Pool.AcceptedHybrid(labels).Inc() return T.serveOnly(conn, false) case "wo": + labels.Mode = "wo" + prom.Pool.AcceptedHybrid(labels).Inc() return T.serveOnly(conn, true) default: + labels.Mode = "rw" + prom.Pool.AcceptedHybrid(labels).Inc() return T.serveRW(conn) } } diff --git a/lib/instrumentation/prom/metrics.go b/lib/instrumentation/prom/metrics.go index 02a7e96aad75a53aa0527cdfdba38c143afac301..0124ddbbc667f8a1b076b9393dcf21ed19c3b3f5 100644 --- a/lib/instrumentation/prom/metrics.go +++ b/lib/instrumentation/prom/metrics.go @@ -15,20 +15,15 @@ var Listener struct { Client func(ListenerLabels) prometheus.Gauge `name:"client" help:"current clients"` } -type ServingLabels struct { +type HybridPoolLabels struct { + Mode string `label:"hybrid_mode"` } -var Serving struct { -} - -type InstanceLabels struct { -} - -var Instance struct { +var Pool struct { + AcceptedHybrid func(HybridPoolLabels) prometheus.Counter `name:"accepted_hybrid" help:"hybrid connections accepted"` } func init() { gotoprom.MustInit(&Listener, "pggat_listener", prometheus.Labels{}) - gotoprom.MustInit(&Instance, "pggat_instance", prometheus.Labels{}) - gotoprom.MustInit(&Serving, "pggat_serving", prometheus.Labels{}) + gotoprom.MustInit(&Pool, "pggat_pool", prometheus.Labels{}) }