美文网首页运维
再续APM-Skywalking

再续APM-Skywalking

作者: 我为峰2014 | 来源:发表于2018-11-19 11:38 被阅读529次

    写这篇文章出发点是因为,我尝试了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/

    借用官方的原理图

    image.png

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

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

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

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

    简单搭建

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

    解压后

    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

    我本地的示例

    image.png

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

    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

    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

        本文链接:https://www.haomeiwen.com/subject/ypopfqtx.html