美文网首页
07、点评CAT之URL监控埋点

07、点评CAT之URL监控埋点

作者: Albert_Yu | 来源:发表于2018-12-16 22:42 被阅读0次

一、 URL监控埋点方案
1、作用
一个http请求来了之后,会自动打点,能够记录每个url的访问情况,并将以此请求后续的调用链路串起来,可以在cat上查看logview
请将catFilter存放filter的第一个,这样可以保证最大可能性监控所有的请求
2、在SpringBoot项目中书写Filter类

/**
 * CAT相关的Filter
 *
 * @Author YUBIN
 * @create 2018-12-16
 */
public class CatServletFilter implements Filter {
    private String[] urlPatterns = new String[0];

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String patterns = filterConfig.getInitParameter("CatHttpModuleUrlPatterns");
        if (patterns != null) {
            patterns = patterns.trim();
            this.urlPatterns = patterns.split(",");

            for(int i = 0; i < this.urlPatterns.length; ++i) {
                this.urlPatterns[i] = this.urlPatterns[i].trim();
            }
        }
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        String uri = request.getRequestURI().toString();
        String[] urlPatterns = this.urlPatterns;
        int length = urlPatterns.length;

        for(int i = 0; i < length; ++i) {
            String urlPattern = urlPatterns[i];
            if (uri.startsWith(urlPattern)) {
                uri = urlPattern;
            }
        }

        Transaction t = Cat.newTransaction("Service", uri);

        try {
            PropertyContext propertyContext = new PropertyContext();
            propertyContext.addProperty("_catRootMessageId", request.getHeader("X-CAT-ROOT-ID"));
            propertyContext.addProperty("_catParentMessageId", request.getHeader("X-CAT-PARENT-ID"));
            propertyContext.addProperty("_catChildMessageId", request.getHeader("X-CAT-CHILD-ID"));
            Cat.logRemoteCallServer(propertyContext);
            Cat.logEvent("Service.method", request.getMethod(), Message.SUCCESS, request.getRequestURL().toString());
            Cat.logEvent("Service.client", request.getRemoteHost());
            String clientApp = request.getHeader("X-PPD-CAT-APP");
            Cat.logEvent("Service.app", clientApp == null ? "unknown" : clientApp);
            filterChain.doFilter(servletRequest, servletResponse);
            t.setStatus(Message.SUCCESS);
        } catch (Exception ex) {
            t.setStatus(ex);
            Cat.logError(ex);
            throw ex;
        } finally {
            t.complete();
        }
    }

    @Override
    public void destroy() {

    }

    private static class PropertyContext implements Cat.Context {
        private Map<String, String> properties = new HashMap();

        PropertyContext() {
        }

        public void addProperty(String key, String value) {
            this.properties.put(key, value);
        }

        public String getProperty(String key) {
            return (String)this.properties.get(key);
        }
    }
}

3、配置Filter

@Configuration
public class CatFilterConfigure {

    @Bean
    public FilterRegistrationBean catFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        CatServletFilter filter = new CatServletFilter();
        registration.setFilter(filter);
        registration.addUrlPatterns("/*");
        registration.setName("cat-filter");
        registration.setOrder(1);
        return registration;
    }
}

4、请求示例


image.png

相关代码已放置github,有兴趣的可以点击传送门

相关文章

  • 07、点评CAT之URL监控埋点

    一、 URL监控埋点方案1、作用一个http请求来了之后,会自动打点,能够记录每个url的访问情况,并将以此请求...

  • 调用链监控 CAT 之 URL埋点实践

    URL监控埋点作用 一个http请求来了之后,会自动打点,能够记录每个url的访问情况,并将以此请求后续的调用链路...

  • 【推荐】大众点评Java开发实时应用监控平台-CAT

    CAT介绍 CAT是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。 CAT作为大众点评网基础监控...

  • 系统性能监控之CAT

    CAT是点评的一个开源的监控项目,基于Java开发的,可以有效的监控各种url,sql,以及代码块的运行状况及运行...

  • web 埋点

    数据埋点是什么?设置数据埋点的意义?web 埋点实现原理了解一下 前端监控和前端埋点方案设计美团点评前端无痕埋点实践

  • CAT实时监控系统:cat-client埋点设计

    1.相关概念 如下在Cat中我们称为: logview消息树(或者MessageTree),即应用内部的调用链路。...

  • docker部署cat监控系统

    一、介绍 CAT 简介CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。C...

  • APM监控之CAT集成

    CAT是 点评开源的综合性的监控平台,要包括移动端监控,应用侧监控,核心网络层监控,系统层监控等。并能提供实时监控...

  • java应用监控之CAT简介

    CAT简介 CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。开源地址:h...

  • 08、点评CAT之AOP监控method

    SpringBoot AOP注解方式监控方法执行时间源码中提供了CatAnnotation 以及 CatAopSe...

网友评论

      本文标题:07、点评CAT之URL监控埋点

      本文链接:https://www.haomeiwen.com/subject/parfkqtx.html