skywalking簡介
SkyWalking:一個開放源碼,從微服務和雲本地基礎設施可觀測性平臺,收集、分析、聚合和可視化數據。提供了一種簡便的方法讓你看清你的分佈式系統,可以看清整個微服務的調用鏈路。它是一個現代,專門爲雲本機,容器和分佈式系統提供監控的APM(應用性能管理(Application Performance Management))。
service map
面對以上圖情況, 我們就需要一些可以幫助理解系統行爲、用於分析性能問題的工具,以便發生故障的時候,能夠快速定位和解決問題,這時候 APM(應用性能管理)工具就該閃亮登場了。
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,這裏主要介紹 SkyWalking ,它是一款優秀的國產 APM 工具,包括了分佈式追蹤、性能指標分析、應用和服務依賴分析等。
下面是 SkyWalking 6.x 的架構圖:
官網簡介(https://github.com/apache/skywalking)
服務介紹:
- oas(Observability Analysis Platform):用於接收微服務代理上傳的鏈路信息,並存儲。
- ui:用於展示鏈路信息。
- 存儲:用於保存鏈路數據,可以使用es或者mysql等存儲。
skywalking服務器安裝
docker-compose安裝方式(https://github.com/apache/skywalking-docker/blob/master/6/6.4/compose/docker-compose.yml)
注意默認oap安裝的時區是0時區,所以你在界面右下角選擇應該也是零時區,否則差8個小時,可以將oap默認時區修改爲東八區,界面也就默認東八區查詢
version: '3.3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.1
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: apache/skywalking-oap-server:6.4.0
container_name: oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
TZ: Asia/Shanghai
ui:
image: apache/skywalking-ui:6.4.0
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: oap:12800
執行命令:
[root@ip_192_168_1_134 cent]# docker-compose up -d
Starting elasticsearch ... done
Starting oap ... done
Starting ui ... done
查看所有服務:
[root@ip_192_168_1_134 cent]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e53a46e4b58 apache/skywalking-ui:6.4.0 "bash docker-entrypo…" 17 minutes ago Up 12 minutes 0.0.0.0:8080->8080/tcp ui
b26d892b7a5e apache/skywalking-oap-server:6.4.0 "bash docker-entrypo…" 17 minutes ago Up 10 minutes 0.0.0.0:11800->11800/tcp, 1234/tcp, 0.0.0.0:12800->12800/tcp oap
ccdf1f078973 docker.elastic.co/elasticsearch/elasticsearch:6.8.1 "/usr/local/bin/dock…" 17 minutes ago Up 12 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
其中 8080端口是ui端口,瀏覽器訪問:http://ip:8080
skywalking代理
可以理解每個微服務都是一個上傳鏈路信息的埋點,需要在應用啓動注入代理工具,對代碼無侵入。
skywalking同時支持java,donetcore,支持跨語言調用鏈路等,這也是優於pinpoint的主要點。
java代理
java代理安裝文檔(https://github.com/apache/skywalking/blob/v6.4.0/docs/en/setup/service-agent/java-agent/README.md)
下載完整安裝包
參考(https://github.com/apache/skywalking/blob/master/docs/en/setup/README.md)
下載Binary Distribution (Windows),目錄結構:
其中agent目錄用於設置java代理,目錄結構:
springboot應用中啓動方式:
java -Denv=uat -Dskywalking.agent.service_name=ums -Dskywalking.collector.backend_service=192.168.1.134:11800 -Dskywalking.plugin.mysql.trace_sql_parameters=true -javaagent:F:/soft/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar ums-app-1.0.12-SNAPSHOT.jar
- skywalking.collector.backend_service:表示oap收集器地址。
- skywalking.agent.service_name:表示當前微服務名稱
- skywalking.plugin.mysql.trace_sql_parameters:表示是否抓取sql語句的參數,默認是false。
- -javaagent:F:/soft/apache-skywalking-apm-bin/agent/skywalking-agent.jar:指定代理jar
-D配置項在 agent/config/agent.config配置也可,但是不夠靈活。
忽略端點
某些端口比如consul,apollo,數據庫的關閉動作等都不需要,
skywalking中可選插件中有apm-trace-ignore-plugin可以通過端點名稱忽略日誌
拷貝agent/optional-plugins/apm-trace-ignore-plugin-6.4.0.jar到plugins目錄
agent/config目錄新建apm-trace-ignore-plugin.config文件添加配置:
trace.ignore_path=/v1/agent/**,/v1/event/**,/v1/catalog/**,/v1/health/**,Mysql/JDBI/Statement/executeQuery,Mysql/JDBI/Connection/close
多個端點path使用,隔開。