Skywalking之Java Agent
1. 部署war包
1. 上传apache-skywalking-java-agent-8.15.0.tgz
2. 解压目录到tomcat目录下
tar -zxvf apache-skywalking-java-agent-8.15.0.tgz -C /usr/local/tomcat/
3. 修改/usr/local/tomcat/skywalking-agent/config/agent.config
# The group name is optional only.
agent.service_name=${SW_AGENT_NAME:tomcat-backapi}
# The agent namespace
agent.namespace=${SW_AGENT_NAMESPACE:前台}
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.2.166:11800}
4. 修改/usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/tomcat/tomcat-backapi/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
5. 重启tomcat
6. 登录skywalking管理界面,查看对应的服务
2. 部署jar包
1. 前三步与前面一致
2. 第四步开始启动jar时,配置对应的参数:
java -javaagent:/usr/local/tomcat-fms/skywalking-agent/skywalking-agent.jar -jar -Duser.timezone=GMT+8 /usr/local/tomcat-fms/zhen-fms-2.0.0.jar
3. 登录skywalking管理界面,查看对应的服务
3. 部署Jetty
1. 前三步与前面一致
2. 启动参数
export JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
3. 登录skywalking管理界面,查看对应的服务
4. Agent运行场景
1. Docker
FROM apache/skywalking-java-agent:8.5.0-jdk8
# ... build your java application
2. Kubernetes
apiVersion: v1
kind: Pod
metadata:
name: agent-as-sidecar
spec:
restartPolicy: Never
volumes:
- name: skywalking-agent
emptyDir: { }
initContainers:
- name: agent-container
image: apache/skywalking-java-agent:8.7.0-alpine
volumeMounts:
- name: skywalking-agent
mountPath: /agent
command: [ "/bin/sh" ]
args: [ "-c", "cp -R /skywalking/agent /agent/" ]
containers:
- name: app-container
image: springio/gs-spring-boot-docker
volumeMounts:
- name: skywalking-agent
mountPath: /skywalking
env:
- name: JAVA_TOOL_OPTIONS
value: "-javaagent:/skywalking/agent/skywalking-agent.jar"
5. Agent目录结构介绍

1. skywalking-agent.jar
这是skywalking的javaagent入口,也是核心逻辑包
2. plugins
存放skywalking所支持的中间件,框架和库
3. optional-plugins
存放skywalking可选的中间件,框架和库,如果要使用需要手工移动到plugins目录下
1. trace-ignore-plugin
特点: 过滤被忽略的Endpoint
模式: /path/*,/path/**,/path/?
配置: 拷贝pm-trace-ignore-plugin-x.jar到agent/plugins,重启agent
添加路径: 在agent/config目录下,创建一个文件名为apm-trace-ignore-plugin.config,内容如下:
trace.ignore_path=/your/path/1/**,/your/path/2/**
4. config
存放agent的配置文件agent.config
5. activations
存放用于激活skywalking的应用工具包的插件包
6. Agent配置参数
agent.service_name=${SW_AGENT_NAME:jar-fms} #服务名称
agent.namespace=${SW_AGENT_NAMESPACE:后台} #命名空间
agent.cluster=${SW_AGENT_CLUSTER:}
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1} #表示每3秒采集的链路数据,负数或0代表不采集
agent.authentication=${SW_AGENT_AUTHENTICATION:}
agent.trace_segment_ref_limit_per_span=${SW_TRACE_SEGMENT_LIMIT:500}
agent.span_limit_per_segment=${SW_AGENT_SPAN_LIMIT:300}
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.2.166:11800} #指定后端地址
collector.grpc_upstream_timeout=${SW_AGENT_COLLECTOR_GRPC_UPSTREAM_TIMEOUT:30}
collector.get_profile_task_interval=${SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL:20}
collector.get_agent_dynamic_config_interval=${SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL:20}
collector.is_resolve_dns_periodically=${SW_AGENT_COLLECTOR_IS_RESOLVE_DNS_PERIODICALLY:false}
logging.level=${SW_LOGGING_LEVEL:INFO}
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
logging.output=${SW_LOGGING_OUTPUT:FILE}
logging.dir=${SW_LOGGING_DIR:}
logging.resolver=${SW_LOGGING_RESOLVER:PATTERN}
logging.pattern=${SW_LOGGING_PATTERN:%level %timestamp %thread %class : %msg %throwable}
logging.max_file_size=${SW_LOGGING_MAX_FILE_SIZE:314572800}
logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES:-1}
jvm.buffer_size=${SW_JVM_BUFFER_SIZE:600}
jvm.metrics_collect_period=${SW_JVM_METRICS_COLLECT_PERIOD:1}
buffer.channel_size=${SW_BUFFER_CHANNEL_SIZE:5}
buffer.buffer_size=${SW_BUFFER_BUFFER_SIZE:300}
7. 高级特性
1. 配置覆盖
一个真实的物理机上可能部署了多个不同业务的实例,这些实例基本上配置都是一致的,只有个别不一致,这个就需要配置覆盖来实现。
三种配置覆盖方式
1. 系统属性
使用skywalking+配置名
例子: java -jar -Dskywalking.agent.service_name=skywalking-demo
2. 探针参数
在JVM参数后面增加参数配置
例子: -javaagent=/path/skywalking-agent.jar=agent.service_name=skywalking-demo,logging.level=debug
如果选项和选项值包含,或=,需要使用引号
3. 系统环境变量
agent.service_name=${SW_AGENT_NAME:Your_application_name}
如果环境变量中,已经定义了SW_AGENT_NAME,那么就会使用环境变量的值;如果没有,就使用Your_application_name
覆盖优先级
探针参数>系统属性>系统环境变量>配置文件
2. 自定义配置文件
1. 如何使用
java -jar -Dskywalking_config=/path/to/agent.config
指定你所定义的配置文件,而不是从agent默认位置找
2. 覆盖优先级
指定的agent配置文件>默认配置文件
3. 客户端采样
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1} 负数或0代表不采样
4. TLS
1. 开启TLS
下载skywalking的脚本 https://github.com/apache/skywalking/blob/master/tools/TLS/tls_key_generate.sh
使用这个脚本生成ca.crt,server.crt server.pem
2. 开启并配置TLS
agent端:
将ca.crt放到agent的ca目录下
服务端:
将application.yml/core/default的TLS配置如下:
gRPCSslEnabled: ${SW_CORE_GRPC_SSL_ENABLED:true}
gRPCSslKeyPath: ${SW_CORE_GRPC_SSL_KEY_PATH:"/path/to/server.pem"}
gRPCSslCertChainPath: ${SW_CORE_GRPC_SSL_CERT_CHAIN_PATH:"/path/to/server.crt"}
gRPCSslTrustedCAPath: ${SW_CORE_GRPC_SSL_TRUSTED_CA_PATH:"/path/to/ca.crt"}
5. 命名空间
用于追踪监控系统的隔离
在配置文件中设置

浙公网安备 33010602011771号