Skip to content

Commit 3817ca5

Browse files
committed
Add some initial tracing to the device socket and channel
1 parent 4988a53 commit 3817ca5

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/nerves_hub_web/channels/device_channel.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ defmodule NervesHubWeb.DeviceChannel do
66
"""
77

88
use Phoenix.Channel
9+
use OpenTelemetryDecorator
910

1011
require Logger
1112

@@ -19,6 +20,7 @@ defmodule NervesHubWeb.DeviceChannel do
1920
alias NervesHub.Repo
2021
alias Phoenix.Socket.Broadcast
2122

23+
@decorate with_span("Channels.DeviceChannel.join")
2224
def join("device", params, %{assigns: %{device: device}} = socket) do
2325
with {:ok, device} <- update_metadata(device, params) do
2426
send(self(), {:after_join, params})
@@ -31,6 +33,7 @@ defmodule NervesHubWeb.DeviceChannel do
3133
end
3234
end
3335

36+
@decorate with_span("Channels.DeviceChannel.handle_info:after_join")
3437
def handle_info({:after_join, params}, %{assigns: %{device: device}} = socket) do
3538
device =
3639
device
@@ -82,6 +85,7 @@ defmodule NervesHubWeb.DeviceChannel do
8285
{:stop, :shutdown, socket}
8386
end
8487

88+
@decorate with_span("Channels.DeviceChannel.handle_info:device_registration")
8589
def handle_info({:device_registation, attempt}, socket) do
8690
%{assigns: %{device: device}} = socket
8791

@@ -220,6 +224,7 @@ defmodule NervesHubWeb.DeviceChannel do
220224
end
221225

222226
# Update local state and tell the various servers of the new information
227+
@decorate with_span("Channels.DeviceChannel.handle_info:devices-updated")
223228
def handle_info(%Broadcast{event: "devices/updated"}, %{assigns: %{device: device}} = socket) do
224229
device = Repo.reload(device)
225230

lib/nerves_hub_web/channels/device_socket.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
defmodule NervesHubWeb.DeviceSocket do
22
use Phoenix.Socket
3+
use OpenTelemetryDecorator
34

45
require Logger
56

@@ -26,6 +27,7 @@ defmodule NervesHubWeb.DeviceSocket do
2627
end
2728

2829
@impl Phoenix.Socket.Transport
30+
@decorate with_span("Channels.DeviceSocket.terminate")
2931
def terminate(reason, {_channels_info, socket} = state) do
3032
on_disconnect(reason, socket)
3133
super(reason, state)
@@ -40,6 +42,7 @@ defmodule NervesHubWeb.DeviceSocket do
4042
super(msg, {state, socket})
4143
end
4244

45+
@decorate with_span("Channels.DeviceSocket.heartbeat")
4346
defp heartbeat(
4447
%Phoenix.Socket.Message{topic: "phoenix", event: "heartbeat"},
4548
%{assigns: %{device: device}} = socket
@@ -77,6 +80,7 @@ defmodule NervesHubWeb.DeviceSocket do
7780

7881
# Used by Devices connecting with SSL certificates
7982
@impl Phoenix.Socket
83+
@decorate with_span("Channels.DeviceSocket.connect")
8084
def connect(_params, socket, %{peer_data: %{ssl_cert: ssl_cert}})
8185
when not is_nil(ssl_cert) do
8286
X509.Certificate.from_der!(ssl_cert)
@@ -96,6 +100,7 @@ defmodule NervesHubWeb.DeviceSocket do
96100
end
97101

98102
# Used by Devices connecting with HMAC Shared Secrets
103+
@decorate with_span("Channels.DeviceSocket.connect")
99104
def connect(_params, socket, %{x_headers: x_headers})
100105
when is_list(x_headers) and length(x_headers) > 0 do
101106
headers = Map.new(x_headers)
@@ -208,6 +213,7 @@ defmodule NervesHubWeb.DeviceSocket do
208213
{:ok, socket}
209214
end
210215

216+
@decorate with_span("Channels.DeviceSocket.on_connect")
211217
defp on_connect(socket) do
212218
:telemetry.execute([:nerves_hub, :devices, :connect], %{count: 1}, %{
213219
ref_id: socket.assigns.reference_id,
@@ -223,6 +229,7 @@ defmodule NervesHubWeb.DeviceSocket do
223229
assign(socket, :device, device)
224230
end
225231

232+
@decorate with_span("Channels.DeviceSocket.on_disconnect")
226233
defp on_disconnect({:error, reason}, %{assigns: %{device: device, reference_id: reference_id}}) do
227234
if reason == {:shutdown, :disconnected} do
228235
:telemetry.execute([:nerves_hub, :devices, :duplicate_connection], %{count: 1}, %{
@@ -236,10 +243,12 @@ defmodule NervesHubWeb.DeviceSocket do
236243
:ok
237244
end
238245

246+
@decorate with_span("Channels.DeviceSocket.on_disconnect")
239247
defp on_disconnect(_, %{assigns: %{device: device, reference_id: reference_id}}) do
240248
shutdown(device, reference_id)
241249
end
242250

251+
@decorate with_span("Channels.DeviceSocket.shutdown")
243252
defp shutdown(device, reference_id) do
244253
:telemetry.execute([:nerves_hub, :devices, :disconnect], %{count: 1}, %{
245254
ref_id: reference_id,

0 commit comments

Comments
 (0)