0

我有一台 PC A,其中 LTTng 跟踪正在运行实时取景

lttng create trace-session --live

# Traces will be output to tcp4://127.0.0.1:5342/ [data: 5343]

另一台 PC B通过以太网电缆直接与A相连。同时,B连接到本地网络。

现在我如何查看来自第三台 PC C的实时跟踪事件,它与B位于同一本地网络中,例如

babeltrace2 "net://${B_IP}/host/${B_HOSTNAME}/trace-session"

我在 PC C上运行了以下命令,以建立到 PC * A的隧道。

ssh -L 5342:${A_IP}:5342 -N user_name@${B_IP}

然而,它似乎没有奏效。我想问一下:

  • 我在这里做错了什么?
  • “转发”要查看的 LTTng 实时跟踪事件的标准方法是babeltrace2什么?
4

1 回答 1

1

Babeltrace2连接到lttng-relayd使用进程的live端口而lttng-relayd不是数据和控制端口。

当命令行报告以下内容时:

# Traces will be output to tcp4://127.0.0.1:5342/ [data: 5343]

这意味着lttng-sessiondandlttng-consumerd进程将与lttng-relayd侦听127.0.0.1:5342控制消息和127.0.0.1:5343跟踪数据交换的进程进行通信。在这种情况下,查看器Babeltrace2可以连接到进程的live端口lttng-relayd以流式传输实时会话。您可以在此处更深入地查看组件图。

默认活动端口为 5344,lttng-relayd进程的默认行为是绑定所有接口以进行侦听。Babeltrace2如果没有指定与lttng-relayd进程通信,自然也默认使用该端口。

有关详细信息,请参阅lttng-relayd的手册页。

我在这里做错了什么?

在您的场景中,您需要隧道 5344 端口。请注意,我不精通 ssh 隧道,因此无法在此处验证 ssh 方法。

ssh -L 5344:${A_IP}:5344 -N user_name@${B_IP}

“转发” babeltrace2 要查看的 LTTng 实时跟踪事件的标准方法是什么?

Babeltrace2lttng-relayd使用 TCP 进行通信。因此,所有 TCP “转发”方法在这里都是可以接受的。您可能已经注意到,LTTng 不会以任何方式加密通信和跟踪数据。如果您需要跨不受信任的网络移动数据,我想说在这里使用 ssh 隧道是合适的。

于 2021-03-24T03:34:17.607 回答