加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

监控系统如何做埋点,监控数据库和HTTP请求

发布时间:2019-10-27 20:44:56 所属栏目:建站 来源:IT人故事会
导读:【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》 JDBC做过java开拓的都知道JDBC是干什么的,RestApi着实就是http的挪用,http的挪用就是挪用第三方的处事的时辰,第三方的处事并不是在本身的体系范畴内,假如呈现不不变挂掉,对自身来说
【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》

 监控体系怎样做埋点,监控数据库和HTTP哀求

JDBC做过java开拓的都知道JDBC是干什么的,RestApi着实就是http的挪用,http的挪用就是挪用第三方的处事的时辰,第三方的处事并不是在本身的体系范畴内,假如呈现不不变挂掉,对自身来说是不行控了,以是第三方处事而言对我们而言长短常的明感的。JDBC和RestApi的监控对体系来讲意义很大,数据库得多重要,在体系的内部举办监控更能精采的回响sql的执行机能。

监控体系怎样做埋点,监控数据库和HTTP哀求

(一)JDBC挪用拦截

  • JDBC插桩目标

哪些监控怼开拓运维来说最有效的。

  1. SQL语句、SQL参数、用了多长时刻、SQL范例、功效集巨细、返回字段、类型、Join次数
  2. 拦截监听SQL语句
  3. 找出慢查询语句
  • 模子布局

字段范例描写sqltextsql语句paramsjson参数resultSizeint功效巨细urlvarchar数据库毗连路径userNamevarchar数据库用户名errortext非常仓库useTimeint用时

  • JDBC插桩位置

这些user,框架,毗连池,驱动都依靠jdbc,jdbc是一个什么对象?jdbc是一种类型,一堆接口构成的类型j2se,由驱动来实现的。servlet也是一种接口类型,是j2ee的类型,由tomcat,jetty等容器实现的。任任何一层都可以做为插桩的切入点,可是选用User 层、框架层、毗连池&数据源层、驱动层着实现是多样的,无法做到普适性。以是在此选用JDBC 作为插桩切入 点。

监控体系怎样做埋点,监控数据库和HTTP哀求
  • JDBC插桩机制
监控体系怎样做埋点,监控数据库和HTTP哀求

从上图可以说明出JDBC执行进程

1.从驱动获取毗连(Connection)

2.基于毗连构建预处理赏罚工具(prepareStatement)

3.执行SQL

4.读取功效集(ResultSet)

5.封锁开释毗连。

个中涉及工具构建逻辑如下:

Driver==》Connection==》prepareStatement==》ResultSet

监控体系怎样做埋点,监控数据库和HTTP哀求

(二)Http挪用拦截

  • Http埋点目标

许多时辰我们会挪用第三方API。好比:动静推送、短信发送、第三方付出接口等,由于处事是第三方提供,假如处事呈现机能或可用性题目对付我方而言不行控,以是这类接口的不变性是我们必要重点存眷的工具。

凡是这类接口会基于Http协议实现,所对Htpp协议监控,即实现了对第三方接口的监控。

  • Http埋点位置
监控体系怎样做埋点,监控数据库和HTTP哀求

1.user层:无法判定User详细执行要领,基于设置又做不到普适性。

2.Http协议层:能找到详细要领,也能做到普适性。必要对Http协议举办全面理会,并且Http协议为文本协议,理会难度更大,实现本钱居高。

3.专有SDK、与自界说封装的Http器材包,跟详细营业偶条约样无法做到普顺应。

4.java net URL 与 HttpClient 都是Http client 基于二者实现可以在必然水平上告竣我们的方针。

  • Http埋点机制(java.net.URL)

URL常用写法:

  1. URL url = new URL("https://www.baidu.com"); 
  2. URLConnection conn = url.openConnection(); 
  3. conn.setDoInput(true); 
  4. conn.setDoOutput(true); 
  5. conn.connect(); 
  6. OutputStream output = conn.getOutputStream(); 
  7. output.write("a=c&b=1".getBytes()); 
  8. InputStream input = conn.getInputStream(); 
  9. byte[] bytes = IOUtils.readFully(input, -1, false); 
  10. System.out.println(new String(bytes)); 

URL 装载执行进程:

  1. URL 基于protocol 构建对应 UrlStreamHandler
  2. UrlStreamHandler.openConnection() 打开毗连,返回URlConnection
  3. URlConnection 配置毗连属性
  4. URlConnection 打开 outPutStream 写入参数
  5. URlConnection 打开 inPutStream读取功效

个中涉及工具构建逻辑如下:

URL==》URLStreamHandler==》URLConnection==》outPutStream、InputStream。

假如上述进程加一层静态署理即可监控这些工具全部的执行进程从而获得所需监控数据:

URL==》Proxy(URLStreamHandler)==》Proxy(URLConnection)==》Proxy(outPutStream)、Proxy(InputStream)。

  • URL的类布局
监控体系怎样做埋点,监控数据库和HTTP哀求

怎么样才气加上这层署理呢?其要害要领在于 通过静态署理的方法。 java.net.URL#setURLStreamHandlerFactory。该要领应承用户自界说URL协议实现.

监控体系怎样做埋点,监控数据库和HTTP哀求

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读