mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-21 06:21:39 +03:00
11a454c2d6
This commit applies ormolu to the whole Haskell code base by running `make format`. For in-flight branches, simply merging changes from `main` will result in merge conflicts. To avoid this, update your branch using the following instructions. Replace `<format-commit>` by the hash of *this* commit. $ git checkout my-feature-branch $ git merge <format-commit>^ # and resolve conflicts normally $ make format $ git commit -a -m "reformat with ormolu" $ git merge -s ours post-ormolu https://github.com/hasura/graphql-engine-mono/pull/2404 GitOrigin-RevId: 75049f5c12f430c615eafb4c6b8e83e371e01c8e
85 lines
2.5 KiB
Haskell
85 lines
2.5 KiB
Haskell
module Hasura.Server.Metrics
|
|
( ServerMetricsSpec (..),
|
|
ServerMetrics (..),
|
|
createServerMetrics,
|
|
)
|
|
where
|
|
|
|
import Data.Kind (Type)
|
|
import GHC.TypeLits (Symbol)
|
|
import Hasura.Prelude
|
|
import System.Metrics
|
|
import System.Metrics.Distribution (Distribution)
|
|
import System.Metrics.Gauge (Gauge)
|
|
|
|
-- | A specification of the metrics tracked by the server.
|
|
--
|
|
-- The use of the "unit" type () for the "tag structure" type parameter of a
|
|
-- metric indicates that we prohibit that metric from being annotated with
|
|
-- tags.
|
|
data
|
|
ServerMetricsSpec ::
|
|
Symbol -> -- Metric name
|
|
MetricType -> -- Metric type, e.g. Counter, Gauge
|
|
Type -> -- Tag structure
|
|
Type
|
|
where
|
|
-- | Current Number of active Warp threads
|
|
WarpThreads ::
|
|
ServerMetricsSpec
|
|
"warp_threads"
|
|
'GaugeType
|
|
()
|
|
-- | Current number of active websocket connections
|
|
WebsocketConnections ::
|
|
ServerMetricsSpec
|
|
"websocket_connections"
|
|
'GaugeType
|
|
()
|
|
-- | Current number of active subscriptions
|
|
ActiveSubscriptions ::
|
|
ServerMetricsSpec
|
|
"active_subscriptions"
|
|
'GaugeType
|
|
()
|
|
-- | Total Number of events fetched from last 'Event Trigger Fetch'
|
|
NumEventsFetchedPerBatch ::
|
|
ServerMetricsSpec
|
|
"events_fetched_per_batch"
|
|
'DistributionType
|
|
()
|
|
-- | Current number of Event trigger's HTTP workers in process
|
|
NumEventHTTPWorkers ::
|
|
ServerMetricsSpec
|
|
"num_event_trigger_http_workers"
|
|
'GaugeType
|
|
()
|
|
-- | Time (in seconds) between the 'Event Trigger Fetch' from DB and the
|
|
-- processing of the event
|
|
EventQueueTime ::
|
|
ServerMetricsSpec
|
|
"event_queue_time"
|
|
'DistributionType
|
|
()
|
|
|
|
-- | Mutable references for the server metrics. See `ServerMetricsSpec` for a
|
|
-- description of each metric.
|
|
data ServerMetrics = ServerMetrics
|
|
{ smWarpThreads :: !Gauge,
|
|
smWebsocketConnections :: !Gauge,
|
|
smActiveSubscriptions :: !Gauge,
|
|
smNumEventsFetchedPerBatch :: !Distribution,
|
|
smNumEventHTTPWorkers :: !Gauge,
|
|
smEventQueueTime :: !Distribution
|
|
}
|
|
|
|
createServerMetrics :: Store ServerMetricsSpec -> IO ServerMetrics
|
|
createServerMetrics store = do
|
|
smWarpThreads <- createGauge WarpThreads () store
|
|
smWebsocketConnections <- createGauge WebsocketConnections () store
|
|
smActiveSubscriptions <- createGauge ActiveSubscriptions () store
|
|
smNumEventsFetchedPerBatch <- createDistribution NumEventsFetchedPerBatch () store
|
|
smNumEventHTTPWorkers <- createGauge NumEventHTTPWorkers () store
|
|
smEventQueueTime <- createDistribution EventQueueTime () store
|
|
pure ServerMetrics {..}
|