LTTNG-RELAYD(8)
π lttng-relayd π
okay so bestie, welcome to LTTNG-RELAYD(8) β that's the page title AND the manual name, we love a two-for-one β straight out of the LTTng Manual β¨. this is part 1, so buckle up, hydrate, and let's get into it π
πΈ NAME πΈ
lttng-relayd β the LTTng relay daemon, aka the lil mvpp that catches your trace data π
β¨ SYNOPSIS β¨
lttng-relayd [--background | --daemonize] [--config=PATH]
[--control-port=URL] [--data-port=URL] [--fd-pool-size=COUNT]
[--live-port=URL] [--dynamic-port-allocation] [--output=DIR]
[--group=GROUP] [--verbose]... [--working-directory=DIR]
[--group-output-by-host | --group-output-by-session] [--disallow-clear]
[--pid-file=PATH] [--sig-parent]
π¦ DESCRIPTION π¦
The Linux Trace Toolkit: next generation (https://lttng.org/) is an open-source software package used for correlated tracing of the Linux kernel, user applications, and user libraries. it's giving β¨observabilityβ¨, no cap.
LTTng consists of Linux kernel modules (for Linux kernel tracing) and dynamically loaded libraries (for user application and library tracing). two vibes, one toolkit.
An LTTng relay daemon, lttng-relayd, is a program which receives trace data from (possibly remote) LTTng session/consumer daemons and which writes it to the local file system. so it's literally the bestie that takes the mail and files it for you π¬. The relay daemon also accepts LTTng live connections from compatible readers (for example, babeltrace2(1)); this is the recommended approach to read trace data while the remote recording session is active. π
By default, a relay daemon listens on all network interfaces to receive trace data, but only on localhost for LTTng live connections. Override the listening URLs with the--control-port,--data-port, and--live-portoptions (see the βURL formatβ section below). For example, use the--live-port=tcp://0.0.0.0:5344option to make a relay daemon listen to LTTng live connections on all network interfaces.
Once LTTng has completely sent a trace to a relay daemon RD, any LTTng trace reader can read the trace located on the local file system of RD. ship it, done, iconic.
By default, lttng-relayd doesnβt start as a daemon. Make it a daemon with the --daemonize or --background option. With those options, lttng-relayd ensures the daemon is listening to incoming connections before it exits. Make lttng-relayd write its process ID to a file with the --pid-file option. bestie, don't leave the group chat before you're actually online, that's the whole point π
π§ Daemon configuration π§
When you run lttng-relayd, it configures itself from, in this order:
- The INI configuration file
/etc/lttng/lttng.conf, if any. - The INI configuration file
$LTTNG_HOME/.lttng/lttng.conf, if any.
$LTTNG_HOME defaults to $HOME.
- With the
--config=PATHoption: the INI configuration filePATH. - The command-line options.
Each step can override a previous configuration property. it's a whole pipeline, and the last one in the thread wins π.
In INI configuration files, the session daemon only reads the properties under the relayd INI section. Each INI property is:
Key : The long name of a command-line option to set (see the βOPTIONSβ section below).
Value
- The selected command-line option accepts an argument : Option argument (string).
- The selected command-line option is a switch
true,yes,on: Enable the option.false,no,off: Disable the option.
INI configuration file example:
[relayd]
daemonize=yes
live-port=tcp://0.0.0.0:4567
disallow-clear=yes
π Output directory π
The relay daemon uses different output path patterns depending on:
- Its configuration.
See the βDaemon configurationβ section above.
- The recording session configuration of the connected peer.
- The LTTng session daemon (see
lttng-sessiond(8)) version of the connected peer.
Consider the following variables:
BASE : Base output directory: $LTTNG_HOME/lttng-traces ($LTTNG_HOME defaults to $HOME) or the argument of the --output option.
HOSTNAME : Hostname of the connected peer.
SESSION : Recording session name.
DATETIME : Unique recording session date/time.
TRACEDIR : Custom trace directory path (TRACEDIR part of the argument of the --set-url option of the lttng-create(1) command, if any).
SESSIONDV : The version of the LTTng session daemon of the connected peer.
The relay daemon output path patterns are:
With the --group-output-by-host option (hostname grouping)
- Without a custom trace directory
BASE/HOSTNAME/SESSION-DATETIME
- With a custom trace directory
BASE/HOSTNAME/TRACEDIR
With the --group-output-by-session option (recording session grouping)
- Without a custom trace directory
SESSIONDVis at least 2.4
BASE/SESSION/HOSTNAME-DATETIME
- Otherwise : Defaults to the hostname grouping pattern:
BASE/HOSTNAME/SESSION-DATETIME
- With a custom trace directory
SESSIONDVis at least 2.4
BASE/SESSION/HOSTNAME-DATETIME/TRACEDIR
- Otherwise : Defaults to the hostname grouping pattern:
BASE/HOSTNAME/TRACEDIR
π URL format π
The argument of the --control-port=URL, --data-port=URL, and --live-port=URL options is an URL.
The format of URL is:
tcp://(HOST | IPADDR):PORT
with:
(HOST | IPADDR) : Binding hostname or IP address.
IPv6 address must be enclosed in square brackets ([ and ]); see RFC 2732 (https://www.ietf.org/rfc/rfc2732.txt).
PORT : TCP port.
If this value is 0 and the --dynamic-port-allocation option is set, then the operating system assigns a port number itself. let the OS pick, it's self-care π
π OPTIONS π
π General daemon configuration π
-b,--backgroundβ Start as a Unix daemon, but keep file descriptors (console) open.
With this option, lttng-relayd ensures the daemon is listening to incoming connections before it exits.
Use the --daemonize option instead to close the file descriptors.
-f PATH,--config=PATHβ Configure the daemon using the INI configuration filePATHin addition to the default configuration files and the command-line options.
See the βDaemon configurationβ section above.
-d,--daemonizeβ Start as a Unix daemon and close file descriptors (console).
With this option, lttng-relayd ensures the daemon is listening to incoming connections before it exits.
Use the --background option instead to keep the file descriptors open.
-x,--disallow-clearβ Disallow clearing operations (seelttng-clear(1)).
See also the LTTNG_RELAYD_DISALLOW_CLEAR environment variable.
--dynamic-port-allocationβ Let the operating system assign the control, data, and live ports if their respective option is missing (--control-port,--data-port, and--live-port) or if their port number part is0.
With this option, lttng-relayd writes the control.port, data.port, and live.port files, as needed, to its runtime and configuration directory ($LTTNG_HOME/.lttng). Such a port file contains the textual port number (decimal) followed with a newline.
--fd-pool-size=SIZEβ Set the size of the file descriptor pool toSIZEfile descriptors.
SIZE is the maximum number of file descriptors that the relay daemon may keep open simultaneously.
Default: the soft RLIMIT_NOFILE resource limit of the process (see getrlimit(2)).
-g GROUP,--group=GROUPβ Set the Unix tracing group toGROUPinstead oftracing.
This option is only meaningful when the root Unix user starts lttng-relayd.
Members of the Unix tracing group may connect to the health check socket of the relay daemon.
See also the LTTNG_RELAYD_HEALTH environment variable.
-P PATH,--pid-file=PATHβ Write the process ID (PID) of thelttng-relaydprocess toPATH.
Such a file contains the textual PID (decimal) followed with a newline.
lttng-relayd doesnβt use this file and removes it when it exits. it's not reading its own diary, it just writes it and dips π
-S,--sig-parentβ Send theUSR1signal to the parent process to notify readiness.
You can also use the --daemonize or --background option, in which case lttng-relayd ensures the daemon is ready to receive client commands before it exits.
-v,--verboseβ Increase verbosity.
Specify this option up to three times to get more levels of verbosity. -v -v -v and you're in the group chat with full receipts π₯
-w DIR,--working-directory=DIRβ Set the working directory of the processes the relay daemon creates toDIR.
See also the LTTNG_RELAYD_WORKING_DIRECTORY environment variable.
π Output π
See the βOutput directoryβ section above to learn more.
-p,--group-output-by-hostβ Group the written trace directories by hostname.
As of LTTng 2.15.1, this is the default output grouping strategy, but this may change in the future.
-s,--group-output-by-sessionβ Group the written trace directories by recording session name instead of by hostname.-o DIR,--output=DIRβ Set the base output directory of the written trace directories toDIR.
π Ports π
See the βURL formatβ section above to learn more about the syntax of the URL argument of the following options.
For the following options: if the --dynamic-port-allocation option is set and the port option is either missing or the port number part of URL is 0, then the operating system assigns a port number itself.
-C URL,--control-port=URLβ Listen to control data on URLURL.
Default: tcp://0.0.0.0:5342.
-D URL,--data-port=URLβ Listen to trace data on URLURL.
Default: tcp://0.0.0.0:5343.
-L URL,--live-port=URLβ Listen to LTTng live connections on URLURL.
Default: tcp://localhost:5344.
β Program information β
-h,--helpβ Show help.
This option attempts to launch /usr/bin/man to view this manual page. Override the manual pager path with the LTTNG_MAN_BIN_PATH environment variable.
--list-optionsβ List available command options and quit.-V,--versionβ Show version and quit.
π EXIT STATUS π
0 : Success π the vibe check passed
1 : Error π
3 : Fatal error π not a vibe, no cap
πΈ ENVIRONMENT πΈ
Okay so these are the env vars that make relayd do its thing. Set them before you launch, bestie. β¨
LTTNG_ABORT_ON_ERRORβ set this to1and relayd will abort the whole process the second it hits its first error. Like, one strike and you're out. πLTTNG_NETWORK_SOCKET_TIMEOUTβ this is the socket connection, receive, and send timeout, all in milliseconds. Set it to0or-1for an infinite timeout β and yes, infinite is the default. β¨LTTNG_RELAYD_DISALLOW_CLEARβ set to1to disallow clearing operations (checklttng-clear(1)for that tea). The--disallow-clearoption overrides this environment variable, so the option is the boss. πLTTNG_RELAYD_HEALTHβ the path to the relay daemon's health check socket. That's it. That's the vibe. π©ΊLTTNG_RELAYD_TCP_KEEP_ALIVEβ set to1and TCP keep-alive is on. This mechanism lets you detect dead peers (lttng-sessiond(8)) when a peer goes out uncleanly β like a hard reset, yikes. Supported on Linux and Solaris only, and the default behaviour is OS-specific. Want the lore? Search fortcp_keepaliveintcp(7). πLTTNG_RELAYD_TCP_KEEP_ALIVE_ABORT_THRESHOLDβ the time threshold in seconds to abort a TCP connection after the keep-alive probing mechanism has failed. Set to0or-1to use the value chosen by the operating system (default). Supported on Solaris 11 only. Search fortcp_keepalive_abort_thresholdintcp(7)for more. β±οΈLTTNG_RELAYD_TCP_KEEP_ALIVE_IDLE_TIMEβ how many seconds a connection needs to be idle before TCP begins sending out keep-alive probes. Set to0or-1to use the value chosen by the operating system (default). Supported on Linux and Solaris 11 only. On Solaris 11, the accepted values are-1,0, and10to864000. Search fortcp_keepalive_timeandtcp_keepalive_intervalintcp(7)on Solaris 11 to learn more. π€LTTNG_RELAYD_TCP_KEEP_ALIVE_MAX_PROBE_COUNTβ the maximum number of TCP keep-alive probes to send before giving up and killing the connection if no response is obtained from the other end. Set to0or-1to use the value chosen by the operating system (default). Supported on Linux only. Search fortcp_keepalive_probesintcp(7)to learn more. π‘LTTNG_RELAYD_TCP_KEEP_ALIVE_PROBE_INTERVALβ the number of seconds between TCP keep-alive probes. Set to0or-1to use the value chosen by the operating system (default). Supported on Linux only. Search fortcp_keepalive_intvlintcp(7)to learn more. β²οΈLTTNG_RELAYD_WORKING_DIRECTORYβ the working directory of the processes the relay daemon creates. The--working-directoryoption overrides this environment variable, so option wins again. π«Ά
π FILES π
$LTTNG_HOME/.lttngβ the Unix user's LTTng runtime and configuration directory. Everything lives here. β¨$LTTNG_HOME/lttng-tracesβ the default base output directory of LTTng traces. Override this path with the--outputoption. So if you want traces elsewhere, you know what to do. π
Note:$LTTNG_HOMEdefaults to$HOME. Yes, it's giving "home sweet home". π
π RESOURCES π
- LTTng project website:
https://lttng.orgβ the main character. π - LTTng documentation:
https://lttng.org/docsβ read it, bestie. π - LTTng bug tracker:
https://bugs.lttng.orgβ if something's messy. π - Git repositories:
https://git.lttng.orgβ source code central. π³ - GitHub organization:
https://github.com/lttngβ more repos, more fun. π - Continuous integration:
https://ci.lttng.org/β the robot that tests everything. π€ - Mailing list:
https://lists.lttng.org/for support and development:lttng-dev@lists.lttng.orgβ slide into their inbox. π - IRC channel:
irc://irc.oftc.net/lttng:#lttngonirc.oftc.netβ old school but iconic. π¬ - Mastodon:
https://mastodon.social/@lttngβ follow for updates. π
π COPYRIGHT π
This program is part of the LTTng-tools project. β¨
LTTng-tools is distributed under the GNU General Public License version 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). See the LICENSE file (https://github.com/lttng/lttng-tools/blob/master/LICENSE) for details. π
π«Ά THANKS π«Ά
Special thanks to Michel Dagenais and the DORSAL laboratory (http://www.dorsal.polymtl.ca/) at Γcole Polytechnique de MontrΓ©al for the LTTng journey. π€οΈ
Also thanks to the Ericsson teams working on tracing which helped us greatly with detailed bug reports and unusual test cases. You guys ate. π
π SEE ALSO π
babeltrace2(1), lttng(1), lttng-sessiond(8)
Anyway, that's the whole relayd manual, bestie! This page is from LTTng 2.15.1, dated 1 April 2025, and it's the LTTNG-RELAYD(8) manual. Stay traced! π
β¨
π¦ where this page comes from
- ubuntu stonking: lttng-tools 2.15.1-1 Β· LGPL-2.1-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms