Skywalking应用安装与使用


一、简介

在我维护的平台中,检索一个用户的请求,是一件比较痛苦的事情。第一在耗时方面:从slb-->nginx-->java-dubbo,在nginx中虽然可以配置在日志中显示一个请求的耗时,但是这个耗时是总耗时,是一个请求在我的平台中各应用接口功能中耗时的总和,如果耗时过长无法排查到底是在哪一步产生的耗时;第二,一个请求的失败究竟是在哪一步,也需要通过翻阅日志来查找,并不能准确快速达定位到。

综上,就想找一个能协助我们准确定位的请求追踪的工具,目前发现有三款:cat、zepkin,skywalking。这三款链路监控的产品,最先是要尝试使用zepkin,后因为有侵入,需要各个应用修改应用,所以慢慢搁置了。

最近发现一个skywalking,发现这个对比下来不需要修改代码,只是在启动程序是添加一个--javaagent,所以就想尝试一下。

Skywalking的文档地址:Welcome | Apache SkyWalking

Skywalking的官网:http://skywalking.apache.org/

Skywalking的发布包下载路径:Downloads | Apache SkyWalking在这个地方选“Distribution”选项中的tar包。

借鉴简书某位小伙伴(作者:海涛_meteor,链接:https://www.jianshu.com/p/8b9aad4210c5)的对比图:

项目 Cat Zipkin Skywalking
调用链可视化
聚合报表 非常丰富 较丰富
服务依赖图 简单 简单
埋点方式 侵入式 侵入式 非侵入,字节码增强
VM监控指标
支持语言 java/.net 丰富 java/.net/Nodejs/php/go
存储机制 mysql(报表)、本地文件/HDFS(调用链) 内存、es、mysql等 H2、es
社区支持 主要在国内 国外主流 Apache支持
使用案例 美团、携程、陆金所 京东、阿里定制后不开源 华为、小米、当当、微众银行
APM
开发基础 eBay cal Google Dapper Google Dapper
是否支持webflux
Github stars(2019.12) 12.3K 12.2K 11.8K


二、安装Skywalking的server端

Skywalking的server端(习惯这么叫),其实包含两个部分:oap和webapp,其中oap进行数据收集,webapp用于展示。

1、安装
# 下载apache-skywalking-apm-es7 下载链接可以从下面三个找一个下载:
wget https://mirror-hk.koddos.net/apache/skywalking/8.5.0/apache-skywalking-apm-es7-8.5.0.tar.gz
wget https://apache.website-solution.net/skywalking/8.5.0/apache-skywalking-apm-es7-8.5.0.tar.gz
wget https://downloads.apache.org/skywalking/8.5.0/apache-skywalking-apm-es7-8.5.0.tar.gz
​
# 解压
tar xzf apache-skywalking-apm-es7-8.5.0.tar.gz -C /usr/local/
mv /usr/local/apache-skywalking-apm-es7 /usr/local/apache-skywalking-apm-es7-8.5.0
ln -s /usr/local/apache-skywalking-apm-es7-8.5.0 /usr/local/apache-skywalking-apm-es7
​


Skywalking的配置文件在目录中的config中,运行二进制文件在bin目录,agent是客户端,需要放到被监控的客户端的,webapp是展示页面的目录

2、修改配置

配置文件是config/application.yml,由于我是做测试展示,所以没有进行任何的配置文件修改。

正式使用的饿时候,是需要修改比如使用es存储数据、h2、mysql、tidb等,修改为集群比如zookeeper、nacos、etcd。

因为本次只是单机安装测试,所以暂不修改配置文件。

3、启动

application.yml和webapp.yaml中如果没有和其他应用端口的冲突,就可以启动了。如果有端口冲突,修改吧,尽量不要修改aop配置文件application.yml的端口。

# bin目录下
​
./startup.sh
# 或者
./oapService.sh 
./webappService.sh
​

启动完成后,可以通过ps或lsof命令来检测是否启动成功。


三、安装Skywalking的agent端

以java 应用为例来说明agent端的使用

agent需要将上面加压的目录中的agent目录全部copy到被监控主机上。

# copy agent目录
rsync -aP /usr/local/apache-skywalking-apm-es7/agent root@xx.xx.xx.xx:/usr/local/agent
# 或者
rsync -aP root@xx.xx.xx.xx:/usr/local/apache-skywalking-apm-es7/agent /usr/local/agent
​
# 被监控主机
cd /usr/local/agent
]# vim  config/agent.config
# namespace 命名空间的隔离,如果都是同一个命名空间此处应填写一致
agent.namespace=${SW_AGENT_NAMESPACE:xxxxxx}
# service_name,应用名称,必须要写上,以区分是
agent.service_name=${SW_AGENT_NAME:xxxxxx}
# 调用数据要传输个server端,oap端,所以一下配置是oap的地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:xx.xx.xx.xx:11800}
​
​
​

上述agent配置之后,在java启动中添加如下参数

#java -jar 启动时添加方式
java  -javaagent:/usr/local/agent/skywalking-agent.jar -jar xxxxx.jar
​
# war 包启动 以linux平台为例,windows也是修改同名不同后缀文件,在首行添加如下内容
]# vim tomcat/bin/catalina.sh 
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/agent/skywalking-agent.jar";export CATALINA_OPTS
# war添加好之后,重启tomcat即可。


四、检测监控数据

在启动java程序之后,就可以在Skywalking的server端webapp,去查看监控的数据了

比如 进入链接http://xx.xx.xx.xx:8080

可以查看到如下图:

image-20210513184508693.png

之后就是愉快的使用了,接入应用按照刚刚的三步骤来即可。

(完)