Safe Haskell | None |
---|---|
Language | Haskell2010 |
Hasura.Server.Telemetry.Counters
Description
Counters used in telemetry collection. Additional counters can be added here.and serviced in Hasura.Server.Telemetry.
Synopsis
- data RequestDimensions = RequestDimensions {}
- data RequestTimings = RequestTimings {
- telemTimeIO :: !Seconds
- telemTimeTot :: !Seconds
- data RequestTimingsCount = RequestTimingsCount {
- telemTimeIO :: !Seconds
- telemTimeTot :: !Seconds
- telemCount :: !Word
- requestCounters :: IORef (HashMap (RequestDimensions, RunningTimeBucket) RequestTimingsCount)
- approxStartTime :: POSIXTime
- data QueryType
- data Locality
- = Empty
- | Local
- | Remote
- | Heterogeneous
- data Transport
- newtype RunningTimeBucket = RunningTimeBucket {}
- totalTimeBuckets :: [RunningTimeBucket]
- recordTimingMetric :: MonadIO m => RequestDimensions -> RequestTimings -> m ()
- data ServiceTimingMetrics = ServiceTimingMetrics {}
- data ServiceTimingMetric = ServiceTimingMetric {}
- dumpServiceTimingMetrics :: MonadIO m => m ServiceTimingMetrics
Documentation
data RequestDimensions Source #
The properties that characterize this request. The dimensions over which we collect metrics for each serviced request.
Constructors
RequestDimensions | |
Fields
|
Instances
data RequestTimings Source #
Accumulated time metrics.
Constructors
RequestTimings | |
Fields
|
Instances
Semigroup RequestTimings Source # | Sum |
Defined in Hasura.Server.Telemetry.Counters Methods (<>) :: RequestTimings -> RequestTimings -> RequestTimings # sconcat :: NonEmpty RequestTimings -> RequestTimings # stimes :: Integral b => b -> RequestTimings -> RequestTimings # |
data RequestTimingsCount Source #
RequestTimings
along with the count
Constructors
RequestTimingsCount | |
Fields
|
Instances
requestCounters :: IORef (HashMap (RequestDimensions, RunningTimeBucket) RequestTimingsCount) Source #
Internal. Counts and durations across many RequestDimensions
.
NOTE: We use the global mutable variable pattern for metric collection counters for convenience at collection site (don't wear hairshirts that discourage useful reporting).
approxStartTime :: POSIXTime Source #
Internal. Since these metrics are accumulated while graphql-engine is running and sent periodically, we need to include a tag that is unique for each start of hge. This lets us e.g. query for just the latest uploaded sample for each start of hge.
We use time rather than a UUID since having this be monotonic increasing is convenient.
Was this request a mutation (involved DB writes)?
Instances
Enum QueryType Source # | |
Defined in Hasura.Server.Telemetry.Counters Methods succ :: QueryType -> QueryType # pred :: QueryType -> QueryType # fromEnum :: QueryType -> Int # enumFrom :: QueryType -> [QueryType] # enumFromThen :: QueryType -> QueryType -> [QueryType] # enumFromTo :: QueryType -> QueryType -> [QueryType] # enumFromThenTo :: QueryType -> QueryType -> QueryType -> [QueryType] # | |
Eq QueryType Source # | |
Ord QueryType Source # | |
Defined in Hasura.Server.Telemetry.Counters | |
Show QueryType Source # | |
Generic QueryType Source # | |
Hashable QueryType Source # | |
Defined in Hasura.Server.Telemetry.Counters | |
FromJSON QueryType Source # | |
Defined in Hasura.Server.Telemetry.Counters | |
ToJSON QueryType Source # | |
Defined in Hasura.Server.Telemetry.Counters Methods toEncoding :: QueryType -> Encoding toJSONList :: [QueryType] -> Value toEncodingList :: [QueryType] -> Encoding | |
type Rep QueryType Source # | |
Was this a PG local query, or did it involve remote execution?
Constructors
Empty | No data was fetched |
Local | local DB data |
Remote | remote schema |
Heterogeneous | mixed |
Instances
Was this a query over http or websockets?
Instances
Enum Transport Source # | |
Defined in Hasura.Server.Telemetry.Counters Methods succ :: Transport -> Transport # pred :: Transport -> Transport # fromEnum :: Transport -> Int # enumFrom :: Transport -> [Transport] # enumFromThen :: Transport -> Transport -> [Transport] # enumFromTo :: Transport -> Transport -> [Transport] # enumFromThenTo :: Transport -> Transport -> Transport -> [Transport] # | |
Eq Transport Source # | |
Ord Transport Source # | |
Defined in Hasura.Server.Telemetry.Counters | |
Show Transport Source # | |
Generic Transport Source # | |
Hashable Transport Source # | |
Defined in Hasura.Server.Telemetry.Counters | |
FromJSON Transport Source # | |
Defined in Hasura.Server.Telemetry.Counters | |
ToJSON Transport Source # | |
Defined in Hasura.Server.Telemetry.Counters Methods toEncoding :: Transport -> Encoding toJSONList :: [Transport] -> Value toEncodingList :: [Transport] -> Encoding | |
type Rep Transport Source # | |
newtype RunningTimeBucket Source #
The timings and counts here were from requests with total time longer than
$sel:bucketGreaterThan:RunningTimeBucket
(but less than any larger bucket cutoff times).
Constructors
RunningTimeBucket | |
Fields |
Instances
recordTimingMetric :: MonadIO m => RequestDimensions -> RequestTimings -> m () Source #
Save a timing metric sample in our in-memory store. These will be accumulated and uploaded periodically in Hasura.Server.Telemetry.
data ServiceTimingMetrics Source #
The final shape of this part of our metrics data JSON. This should allow reasonably efficient querying using GIN indexes and JSONB containment operations (which treat arrays as sets).
Constructors
ServiceTimingMetrics | |
Fields
|
Instances
data ServiceTimingMetric Source #
Constructors
ServiceTimingMetric | |
Fields |