skywalking

聊聊skywalking的mysql-plugin

删除回忆录丶 提交于 2020-03-15 10:24:45
序 本文主要研究一下skywalking的mysql-plugin skywalking-plugin.def skywalking-6.6.0/apm-sniffer/apm-sdk-plugin/mysql-8.x-plugin/src/main/resources/skywalking-plugin.def mysql-8.x=org.apache.skywalking.apm.plugin.jdbc.mysql.v8.define.ConnectionImplCreateInstrumentation mysql-8.x=org.apache.skywalking.apm.plugin.jdbc.mysql.v8.define.ConnectionInstrumentation mysql-8.x=org.apache.skywalking.apm.plugin.jdbc.mysql.v8.define.CallableInstrumentation mysql-8.x=org.apache.skywalking.apm.plugin.jdbc.mysql.v8.define.PreparedStatementInstrumentation mysql-8.x=org.apache.skywalking.apm.plugin.jdbc.mysql.v8.define

聊聊skywalking的rocketmq-plugin

心已入冬 提交于 2020-03-12 22:31:19
序 本文主要研究一下skywalking的rocketmq-plugin skywalking-plugin.def skywalking-6.6.0/apm-sniffer/apm-sdk-plugin/rocketMQ-4.x-plugin/src/main/resources/skywalking-plugin.def rocketMQ-4.x=org.apache.skywalking.apm.plugin.rocketMQ.v4.define.ConsumeMessageConcurrentlyInstrumentation rocketMQ-4.x=org.apache.skywalking.apm.plugin.rocketMQ.v4.define.ConsumeMessageOrderlyInstrumentation rocketMQ-4.x=org.apache.skywalking.apm.plugin.rocketMQ.v4.define.MQClientAPIImplInstrumentation rocketMQ-4.x=org.apache.skywalking.apm.plugin.rocketMQ.v4.define.SendCallbackInstrumentation skywalking的rocketmq-plugin定义了4个增强

skywalking 5.X 分布式链路跟踪 使用笔记

和自甴很熟 提交于 2020-03-08 10:54:19
skywalking 简介(链路跟踪与分析) 随着业务越来越复杂,企业应用也进入了分布式服务化的阶段,随着模块的不断增多,一次请求可能会涉及到十几个甚至几十个服务的协同处理,那么如何准确快速的定位到线上故障和性能瓶颈,便成为我们不得不面对的棘手问题,传统的日志监控等方式无法很好达到跟踪调用,排查问题等需求。在谷歌论文《 Dapper,大规模分布式系统的跟踪系统》的指导下,许多优秀的APM应运而生。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果您希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。详细介绍见 opentracing文档中文版。 Skywalking是一款APM(应用程序性能监视器),尤其适用于微服务,Cloud Native和基于容器的架构系统。也称为分布式跟踪系统。它提供了一种自动检测应用程序的方法:无需更改目标应用程序的任何源代码; 以及具有高效流媒体模块的收集器。 针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native和容器化(Docker,

聊聊skywalking的spring-webflux-plugin

给你一囗甜甜゛ 提交于 2020-03-05 21:59:38
序 本文主要研究一下skywalking的spring-webflux-plugin DispatcherHandlerInstrumentation skywalking-6.6.0/apm-sniffer/optional-plugins/optional-spring-plugins/spring-webflux-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/define/DispatcherHandlerInstrumentation.java public class DispatcherHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { @Override public ConstructorInterceptPoint[] getConstructorsInterceptPoints() { return new ConstructorInterceptPoint[0]; } @Override public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { return new

聊聊skywalking的AbstractPlatformTransactionManagerInstrumentation

前提是你 提交于 2020-03-04 21:06:23
序 本文主要研究一下skywalking的AbstractPlatformTransactionManagerInstrumentation AbstractPlatformTransactionManagerInstrumentation skywalking-6.6.0/apm-sniffer/optional-plugins/optional-spring-plugins/spring-tx-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/transaction/define/AbstractPlatformTransactionManagerInstrumentation.java public class AbstractPlatformTransactionManagerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { @Override public ConstructorInterceptPoint[] getConstructorsInterceptPoints() { return new ConstructorInterceptPoint[0]; } @Override public

聊聊skywalking的MemoryProvider

爷,独闯天下 提交于 2020-02-28 05:37:15
序 本文主要研究一下skywalking的MemoryProvider MemoryProvider skywalking-6.6.0/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/memory/MemoryProvider.java public enum MemoryProvider { INSTANCE; private final MemoryMXBean memoryMXBean; MemoryProvider() { this.memoryMXBean = ManagementFactory.getMemoryMXBean(); } public List<Memory> getMemoryMetricList() { List<Memory> memoryList = new LinkedList<Memory>(); MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage(); Memory.Builder heapMemoryBuilder = Memory.newBuilder(); heapMemoryBuilder.setIsHeap(true);

Skywalking插件开发指南

醉酒当歌 提交于 2020-02-27 14:46:08
此文章翻译了skywalking官方的 Java-Plugin-Development-Guide.md 这篇文档主要介绍理解,开发和贡献插件 概念 Span(跨度) 在分布式的链路追踪系统里面Span是一个重要而又普遍的概念。我们可以从 Google Dapper Paper 和 OpenTracing 学习span的相关知识 Skywalking从2017年就支持OpenTracing和OpenTracing-Java API。我们的Span概念和OpenTracing以及google的论文里面的概念非常相思。而且我们也扩展了Span。 这里有三中类型的Span 1.1 EntrySpan EntrySpan代表了一个服务提供者,也就是服务端。作为一个APM系统,我们关注应用服务器。所以几乎所有的服务和MQ的消费端都是EntrySpan。 1.2 LocalSpan LocalSpan可以理解为一个和远程服务无关的普通的Java方法,且这个Java方法即不是MQ的生产者,也不是消费者,更不是一个HTTP服务的生产者和消费者。 1.3 ExitSpan ExitSpan代表服务的客户端或者MQ的生产者,在Skywalking的早期版本里面名字是LeafSpan。例如通过JDBC访问DB,从Redis或者Memcached读取数据都被归类为ExitSpan。

Skywalking安装配置

不羁的心 提交于 2020-02-27 10:08:50
从官网下载skywalking安装包,包括两部分,一个是skywalking,一个是elasticsearch skywalking下载地址: http://skywalking.apache.org/downloads/ 我们下载linux版本的最新版: https://www.apache.org/dyn/closer.cgi/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz https://www.apache.org/dyn/closer.cgi/skywalking/6.6.0/apache-skywalking-apm-es7-6.6.0.tar.gz apache-skywalking-apm-6.6.0.tar.gz apache-skywalking-apm-es7-6.6.0.tar.gz 解压 修改:apache-skywalking-apm-bin-es7/webapp/webapp.yml 安装ElK 安装Elasticsearch elasticsearch相关软件下载中心: https://elasticsearch.cn/download/ 下载 elasticsearch kibana 放置到/usr/local/elk目录 创建es用户 useradd es -b /home/es -d

00-02、面试前或许需要准备的知识

余生长醉 提交于 2020-02-27 07:31:41
在面试前,以及在工作中(我常说,要以随时准备面试的状态准备着😃),作为一个Java开发,应该需要准备一些技能和知识,以提升自己并拿下面试。不知道的一定要及时深入地补上,并记下笔记,最好是写成博客。 对于我们很多开发的人来说,最近工作中使用的技术可能会相对熟悉;而没用的或是用过了后来不怎么用的,自然的就渐渐地忘了(毕竟人脑这个内存还是有限的,成本也很高,不用的就放到外存吧),因此深入地学习并记录以便后续我们更容易复习。 其实我们也都知道,现在面试要求都很高,有句话怎么说来着?“面试造航母,工作拧螺丝”,这从侧面说出了一个问题,如果你不会造航母,连拧螺丝的机会都得不了(当然有创业能力的人除外);当然,也从另一个侧面说明了(某一层次的)开发人员的数量很多,催生出了一些畸形行业现象。我们说的封装理念(对使用者透明)哪里去了?框架说好的要让开发更专注核心业务的开发哪里去了?为什么要去了解很多东西的原理、源码实现等等,一个Java开发还要了解运维、容器等等? 我想这是有道理的,开源在这个行业做得很好,既然是Free Software,那么你可自由地修改,有了问题不会有专门的商业公司为你服务,那么只能自己去解决,所以还得知道源码。都说程序员是目前 仅存的纯手工工种 ,但也是自动化程度很高的工作,都是计算机😃。运维和开发已然交织,因此什么构建、容器、架构等等都得知道。既然选择了就坚持下去吧。

聊聊skywalking的CPUProvider

陌路散爱 提交于 2020-02-26 19:23:21
序 本文主要研究一下skywalking的CPUProvider CPUProvider skywalking-6.6.0/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/jvm/cpu/CPUProvider.java public enum CPUProvider { INSTANCE; private CPUMetricsAccessor cpuMetricsAccessor; CPUProvider() { int processorNum = ProcessorUtil.getNumberOfProcessors(); try { this.cpuMetricsAccessor = (CPUMetricsAccessor)CPUProvider.class.getClassLoader().loadClass("org.apache.skywalking.apm.agent.core.jvm.cpu.SunCpuAccessor") .getConstructor(int.class).newInstance(processorNum); } catch (Exception e) { this.cpuMetricsAccessor = new