背景介绍
随着业务越来越复杂,企业应用也进入了分布式服务化的阶段,随着模块的不断增多,一次请求可能会涉及到十几个甚至几十个服务的协同处理,那么如何准确快速的定位到线上故障和性能瓶颈,便成为我们不得不面对的棘手问题,传统的日志监控等方式无法很好达到跟踪调用,排查问题等需求。
目前有很多优秀的分布式链路跟踪系统架构可有效针对以上问题,如skywalking、pinpoint、cat及zipkin等。此文章主要针对 skywalking 和 pinpoint 做技术选型对比,并介绍 skywalking 的部署及简单使用。
技术对比
对比内容 | pinpoint | skywalking |
---|---|---|
依赖 | Java 6,7,8 maven3+ Hbase0.94+ |
Java 6,7,8 maven3.0+ nodejs zookeeper elasticsearch |
实现方式 | java探针,字节码增强 | java探针,字节码增强 |
颗粒度 | 方法级 | 方法级 |
编程语言 | Java,PHP | Java,C#,PHP,Node.js |
页面UI | ***** | **** |
存储选择 | Hbase | Elasticsearch,H2,mysql |
通信方式 | Thrift | GRPC |
MQ监控 | 不支持 | RocketMq,Kafka |
全局调用统计 | 支持 | 支持 |
Trace查询 | 不支持 | 支持 |
报警 | 支持 | 支持 |
JVM监控 | 支持 | 支持 |
性能损耗 | 高 | 低 |
优点 | 完全无侵入, 仅需修改启动方式,界面完善,功能细致。 | 完全无侵入,界面完善,支持应用拓扑图及单个调用链查询。 功能比较完善 |
缺点 | 不支持查询单个调用链, 对外表现的是整个应用的调用生态。 二次开发难度较高 |
3.2版本之前BUG较多 ,网上反映兼容性较差 . 3.2新版本的反映情况较少。 依赖较多 |
文档 | 文档完善 | 文档完善 |
开发者 | Naver | 吴晟(华为开发者) ,目前已经加入Apache孵化器 |
使用公司 | Naver | 华为,alibaba cloud,天源迪科,当当网,京东金融 |
skywalking搭建
1. elasticsearch搭建(数据源,elasticsearch和mysql选一种即可)
- 在Liunx环境下载
wget https://mirrors.huaweicloud.com/elasticsearch/7.10.1/elasticsearch-7.10.1-linux-x86_64.tar.gz
- 解压文件
tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz
- 赋予文件夹及子文件可执行权限
chmod -R +x elasticsearch-7.10.1
- 创建elasticsearch启动用户(elasticsearch必须使用非ROOT用户启动)
adduser es
- 更改文件夹(elasticsearch-7.10.1)的所属用户
chown -R es elasticsearch-7.10.1
- 赋予用户(es)该文件夹(elasticsearch-7.10.1)的执行权限
chmod -R +x es elasticsearch-7.10.1
- 切换到config目录文件
cd elasticsearch-7.10.1/config/
- 编辑 elasticsearch.yml
cluster.name: elasticsearch
node.name: node-1
- 切换到bin目录文件
cd elasticsearch-7.10.1/bin/
- 切换用户(es),使用用户(es)后台启动elasticsearch
su es
./elasticsearch -d
- 访问链接,查看启动效果
curl http://localhost:9200
2. mysql搭建
- 在Liunx环境下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
- 解压文件
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
- 修改目录
mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql-5.7.36
- 赋予文件夹及子文件可执行权