SkyWalking简介

        APM (Application Performance Management) 即应用性能管理,属于IT运维管理(ITOM)范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量,保证用户得到良好的服务,降 低IT总拥有成本(TCO)。

        分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案

官网地址:Apache SkyWalking

SkyWalking主要功能

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

SkyWalking架构

  • 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 :负责提供控台,查看链路等等。

开源APM对比

1.代码入侵性

        pinpoint和skywalking:基于字节码注入技术,可以做到完全的代码无侵入。对现有系统的改造极小。

        zipkin和cat:对代码有一定的侵入性

2.社区比较

        pinpoint:韩国公司开发,在社区交流上会有一定滞后

        skywalking:刚完成apache孵化,已成为 Apache 基金会顶级项目。skywalking完全由国人主导开发,在国内社区相当活跃。我们能够进入官方群(Apache SkyWalking交流群:392443393)

2,支持语言比较

        Pinpoint:只支持Java和PHP,

        skywalking:支持5种语言:Java, C#, PHP, Node.js, Go。如果公司的服务涉及到多个开发语言,那么skywalking会是你更好的选择。并且,如果你要实现自己的探针(比如python语言),skywalking的二次开发成本也比Pinpoint更低。

3,存储比较

在大数据方面,底层存储架构决定上层功能。

        pingpoint:只支持hbase,这就意味着,使用pinpoint必须有能力运维住一套Hbase集群。

        skywalking:支持es,h2,mysql,TiDb,sharding-sphere。可选类型比较多,可以根据自己团队的技术实力选择。其实生产上来说还是用es的较多。

        hbase和es比较,hbase强在存储能力,es强在查询能力。

4,UI比较

        原生ui上比较,pinpoint要比skywalking好。

        但是skywalking有一款第三方定制UI,做的又比pinpoint漂亮

5,JVM监控

        skywalking支持监控:Heap, Non-Heap, GC(YGC和FGC)。 Pinpoint能够监控的指标主要有:Heap, Non-Heap, FGC, DirectBufferMemory, MappedBufferMemory,但是没有YGC。另外,Pinpoint还支持多个指标同一时间点查看的功能。如下图所示:

所以,对JVM的监控方面,Pinpoint更胜一筹。

6,服务监控

        包括操作系统,和部署的服务实例的监控。 Pinpoint支持的维度有:CPU使用率,Open File Descriptor,数据源,活动线程数,RT,TPS。 skywalking支持的维度有:CPU使用率,SLA,RT,CPM(Call Per Minutes)。 所以,这方面两者旗鼓相当,没有明显的差距。

7,跟踪粒度比较

        Pinpoint在这方面做的非常好,跟踪粒度非常细。如下图所示,是Pinpoint对某个接口的trace信息:

8,过滤追踪

        Pinpoint和skywalking都可以实现,而且配置的表达式都是基于ant风格。 Pinpoint在Web UI上配置 filter wizard 即可自定义过滤追踪。 skywalking通过加载apm-trace-ignore-plugin插件就能自定义过滤跟踪,skywalking这种方式更灵活,比如一台高配服务器上有若干个服务,在共用的agent配置文件apm-trace-ignore-plugin.config中可以配置通用的过滤规则,然后通过-D的方式为每个服务配置个性化过滤。

SkyWalking安装和配置

  • 第一步,搭建一个 Elasticsearch 服务。
  • 第二步,下载 SkyWalking 软件包。
  • 第三步,搭建一个 SkyWalking OAP 服务。
  • 第四步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。
  • 第五步,搭建一个 SkyWalking UI 服务。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐