再续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/

借用官方的原理图

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容