微做事系统的监控紧张包含以下三个方面:
Logging 便是记录系统的日志。Metrics 是系统在一段韶光内某一方面的某个指标,比如每个接口的 QPSTracing 即我们常说的分布式链路追踪,通过一个要求可以剖析出链路经由的做事的非常情形、网络调用韶光,以及系统的性能瓶颈等。APM 系统(Application Performance Management,即运用性能管理)应运而生,可以很好地办理这一难题。APM 作为系统运维管理和网络管理的一个主要方向,能够对关键做事进行监控、追踪以及告警,帮助开拓和运维职员轻松地在繁芜的运用系统中找到故障点,提高做事的稳定性,担保用户得到良好的做事,降落 IT 运维的本钱。
常见的 APM

1,CAT: 由海内美团点评开源的,基于 Java 措辞开拓,目前供应 Java、C/C++、Node.js、Python、Go 等措辞的客户端,监控数据会全量统计。海内很多公司在用,例如美团点评、携程、拼多多等。CAT 须要开拓职员手动在运用程序中埋点,对代码侵入性比较强。
2,Zipkin: 由 Twitter 公司开拓并开源,Java 措辞实现。侵入性相对付 CAT 要低一点,须要对web.xml 等干系配置文件进行修正,但依然对系统有一定的侵入性。Zipkin 可以轻松与 Spring Cloud 进行集成,也是 Spring Cloud 推举的 APM 系统。
3,Pinpoint: 韩国团队开源的 APM 产品,利用了字节码增强技能,只须要在启动时添加启动参数即可实现 APM 功能,对代码无侵入。目前支持 Java 和 PHP 措辞,底层采取 HBase 来存储数据,探针网络的数据粒度非常细,但性能损耗较大,因其涌现的韶光较长,完成度也很高,文档也较为丰富,运用的公司较多。
4,SkyWalking: 国人开源的产品,2019 年 4 月 17 日 SkyWalking 从 Apache 基金会的孵化器毕业成为顶级项目。目前 SkyWalking 支持 Java、.Net、Node.js 等探针,数据存储支持MySQL、ElasticSearch等。SkyWalking 与 Pinpoint 相同,Java 探针采取字节码增强技能实现,对业务代码无侵入。探针采集数据粒度相较于 Pinpoint 来说略粗,但性能表现精良。
SkyWalking优点:
基于 OpenTracing 规范,2019 年从 Apache 基金会孵化器毕业成为顶级项目;大厂很多都利用 SkyWalking ,包括腾讯、阿里云、华为、滴滴、中国电信、中国联通等;国人开源的,中文文档完好,社区生动SkyWalking 支持 Java、.Net、Node.js 等多款措辞的探针,还供应了多种开源框架的插件,例如 Dubbo、gRPC、SOFARPC 等;SkyWalking 整体架构与核心观点
SkyWalking 是一个基于 OpenTracing 规范的、开源的 APM 系统,它是专门为微做事架构以及云原生架构而设计的。从 SkyWalking 6.0 开始,SkyWalking 将自身定义为一个不雅观测性剖析平台(Observability Analysis Platform,OAP)。SkyWalking 的核心功能有:
做事、做事实例、端点指标剖析。做事拓扑图剖析做事、做事实例和端点(Endpoint)SLA 剖析慢查询检测告警SkyWalking 的架构图
SkyWalking 分为三个核心部分:
1,Agent(探针):Agent 运行在各个做事实例中,卖力采集做事实例的 Trace 、Metrics 等数据,然后通过 gRPC 办法上报给 SkyWalking 后端。
2,OAP:SkyWalking 的后端做事,其紧张任务有两个。
一个是卖力吸收 Agent 上报上来的 Trace、Metrics 等数据,交给 Analysis Core (涉及 SkyWalking OAP 中的多个模块)进行流式剖析,终极将剖析得到的结果写入持久化存储中。SkyWalking 可以利用 ElasticSearch、H2、MySQL 等作为其持久化存储,一样平常线上利用 ElasticSearch 集群作为其后端存储。另一个是卖力相应 SkyWalking UI 界面发送来的查询要求,将前面持久化的数据查询出来,组成精确的相应结果返回给 UI 界面进行展示。3,UI 界面:SkyWalking 前后端进行分离,该 UI 界面卖力将用户的查询操作封装为 GraphQL 要求提交给 OAP 后端触发后续的查询操作,待拿到查询结果之后会在前端卖力展示。
SkyWalking 中的三个核心观点
Service(做事):供应同一种能力的集群。比如微做事架构中的订单做事集群。ServiceInstance(做事实例):订单做事集群中某一个做事实例。Endpoint(端点):做事对外暴露的接口(http接口,rpc接口)。类似于springboot中的Endpoint。快速入门 SkyWalking windows案例
SkyWalking 环境搭建
1,下载 https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-es7-6.6.0.zip
须要把稳的是,SkyWalking分为Binary Distribution和Binary Distribution for ElasticSearch 7两种,里面有个坑便是如果想连上ES7就必须下载Binary Distribution for ElasticSearch 7,不然会涌现
org.apache.skywalking.oap.server.starter.OAPServerBootstrap - 57 [main] ERROR [] - storage module no provider exists. org.apache.skywalking.oap.server.library.module.ProviderNotFoundException: storage module no provider exists.
2,下载 elasticsearch-7.8.0.zip
3,下载 kibana-7.8.0.zip
(elasticsearch,kibana 安装配置可自行百度)
依次启动elasticsearch,kibana, 访问 http://localhost:5601/ 地址即可进入 Kibana 界面。
SkyWalking 安装
1,解压完成之后进入 apache-skywalking-apm-bin 目录,编辑 config/application.yml 文件,将个中 ElasticSearch 配置项以及其子项的全部注释去掉,将 h2 配置项及其子项全部注释掉。
2,启动 SkyWalking OAP 以及 UI 界面
./bin/startup.bat 查看日志,windows启动失落败。建议分开启动。
分开启动才OK。
1,启动oapService.bat
2,启动webappService.bat
把稳查看日志,是否启动成功。
3,可以在 logs/skywalking-oap-server.log 以及 logs/webapp.log 两个日志文件中查看到 SkyWalking OAP 以及 UI 项目的干系日志
4,访问 http://127.0.0.1:8080/ 即可看到 SkyWalking 的 Rocketbot UI界面。
事理:SkyWalking Agent 利用了 Java Agent 技能,可以在无需手工埋点的情形下,通过 JVM 接口在运行时将监控代码段插入已有 Java 运用中,实现对 Java 运用的监控。SkyWalking Agent 会将做事运行过程中得到的监控数据通过 gRPC 发送给后真个 OAP 集群进行剖析和存储。
Skywalking Agent 目录构造
SkyWalking 目前供应的 Agent 插件在 apache-skywalking-apm-bin/agent 目录下:
agent
├── activations
│ ├── apm-toolkit-log4j-1.x-activation-6.2.0.jar
│ ├── ...
│ └── apm-toolkit-trace-activation-6.2.0.jar
├── config # Agent 配置文件
│ └── agent.config
├── logs # 日志文件
├── optional-plugins # 可选插件
│ ├── apm-customize-enhance-plugin-6.2.0.jar
│ ├── apm-gson-2.x-plugin-6.2.0.jar
│ └── ... ...
├── plugins # 当前生效插件
│ ├── apm-activemq-5.x-plugin-6.2.0.jar
│ ├── tomcat-7.x-8.x-plugin-6.2.0.jar
│ ├── spring-commons-6.2.0.jar
│ └── ... ...
└── skywalking-agent.jar
agent.config 文件是 SkyWalking Agent 的唯一配置文件。plugins 目录存储了当前 Agent 生效的插件。optional-plugins 目录存储了一些可选的插件(这些插件可能会影响全体系统的性能或是有版权问题),如果须要利用这些插件,需将相应 jar 包移动到 plugins 目录下。末了的 skywalking-agent.jar 是 Agent 的核心 jar 包,由它卖力读取 agent.config 配置文件,加载上述插件 jar 包,运行时网络到 的 Trace 和 Metrics 数据也是由它发送到 OAP 集群的。
程序skywalking-demo 示例
1,下载 zookeeper-3.4.14.tar.gz 包(下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/),然后启动。
创建一个大略的dubbo做事:provider
创建一个大略的webapp (springboot项目)
provider启动加入:
-javaagent:D:\\apache-skywalking-apm-es7-6.6.0\\apache-skywalking-apm-bin-es7\\agent\\skywalking-agent.jar
-Dskywalking_config=D:\\study\\skywalking-demo-test\\demo-provider\\src\\main\\resources\\agent.config
-Dskywalking.agent.service_name=provider01
-Dskywalking.collector.backend_service=127.0.0.1:11800
webapp启动加入:
-javaagent:D:\\apache-skywalking-apm-es7-6.6.0\\apache-skywalking-apm-bin-es7\\agent\\skywalking-agent.jar
-Dskywalking_config=D:\\study\\skywalking-demo-test\\demo-webapp\\src\\main\\resources\\agent.config
-Dskywalking.agent.service_name=demo01
-Dskywalking.collector.backend_service=127.0.0.1:11800
启动成功后:访问localhost:8080 进入界面,监控做事。
github项目地址:https://github.com/lovelife-li/skywalking-demo-test.git
文章为学习条记:参考:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=50#/detail/pc?id=1722