SkyWalking: Large-Scale Distributed Systems Tracing Infrastructure, 是一个对JAVA分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统。
- 核心理论为Google Dapper论文:Dapper, a Large-Scale Distributed Systems Tracing Infrastructure,英语有困难的同学可参考国内翻译
- 本分析系统能通过不修改或少量修改代码的模式,对现有的JAVA应用或J2EE应用进行监控和数据收集,并针对应用进场进行准实时告警。此外提供大量的调用性能分析功能,解决目前的监控系统主要监控进程、端口而非应用实际性能的问题。
- 支持国内常用的dubbo以及dubbox等常见RPC框架,支持应用异常的邮件告警
- skywalking-sdk层面提供的埋点API,同步阻塞访问时间小于100μs
- 通过byte-buddy,部分插件将通过动态字节码机制,避免代码侵入性,完成监控。动态代码模式埋点,同步阻塞访问时间应在200-300μs
- 提供一定的日志数据分析和展现能力,减少或者避免使用团队的二次开发
- SkyWalking is an open source Large-Scale Distributed Systems Tracing Infrastructure, also been known as APM(Application Performance Management) tool. SkyWalking provides a solution to help monitor and analysis a Large-Scale Distributed Systems.
- SkyWalking supports popular rpc frameworks, such as dubbo, dubbox, etc., supports email-alert when application occurs unexpected exception。
- SkyWalking's basic API, execution time of blocking saving span must less than 100μs.
- By using byte-buddy (Thanks to raphw), some plugins use dynamic byte code generation to avoid invasive codes. plugins API, execution time of blocking saving span must between 200μs and 300μs, including execution time of dynamic byte code.
- Provide trace log analysis and presentation capabilities, Reduce or avoid add-on functions development.
plugins | using config file | using dynamic byte code | coding | remarks |
---|---|---|---|---|
web-plugin | web.xml | - | - | - |
dubbo-plugin | dubbo/dubbox config file | - | - | - |
spring-plugin | spring config file | - | - | - |
jdbc-plugin | jdbc config file | - | - | - |
mysql-plugin | - | YES | - | - |
httpClient-4.x-plugin | - | YES | - | - |
httpClient-4.x-plugin-dubbox-rest-attachment | - | YES | - | required client-4.x-plugin |
jedis-2.x-plugin | - | YES | - | - |
- | - | YES | 需要使用新提供的httpClient包装对象 | |
- | - | YES | 需要使用新提供的httpClient包装对象 |
- 删除插件为最新版本不推荐使用的插件
- Mail to:[email protected]
- QQ群:392443393,请注明“Sky Walking交流”
- 谁在使用Sky Walking?点击进入。同时请各位使用者反馈下,都在哪些项目中使用。
- if you are using SkyWalking,Report to us please.
- 支持浏览器:Firefox/Chrome
- 如果您想自己编译最新版本,可参考《代码编译部署说明》
- Code compilation and deployment instructions
- 核心SDK通过skywalking bintray官网托管,可使用公网仓库https://jcenter.bintray.com/下载。
- use public repository https://jcenter.bintray.com/ to download sdk
- 无论试用哪种插件,都必须引入
- add dependencies to pom.xml
<!-- API日志输出,客户端可指定所需的log4j2版本 -->
<!-- 2.4.1为开发过程所选用版本 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.4.1</version>
</dependency>
<!-- 监控api,可监控插件不支持的调用 -->
<dependency>
<groupId>com.ai.cloud</groupId>
<artifactId>skywalking-api</artifactId>
<version>{lastest-version}</version>
</dependency>
- using new main class, instead of the original main class.
#原进程启动命令:
#original starup command
java com.company.product.Startup arg0 arg1
#全新的进程启动命令:
#new starup command
java com.ai.cloud.skywalking.plugin.TracingBootstrap com.company.product.Startup arg0 arg1
- 如果应用为Tomcat,需要修改tomcat相关启动文件:catalina.sh。推荐将项目转为tomcat-embeded模式。以下修改,仅作为参考。
- If you want to trace a tomcat application, you need to modify 'catalina.sh'
# add skywalking jar into CLASSPATH
CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/skywalking-api-{lastest-version}.jar:$CATALINA_HOME/lib/log4j-api.jar:$CATALINA_HOME/lib/log4j-core.jar
# use new main, samples in Tomcat8
exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-sourcepath "$CATALINA_HOME"/../../java \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
com.ai.cloud.skywalking.plugin.TracingBootstrap org.apache.catalina.startup.Bootstrap "$@" start
- Ref 《SDK Guides》
- 所有插件,已经通过skywalking bintray官网托管,可使用公网仓库https://jcenter.bintray.com/下载。
- 注意:插件不会引用所需的第三方组件(如Spring、dubbo、dubbox等),请自行引入所需的版本。
- 注册并登陆过skywalking-webui,创建应用。(一个用户代表一个逻辑集群,一个应用代表一个服务集群。如前后端应用应该设置两个应用,但归属一个用户)
- Sign up and login in skywalking-webui. Create application as needed.
- 下载授权文件,并在运行时环境中,将授权文件加入到CLASSPATH或LIB中
- download auth file(*.jar), and add the jar file to the CLASSPATH or lib.
export SKYWALKING_RUN=true
- 设置完成后,SkyWalking将随应用启动运行
- After set env, SkyWalking will be working, when application startup.