Skywalking介绍与使用

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

你可能感兴趣的:(监控系统)