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,天源迪科,當當網,京東金融
 
安裝
官網地址:
GitHub:
下載地址:
 
可以從上述地址下載,也可以直接到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
 
 
 
相關鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM