deadtrickster / prometheus-phoenix

Prometheus.io Phoenix instrumenter
71 stars 20 forks source link

Phoenix 1.4 Phoenix.Socket struct change #11

Open akoutmos opened 5 years ago

akoutmos commented 5 years ago

It looks like in Phoenix 1.4 the Phoenix.Socket struct no longer has the :transport_name field which in turns yields the following error:

[error] Instrumenter SampleApp.PhoenixInstrumenter.phoenix_channel_join/3 failed.
** (KeyError) key :transport_name not found in: %Phoenix.Socket{assigns: %{}, channel: Phoenix.LiveReloader.Channel, channel_pid: nil, endpoint: SampleAppWeb.Endpoint, handler:
Phoenix.LiveReloader.Socket, id: nil, join_ref: "1", joined: false, private: %{log_handle_in: :debug, log_join: :info}, pubsub_server: SampleApp.PubSub, ref: nil, serializer: Phoenix.Socket.V2.JSONSerializer, topic: "phoenix:live_reload", transport: :websocket, transport_pid: #PID<0.695.0>}

Any thoughts on getting around this with Phoenix 1.4?

Thanks!

deadtrickster commented 5 years ago

Possible temporary solution would be overriding default list of labels and using :transport, not :transport_name here.

akoutmos commented 5 years ago

For if anyone else comes across this issue, I changed my config as follows:

config :prometheus, SampleApp.PhoenixInstrumenter,
  controller_call_labels: [:controller, :action],
  channel_join_labels: [:channel, :topic, :transport]
jalberto commented 5 years ago

Any plan to solve this?

paveltyk commented 5 years ago

This should work with phoenix 1.4: #13

smaximov commented 5 years ago

Can confirm, it works for me with v1.3.0 .