Chrony Receiver
contrib
Maintainers: @MovieStoreGuy, @jamesmoessis
Source: opentelemetry-collector-contrib
Supported Telemetry
Overview
The chrony receiver is a pure go implementation of the commandchronyc tracking to allow for
portability across systems and platforms. All of the data that would typically be captured by
the tracking command is made available in this receiver, see documentation for
more details.
Configuration
Default
By default, thechrony receiver will default to the following configuration:
Customised
The following options can be customised:- endpoint (required) - the address on where to communicate to
chronyd- The allowed formats are the following
udp://hostname:portunix:///path/to/chrony.sock(Please note the triple slash)unixgram:///path/to/chrony/sock
- The network type
unixwill be converted tounixgrambut both are permissible
- The allowed formats are the following
- file_mount_path (optional) - the directory where the receiver creates a random Unix datagram reply socket
- Use it only when the collector and chronyd run in separate network namespaces (for example, different containers) but share a filesystem volume
- The directory should be dedicated to chronyd and the collector; do not share it with unrelated processes
- Prefer an ephemeral mount because ungraceful exits can leave stale
otel-chrony-*.sockfiles behind - When empty (default), Go’s abstract socket autobind is used, which only works within the same network namespace
- Example:
/run/chrony
- timeout (optional) - The total amount of time allowed to read and process the data from chronyd
- Recommendation: This value should be set above 1s to allow
chronydtime to respond
- Recommendation: This value should be set above 1s to allow
- collection_interval (optional) - how frequent this receiver should poll chrony
initial_delay(default =1s): defines how long this receiver waits before starting.- metrics (optional) - Which metrics should be exported, read the documentation for complete details
Example
An example of the configuration is:Cross-Container Deployment
When the collector and chronyd run in separate containers with different Linux network namespaces but share a filesystem volume for the Unix socket, Go’s default abstract socket autobind fails because abstract sockets are namespace-scoped. Usefile_mount_path to place the client socket
in a shared volume.
The chronyd instance must be configured to listen on the same shared volume. In chrony.conf:
/run/chrony directory as a shared volume. Use a directory that is
writable only by chronyd and the collector. A randomly generated socket file will be created in
file_mount_path and cleaned up when the collector shuts down normally. If the collector exits
ungracefully, stale otel-chrony-*.sock files can remain, so prefer an ephemeral shared volume.
The complete list of metrics emitted by this receiver is found in the documentation.
Metrics
| Metric Name | Description | Unit | Type | Attributes |
|---|---|---|---|---|
❌ ntp.frequency.offset | The frequency is the rate by which the system s clock would be wrong if chronyd was not correcting it. | ppm | Gauge | leap.status |
✅ ntp.skew | This is the estimated error bound on the frequency. | ppm | Gauge | |
❌ ntp.stratum | The number of hops away from the reference system keeping the reference time | {count} | Gauge | |
✅ ntp.time.correction | The number of seconds difference between the system’s clock and the reference clock | seconds | Gauge | leap.status |
✅ ntp.time.last_offset | The estimated local offset on the last clock update | seconds | Gauge | leap.status |
❌ ntp.time.rms_offset | the long term average of the offset value | seconds | Gauge | leap.status |
❌ ntp.time.root_delay | This is the total of the network path delays to the stratum-1 system from which the system is ultimately synchronised. | seconds | Gauge | leap.status |
Attributes
| Attribute Name | Description | Type | Values |
|---|---|---|---|
leap.status | how the chrony is handling leap seconds | string | normal, insert_second, delete_second, unsynchronised |
Configuration
Example Configuration
Last generated: 2026-06-01