Alibaba微服务整合SkyWalking实现应用性能监控

1. 概述

SkyWalking是一个国产的开源框架,用于分布式系统应用程序的性能监控,专门为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计,包括了分布式追踪、性能指标分析、应用和服务依赖分析等
更多详情请参阅官网
主要特性如下:

  • 多种监控手段,开源通过语言探针和service mesh获得监控的数据
  • 支持多种语言自动探针,包括Java、.NET Core和Node JS
  • 轻量高效,无需大数据平台和大量的服务器资源
  • 模块化、UI、储存、集群管理都有多种机制可选
  • 支持告警
  • 优秀的可视化解决方案

其整体架构如下
架构图
上部分 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 :负责提供控台,查看链路等等

2. SkyWalking环境搭建

单机部署示意图如下
架构

  • skywalking agent和业务系统绑定在一起,负责收集各种监控数据
  • skywalking oapservice负责处理监控数据,比如接受skywalking agent的监控数据,并存储在数据库中,接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端,skywalking oapservice通常以集群形式存在
  • skywalking webapp负责前端界面,用于展示数据
  • 数据库用于存储监控数据

2.1. 下载skywalking安装包

官网地址下载安装包
下载skywalking apm
8.7版本后SkyWalking APM已不包括Agents,需要单独下载
下载agents

2.2. 启动SkyWalking

在/bin目录下,分别双击oapService.bat和webappService.bat,或者直接双击startup.bat,会看到如下窗口
启动
启动成功后,浏览器地址输入http://localhost:8080
首页

3. 微服务整合SkyWalking

分别新建3个springboot项目,skywalking-customer、skywalking-product和skywalking-order,其中order微服务可以使用openfeign调用customer和product,启动项目前需要如下配置

-javaagent:D:\software\skywalking-agent\skywalking-agent.jar
SW_AGENT_COLLECTOR_BACKEND_SERVICES=localhost:11800;SW_AGENT_NAME=alibaba-skywalking-order

idea配置skywalking
先访问order服务接口,刷新skywalking ui界面
服务
几个重要的概念
服务(Service) :表示对请求提供相同行为的一系列或一组工作负载。在使用 Agent 或 SDK 的时候,你可以定义服务的名字。如果不定义的话,SkyWalking 将会使用你在平台(例如说 Istio)上定义的名字。这里,我们可以看到 Spring Boot 应用的服务为 “alibaba-skywalking-customer”,就是我们在环境变量 SW_AGENT_NAME 中所定义的。
服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例。就像 Kubernetes 中的 pods 一样, 服务实例未必就是操作系统上的一个进程。但当你在使用 Agent 的时候, 一个服务实例实际就是操作系统上的一个真实进程。这里,我们可以看到 Spring Boot 应用的服务为 {agent_name}-pid:{pid}@{hostname},由 Agent 自动生成。
端点(Endpoint) :对于特定服务所接收的请求路径, 如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名。这里,我们可以看到 Spring Boot 应用的一个端点,为 API 接口 GET:/product/getProductById/{id}

点击Topology菜单,进入查看拓扑图界面
拓扑图
点击Trace菜单,进入查看链路数据界面
链路数据

4. Shell脚本方式配置skywalking

需要提前将agent安装包上传到服务器目录,配置Java启动脚本

export SW_AGENT_NAME=alibaba-skywalking-customer #配置Agent名称
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置Collector名称
export SW_AGENT_SPAN_LIMIT=2000 #配置链路最大span数量,默认300
export JAVA_AGENT=-javaagent:/opt/software/skywalking-agent/skywalking-agent.jar #配置SkyWalking Agent jar地址

java $JAVA_AGENT -jar alibaba-skywalking-customer.jar

5. SkyWalking持久化监控数据

skywalking默认使用H2数据库进行存储,每次重启服务后,原有的数据就会丢失,可以改为基于mysql或elasticsearch实现持久化,下面以mysql为例
修改/conf目录下application.yml文件
修改数据库
另外,修改mysql数据库连接信息
修改连接信息
在数据库中新建swtest库,并将mysql jar文件拷贝到skywalking-apm/oap-lib目录下,重启skywalking即可

6. SkyWalking集成日志框架

6.1. 引入核心依赖

<dependency>
    <</
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值