监控系统如何做埋点,监控数据库和HTTP请求
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
JDBC做过java开发的都知道JDBC是干什么的,RestApi其实就是http的调用,http的调用就是调用第三方的服务的时候,第三方的服务并不是在自己的系统范围内,如果出现不稳定挂掉,对自身来说是不可控了,所以第三方服务而言对我们而言是非常的明感的。JDBC和RestApi的监控对系统来讲意义很大,数据库得多重要,在系统的内部进行监控更能良好的反应sql的执行性能。
(一)JDBC调用拦截
- JDBC插桩目的
哪些监控怼开发运维来说最有用的。
- SQL语句、SQL参数、用了多长时间、SQL类型、结果集大小、返回字段、规范、Join次数
- 拦截监听SQL语句
- 找出慢查询语句
- 模型结构
字段类型描述sqltextsql语句paramsjson参数resultSizeint结果大小urlvarchar数据库连接路径userNamevarchar数据库用户名errortext异常堆栈useTimeint用时
- JDBC插桩位置
这些user,框架,连接池,驱动都依赖jdbc,jdbc是一个什么东西?jdbc是一种规范,一堆接口组成的规范j2se,由驱动来实现的。servlet也是一种接口规范,是j2ee的规范,由tomcat,jetty等容器实现的。任任何一层都可以做为插桩的切入点,但是选用User 层、框架层、连接池&数据源层、驱动层其实现是多样的,无法做到普适性。所以在此选用JDBC 作为插桩切入 点。
- JDBC插桩机制
从上图可以分析出JDBC执行过程
1.从驱动获取连接(Connection)
2.基于连接构建预处理对象(prepareStatement)
3.执行SQL
4.读取结果集(ResultSet)
5.关闭释放连接。
其中涉及对象构建逻辑如下:
Driver==》Connection==》prepareStatement==》ResultSet
(二)Http调用拦截
- Http埋点目的
很多时候我们会调用第三方API。比如:消息推送、短信发送、第三方支付接口等,因为服务是第三方提供,如果服务出现性能或可用性问题对于我方而言不可控,所以这类接口的稳定性是我们需要重点关注的对象。
通常这类接口会基于Http协议实现,所对Htpp协议监控,即实现了对第三方接口的监控。
- Http埋点位置
1.user层:无法判断User具体执行方法,基于配置又做不到普适性。
2.Http协议层:能找到具体方法,也能做到普适性。需要对Http协议进行全面解析,而且Http协议为文本协议,解析难度更大,实现成本居高。
3.专有SDK、与自定义封装的Http工具包,跟具体业务偶合同样无法做到普适应。
4.java net URL 与 HttpClient 都是Http client 基于二者实现可以在一定程度上达成我们的目标。
- Http埋点机制(java.net.URL)
URL常用写法:
- URL url = new URL("https://www.baidu.com");
- URLConnection conn = url.openConnection();
- conn.setDoInput(true);
- conn.setDoOutput(true);
- conn.connect();
- OutputStream output = conn.getOutputStream();
- output.write("a=c&b=1".getBytes());
- InputStream input = conn.getInputStream();
- byte[] bytes = IOUtils.readFully(input, -1, false);
- System.out.println(new String(bytes));
URL 装载执行过程:
- URL 基于protocol 构建对应 UrlStreamHandler
- UrlStreamHandler.openConnection() 打开连接,返回URlConnection
- URlConnection 设置连接属性
- URlConnection 打开 outPutStream 写入参数
- URlConnection 打开 inPutStream读取结果
其中涉及对象构建逻辑如下:
URL==》URLStreamHandler==》URLConnection==》outPutStream、InputStream。
如果上述过程加一层静态代理即可监控这些对象所有的执行过程从而得到所需监控数据:
URL==》Proxy(URLStreamHandler)==》Proxy(URLConnection)==》Proxy(outPutStream)、Proxy(InputStream)。
- URL的类结构
怎么样才能加上这层代理呢?其关键方法在于 通过静态代理的方式。 java.net.URL#setURLStreamHandlerFactory。该方法允许用户自定义URL协议实现.
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
数据及分析的未来是增强分析?
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 2019年,在澳大利亚悉尼举行的Gartner数据与分析峰会上,Gartner将增强分析作为今年十大战略趋势、整体IT十大战略趋势之一推到了公众面前。在Gartner 最新发布的魔力象限报告中,明确指出增强型分析功能是 BI 产品发展的最重要、也是最显著的发展趋势之一。那么究竟什么是增强分析?为什么增强分析是趋势?怎么着手去建设增强分析能力? 什么是增强分析? 简单来说就是借助AI技术智能化、自动化的数据分析,挖掘数据价值,降低分析门槛,提升分析深度。 增强分析的实现过程可以简单概述为:通过对于未知的数据以及已知的问题,对现有的模型进行训练,最终罗列各种可能性和影响因素,从而帮助用户加速并开展有效的数据分析工作。 增强分析的终极目标为:智能和自动地完成数据准备和数据分析工作,交给机器大量原始数据,机器直接针对特定场景给出决策建议。 为什么增强分析是趋势? 人工智能和数据分析的概念在近年来已经炒得火热,可以说什么东西都要和大数据、AI扯上关系才显得高大上,那么究竟是什么理由让我们相信增强分析真的是下一个风口,而不是新...
- 下一篇
网络安全为何是业务增长的必备环节?这五点带你了解
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 十多年来,随着备受瞩目的网络犯罪案件的激增,网络安全行业呈指数级增长,这已不是什么秘密。将网络安全视为减轻网络风险的一个必要步骤,会带来很多机会。 组织领导者需要将网络安全视为能够加速增长的业务推动者。那些将网络安全视为保护数据的必要间接成本的公司,正在失去创新和增长的机会。 在这个持续的数字化颠覆的时代,那些利用网络安全来保护关键资产、赋予移动员工权力、使其IT基础设施现代化并简化合规流程的公司,将远远超过那些认为网络安全只是一种保护数据手段的竞争对手。 保护重要资产 在一个以数字为中心的世界里,保护关键资产比以往任何时候都更重要。这通常是公司和政府机构将资源投入网络安全的原因。 从用户和设备证书供应、移动设备管理、多因素身份验证(MFA)、基于角色的访问控制、特权帐户管理、单点登录(SSO)、企业和云身份管理等各个方面都发挥了作用。 向用户和非人实体发布强有力的身份认证,同时保护您在休息和传输中的数据,这对强大的网络安全态势至关重要。 无论是内部的还是基于云的,利用公共密钥基础设施(PKI)和完善的政策和实践将...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16