| 1 | --- |
| 2 | id: lttng-live |
| 3 | --- |
| 4 | |
| 5 | We have seen how trace files may be produced by LTTng out of generated |
| 6 | application and Linux kernel events. We have seen that those trace files |
| 7 | may be either recorded locally by consumer daemons or remotely using |
| 8 | a relay daemon. And we have seen that the maximum size and count of |
| 9 | trace files is configurable for each channel. With all those features, |
| 10 | it's still not possible to read a trace file as it is being written |
| 11 | because it could be incomplete and appear corrupted to the viewer. |
| 12 | There is a way to view events as they arrive, however: using |
| 13 | _LTTng live_. |
| 14 | |
| 15 | LTTng live is implemented, in LTTng, solely on the relay daemon side. |
| 16 | As trace data is sent over the network to a relay daemon by a (possibly |
| 17 | remote) consumer daemon, a _tee_ is created: trace data is recorded to |
| 18 | trace files _as well as_ being transmitted to a connected live viewer: |
| 19 | |
| 20 | <div class="img img-90"> |
| 21 | <object data="/images/docs26/lttng-live-relayd.svg" type="image/svg+xml"> |
| 22 | <img src="/images/docs26/lttng-live-relayd.svg"> |
| 23 | </object> |
| 24 | </div> |
| 25 | |
| 26 | In order to use this feature, a tracing session must created in live |
| 27 | mode on the target system: |
| 28 | |
| 29 | <pre class="term"> |
| 30 | lttng create --live |
| 31 | </pre> |
| 32 | |
| 33 | An optional parameter may be passed to `--live` to set the period |
| 34 | (in microseconds) between flushes to the network |
| 35 | (1 second is the default). With: |
| 36 | |
| 37 | <pre class="term"> |
| 38 | lttng create --live 100000 |
| 39 | </pre> |
| 40 | |
| 41 | the daemons flush their data every 100 ms. |
| 42 | |
| 43 | If no network output is specified to the `create` command, a local |
| 44 | relay daemon is spawned. In this very common case, viewing a live |
| 45 | trace is easy: enable events and start tracing as usual, then use |
| 46 | `lttng view` to start the default live viewer: |
| 47 | |
| 48 | <pre class="term"> |
| 49 | lttng view |
| 50 | </pre> |
| 51 | |
| 52 | The correct arguments are passed to the live viewer so that it |
| 53 | may connect to the local relay daemon and start reading live events. |
| 54 | |
| 55 | You may also wish to use a live viewer not running on the target |
| 56 | system. In this case, you should specify a network output when using |
| 57 | the `create` command (`--set-url` or `--ctrl-url`/`--data-url` options). |
| 58 | A distant LTTng relay daemon should also be started to receive control |
| 59 | and trace data. By default, `lttng-relayd` listens on 127.0.0.1:5344 |
| 60 | for an LTTng live connection. Otherwise, the desired URL may be |
| 61 | specified using its `--live-port` option. |
| 62 | |
| 63 | The |
| 64 | <a href="http://www.efficios.com/babeltrace" class="ext">`babeltrace`</a> |
| 65 | viewer supports LTTng live as one of its input formats. `babeltrace` is |
| 66 | the default viewer when using `lttng view`. To use it manually, first |
| 67 | list active tracing sessions by doing the following (assuming the relay |
| 68 | daemon to connect to runs on the same host): |
| 69 | |
| 70 | <pre class="term"> |
| 71 | babeltrace --input-format lttng-live net://localhost |
| 72 | </pre> |
| 73 | |
| 74 | Then, choose a tracing session and start viewing events as they arrive |
| 75 | using LTTng live: |
| 76 | |
| 77 | <pre class="term"> |
| 78 | babeltrace --input-format lttng-live net://localhost/host/hostname/my-session |
| 79 | </pre> |