在使用链路追踪控制台追踪应用的链路数据之前,需要通过客户端将应用数据上报至链路追踪。本文介绍如何通过 Skywalking 客户端上报 Java 应用数据。

前提条件

  • 打开 SkyWalking 下载页面,下载 SkyWalking 6.X(6.1.0~6.4.0)版本(Windows / Linux),并将解压后的 Agent 文件夹放至 Java 进程有访问权限的目录。
  • 插件均放置在 /plugins 目录中。在启动阶段将新的插件放进该目录,即可令插件生效。将插件从该目录删除,即可令其失效。另外,日志文件默输出到 /logs 目录中。
警告 日志、插件和配置文件都在 Agent 文件夹中,请不要改变文件夹结构。

  1. 登录链路追踪控制台,在概览页面的 Region对应信息区域打开查看Token 开关。
  2. 客户端采集工具区域单击 SkyWalking
  3. 在下方表格中相应地域的相关信息列中,单击接入点和 agent.authentication 信息末尾的复制按钮。

Tracing Analysis Endpoint for SkyWalking

提示:如果应用部署于阿里云生产环境,则选择内网接入点,否则选择公网接入点。

背景信息

SkyWalking 是一款针对分布式系统的国产 APM(Application Performance Monitoring,应用性能监控)产品,主要针对微服务、Cloud Native 和容器化(Docker、Kubernetes、Mesos)架构的应用。SkyWalking 的核心是一个分布式追踪系统,目前已进入 Apache 孵化器。

要通过 SkyWalking 将 Java 应用数据上报至链路追踪控制台,首先需要完成埋点工作。SkyWalking 既支持自动探针(Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis 等),也支持手动埋点(OpenTracing)。本文介绍自动埋点方法。

不通过 Agent 而直接上报数据的原理如下图所示。

Report Tracing Data Directly

通过 Agent 上报数据的原理如下图所示。

Report Tracing Data By Agent

用 SkyWalking 为 Java 应用自动埋点

  1. 打开 config/agent.config,配置接入点和令牌。
    注意 请将 <endpoint><auth-token> 分别替换成控制台概览页面上 SkyWalking 客户端在相应地域的接入点和鉴权令牌。关于获取方法,请参见前提条件中的获取 SkyWalking 接入点和鉴权令牌
    collector.backend_service=<endpoint>
    agent.authentication=<auth-token>
  2. 采用以下方法之一配置应用名称(Service Name)。
    注意 请将 <ServiceName> 替换为您的应用名称。如果同时采用以下两种方法,则仅第二种方法(在启动命令行中添加参数)生效。
    • 打开 config/agent.config,配置应用名称。

      agent.service_name=<ServiceName>
    • 在应用程序的启动命令行中添加 -Dskywalking.agent.service_name 参数。

      java -javaagent:<skywalking-agent-path> -Dskywalking.agent.service_name=<ServiceName> -jar yourApp.jar
  3. 根据应用的运行环境,选择相应的方法来指定 SkyWalking Agent 的路径。
    说明 请将以下示例代码中的 <skywalking-agent-path> 替换为 Agent 文件夹中的 skywalking-agent.jar 的绝对路径。
    • Linux Tomcat 7 / Tomcat 8

      tomcat/bin/catalina.sh 第一行添加以下内容:

      CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
    • Windows Tomcat 7 / Tomcat 8

      tomcat/bin/catalina.bat 第一行添加以下内容:

      set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"
    • JAR File 或 Spring Boot

      在应用程序的启动命令行中添加 -javaagent 参数。

      注意 -javaagent 参数一定要在 -jar 参数之前。
      java -javaagent:<skywalking-agent-path> -jar yourApp.jar
    • Jetty

      {JETTY_HOME}/start.ini 配置文件中添加以下内容:

      --exec    # 去掉前面的井号取消注释
      -javaagent:<skywalking-agent-path>
  4. 重新启动应用。

更多信息