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

前提条件

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

背景信息

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

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

用 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. 重新启动应用。

常见问题

问:SkyWalking 正常连接服务端后,无法创建应用?

答:可能是由于链路追踪的数据未上报。您需要检查是否有链路追踪的数据上报,可以查看 {skywalking agent path}/logs/skywalking-api.log 内容。如果有数据上报,则显示如下图所示。pg_xtrace_skywalking

如果未产生数据上报,则可能原因是:开启采样、设置过滤或未触发生成链路追踪的请求。

更多信息