I’m trying to setup pushing telemetry into Application Insights and don’t seem to see a default metric for http requests.
Am I missing something?
I’m trying to setup pushing telemetry into Application Insights and don’t seem to see a default metric for http requests.
Am I missing something?
Emitted here:
All events documented here:
Jose,
In the telemetry module of my phoenix project I’m putting the following in the metrics function:
summary("phoenix.endpoint.stop.duration",
tag_values: &Monitoring.log_http_request/4,
unit: {:native, :millisecond}
),
And my log_http_request function looks like:
def log_http_request(_event, %{duration: duration}, %{conn: conn} = metadata, _config) do
start_time = System.system_time() - duration
response_code = Plug.Conn.Status.code(conn.status)
success? = response_code >= 200 && response_code < 300
Logger.info("In log_http_request. Start time #{start_time}, Response code: #{response_code}, Success: #{success?}.")
end
But it doesn’t appear to get called when an endpoint is visited.
Do I need to do a :telemetry.attach
on [:phoenix, :endpoint, :stop]
?
Never mind, got it figured out.
Good to hear! Would you mind sharing your solution?
Yeah, I was completely reading the docs wrong.
summary("phoenix.endpoint.stop.duration",
tag_values: &Monitoring.log_http_request/4,
unit: {:native, :millisecond}
),
The tag_values
fun isn’t what gets triggered for event processing like I thought it was. That’s used to transform the data in the event to something else it looks like.
What I actually needed to do was subscribe to the event like:
:telemetry.attach("log_request", [:phoenix, :endpoint, :stop], &Monitoring.log_http_request/4, :no_config)
I also needed to make sure I was doing it in a place that was actually called. I was placing this in Telemetry.metrics
, but that function was never called so I wasn’t actually subscribing to the event.
If you need any examples of leveraging the Phoenix Telemetry metrics along with custom tags, be sure to check out the PromEx Phoenix plugin that I wrote: prom_ex/phoenix.ex at master · akoutmos/prom_ex · GitHub
Might help out with some inspiration for your particular use case .
Thank you. I’m going to dig into this as soon as my workday is over.