当前位置: 首页 > 知识库问答 >
问题:

如何生成WebClient直方图指标

桂阳文
2023-03-14

我想获取有关从后端服务到其他第三方服务的呼叫的指标(呼叫数,95%)。我正在使用WebClient进行这些http调用。我找不到启用WebClient直方图指标的特定属性。

我添加了MetricsWebClientFilterFunction来生成指标。这就是逻辑-

WebClient-WebClient=WebClient。生成器()。baseUrl(服务URL)。过滤器(新MetricsWebClientFilterFunction(meterRegistry,新DefaultWebClientExchangeTagsProvider(),“webClientCalls”,自动定时器。已启用)。build()

它只生成计数和总和指标。如何为WebClient调用生成直方图指标?

这是endpoint /actuator/prometheus输出-

webClientCalls\u seconds\u count{clientName=“service\u url”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/hello”,}1.0 webClientCalls\u seconds\u sum{clientName=“service\u url”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/hello”,}2.301044994

webClientCalls\u seconds\u max{clientName=“service\u url”,method=“GET”,output=“SUCCESS”,status=“200”,uri=“/hello”,}0.0


共有1个答案

巫马自明
2023-03-14

只需实现自动定时器接口并覆盖应用方法。

public final class AutoTimerHistogram implements AutoTimer {
  @Override
  public void apply(Timer.Builder builder) {
    builder
        .serviceLevelObjectives(
            Duration.ofMillis(100),
            Duration.ofMillis(500),
            Duration.ofMillis(800),
            Duration.ofMillis(1000),
            Duration.ofMillis(1200))
        .minimumExpectedValue(Duration.ofMillis(100))
        .maximumExpectedValue(Duration.ofMillis(10000));
  }
}

然后将其添加到MetricsWebClientFilterFunction中

    MetricsWebClientFilterFunction metricsFilter =
        new MetricsWebClientFilterFunction(
            meterRegistry,
            new DefaultWebClientExchangeTagsProvider(),
            "custom.web.client",
            autoTimerHistogram);
# TYPE custom_web_client_seconds histogram
custom_web_client_seconds_bucket{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",le="0.1",} 0.0
custom_web_client_seconds_bucket{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",le="0.5",} 0.0
custom_web_client_seconds_bucket{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",le="0.8",} 1.0
custom_web_client_seconds_bucket{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",le="1.0",} 1.0
custom_web_client_seconds_bucket{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",le="1.2",} 1.0
custom_web_client_seconds_bucket{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",le="+Inf",} 1.0
custom_web_client_seconds_count{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",} 1.0
custom_web_client_seconds_sum{clientName="login.microsoftonline.com",method="POST",outcome="SUCCESS",status="200",uri="/common/oauth2/v2.0/token",} 0.646656087

 类似资料:
  • 我想用python绘制一个非常简单的直方图。这是我的代码: 这就是结果 我怎样才能把这些条放在整数的地方呢?为什么我的图表也显示浮点数?

  • 最近需要用到jwt,领导让自己生成,不需要服务端生成。 但是使用jsonwebtoken等都是只能在node中使用,在vue2中使用报错。 有没有直接在前端代码中使用的库推荐?

  • 问题内容: 假设我有一个像这样的数据库列“ grade”: SQL中是否有非平凡的方式来生成像这样的直方图? 其中2表示1级出现两次,1表示{2..5}级出现一次,0表示6级完全没有出现。 我不介意直方图是否每计数一行。 如果那很重要,则该数据库是由perl CGI通过unixODBC / FreeTDS访问的SQL Server。 编辑: 感谢您的快速答复!只要我能确定哪个直方图值属于哪个等级,

  • 我想从官方Dockerhub映像生成 在上尝试建议的方法后 我收到错误消息 因此,如何从上述图像生成Dockerfile。

  • 我有一个小函数,可以生成两个子情节的情节。一个子图是重叠的两个直方图,另一个子图是一个直方图除以另一个直方图的结果。 对于第二个子图,我不知道如何删除直方图条之间的边(比如上面的那个),也不知道如何降低它的高度(比如说,它是上面那个高度的一半)。我也不知道如何将标题设置到情节的最顶端。 这些事情怎么可能做到? 我的代码如下:

  • > 我可以从存储库下载图像,但希望看到生成它们的方法。 我喜欢保存快照的想法,但是一旦我完成了,最好有一个结构化的格式来检查所做的事情。