# Configuration for the eventlog processors, organised by the type of telemetry
# data they produce. Every processor shares certain properties. Let's look at
# the default configuration for the `blocks_size` metrics processor:
#
# blocks_size:
# name: ghc_eventlog_BlocksSize
# description: The current heap size, calculated by the allocated number of blocks.
# aggregate: 1x
# export: 60x
#
# - The `name` property is added to each piece of telemetry data,
# and determines the name under which the data becomes available in your
# data source, such as Prometheus.
#
# The data produced by our example `blocks_size` processor will be available
# in Prometheus as `ghc_eventlog_BlocksSize`.
#
# - The `description` property is added to each piece of telemetry data,
# and may be used to describe it. In most cases, this can be safely set
# to `null` to save bandwidth.
#
# The data produced by our example `blocks_size` processor will be given the
# above description.
#
# - The `export` property determines whether or not the telemetry data is
# exported to the OpenTelemetry Collector and, if so, with what frequency.
#
# There are three ways to configure the `export` property:
#
# - A duration in seconds, given as "Ns". For instance, if `export` is "30s"
# then the processor exports a batch of telemetry data every 30 seconds.
#
# - A duration in batches, given as "Nx". The length of one batch interval
# is determined by the `--eventlog-flush-interval=SECONDS` flag, as passed
# to the RTS of the monitored process and to this program. For instance,
# if `export` is "2x" and the eventlog flush interval is 30 seconds, then
# the processor exports a batch of telemetery data every minute.
#
# - A boolean flag, i.e., `true` or `false`. If `export` is `false`, then the
# processor will not export data and, if its output is not needed by some
# other processor, it will not run either. If `export` is `true`, then the
# processor exports telemetry data as if configured with "1x" (see above).
#
# The example `blocks_size` processor exports a batch of telemetry data every
# 30 seconds.
#
# - The `aggregate` property determines whether or not the telemetry data is
# aggregated over time, and, if so, over what interval. Only metrics support
# aggregation.
#
# The aggregation interval uses the same format as the export interval (see
# above). For instance, if `aggregate` is 5s, the processor aggregates data
# over 5 second intervals.
#
# Aggregation follows the OpenTelemetry specification. Sums are aggregated by
# summation. Gauges are aggregated by taking the most recent data point.
# The `heap_allocated` and `capability_usage` metrics are aggregated as sums.
# All other metrics are aggregated as gauges.
#
# The data produced by our example `blocks_size` processor aggregates data
# over 1 second intervals and only keeps the last metric in each interval.
#
processors:
logs:
thread_label:
name: ghc_eventlog_ThreadLabel
description: A thread label.
export: 5s
user_marker:
name: ghc_eventlog_UserMarker
description: A user marker.
export: 5s
user_message:
name: ghc_eventlog_UserMessage
description: A user log message.
export: 5s
internal_log_message:
name: eventlog_live_InternalLogMessage
description: An internal eventlog-live log message.
export: 5s
metrics:
blocks_size:
name: ghc_eventlog_BlocksSize
description: The current heap size, calculated by the allocated number of blocks.
aggregate: 1s
export: 30s
capability_usage:
name: ghc_eventlog_CapabilityUsageDuration
description: The duration of each capability usage span.
aggregate: 1s
export: 30s
heap_allocated:
name: ghc_eventlog_HeapAllocated
description: The size of a newly allocated chunk of heap.
aggregate: 1s
export: 30s
heap_live:
name: ghc_eventlog_HeapLive
description: The current heap size, calculated by the allocated number of megablocks.
aggregate: 1s
export: 30s
heap_prof_sample:
name: ghc_eventlog_HeapProfSample
description: A heap profile sample.
aggregate: 1s
export: 30s
heap_size:
name: ghc_eventlog_HeapSize
description: The current heap size, calculated by the allocated number of megablocks.
aggregate: 1s
export: 30s
mem_current:
name: ghc_eventlog_MemCurrent
description: The number of megablocks currently allocated.
aggregate: 1s
export: 30s
mem_needed:
name: ghc_eventlog_MemNeeded
description: The number of megablocks currently needed.
aggregate: 1s
export: 30s
mem_returned:
name: ghc_eventlog_MemReturned
description: The number of megablocks currently being returned to the OS.
aggregate: 1s
export: 30s
traces:
capability_usage:
name: ghc_eventlog_CapabilityUsage
description: A trace of capability usage (either mutator thread or garbage collection).
export: false
thread_state:
name: ghc_eventlog_ThreadState
description: A trace of thread state changes (either running or stopped).
export: false
profiles:
stack_sample:
name: ghc_eventlog_StackSampleProfile
description: A thread RTS callstack sample.
export: 30s
cost_centre_sample:
name: ghc_eventlog_CostCentreProfile
description: A cost centre callstack sample.
export: 30s