在分布式系统中会出现服务间的相互调用,且服务数量众多。一般会出现如下异常
下载地址:https://skywalking.apache.org/downloads/
中文文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/
整体架构如下:
提供功能:
分布式链路追踪和上下文传输
应用、实例、服务性能分析
sh
是Linux启动脚本,bat
是Windows启动脚本。oapService
: 后台程序启动脚本startup
: 后台程序和UI程序启动脚本webappService
: UI程序启动脚本后台服务:主要功能收集来自Agent发过来的数据,根据
可观测性分析平台(Observability Analysis Platform,简称 OAP)
修改主要配置文件:apache-skywalking-apm-bin/config/application.yml
集群模式默认是:standalone单例,可以通过修改selector:中的模式。
模式支持:standalone、zookeeper、kubernetes、consul、etcd、nacos
selector:表示选取哪个作为数据存储介质,默认的是h2。可以根据自己实际需求来进行选择。
支持的存储介质:elasticsearch、h2、mysql、tidb、influxdb、postgresql、iotdb、zipkin-elasticsearch。
设置HTTP端口:
通过HTTP连接OAP后台服务设置的端口
对应是可视化界面
查询数据的端口
restPort: ${SW_CORE_REST_PORT:12800}
设置gRPC端口:
通过gRPC连接OAP后台服务设置的端口
对应是Agent
传输数据到服务器的端口
gRPCPort: ${SW_CORE_GRPC_PORT:11800}
可视化界面,通过连接OAP(后台服务)来查询数据,展示在可视化界面中。
所在文件路径:apache-skywalking-apm-bin/webapp中
配置文件:webapp.yml
修改启动端口:
server:
port: 18080
#port: 8080 默认端口
修改OAP链接地址:
spring:
cloud:
gateway:
routes:
- id: oap-route
uri: lb://oap-service
predicates:
- Path=/graphql/**
discovery:
client:
simple:
instances:
oap-service: #oap后台服务地址,对应restPort
- uri: http://127.0.0.1:12800
# - uri: http://:
# - uri: http://:
使用了Java Agent技术,使得在使用的时候做到代码无侵入。相当于在对应的程序外面套了一层如AOP功能类似,只是它作用于的是JVM层级。
使用 -javaagent 命令行参数在运行期间对代码进行操作, 操作 一词表示修改并注入用户代码.
Linux系统Tomcat版本:Tomcat 7, Tomcat 8, Tomcat 9
修改tomcat/bin/catalina.sh
的第一行如下:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
Windows系统Tomcat版本:Tomcat 7, Tomcat 8, Tomcat 9
修改tomcat/bin/catalina.bat
的第一行如下:
set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
当应用是jar包,启动
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
修改jetty.sh,在启动应用程序的命令行中添加-javaagent参数。如:
export JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
修改文件路径:skywalking-agent/config/agent.config
# 设置应用名称, 如:订单服务
# agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
agent.service_name=${SW_AGENT_NAME:ORDER}
# 后台服务地址,默认是127.0.0.1:11800
# 传输方式是gRPC
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}