微服务-技术专区-监控专区(Skywalking与Pinpoint) - 监控对比分析
由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比;选取skywalking和pinpoint对比的原因是:两者都使用探针(agent)技术进行信息采集,集成到项目内时不用修改业务代码,避免造成后期难以推进的问题;
以下是进行的一些维度的对比,主要从功能性需求和非功能性需求方面做参考:
功能性需求对比
支持协议语言有
Skywalking: Java、C#, PHP, Node
pinpoint:java,php
UI的对比比较
两种ui相类似,sw服务信息加载速度会快一些
定制化与扩展性比较
都可自定义plugin,使用探针,都可以进行扩展,据说sk扩展性更好
存储
Skywalking:支持各种类型存储,es,mysql,h2
pinpoint:只支持hbase
警告
Skywalking:config/alarm-settings.xml设置警告规则
pinpoint:需要额外引入mysql发送警告
jvm监控
都包含,pinpoint相对更全面一些,从页面查看比较类似
跟踪粒度
需要使用对应的插件,可以到方法级,展示sql,每个方法调用的时间
服务监控
skywalking支持的维度有:CPU使用率,SLA,RT,CPM(Call Per Minutes)
Pinpoint支持的维度有:CPU使用率,Open File Descriptor,数据源,活动线程数,RT,TPS。pinpoint更多
过滤追踪
都是用ant风格,sw有对应的插件,更灵活
性能损耗
sw少于pinpoint所消耗的时间
支持中间件
Skywalking:
1.支持开源web容器
2.RPC框架支持更多
3.mq,多支持rocketMQ
4.不支持mssql和mariadb
5.redis支持Jedis,Redisson,Lettuce
PinPoint:
1.支持几乎所有web容器,
2.少于sw
4.RDBMS/nosql,好于sw
5.不支持redisson
6.不支持log4j2
非功能性需求对比
skywalking pinpoint
是否需要修改代码 不需要 不需要
相关文档 官网文档比较全,支持中文,apache支持 英文文档
社区 社区活跃,发起人是中国人 韩国人开发,活跃程度类似
发布方式 使用jar包,start.sh脚本启动 使用war包,依赖web容器
github start 数 9.1k 8.8k
总结
skywalking对国产软件的支持好于Pinpoint;
Pinpoint的优势在于:追踪数据粒度非常细、功能强大的用户界面,以及使用HBase作为存储带来的海量存储能力。
skywalking的优势在于:非常活跃的中文社区,支持多种语言的探针,对国产开源软件非常全面的支持,以及使用es作为底层存储带来的强大的检索能力,并且skywalking的扩展性以及定制化要更优于Pinpoint
从整体上来讲,在进行演示和讨论的时候,大家普遍认为,skywalking的界面比较现代化一些,pinpoint的功能更为强大;其他一些方面提出的问题,待近期补充:后边需要继续调研的点:
1.对公司现有技术栈,两种方案的支持情况;
2.扩展性及如何进行扩展,扩展之后可以做哪些内容;
3.采样率如何配置
4.保存时间
5.采样的策略
6.agent开发方法
7.数据是否有遵循标准
8.nginx是否支持
另外,再讨论的过程中,提到了一些问题,有同事提出是否可以用这个工具定位线上的具体都某一次请求的问题? 答案是否定的,因为全链路追踪的定位是展示整体服务调用的拓扑图,能够从宏观描述服务请求链路中哪个环节比较慢,给开发者提供优化程序的一个方向;
对于性能消耗,大家也有一些不同的看法,有的业务方,对于20%的性能损耗是不敏感的,但是对于当前线上已经负载比较高,且经常有线上问题的系统,还需要性能消耗方面的调研;
5.zipkin
java by twitter,collector 收集器、storage 存储、api 查询api-ui 界面,jdk8 required
接入应用
1.引入zipkin maven dependency
2.java coding ,before after增强自动拦截,把config配置好即可。
public Brave brave(SpanCollector spanCollector){
Builder builder = new Builder("service2");//指定serviceName
builder.spanCollector(spanCollector);
builder.traceSampler(Sampler.create(1));//采集率
return builder.build();
}
6.TODO ONEAPM 优秀产品实现分析(insight全家桶)、腾讯bk-ci、 Prometheus
微服务-技术专区-监控专区(Skywalking与Pinpoint) - 监控对比分析的更多相关文章
- 微服务技术栈:API网关中心,落地实现方案
本文源码:GitHub·点这里 || GitEE·点这里 一.服务网关简介 1.外观模式 客户端与各个业务子系统的通信必须通过一个统一的外观对象进行,外观模式提供一个高层次的接口,使得子系统更易于使用 ...
- SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么
从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...
- 【微服务技术专题】Netflix动态化配置服务-微服务配置组件变色龙Archaius
前提介绍 如果要设计开发一套微服务基础架构,参数化配置是一个非常重要的点,而Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以说是比其他客户端具备更多生产级特 ...
- 微服务技术栈简单介绍,Eureka和Ribbon的引入和使用
一.了解微服务架构 1.微服务技术栈 整体框架 整体学习规划路线2.微服务与单体架构的区别 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 优势 结构简单 部署成本低 缺点 耦合度高, ...
- NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统
原文:NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统 前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的 ...
- 微服务之分布式跟踪系统(springboot+pinpoint)
这篇文章介绍一下在微服务(springboot开发)的项目中使用pintpoint监控的过程及效果展示. 背景 随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个AP ...
- 微服务-技术专区-链路追踪(pinpoint)-部署使用
https://naver.github.io/pinpoint/ https://github.com/naver/pinpoint 背景 随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越 ...
- 架构师成长之路也该了解的新一代微服务技术-ServiceMesh(上)
架构演进 发展历程 我们再来回顾一下架构发展历程,从前往后的顺序依次为单机小型机->垂直拆分->集群化负载均衡->服务化改造架构->服务治理->微服务时代 单机小型机:采 ...
- Spring Cloud 微服务技术整合
微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些 ...
随机推荐
- lambda 分组后的count
var list = stuList.GroupBy(b => b.PersonalId).Select(g => (new { personalId = g.Key, count = g ...
- 靶场练习--sqli(3&4)
第三关 先解决一下第二关遗留下来的问题,嘻嘻.看来数据库原理应当过一遍~ 1.首先判断是否有SQL注入,然后再看是数字型.字符型.发现这里是字符型. 2.order by 查询字段数,记得后面要加一个 ...
- javaScript的预加载
在有大量图片的页面中,为了避免页面加载完图片还未加载完成,我们通常会使用js的图片预加载. 这是一个预加载的demo: 首先把图片放入到一个类名为imgSrcArr的变量当中: var imgSrcA ...
- Kintex7 XC7K325T 板卡三剑客
(226)基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡 (227)基于Xilinx Kintex-7 FPGA K7 XC7K325T的FMC U ...
- zabbix入门之配置邮件告警
zabbix入门之配置邮件告警 邮件环境搭建 使用本地邮箱账号发送邮件 zabbix-server 端安装 mailx .sendmail或者psotfix 服务,系统默认安装好了postfix #安 ...
- 如何卸载不用的VDP
1.首先删除VDP 2.登录AD的DNS当中,删除VDP对应的DNS解析 3.1登陆 https://vcenterip/mob 这个地址. 输入你的管理员账号密码. 3.2进入content链接. ...
- categorical_crossentropy VS. sparse_categorical_crossentropy
From:https://jovianlin.io/cat-crossentropy-vs-sparse-cat-crossentropy/ categorical_crossentropy 和 sp ...
- python输出转义字符
转义字符在字符串中不代表自己,比如\n代表回车,不代表\n字符,那我想输入转义字符本身呢? 答:在字符串前面加个r 如print(“aa\nbb”) 会输出aa bb 如print(r"aa ...
- Exception和Error区别
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11393728.html Exception和Error都是继承了Throwable类,在Java中只有 ...
- JMeter之Beanshell用法
1. 获取JMeter脚本中的变量 ${demoParam} String demo = vars.get("demoParam"); 2. 将数据保存到JMeter脚本中的变量 ...