前言
在上一篇介紹了使用pinpoint進行微服務的服務鏈監控(http://www.lxweimin.com/p/5a6dc609acea),但由于在使用過程中pinpoint的當前版本1.8.2還不支持webflux導致項目中使用的spring cloud gateway不能監控到,所以換用能夠支持webflux的skywalking。
在skywalking 6.2中已經支持spring cloud gateway。使用spring boot 2.1.4.RELEASE + spring cloud Greenwich.SR2 版本驗證通過,但使用spring boot 2.1.6.RELEASE + spring cloud Greenwich.SR2 版本驗證失敗。在6.2的java agent中spring cloud gateway的插件在optional-plugins目錄中,需要將它放置到plugins中。
SkyWalking一個開源可觀測性平臺,用于收集、分析、聚合和可視化來自服務和云原生基礎設施的數據。SkyWalking提供了一種簡單的方法,可以讓你清晰的查看分布式系統、甚至是跨云環境中。它更像是現代化APM(Application Performance Manager),專為云原生、基于容器和分布式系統而設計的。
SkyWalking是由國人開發,現在已經成為apache開源項目。對于SkyWalking的基本介紹可以直接參見中文文檔:https://github.com/apache/incubator-skywalking/tree/master/docs/others/cn 。
安裝部署
這里采用docker-compose的方式部署skywalking。部署所用的docker-compose.yml如下,skywalking-oap中掛載的配置文件volume來自于:https://github.com/apache/incubator-skywalking/tree/master/docker中的config目錄。
version: '3.3'
services:
elasticsearch:
image: elasticsearch:6.6.1
container_name: skywalking-es
restart: always
# ports:
# - 9200:9200
# - 9300:9300
environment:
discovery.type: single-node
TZ: Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: apache/skywalking-oap-server:6.2.0
container_name: skywalking-oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
TZ: Asia/Shanghai
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
# volumes:
# - ./config:/skywalking/config
ui:
image: apache/skywalking-ui:6.2.0
container_name: skywalking-ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 18080:8080
environment:
SW_OAP_ADDRESS: oap:12800
TZ: Asia/Shanghai
運行容器
運行docker-compose命令啟動skywalking。啟動后使用瀏覽器打開http://localhost:18080地址訪問skywalking界面。
docker-compose up -d
使用 Agent收集調用信息
skywalking與pinpoint一樣,采用javaagent無侵入的方式實現了應用調用信息的收集,原應用程序無需做任何改動。只需要在啟動時增加javaagent參數。啟動時參數如下:
java -javaagent:/opt/skywalking-agent/skywalking-agent.jar=agent.service_name=demo -jar demo.jar
說明:
- javaagent 參數必須在 jar參數之前;
- agent.service_name 表示服務名稱;
- 啟動前需要修改agent.config 文件中的相應配置:
collector.backend_service (后端服務的ip地址和端口 xxx.xxx.xxx.xxx:11800)