Apache Skywalking + ElasticSearch 服务搭建及微服务链路追踪应用

一、Apache Skywalking是什么

专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM(Application Performance Monitor)系统。Apache Skywalking(Incubator)通过加载探针的方式收集应用调用链路信息,并对采集的调用链路信息进行分析,生成应用间关系和服务间关系以及服务指标。SkyWalking的Agent端使用推送模式,OAP服务器端使用拉取模式。

Apache Skywalking (Incubating)目前支持多种语言,其中包括Java,.Net Core,Node.js和Go语言。其整体架构如下:

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控制台,查看链路等等。

二、安装

1.先安装存储,本次选择了elasticSearch 7.6作为数据存储,除此之外skywalking还支持h2,mysql等。

安装详情请参考文章:ElasticSearch 7安装部署指南 版本是elasticsearch-7.6.1

2.然后我们就可以安装skywalking啦。

官网:
http://skywalking.apache.org/downloads/

历史版本下载地址:
https://archive.apache.org/dist/skywalking/

本次使用的版本为下图所示红框:这种带esX的包增加了对 Elasticsearch X的版本支持

当然这个下载速度是比较慢的,推荐另一个下载地址:https://mirror.bit.edu.cn/apache/skywalking/8.1.0/apache-skywalking-apm-es7-8.1.0.tar.gz 

(1)首先将下载的安装包解压到指定目录:

tar -zxvf apache-skywalking-apm-es7-8.1.0.tar.gz  -C /opt/

(2)修改 skywalking OAP 配置文件(此步比较关键)

cd config
vim application.yml

集群设置,因测试环境使用的单机模式,因此这个部分没有改动

存储器设置,首先设置要使用的storage存储器及版本,本次是"elasticsearch7",如果是elasticsearch6,这里则需要设置成"elasticsearch"

然后在对应的存储器elasticsearch7相关设置下进行namespace设置,这个namespace可以在之前安装elasticSearch时就事先设置好,可通过命令:curl 'http://elastic服务IP:9200' 查询cluster_name

如下图:

而cluster_name默认值是"elasticsearch",想要个性化配置,需要对参数$ELASTICSEARCH/config/elasticsearch.yml中的cluster.name进行设置

(3)启动skywalking

/opt/apache-skywalking-apm-bin-es7/bin/startup.sh

后台打印出以下信息说明启动成功 

访问 http://skywalking服务IP:8080 看一下UI界面,当然此时还没有下图中的服务链路,界面应该是空的,因为我们还没有进行探针设置。

(4)SkyWalking Agent 设置

将 apache-skywalking-apm-bin/agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agent。本次测试的例子是spring-boot+dubbo的应用。该微服务环境的搭建在本人另一篇文章(有兴趣可以看看:https://blog.csdn.net/lihuifen2011/article/details/105099688?spm=1001.2014.3001.5501)进行了详细的描述,这里不再赘述。

现在我们只需要进行如下几步即可实现微服务的监控了:

(4.1)首先复制agent到要加入探针的微服务的某一路径下。因为我们是测试环境,微服务与skywalking在同一台机器上,我偷了个懒,这里直接在同级目录下复制了agent文件

生产环境需要将agent文件夹复制到微服务所在机器合适的路径下。

cd /opt/apache-skywalking-apm-bin-es7/
cp -r agent agent_dubbo_provider

 (4.2)设置微服务名。这将作为监控中该服务的识别名字出现在skywalking前台中

具体位置是在agent文件目录的config文件夹下修改agent.config文件中以下参数

#对agent.config文件进行修改
vim agent_dubbo_provider/config/agent.config

(4.3)配置skywalking服务验证token 

  需要开启agent.config文件中另一个参数项,配了这个参数可以防止未知的agent被监测和链路跟踪

agent.authentication = ${SW_AGENT_AUTHENTICATION:token值}

同样的需要将此token值配置到skywalking oap服务中,具体位置是:

apache-skywalking-apm-bin/config/application.yml里面,receiver-sharing-serverauthentication

receiver-sharing-server:
  default:
    authentication: ${SW_AUTHENTICATION:"token值"}

 全部配置完成后别忘了重启skywalking服务

(4.4)启动微服务

java -javaagent:/opt/apache-skywalking-apm-bin-es7/agent_dubbo_provider/skywalking-agent.jar -jar /opt/dubbo-provider.jar &

微服务启动后先发起微服务间的请求,然后去skywalking控制台看一下效果

以下是微服务与用户间的拓扑结构,非常直观

(5)skywalking配置修改后如何重启服务

列出名字带skywalking的进程,找到带oap的这个就是skywalking服务,kill -9 进程号。然后再参照以下命令启动skywalking

/opt/apache-skywalking-apm-bin-es7/bin/startup.sh

以上就是整个服务搭建过程及应用的说明。在这个过程中,本人也参考了很多大神的文章,在这里也记录一下:

Skywalking安装:
https://www.cnblogs.com/xiaochangwei/p/SkyWalking-install.html
http://www.iocoder.cn/SkyWalking/install/
https://blog.csdn.net/seashouwang/article/details/111156985
dubbo实践:
1.dubbo例子部署及agent集成
https://blog.csdn.net/weixin_42528266/article/details/107841478
http://www.iocoder.cn/SkyWalking/How-do-I-use-Skywalking-to-do-tracking-for-the-Dubbo-service/
https://blog.csdn.net/dyfangdy/article/details/100700400
2.增加了手动追踪某api的方法,需要写代码
https://blog.csdn.net/weixin_37910453/article/details/90250352
3.Skywalking 怎么监控微服务以及性能分析怎么看,偏重于UI的使用
https://skywalking.apache.org/zh/2019-01-03-monitor-microservice/
https://blog.csdn.net/qq_31587795/article/details/108233526

(6)对于微服务增加了接口访问权鉴的情况,经验证,不会影响skywalking进行链路追踪。

如何增加基于Filter的微服务接口访问权鉴可以参考这篇文章:https://www.jianshu.com/p/94f145335e5f

(7)关于skywalking用户登录的实现

 skywalking从1.6开始就将用户登录认证这一步移除了,考虑到生产环境的安全需要,本次将采用其他方法实现用户认证后访问UI界面的目的。

主要有以下几种方式:

  • skywalking反编译改动源码并集成CAS登录认证:涉及到对skywalking反编译及源码改动,略复杂。
  • nginx+htpasswd实现登录认证:比较简便,本次采用该方法。

(7.1)首先是安装nginx,这里不再赘述,注意:因htpasswd使用限制,nginx必须安装到skywalking 服务端。

(7.2)linux安装htpasswd指令并新增用户名及密码。参考该篇文章https://blog.csdn.net/endzhi/article/details/88931176

(7.3)nginx上的配置文件需要修改,具体可参照以下截图:

配置passwd.db文件路径,及登录弹出窗提示信息,并需要指定需要认证的请求及跳转的skywalking web路径

然后执行重新加载nginx配置文件的指令

 ./nginx -s reload

访问http://skywalking服务端IP/skywalking 可看到以下登录界面,由此实现用户登录认证的目的。

htpasswd还可以修改用户密码,删除用户等,密码也进行了MD5加密,比较安全。关于htpasswd的命令可参照这篇文章:https://ipcmen.com/htpasswd

skywalking ui的各种分析指标的解读:https://roombox.xdf.cn/blog/graphical-use-of-skywalking-ui/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值