再續(xù)APM-Skywalking

寫這篇文章出發(fā)點(diǎn)是因?yàn)椋覈L試了Pinpoint這樣的APM發(fā)現(xiàn),我部署后根本拿不到相關(guān)的數(shù)據(jù),而且網(wǎng)上的參考資料,基本上沒有價(jià)值,都是抄襲官網(wǎng)的,我也查看了Pinpoint官方文檔也不知道怎么樣解決,我的問題是Pinpoint agent(1.8.0)添加到了tomcat中,在web界面就只識別了tomcat,至于里面的數(shù)據(jù)就沒有獲取到。(據(jù)說是從1.6版本后,改了相關(guān)通訊交互方式,直到現(xiàn)在我還是沒有找到解決方案。)

因?yàn)橛龅竭@樣的困難,所以轉(zhuǎn)而選取同類型的APM-Skywalking來進(jìn)行研究。

目標(biāo)

其實(shí)換過來思考,無論采用什么樣的APM來做應(yīng)用性能監(jiān)控主要都是想解決以下問題:

  • 主動分布式鏈路追蹤
  • 應(yīng)用級別性能監(jiān)控(jvm等)
  • 低侵入
  • 容易二次開發(fā)相關(guān)插件
  • 對相關(guān)服務(wù)器性能占比較小

選型

方案 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
實(shí)現(xiàn)方 式 代碼埋點(diǎn)(攔截器,注解,過濾器等) 攔截請求,發(fā)送(HTTP,mq)數(shù)據(jù)至zipkin服務(wù) Java探針,字節(jié)碼增強(qiáng) Java探針,字節(jié)碼增強(qiáng)
存儲 Mysql , Hdfs in-memory , Mysql , Cassandra , Elasticsearch HBase Elasticsearch , H2
jvm監(jiān)控 不支持 不支持 支持 支持
trace查詢 支持 支持 需要二次開發(fā) 支持
侵入 高,需要埋點(diǎn) 高,需要開發(fā)
部署成本 較高

針對業(yè)務(wù)情況,主要重點(diǎn)關(guān)注PinpointSkyWalking,由于Pinpoint我沒有調(diào)通,進(jìn)而研究SkyWalking。

APM-Skywalking

Skywalking是國人-吳晟大佬個(gè)人開源的項(xiàng)目,并且被搜錄到了Apache基金會當(dāng)中持續(xù)開源。

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

希望看到文章覺得不錯(cuò)幫大佬點(diǎn)亮下小星星呀

官方體驗(yàn)地址:http://106.75.237.45:8080/

借用官方的原理圖

image.png

SkyWalking是一個(gè)開源的APM系統(tǒng),包括監(jiān)控,跟蹤,診斷Cloud Native架構(gòu)中分布式系統(tǒng)的功能。核心功能如下。

  • 服務(wù),服務(wù)實(shí)例,端點(diǎn)指標(biāo)分析
  • 根本原因分析
  • 服務(wù)拓?fù)鋱D分析
  • 服務(wù),服務(wù)實(shí)例和端點(diǎn)依賴性分析
  • 檢測到緩慢的服務(wù)和端點(diǎn)
  • 性能優(yōu)化
  • 分布式跟蹤和上下文傳播
  • 報(bào)警

截至到目前,Skywalking已經(jīng)發(fā)布了6.0.0-α版本,從這個(gè)版本開始已經(jīng)內(nèi)置了H2數(shù)據(jù),并且先比5.0重構(gòu)了后端內(nèi)核,應(yīng)該算是比較大的改變。

下載頁面:http://skywalking.apache.org/downloads/

簡單搭建

根據(jù)情況選擇適合的解壓包,進(jìn)行解壓。(我下載的是windows的zip)

解壓后

image.png

其中agent文件夾是探針,包含整個(gè)目錄,請不要改變目錄結(jié)構(gòu)

+-- 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文件夾中。當(dāng)插件jar在那里時(shí)它是活動的。刪除插件jar,它被禁用。
  • 默認(rèn)日志輸出文件夾是/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
運(yùn)行jar包,需要添加-javaagent參數(shù)來進(jìn)行啟動

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

當(dāng)然更多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為自己的應(yīng)用名

image.png

后端和UI

SkyWalking后端分發(fā)包包括以下部分

  • bin / cmd腳本,在/bin文件夾中。包括用于后端服務(wù)器和UI啟動的啟動linux shellWindows cmd的啟動腳本。
  • 后端配置,在/config文件夾中。包括后臺的設(shè)置文件,這些文件application.yml, log4j.xmlalarm-settings.yml。大多數(shù)打開的設(shè)置都在這些文件中。
  • 后端庫,在/oap-libs文件夾中。后端的所有jar文件都在其中。
    Webapp env,在webapp文件夾中。UI前端jar文件位于此處及其webapp.yml設(shè)置文件中。

快速開始

要求:JDK8

使用bin/startup.sh(或cmd)在默認(rèn)設(shè)置中啟動后端和UI

  • 存儲,默認(rèn)使用H2,為了確保,不需要進(jìn)一步部署。

  • 后端偵聽0.0.0.0/11800gRPC API和0.0.0.0/12800http rest API。在Java,.NetCore,Node.js,Istio代理/探測器中,將gRPC服務(wù)地址設(shè)置為ip/host:11800。(ip / host是后端所在的位置)

  • UI偵聽8080端口并請求127.0.0.1/12800執(zhí)行GraphQL查詢。

分布式部署后端和UI

image.png
  • 所有本機(jī)代理和探測器(基于語言或網(wǎng)狀探測器)都使用gRPC服務(wù)(core/default/gRPC*in application.yml)將數(shù)據(jù)報(bào)告給后端。此外,支持JSON格式的jetty服務(wù)。

  • UI使用GraphQL(HTTP)查詢來訪問Jetty服務(wù)(core/default/rest*in application.yml)中的后端。

后端設(shè)置文檔參考

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

UI設(shè)置

啟動腳本也在/bin/webappService.sh(.bat)

UI的設(shè)置文件 webapp/webapp.yml中。它由三部分組成。

1、服務(wù)啟動端口
2、連接后端的配置
3、設(shè)置用戶名,密碼

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容