一.简介
SkyWalking用于应用性能监控、分布式链路跟踪、诊断:
参考连接如下:
https://github.com/apache/skywalking
https://skywalking.apache.org/docs/
二.示例
通过官网连接进入下载页面:https://archive.apache.org/dist/skywalking/ 选择合适版本下载安装:
apache-skywalking-apm-es7-8.1.0.tar.gz 名字中有es的为已经集成es,没有es名字的没有es的相关jar包。
安装目录/agent 为java 通过-javaagent参数指定的agent jar(实现原理通过javaagent 和 asm字节码指令技术)。
- bin/startup.sh 命令启动oap server (默认使用h2内嵌数据库保存指标数据)和webapp:
8080端口访问启动的webapp:
- agent/config/agent.config 为agent配置文件:用于指定应用名、oap server 等信息
配置应用启动环境变量:
export SW_AGENT_NAME=svc-gateway
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=ip:11800
启动java应用:
java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar xxxx.jar
访问应用接口后刷新SkyWalking:
SkyWalking服务端异常也不会影响微服务的正常使用
数据持久化
SkyWalking 默认数据保存在H2中,如果重启服务将导致数据丢失,可通过配置把数据持久化到elasticsearch、mysql等:
修改配置文件中mysql配置项信息即可:
SkyWalking 集群
- 选择集群配置方式:如zookeeper、nacos作为集群提供服务注册。如下是SkyWalking config/application.yml 配置文件的截取信息:
cluster:
selector: ${SW_CLUSTER:standalone}
standalone:
# Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
# library the oap-libs folder with your ZooKeeper 3.4.x library.
zookeeper:
nameSpace: ${SW_NAMESPACE:""}
hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
# Retry Policy
baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
# Enable ACL
enableACL: ${SW_ZK_ENABLE_ACL:false} # disable ACL in default
schema: ${SW_ZK_SCHEMA:digest} # only support digest schema
expression: ${SW_ZK_EXPRESSION:skywalking:skywalking}
kubernetes:
namespace: ${SW_CLUSTER_K8S_NAMESPACE:default}
labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
consul:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
# Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
aclToken: ${SW_CLUSTER_CONSUL_ACLTOKEN:""}
etcd:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
# etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379
hostPort: ${SW_CLUSTER_ETCD_HOST_PORT:localhost:2379}
nacos:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}
# Nacos Configuration namespace
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
- SkyWalking web控制台配置多个OAP 服务地址信息,通过Nginx代理web即可。如下为 webapp/webapp.yml 文件的截取信息:
collector:
path: /graphql
ribbon:
ReadTimeout: 10000
# Point to all backend's restHost:restPort, split by ,
listOfServers: 127.0.0.1:12800
- 被追踪的应用添加多个SkyWalking 服务地址: agent/config/agent.config 配置OAP多个服务地址或环境变量指定多个服务地址
环境变量 SW_AGENT_COLLECTOR_BACKEND_SERVICES 配置多个服务地址即可。