应用性能监控-- SkyWalking

8 篇文章 0 订阅
5 篇文章 0 订阅

应用性能监控-- SkyWalking

SkyWalking 是中国人吴晟开源的应用性能管理系统(APM)工具,使用 Java 语言开发,现在已属于 Apache 旗下开源项目,官网 https://skywalking.apache.org/

SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。

APM 与 SkyWalking

APM(Application Performance Management),即应用性能管理系统。对应用程序单点性能与整个分布式应用进行监控,记录每一个环节程序执行状况,通过图表与报表的西施让运维人员随时掌握系统的运行状况。

特点:

  • 实现强大的链路跟踪
  • 相比 Zipkin,拥有更友好、更详细的监控项
  • 能自动生成可视化图表
SkyWalking 与 Sleuth + Zipkin 比较
SkyWalkingSleuth + Zipkin
链路跟踪可视化
聚合报表丰富很少
服务依赖图形象直观简单依赖图
监控埋点方式无侵入,采用 Java Agent 字节码增强侵入式
Java VM 指标监控具备不具有
支持报警有,可自定义不具有
存储机制ES、Mysql等ES、Mysql等
文档支持Apache 支持,国内文档滞后文档丰富

SkyWalking 服务端与 Java Agent

环境要求
  • JDK 8
SkyWalking 部署

SkyWalking 服务端用于接收来自 Java Agent 客户端发过来的链路跟踪与指标数据,汇总统计后由 SkyWalking UI 负责展示。

端口占用:

  • 11800 端口:gPRC 默认监听的服务端口
  • 12800 端口:HTTP 默认监听的端口
  • 8080 端口:SkyWalking UI 应用默认监听的端口
安装步骤

第一步,安装 ElasticSearch 全文搜索引擎(存储推荐使用 ElasticSearch)。这里推荐查阅这里

第二步,下载 SkyWalking 服务端

下载路径,点击 Distribution,下载 for Elasticsearch 7。下载完成后解压在不带中文字样的路径下。

image-20220319164817148

第三步,配置 SkyWalking 数据源。在 application.yml 配置中,搜索 elasticsearch 的配置。

修改后的配置是

storage:
#  selector: ${SW_STORAGE:h2}
  selector: ${SW_STORAGE:elasticsearch7}

可能会遇到的问题

在bin目录下执行 startup.bat 时,startup.bat 闪退,不会启动 Skywalking-Collector 和 Skywalking-Webapp。

解决方案:将 skywalkinge 解压之后的文件夹放到 JDK 安装目录的上一级。例如 D:\Program Files\Java 是 java 环境地址,放在 D:\apache-skywalking-apm-bin-es7 上。

也有可能是 8080 端口被占用,这个得排查一下。

端口占用:

  • 11800:gRPC 端口,数据收集服务。
  • 12800:HTTP 端口,数据收集服务。
  • 8080:SkyWalking UI,用于展示数据。
安装 SkyWalking Java Agent

通过 java agent 探针技术,允许应用开发的时候再通过启动增加 javaagent 参数来外挂一些额外的程序。从而完成无侵入的监控埋点。

首先我们这里先说明白服务间的调用关系,假设有三个微服务,分别是:a-service、b-service 和 c-service,他们之间的调用关系是 a->b->c。

其次,我们可以在 \apache-skywalking-apm-bin-es7\agent路径下找到 skywalking-agent.jar 文件,如果是在生产环境下,启动命令为

java -javaagent:./skywalking-agent.jar -Dskywalking.agent.service_name=a-service -Dskywalking.collector.backend_service=localhost:11800 -Dskywalking.logging.file_name=a-service-api.log -jar a-service.jar

如果是开发环境运行,需要在 Run/Debug Configurations 中的 Configuration->Environment->VM options 添加配置参数

// a-service
-javaagent:D:\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=a-service -Dskywalking.collector.backend_service=localhost:11800 -Dskywalking.logging.file_name=a-service-api.log
// b-service
-javaagent:D:\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=b-service -Dskywalking.collector.backend_service=localhost:11800 -Dskywalking.logging.file_name=b-service-api.log
// c-service
-javaagent:D:\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=c-service -Dskywalking.collector.backend_service=localhost:11800 -Dskywalking.logging.file_name=c-service-api.log
  • Dskywalking.agent.service_name:指定在 SkyWalking 上报数据时的服务名

  • Dskywalking.collector.backend_service:指定 SkyWalking 服务端的通信 IP 与端口

  • Dskywalking.logging.file_name:指定 agent 生成的上报日志文件名,日志文件保存 agent 的 logs 目录中,例如:\apache-skywalking-apm-bin-es7\agent\logs

SkyWalking 常用视图

使用 Apifox 进行压力测试。

image-20220319213204303

打开 SkyWalking UI,默认显示全局监控,自动刷新设置 1 秒。

image-20220319213121539

分别显示的是,各服务每分钟访问次数,高延迟服务列表,服务状态指数,高延迟端点列表,全局响应延迟比检测图,全局响应热力图。

  • 服务状态指数:越接近 1 状态越好。
  • 高延迟端点列表:是高延迟服务的列出,第一个是我们主要排查的服务对象。

压力测试结果。

image-20220319213147774

拓扑图

点击拓扑图可以看到服务间的依赖关系。

image-20220319213520455

链路追踪图

image-20220319213718901

附页

java agent

Java agent 提供了一种在加载字节码时,对字节码进行修改的方式。他共有两种方式执行,一种是在 main 方法执行之前,通过 premain 来实现,另一种是在程序运行中,通过 attach api 来实现。

定义一个简单的 Jave Agent 扩展类。

public class SimpleAgent {
    public static void premain(String agentArgs, Instrumentation inst) {
        System.out.println("==========开始执行premain==========");
    }
}

之后,在 META-INF 目录下找到 MANIFEST.MF 文件,添加内容。

Manifest-Version:1.0
Premain-Class:info.mufeng.agent.SimpleAgent

然后,在启动服务的时候加上-javaagent:agent.jar 额外的附加参数。启动的时候会输出如下日志:

==========开始执行premain==========
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值