[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-2274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17722091#comment-17722091
 ] 

Oleg Kalnichevski commented on HTTPCLIENT-2274:
-----------------------------------------------

[~cachescrubber] You should be using exec interceptors to capture execution 
time metrics:

https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/test/java/org/apache/hc/client5/http/examples/ClientInterceptors.java
https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/test/java/org/apache/hc/client5/http/examples/AsyncClientInterceptors.java

Oleg

> Instrumenting HttpClient to gather http client request metrics.
> ---------------------------------------------------------------
>
>                 Key: HTTPCLIENT-2274
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2274
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>          Components: HttpClient (async), HttpClient (classic)
>    Affects Versions: 5.2.1
>            Reporter: Lars Uffmann
>            Priority: Major
>
> I recently started using the [micrometer|[https://micrometer.io/]] binding 
> for HttpClient version 4 and 5, b both classic and async.
> Digging a bit deeper into the implementation I noticed that the async 
> instrumentation is not able to measure IO errors.
> My attempt to solve this 
> ([https://github.com/micrometer-metrics/micrometer/pull/3801)|https://github.com/micrometer-metrics/micrometer/pull/3801]
> is using a HttpRequestRetryStrategy to capture exceptions. Not only it feels 
> a bit awkward using the retry strategy to meter errors, I discovered that 
> only errors occurring during an established connection could be metered. 
> Connection related IO errors (connection refused, connection timeout, etc.) 
> are not metered.
> The issue seems to be that the RequestInterceptor used to start then 
> observation, is not called before a connection is established. I see the same 
> behavior with the classic http client instrumentation which is using a 
> HttpRequestExecutor, not an Interceptor.
> This means
>  * the metrics do not include the time needed to establish a connection.
>  * The metrics do not count failed connection attempts.
> Could you advise on how to instrument HttpClient (classic and async) in order 
> to be able to meter connection related time and errors?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to