博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式链路追踪---skywalking从入门到应用全系列教程
阅读量:2490 次
发布时间:2019-05-11

本文共 4754 字,大约阅读时间需要 15 分钟。

什么是skywalking?

SkyWalking是一个开源的可观察性平台,用于收集,分析,聚合和可视化来自本地或者云服务中的数据。即使在整个云环境中,SkyWalking也能提供一种简便的方法来维护您的分布式系统的清晰视图。它是一个现代的APM(Application Performance Monitor 应用性能监测软件),专门为基于云、容器的分布式系统而设计。

为什么要选择skywalking?

SkyWalking提供了用于在许多不同情况下观察和监视分布式系统的解决方案,并通过agent方式,做到高性能、低损耗、无侵入性,与类似的功能组件如:Zipkin、Pinpoint、CAT相比,skywalking无论是从性能还是社区活跃度方面考虑,都具有一定的优势。

skywalking监控维度

skywalking从三个维度提供可观察项功能,分别是:服务,服务实例,端点

  • 服务。表示一组/一组工作负载,这些工作负载为传入请求提供相同的行为。
  • 服务实例。服务组中的每个单独工作负载都称为实例。像pods在Kubernetes中一样,它不必是单个OS进程,但是,如果您使用agent代理,则实例实际上是一个真正的OS进程。
  • 端点。服务中用于传入请求的路径,例如HTTP URI路径或gRPC服务类+方法签名。

skywalking架构

从逻辑上看,skywalking分为四个部分:探针,平台后端,存储和UI。

在这里插入图片描述

  • 探针:收集数据并重新格式化以符合SkyWalking的要求(不同的探针支持不同的来源)。
  • 平台后端:支持数据聚合,分析和流处理,涵盖跟踪,指标和日志。
  • 存储:设备通过开放/可插入的界面存储SkyWalking数据。您可以选择现有的实现,例如ElasticSearch,H2,MySQL,TiDB,InfluxDB,或者实现自己的实现。
  • UI:是一个高度可定制的基于Web的界面,允许SkyWalking最终用户可视化和管理SkyWalking数据。

skywalking安装

下载

直接进入官方下载:https://skywalking.apache.org/downloads/

本次教程选择8.2.0 ES6版本

在这里插入图片描述

下载很快,完成后直接上传到服务器中

在这里插入图片描述

解压

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

在这里插入图片描述

cd apache-skywalking-apm-bin

在这里插入图片描述

  • agent目录:将来要拷贝到各服务所在机器上用作探针
  • bin目录:服务启动脚本
  • config:配置文件
  • oap-libs:oap服务运行所需要的jar包(oap服务就是skywalking的后端服务Observability Analysis Platform)
  • webapp:web服务运行所需要的jar包

启动

cd到bin目录

执行./startup.sh直接同时启动 oap和web服务

在这里插入图片描述

访问

访问你的服务器地址,8080端口,就可以进入skywalking的UI界面

在这里插入图片描述

替换存储源

默认情况下skywalking使用H2来存储数据,这肯定无法满足性能要求,所以我们使用ES来进行存储。

elasticsearch安装

下载

下载elasticsearch,本教程选择6.4.0版本

在这里插入图片描述

解压、启动

同样直接解压,并进入elasticsearch-6.4.0目录

进入bin目录,启动./elasticserach,你可能会遇到如下报错,表明不能使用root用户启动es

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.0.jar:6.4.0]        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.0.jar:6.4.0]        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.0.jar:6.4.0]Caused by: java.lang.RuntimeException: can not run elasticsearch as root        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.0.jar:6.4.0]        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.0.jar:6.4.0]        ... 6 more

所以我们需要重新建一个用户,并用新用户启动es

比如我重新建立了一个用户就叫es

在这里插入图片描述

启动

启动成功后,我们通过curl http://localhost:9200测试,看到如下内容就表示es启动成功。

在这里插入图片描述

你也可以使用如下命令,用后台方式启动。

./elasticsearch -d

启动时遇到的问题

如果遇到如下报错

[2] bootstrap checks failed[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536][2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

执行如下命令

vi /etc/security/limits.conf

在文件中新增

es soft nofile 65536es hard nofile 65536es soft nproc 4096es hard nproc 4096

在这里插入图片描述

再次重启,可能还会遇到如下错误

ERROR: [1] bootstrap checks failed[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

同样执行如下命令

vi /etc/sysctl.conf

新增

vm.max_map_count=262144

在这里插入图片描述

保存退出后执行,让配置生效

sysctl -p

在这里插入图片描述

此时再启动就正常了,但是你现在可能无法通过外部访问

配置外部访问

cd到elasticsearch的config目录中

修改elasticsearch.yml文件,找到network.host配置项,默认是注释着的,打开注释,并修改为0.0.0.0,保存退出,重启es服务即可。

vi elasticsearch.yml

在这里插入图片描述

那么现在就可以通过外部访问了

在这里插入图片描述

替换skywalking存储方式为es

现在es服务已经配置完成了,我们cd到skywalking的 config目录下

修改application.yml文件

在这里插入图片描述

找到存储源的配置,直接把h2改成es即可

默认配置:

在这里插入图片描述
替换成:elasticsearch

在这里插入图片描述

保存并启动skywalking

看到日志中有创建一些es索引的过程,表示已经成功使用es作为存储源了。

在这里插入图片描述

配置agent

现在skywalking还无法监控服务,需要我们配置agent,skywalking提供的agent本身就是一个jar包,所以启动时直接新增javaagent配置项,指定好skywalking-agent.jar的所在的路径即可。

idea集成

为了演示方便,直接使用idea配置启动。

首先配置javaagent:指定agent目录下的skywalking-agent.jar所在的路径

service_name名称根据自己的情况定义
然后注意backend_service,端口为11800 grpc访问的端口

-javaagent:D:/learn/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar-Dskywalking.agent.service_name=order-Dskywalking.collector.backend_service=10.0.0.189:11800

在这里插入图片描述

配置完启动服务,此时再访问就可以看到你的服务了

在这里插入图片描述

搞了接口测试一下

在这里插入图片描述

我们可以看到,本身Rocketbot UI,也为我们从4个角度进行了监控,全局的,服务、实例、端点,一开始也提到过后面3个本身也是skywalking的监控维度

在这里插入图片描述

那我们再启动一个微服务,并且通过feign的方式,进行微服务之间的调用,那我们可以看到结果如下,skywalking可以为我们监控到每一次请求所执行的路径,已经每个路径上的耗时时间。

在这里插入图片描述

在这里插入图片描述

总结

skywalking拥有完整的APM和调用链路功能,扩展性强、二次开发简单,使用agent采集数据,并经过collector简单处理数据、aggregator聚合数据统计分析并持久化、alarm监控告警,最终提供query查询,和UI呈现。

转载地址:http://lhlrb.baihongyu.com/

你可能感兴趣的文章
海龟交易法则14_掌控心魔
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>
克罗谈投资策略02_赢家和输家
查看>>
克罗谈投资策略03_你所期望的赌博方式
查看>>
克罗谈投资策略04_感觉与现实
查看>>
通向财务自由之路01_导读
查看>>
通向财务自由之路02_成功的决定因素:你
查看>>
中低频量化交易策略研发01_引言
查看>>
中低频量化交易策略研发06_推进的择时策略
查看>>
史丹·温斯坦称傲牛熊市的秘密
查看>>
期货市场技术分析01_理论基础
查看>>
期货市场技术分析02_趋势的基本概念
查看>>
期货市场技术分析03_主要反转形态
查看>>
期货市场技术分析04_持续形态
查看>>
期货市场技术分析05_交易量和持仓兴趣
查看>>
TB交易开拓者入门教程
查看>>
TB创建公式应用dll失败 请检查用户权限,终极解决方案
查看>>
python绘制k线图(蜡烛图)报错 No module named 'matplotlib.finance
查看>>
talib均线大全
查看>>