简介
SkyWalking:一个开源的可观察性平台,用于收集,分析,聚合和可视化来自服务和云本机基础结构的数据。SkyWalking提供了一种简便的方法来维护您的分布式系统的清晰视图,即使在整个云中也是如此。它是一种现代APM,专门为基于云的基于容器的分布式系统而设计。
网址:https://github.com/apache/skywalking
SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 等数据格式。
架构主要分几部分:
skywalking-collector:链路数据归集器
skywalking-ui:web可视化平台,用来展示落地的数据
skywalking-agent:探针,用来收集和发送数据到归集器
storage:存储,一般选择elasticsearch
系统环境
- Java:1.8
- Elasticsearch:6.8.13
- SkyWalking:8.3.0
- 操作系统:centos7
- IP:192.168.43.87
安装java和Elasticsearch6
网址:点击
SkyWalking
网址:https://skywalking.apache.org/downloads/
SkyWalking分不同存储版本,本文以ES6为例,
1 | cd /data |
如图:
agent:agent探针模块
bin:collector和web的启动脚本
config:collector模块配置目录
oap-libs:依赖
webapp: web项目
创建用户:
1 | #创建用户 |
赋予权限:
1 | chown -R skywalking:skywalking /data/apache-skywalking/ |
SkyWalking OAP(skywalking-collector)
修改 OAP 配置文件 config/application.yml:
1 | cd /data/apache-skywalking/config/ |
配置文件中默认选择的是H2数据源,切换成elasticsearch,
如下:
1 | ... |
如图:
启动OAP服务:
1 | su - skywalking |
日志输出以下信息,证明启动成功:
1 | SkyWalking OAP started successfully! |
防火墙配置,以 firewalld 为例,开放 12800 、 11800端口:
1 | systemctl status firewalld.service |
SkyWalking web
修改webapp/webapp.yml,将8080端口改为18080,
1 | cp /data/apache-skywalking/webapp/webapp.yml /data/apache-skywalking/webapp/webapp.yml_bak |
内容如下:
1 | server: |
保存后退出。
启动web服务:
1 | su - skywalking |
日志输出以下信息,证明启动成功:
1 | SkyWalking Web Application started successfully! |
防火墙配置,以 firewalld 为例,开放 18080 端口:
1 | systemctl status firewalld.service |
访问网站:http://ip:18080
1 | curl http://192.168.43.87:18080 |
如图:
SkyWalking agent
agent的使用需要将/agent整个目录拷贝到对应需要监控的服务器上,并修改/agent/config下的agent.config配置,
1 | # 不同的namespace会导致调用链路追踪中断 |
保存后退出。
agent.sample_n_per_3_secs配置说明:
在访问量较少时,链路全量收集不会对系统带来太大负担,能够完整的观测到系统的运行状况。但是在访问量较大时,全量的链路收集,对链路收集的客户端(agent探针)、服务端(SkyWalking OAP)、存储器(例如说 Elastcsearch)都会带来较大的性能开销,甚至会影响应用的正常运行。在访问量级较大的情况下,往往会选择抽样采样,只收集部分链路信息。SkyWalking Agent 在 agent/config/agent.config 配置文件中,定义了 agent.sample_n_per_3_secs 配置项,设置每 3 秒可收集的链路数据的数量。
调用方式请查看:
https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-skywalking-agent-CN.md
JAR file启动项目时,配置 JVM 参数,加入配置 agent 的相关参数,命令行如下:
1 | java -javaagent:/data/apache-skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=appName1 -Dskywalking.collector.backend_service=192.168.43.87:11800 -jar xxxx.jar |
idea开发时,以windows环境为例,配置如下:
选择XXXApplication.java(如:EurekaServerApplication.java),右击选中 More Run/Debug -> Modify Run Configuration,在VM options,输入:
1 | -javaagent:D:/java/other/agent/skywalking-agent.jar |
如图: