skywalking介绍与使用

介绍
2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器;
针对分布式系统的应用性能监控系统,特别针对微服务、cloud native和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统;
使用java探针字节码增加技术,实现对整个应用的监控 ;
对应用零侵入。
作用
Apm,链路追踪,告警。
对比
 
Cat
Zipkin
Pinpoint
skywalking
依赖
Java 6,7,8
Maven 3.2.3+
mysql5.6
Linux 2.6以及之上(2.6内核才可以支持epoll)
Java 6,7,8
Maven3.2+
rabbitMQ
 
Java 6,7,8
maven3+
Hbase0.94+
 
Java 6,7,8
maven3.0+
nodejs
zookeeper
elasticsearch
 
实现方式
代码埋点(拦截器,注解,过滤器等)
拦截请求,发送(http,mq)数据至zipkin服务
java探针,字节码增强
java探针,字节码增强
颗粒度
代码级
接口级
方法级
方法级
页面UI
*****
**
*****
****
存储选择
Mysql,hdfs
In-memory,mysql,cassandra,elasticsearch
Hbase
Elasticsearch,h2
通信方式
-
http,mq
Thrift
GRPC
MQ监控
不支持
不支持
不支持
RocketMq,kafka
全局调用统计
支持
不支持
支持
支持
Trace查询
不持支
支持
不支持
支持
报警
支持
不支持
支持
支持
Jvm监控
不支持
不支持
支持
支持
Star数
9.4K
11.1K
8.8K
8.8K
优点
功能完善
spring-cloud-sleuth可以很好的集成zipkin , 代码无侵入,集成非常简单 , 社区更加活跃。
对外提供有query接口,更加容易二次开发
 
完全无侵入, 仅需修改启动方式,界面完善,功能细致。
完全无侵入,界面完善,支持应用拓扑图及单个调用链查询。
功能比较完善(zipkin + pinpoint)
 
缺点
代码侵入性较强,需要埋点
文档比较混乱,文档与发布版本的符合性较低,需要依赖点评私服 (或者需要把他私服上的jar手动下载下来,然后上传到我们的私服上去)。
 
默认使用的是http请求向zipkin上报信息,耗性能。
跟sleuth结合可以使用rabbitMQ的方式异步来做,增加了复杂度,需要引入rabbitMQ 。
数据分析比较简单。
 
不支持查询单个调用链, 对外表现的是整个应用的调用生态。
二次开发难度较高
 
3.2版本之前BUG较多 ,网上反映兼容性较差 . 3.2新版本的反映情况较少
依赖较多。
 
文档
网上资料较少,仅官网提供的文档,比较乱
文档完善
文档完善
文档完善
开发者
大众点评
Twiter
Naver
吴晟(华为开发者) ,目前已经加入Apache孵化器
使用公司
大众点评,携程,陆金所,同程旅游,猎聘网,拼多多
Twiter
Naver
华为,alibaba cloud,天源迪科,当当网,京东金融
 
安装
官网地址:
http://skywalking.apache.org/
http://incubator.apache.org/projects/skywalking.html
GitHub:
https://github.com/OpenSkywalking/skywalking-netcore
下载地址:
http://skywalking.apache.org/downloads/
 
可以从上述地址下载,也可以直接到github上下载,选择最新版本,运行环境:jdk7,jdk8,tomcat7,tomcat8(tomcat针对web项目),建议安装使用过程,多看github上的doc文档;
Skywalking支持两种存储方式:H2和ES,本教程使用ES作存储
安装所需环境:JDK,ES(安装es: https://www.cnblogs.com/lizichao1991/p/7809156.html)
上述环境安装成功后,从官网下载安装tar包
解压:
tar -xvzf apache-skywalking-apm-incubating-5.0.0-GA.tar.gz -C /usr/local/
 
进入到软件主目录
cd /usr/local/apache-skywalking-apm-incubating/
 
$ ls
agent  bin  collector-libs  config  DISCLAIMER  LICENSE  licenses  NOTICE  README.txt  webapp
 
相关文件介绍:
Agent:java客户端程序目录
Bin:服务端程序启动脚本(包括windows和linux)
Config:配置文件所在目录
Webapp:服务端程序所在服务
 
使用
启动skywalking服务端
确保10800,11800,12800,8080端口没有被占用(skywalking默认端口,可以更改)
修改skywalking主配置文件: skywalking主配置说明.docx
启动服务
sh bin/startup.sh
 
访问dashboard,服务端程序所在服务器的地址+8080端口访问,默认用户名密码:admin/admin
 
启动成功后,访问界面如上图所示
部署客户端
客户端程序就是agent整个目录,一个客户端对应一个anent文件,配置文件在agent/config/agent.config
agent.application_code=APPNAME
collector.servers=192.168.6.102:10800
 
主要修改当前客户端所在app的名称和访问collector的地址,启动客户端服务的时候在JVM增加启动参数:
-javaagent:/path/to/skywalking-agent/skywalking-agent.jar
参数值为skywalking-agent.jar的绝对路径
高级特性
插件全部放置在 /plugins 目录中.新的插件,也只需要在启动阶段,放在目录中,就自动生效,删除则失效;Log默认使用文件输出到 /logs目录中.
界面介绍
拓步图
实例图
系统监控图
调用链路
Span图
服务图
原理
系统架构图
功能清单图
 
Javaagent,asm(字节码增强),代理,切面,反射
服务端配置说明
cluster:
# The Zookeeper cluster for collector cluster management.
  zookeeper:
    hostPort: localhost:2181
    sessionTimeout: 100000
naming:
# Host and port used for agent config
  jetty:
    # 配置agent发现collector集群,host必须要系统真实网络ip地址. agent --(HTTP)--> collector
    host: localhost
    port: 10800
    contextPath: /
remote:
  gRPC:
    # 配置collector节点在集群中相互通信,host必须要系统真实网络ip地址. collectorN --(gRPC) --> collectorM
    host: localhost
    port: 11800
agent_gRPC:
  gRPC:
    # 配置agent上传(链路跟踪和指标)数据到collector,host必须要系统真实网络ip地址. agent--(gRPC)--> collector
    host: localhost
    port: 11800
agent_jetty:
  jetty:
    # 配置agent上传(链路跟踪和指标)数据到collector,host必须要系统真实网络ip地址. agent--(HTTP)--> collector
    # SkyWalking native Java/.Net/node.js agents don't use this.
    # Open this for other implementor.
    host: localhost
    port: 12800
    contextPath: /
analysis_register:
  default:
analysis_jvm:
  default:
analysis_segment_parser:
  default:
    bufferFilePath: ../buffer/
    bufferOffsetMaxFileSize: 10M
    bufferSegmentMaxFileSize: 500M
ui:
  jetty:
    # 配置UI访问collector,host必须要系统真实网络ip地址.
    host: localhost
    port: 12800
    contextPath: /
# 配置Elasticsearch 集群连接信息
storage:
  elasticsearch:
    clusterName: CollectorDBCluster
    clusterTransportSniffer: true
    clusterNodes: localhost:9300
    indexShardsNumber: 2
    indexReplicasNumber: 0
    highPerformanceMode: true
    # 设置统计指标数据的失效时间,当指标数据失效时系统将数据自动删除.
    traceDataTTL: 90 # 单位为分
    minuteMetricDataTTL: 45 # 单位为分
    hourMetricDataTTL: 36 # 单位为小时
    dayMetricDataTTL: 45 # 单位为天
    monthMetricDataTTL: 18 # 单位为月
configuration:
  default:
    # namespace: xxxxx
    # 告警阀值
    applicationApdexThreshold: 2000
    serviceErrorRateThreshold: 10.00
    serviceAverageResponseTimeThreshold: 2000
    instanceErrorRateThreshold: 10.00
    instanceAverageResponseTimeThreshold: 2000
    applicationErrorRateThreshold: 10.00
    applicationAverageResponseTimeThreshold: 2000
   
    # 热力图配置,修改配置后需要删除热力指标统计表,由系统重建
    thermodynamicResponseTimeStep: 50
thermodynamicCountOfResponseTimeSteps: 40
 
 
客户端配置说明
# 当前的应用编码,最终会显示在webui上。
# 建议一个应用的多个实例,使用有相同的application_code。请使用英文
agent.application_code=Your_ApplicationName
 
# 每三秒采样的Trace数量
# 默认为负数,代表在保证不超过内存Buffer区的前提下,采集所有的Trace
# agent.sample_n_per_3_secs=-1
 
# 设置需要忽略的请求地址
# 默认配置如下
# agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg
 
# 探针调试开关,如果设置为true,探针会将所有操作字节码的类输出到/debugging目录下
# skywalking团队可能在调试,需要此文件
# agent.is_open_debugging_class = true
 
# 对应Collector的config/application.yml配置文件中 agent_server/jetty/port 配置内容
# 例如:
# 单节点配置:SERVERS="127.0.0.1:8080"
# 集群配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600"
collector.servers=127.0.0.1:10800
 
# 日志文件名称前缀
logging.file_name=skywalking-agent.log
 
# 日志文件最大大小
# 如果超过此大小,则会生成新文件。
# 默认为300M
logging.max_file_size=314572800
 
# 日志级别,默认为DEBUG。
logging.level=DEBUG
 
 
 
相关链接
https://blog.csdn.net/u012394095/article/details/79700200
https://blog.csdn.net/jilo88/article/details/81355265
https://blog.51cto.com/270142877/2331569?source=dra
https://juejin.im/post/5ab5b0e26fb9a028e25d7fcb

转载于:https://www.cnblogs.com/buou/articles/11300178.html

你可能感兴趣的:(skywalking介绍与使用)