再续APM-Skywalking

写这篇文章出发点是因为,我尝试了Pinpoint这样的APM发现,我部署后根本拿不到相关的数据,而且网上的参考资料,基本上没有价值,都是抄袭官网的,我也查看了Pinpoint官方文档也不知道怎么样解决,我的问题是Pinpoint agent(1.8.0)添加到了tomcat中,在web界面就只识别了tomcat,至于里面的数据就没有获取到。(据说是从1.6版本后,改了相关通讯交互方式,直到现在我还是没有找到解决方案。)

因为遇到这样的困难,所以转而选取同类型的APM-Skywalking来进行研究。

目标

其实换过来思考,无论采用什么样的APM来做应用性能监控主要都是想解决以下问题:

  • 主动分布式链路追踪
  • 应用级别性能监控(jvm等)
  • 低侵入
  • 容易二次开发相关插件
  • 对相关服务器性能占比较小

选型

方案 cat zipkin Pinpoint SkyWalking
依赖 Java 6 7 8、Maven 3+ MySQL 5.6 5.7、Linux 2.6+ Hadoop可选 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探针,字节码增强
存储 Mysql , Hdfs in-memory , Mysql , Cassandra , Elasticsearch HBase Elasticsearch , H2
jvm监控 不支持 不支持 支持 支持
trace查询 支持 支持 需要二次开发 支持
侵入 高,需要埋点 高,需要开发
部署成本 较高

针对业务情况,主要重点关注PinpointSkyWalking,由于Pinpoint我没有调通,进而研究SkyWalking

APM-Skywalking

Skywalking是国人-吴晟大佬个人开源的项目,并且被搜录到了Apache基金会当中持续开源。

官方github地址:https://github.com/apache/incubator-skywalking

希望看到文章觉得不错帮大佬点亮下小星星呀

官方体验地址:http://106.75.237.45:8080/

借用官方的原理图

再续APM-Skywalking_第1张图片
image.png

SkyWalking是一个开源的APM系统,包括监控,跟踪,诊断Cloud Native架构中分布式系统的功能。核心功能如下。

  • 服务,服务实例,端点指标分析
  • 根本原因分析
  • 服务拓扑图分析
  • 服务,服务实例和端点依赖性分析
  • 检测到缓慢的服务和端点
  • 性能优化
  • 分布式跟踪和上下文传播
  • 报警

截至到目前,Skywalking已经发布了6.0.0-α版本,从这个版本开始已经内置了H2数据,并且先比5.0重构了后端内核,应该算是比较大的改变。

下载页面:http://skywalking.apache.org/downloads/

简单搭建

根据情况选择适合的解压包,进行解压。(我下载的是windows的zip)

解压后

再续APM-Skywalking_第2张图片
image.png

其中agent文件夹是探针,包含整个目录,请不要改变目录结构

+-- agent
    +-- activations
         apm-toolkit-log4j-1.x-activation.jar
         apm-toolkit-log4j-2.x-activation.jar
         apm-toolkit-logback-1.x-activation.jar
         ...
    +-- config
         agent.config  
    +-- plugins
         apm-dubbo-plugin.jar
         apm-feign-default-http-9.x.jar
         apm-httpClient-4.x-plugin.jar
         .....
    skywalking-agent.jar
  • 所有插件都在/plugins文件夹中。当插件jar在那里时它是活动的。删除插件jar,它被禁用。
  • 默认日志输出文件夹是/logs。
  • 配置文件在/config文件夹中。

Java代理安装

Linux Tomcat 7, Tomcat 8

tomcat/bin/catalina.sh.第一行中添加

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS

Windows Tomcat 7, Tomcat 8
tomcat/bin/catalina.bat.第一行添加

set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"

JAR
运行jar包,需要添加-javaagent参数来进行启动

java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar

当然更多java代理请参考官方文档

https://github.com/apache/incubator-skywalking/blob/v6.0.0-alpha/docs/en/setup/service-agent/java-agent/README.md

我本地的示例

再续APM-Skywalking_第3张图片
image.png

配置agent/config配置agent.application_code=xxl-job为自己的应用名

再续APM-Skywalking_第4张图片
image.png

后端和UI

SkyWalking后端分发包包括以下部分

  • bin / cmd脚本,在/bin文件夹中。包括用于后端服务器和UI启动的启动linux shellWindows cmd的启动脚本。
  • 后端配置,在/config文件夹中。包括后台的设置文件,这些文件application.ymllog4j.xmlalarm-settings.yml。大多数打开的设置都在这些文件中。
  • 后端库,在/oap-libs文件夹中。后端的所有jar文件都在其中。
    Webapp env,在webapp文件夹中。UI前端jar文件位于此处及其webapp.yml设置文件中。

快速开始

要求:JDK8

使用bin/startup.sh(或cmd)在默认设置中启动后端和UI

  • 存储,默认使用H2,为了确保,不需要进一步部署。

  • 后端侦听0.0.0.0/11800gRPC API和0.0.0.0/12800http rest API。在Java,.NetCore,Node.js,Istio代理/探测器中,将gRPC服务地址设置为ip/host:11800。(ip / host是后端所在的位置)

  • UI侦听8080端口并请求127.0.0.1/12800执行GraphQL查询。

分布式部署后端和UI

再续APM-Skywalking_第5张图片
image.png
  • 所有本机代理和探测器(基于语言或网状探测器)都使用gRPC服务(core/default/gRPC*in application.yml)将数据报告给后端。此外,支持JSON格式的jetty服务。

  • UI使用GraphQL(HTTP)查询来访问Jetty服务(core/default/rest*in application.yml)中的后端。

后端设置文档参考

https://github.com/apache/incubator-skywalking/blob/v6.0.0-alpha/docs/en/setup/backend/backend-setup.md

UI设置

启动脚本也在/bin/webappService.sh(.bat)

UI的设置文件 webapp/webapp.yml中。它由三部分组成。

1、服务启动端口
2、连接后端的配置
3、设置用户名,密码

server:
  port: 8080

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by , 
    listOfServers: 10.2.34.1:12800,10.2.34.2:12800

security:
  user:
    # username
    admin:
      # password
      password: admin

常见问题解答

https://github.com/apache/incubator-skywalking/tree/master/docs/en/FAQ

你可能感兴趣的:(再续APM-Skywalking)