天天看点

搭建SkyWalking测试环境

SkyWalking整体上分为探针、后台、UI界面三大部分,探针使用字节码注入技术实现对服务数据的采集,然后将采集到的数据格式化后发送给后台,后台会把这些数据存储,目前支持的存储介质为Mysql,H2,ElasticSearch,最后UI界面访问后台接口,从而可以看到追踪的数据,大致如下:

搭建SkyWalking测试环境

下面介绍安装部署:

注:本次安装只有一台机器,ip为192.168.1.252,微服务、elasticsearch、skywalking都部署在本台机器,使用的是root用户。

一、下载安装包并解压

skywalking:

    https://www.apache.org/dyn/closer.cgi/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz

    

tar -zxvf apache-skywalking-apm-6.1.0.tar.gz

elasticserch:

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz

    

tar -zxvf elasticsearch-6.3.0.tar.gz

二、启动elasticsearch

  • elasticsearch默认不允许使用root启动服务,如果当前用户是root,则需要新建一个用户,我这里新建一个用户es:
adduser es
chown -R es elasticsearch-6.3.0
su es
cd elasticsearch-6.3.0
           
  • 配置除了localhost之外的其他机器访问elasticsearch,在config/elasticsearch.yml文件中追加如下内容:
network.host: 0.0.0.0
           

生产环境建议将0.0.0.0调整为具体的ip

  • 启动:
cd elasticsearch-6.3.0/bin
./elasticsearch
           

启动的时候可能会报一些错误例如:每个进程最大同时打开文件数太小、最大线程个数太低等,我这里做了如下修改:

/etc/security/limits.conf

文件中追加如下内容:

* soft nproc 4096
* hard nproc 4096
           

/etc/sysctl.conf

文件中追加如下内容:

vm.max_map_count=262144
           

然后执行

sysctl -p

命令使配置生效,然后重新启动elasticsearch,当然,也可以选择后台启动:

./elasticsearch -d

  • 打开浏览器访问:http://192.168.1.252:9200/ ,如果可以看到有elasticsearch的字符串信息返回,则代表启动成功。

三、启动skywalking

进入skywalking根目录,执行

ls

命令,结果如下:

agent  bin  config  LICENSE  licenses  NOTICE  oap-libs  README.txt  webapp
           

agent:可以理解为文章开头的探针

config:配置skywalking后台的一些参数

bin:一些常见的脚本

oap-libs:后台需要的一些包

webapp:应该是UI界面的一些东西

  • 配置探针:为了实现端点过滤功能,将apm-trace-ignore-plugin-6.1.0.jar从agent/optional-plugins目录下复制到agent/plugins下:
cp agent/optional-plugins/apm-trace-ignore-plugin-6.1.0.jar agent/plugins/
           
  • 配置后台:将后台默认的H2存储介质修改为elasticsearch,编辑config/application.yml文件,将H2部分注释掉,打开elasticsearch的配置:

    Esc进入命令行模式

显示行号:
:set number

注释掉H2:
:72,76s/^/#/g

打开elasticsearch的配置
:58,71s/^#//g
           

实际行号要看具体文件,另外由于这里skywalking和elasticsearch部署在同一台机器,所以elasticsearch采用的是默认ip和端口,具体怎么配置要以实际情况考量

  • 启动后台和UI界面:
cd bin
./startup.sh
           

此时打开elasticsearch的日志文件:

logs/elasticsearch.log

,可以看到skywalking在创建一些元数据文件

  • 打开浏览器访问:http://192.168.1.252:8080/ ,如果看到skywalking的界面,则启动成功,如果需要输入用户名密码,默认都是admin

四、启动自己的服务

nohup java -javaagent:/&&&/agent/skywalking-agent.jar -Dskywalking.agent.service_name=servicea -Dskywalking.trace.ignore_path=/eureka/** -jar servicea.jar servicea.log 1>log/servicea.log 2>&1 &
           

说明:

  • -javaagent:指明了要在自己的服务中使用哪个文件进行字节码注入,&&&表示skywalking的根目录
  • -Dskywalking.agent.service_name=指明了当前服务的名称为servicea,用以在skywalking的UI界面的服务中展示
  • -Dskywalking.trace.ignore_path=使用Ant风格指明了不需要追踪的endPoint,如果有多个,可以使用英文逗号隔开

五、存在的问题

  • UI界面有时会卡死,原因是后台报了ID can`t be null的异常,可能是由于浏览器缓存导致的,这是目前版本存在的一个问题,但是整体上不影响服务的运行,重新打开一个页面即可
  • 目前是多个自己的服务启动时执行了同一个skywalking-agent.jar,尚不清楚这样是否是最佳实践或者是否存在某些问题。

继续阅读