周末在家无聊 看新闻 看到关于监控的东西 拿来玩玩 试一下 感觉还蛮有意思 特此记录一下

这里只介绍客户端的配置

 

1:首先在POM中添加依赖

Prometheus 普罗米修斯监控
<dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient</artifactId>
            <version>${prometheus.version}</version>
        </dependency>
        <!-- Hotspot JVM metrics-->
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_hotspot</artifactId>
            <version>${prometheus.version}</version>
        </dependency>
        <!-- Exposition servlet-->
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_servlet</artifactId>
            <version>${prometheus.version}</version>
        </dependency>
        <!-- Pushgateway exposition-->
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_pushgateway</artifactId>
            <version>${prometheus.version}</version>
        </dependency>
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_spring_web</artifactId>
            <version>${prometheus.version}</version>
        </dependency>
Prometheus 普罗米修斯监控

2:在web.xml文件里添加servlet拦截器

    <servlet>
        <servlet-name>PrometheusServlet</servlet-name>
        <servlet-class>io.prometheus.client.exporter.MetricsServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PrometheusServlet</servlet-name>
        <url-pattern>/metrics</url-pattern>
    </servlet-mapping>
web.xml

3:添加拦截器class

public class WebInterceptor extends HandlerInterceptorAdapter {
</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> Logger logger = Logger.getLogger(WebInterceptor.<span style="color: #0000ff;">class</span><span style="color: #000000;">);

</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> String SYSTEM_ID= "BLOAN-GJJ"<span style="color: #000000;">;

</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> String APP_ID= "gjj-ics-credit"<span style="color: #000000;">;

</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> String TYPE = "java"<span style="color: #000000;">;


</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> Histogram requestLatency =<span style="color: #000000;"> Histogram.build()
        .name(</span>"service_requests_latency_seconds"<span style="color: #000000;">)
        .help(</span>"Request latency in seconds."<span style="color: #000000;">)
        .labelNames(</span>"systemId", "appId", "type", "name", "method"<span style="color: #000000;">).register();

</span><span style="color: #0000ff;">private</span> ThreadLocal&lt;Histogram.Timer&gt;<span style="color: #000000;"> timerThreadLocal;

@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">boolean</span> preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
    </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">super</span><span style="color: #000000;">.preHandle(request, response, handler);
}

@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
    String name </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.getName(request, handler).toLowerCase();
    String method </span>=<span style="color: #000000;"> request.getMethod().toUpperCase();
    timerThreadLocal </span>= <span style="color: #0000ff;">new</span> ThreadLocal&lt;&gt;<span style="color: #000000;">();
    timerThreadLocal.set(requestLatency.labels(SYSTEM_ID, APP_ID, TYPE, name, method).startTimer());
    </span><span style="color: #0000ff;">super</span><span style="color: #000000;">.postHandle(request, response, handler, modelAndView);
}

@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
    </span><span style="color: #0000ff;">super</span><span style="color: #000000;">.afterCompletion(request, response, handler, ex);
    </span><span style="color: #0000ff;">if</span> (timerThreadLocal.get() != <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
        timerThreadLocal.get().observeDuration();
    }
}

@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
    </span><span style="color: #0000ff;">super</span><span style="color: #000000;">.afterConcurrentHandlingStarted(request, response, handler);
}

</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String getName(HttpServletRequest request, Object handler) {
    String name </span>= ""<span style="color: #000000;">;
    </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
        </span><span style="color: #0000ff;">if</span> (handler != <span style="color: #0000ff;">null</span>
                &amp;&amp; handler <span style="color: #0000ff;">instanceof</span><span style="color: #000000;"> HandlerMethod) {
            HandlerMethod method </span>=<span style="color: #000000;"> (HandlerMethod) handler;
            String className </span>=<span style="color: #000000;"> ((HandlerMethod) handler).getBeanType().getName();
            name </span>= className + "." +<span style="color: #000000;"> method.getMethod().getName();
        } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
            name </span>=<span style="color: #000000;"> request.getRequestURI();
        }
    } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception ex) {
        logger.error(</span>"getName"<span style="color: #000000;">, ex);
    } </span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> {
        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> name;
    }
}

}

View Code

相关文章:

  • 2021-10-24
  • 2022-01-10
  • 2021-07-26
  • 2021-12-05
  • 2021-11-23
  • 2021-12-22
猜你喜欢
  • 2022-01-23
  • 2021-12-20
  • 2021-10-15
  • 2021-10-24
  • 2021-07-06
  • 2021-11-10
相关资源
相似解决方案