skyWalking使用APM包部署

一.背景

之前在公司做日志收集进行技术选型的时候考虑过ELK,但是由于其有点笨重,而且不支持链路追踪,于是在gitee上看到一个GVP项目Plumelog,并且在测试服进行了使用。这个项目对代码的入侵较小,但是还是需要配置,最近看到了另外一款 APM系统skywalking,这款开源软件2015年由个人吴晟(华为开发者,gitee上的Gitee封面人物中还有他的一篇专栏)开源 , 2017年加入Apache孵化器,使用java探针字节码增加技术,实现对整个应用的监控,对代码实现了真正的零侵入。Apache的开源项目,你值得拥有。

二.简介

SkyWalking:一个开源的观测平台, 用于从服务和云原生基础设施收集, 分析, 聚合以及可视化数据.

SkyWalking 为你提供了一种简便的方式来清晰地观测分布式系统, 甚至可以观测横跨不同云的系统.

SkyWalking 更是一种现代的应用程序性能监控(Application Performance Monitoring)工具, 尤其是专为云原生, 基于容器以及分布式的系统.

在许多不同的场景下, SkyWalking 为观察和监控分布式系统提供了解决方案. 首先是像传统的方式那样, SkyWalking 为服务提供了自动打点代理, 如 Java, C# 和 Node.js. 同时也提供了手动打点 SDK, 像 Go (尚未支持) , C++ (尚未支持). 随着越来越多的编程语言需要获得支持, 运行时操作代码的危险性, 以及云原生基础设施越来越强大, SkyWalking 还可以使用服务网格基础探针来收集数据, 以帮助了解整个分布式系统. 总之, SkyWalking 为 服务(service), 服务实例(service instance), 以及 端点(endpoint) 提供了观测能力.

服务(Service), 实例(Instance) 以及 端点(Endpoint) 等概念在如今随处可见, 所以让我们先了解一下他们在 SkyWalking 中都表示什么意思.

  • 服务(Service). 表示对请求提供相同行为的一系列或一组工作负载. 在使用打点代理或 SDK 的时候, 你可以定义服务的名字. 如果不定义的话, SkyWalking 将会使用你在平台上定义的名字, 如 Istio.
  • 服务实例(Service Instance). 上述的一组工作负载中的每一个工作负载称为一个实例. 就像 Kubernetes 中的 pods 一样, 服务实例未必就是操作系统上的一个进程. 但当你在使用打点代理的时候, 一个服务实例实际就是操作系统上的一个真实进程.
  • 端点(Endpoint). 对于特定服务所接收的请求路径, 如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名.

使用 SkyWalking 时, 你可以看到服务与端点之间的拓扑结构, 每个服务/服务实例/端点的性能指标, 还可以设置报警规则.

除此之外, 你还可以通过 SkyWalking 原生代理, SDK 以及 Zipkin, Jaeger 和 OpenCensus 来进行分布式追踪.

网上有很多关于Skywalking和其他APM系统的对比

比如下面这篇文章:https://juejin.cn/post/6844903560732213261

下面也贴出一个对比表格:(摘自:https://blog.csdn.net/weixin_34393428/article/details/92408030?utm_term=skywalking%E5%AF%B9%E6%AF%94&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-3-92408030&spm=3001.4430)

pinpointzipkinjaegerskywalking
OpenTracing兼容
客户端支持语言java、phpjava,c#,go,php等java,c#,go,php等Java, .NET Core, NodeJS and PHP
存储hbaseES,mysql,Cassandra,内存ES,kafka,Cassandra,内存ES,H2,mysql,TIDB,sharding sphere
传输协议支持thrifthttp,MQudp/httpgRPC
ui丰富程度
实现方式-代码侵入性字节码注入,无侵入拦截请求,侵入拦截请求,侵入字节码注入,无侵入
扩展性
trace查询不支持支持支持支持
告警支持支持不支持不支持支持
jvm监控支持不支持不支持支持
性能损失

下面是skywalking的项目地址和文档地址

skywalking项目地址:

码云项目地址:https://gitee.com/OpenSkywalking/sky-walking

Apache 项目地址:http://skywalking.incubator.apache.org/

中文文档地址:https://skyapm.github.io/document-cn-translation-of-skywalking/

三.安装及配置

1. 下载

下载页面:http://skywalking.apache.org/downloads/

先选择APM包的方式进行安装

在这里插入图片描述

点击source选择想要的版本进行下载,右侧的Distribution是对每个版本的描述,当然如果这里没有你想要的版本,也可以将页面下拉

在这里插入图片描述

点击此处可以看到更多的版本并下载,此处我选择的是6.1.0版本的。

2. 解压

解压后得到apache-skywalking-apm-bin目录,目录结构如下

在这里插入图片描述

skywalking的agent包结构如下

+-- agent
    +-- activations
         apm-toolkit-log4j-1.x-activation.jar
         apm-toolkit-log4j-2.x-activation.jar
         apm-toolkit-logback-1.x-activation.jar
         ...
    +-- config
         agent.config  
    +-- plugins
         apm-dubbo-plugin.jar
         apm-feign-default-http-9.x.jar
         apm-httpClient-4.x-plugin.jar
         .....
    +-- optional-plugins
         apm-gson-2.x-plugin.jar
         .....
    +-- bootstrap-plugins
         jdk-http-plugin.jar
         .....
    +-- logs
    skywalking-agent.jar

3. 运行

bin目录下,有很多运行脚本,其中点击startup.bat(windows)或startuo.sh(linux)即可启动oapServicewebappService

在这里插入图片描述

windows启动后会有两个窗口,放置在那里即可

在这里插入图片描述

4. 项目配置agent

在使用java -jar命令运行你的jar包时,加入-javaagent:skywalking path\agent\skywalking-agent.jar -Dskywalking.agent.service_name=test -Dskywalking.collector.backend_service=127.0.0.1:11800(在-jar之前)。此处我就不单独使用jar包演示,而是使用idea来启动项目

在这里插入图片描述

  • -javaagent:skywalking path\agent\skywalking-agent.jar:指定的是刚刚解压好的skywalking的文件下的agent目录下的skywalking-agent.jar的位置
  • -Dskywalking.agent.service_name=test:在日志记录时,这个工程的名称
  • Dskywalking.collector.backend_serviceskywalking-collector(OAP-service)服务的地址,默认是127.0.0.1:11800,可以在OAP-service的配置文件中修改

四. 查看日志

配置好以上内容后,启动项目,当看到日志中有以下输出内容代表agent配置是正确的

在这里插入图片描述

访问localhost:8080(UI项目的默认端口是8080,可以在配置文件中修改),默认账号密码admin/admin,可以看到如下界面。展示了你被访问的接口、服务、端点等信息。
首页
services

endpoint
datasource

还可以看到实时的拓扑图

拓扑图

当然,最重要的是 日志打印以及链路追踪

在这里插入图片描述

五. 总结

skywalking是一款非常成熟的APM系统,在链路追踪日志记录等方面十分专业,而且速度很快,性能影响不大,UI页面十分友好,并且对代码实现了真正的完全无侵入,非常推荐去了解和部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值