前情提要:
Skywalking3.2.6是很老的版本了,18年8月左右的最新stable版本,進行總結純粹出於方法論和過程論的總結,以及歷史沉澱。
目錄:
(1).skywalking3.2.6部署拓撲圖
(2).機器拓撲圖
(3).版本與下載
(4).部署skywalking-collector
(5).部署skywalking-web
(6).部署skywalking-agent
(7).skywalking官方issue
(8).skywalking3.2.6重要缺陷
(9).其他注意事項
(10).相關文章
(1).skywalking3.2.6部署拓撲圖
skywalking-agent:非侵入式agent,是應用服務的一部分。
skywalking-collector:trace收集器,可以部署多個。
skywalking-web:trace可視化頁面。
elasticsearch:存儲trace數據。
(2).機器拓撲圖
綜合成本和性能,主要原則:夠用就好。
(3).版本與下載
skywalking與elasticsearch版本:skywalking-stable-3.2.6,elasticsearch5.6.8
wget https://github.com/apache/incubator-skywalking/releases/download/v3.2.6/skywalking-agent.tar.gz
wget https://github.com/apache/incubator-skywalking/releases/download/v3.2.6/skywalking-collector.tar.gz
wget https://github.com/apache/incubator-skywalking/releases/download/v3.2.6/skywalking-web.tar.gz
解壓得到skywalking-agent, skywalking-web, skywalking-collector
(4).部署skywalking-collector
1.mv skywalking-collecotr /app/3rd
2.修改配置文件:
config/log4j2.xml
<Property name="log-path">/data/xxx/skywalking-collector/logs</Property>
application.yml:要和elasticsearch保持一致。
elasticsearch: cluster_name: my-application cluster_nodes: localhost:9300
所有localhost都要改成ip, 配置zk, es
3.啟動:
bin/collectorService.sh start
(5).部署skywalking-web
1.mv skywalking-web /app/3rd
2.修改配置文件:
config/log4j2.xml
<Property name="log-path">/data/xxx/skywalking-web/logs</Property>
config/collector_config.properties:
collector.servers[0]=collecotr1:10800
(可以部署多個)
application.properties
默認埠:8080
3.啟動:
./web-service.sh start
4.web界面
Trace:
Instance view
service tree
(6).部署skywalking-agent
業務同學需要關心和了解:
1.mv skywalking-agent /app/3rd/
2.修改配置文件:
conf/agent.confg:
agent.application_code=xxx (具體的業務名字)
collector.servers=collectorIP:10800 (可以部署多個)
logging.level=INFO
logging.dir=/data/xxx/skywalking-agent/logs
3.使用方式:
nohup java -javaagent:$javaAgent -jar $yourBiz.jar >/dev/null 2>&1 &
使用者需要替換:
$javaAgent 一般是:/app/3rd/skywalking-agent/skywalking-agent.jar
$yourBiz.jar,要啟動的業務jar包。
PS:
這裡省略了其他參數,如JVM參數,業務參數,看各自業務情況都要有。
(7).skywalking官方issue
1.skywalking 對motan的支持應該是從5.x開始;之前最近的一個穩定版本3.2.6-stable是否支持待確認(已經確認支持:作者&實際測試都確認),根據官方答覆看代碼應該是支持的,依據:https://github.com/apache/incubator-skywalking/issues/1545#issuecomment-412745201
因為我們使用的是motan,所以必須確認此點。
2.skywalking-stable-3.2.6隻能對應elasticsearch-5.x,依據:https://github.com/apache/incubator-skywalking/issues/507#issuecomment-412748537, 這裡使用elasticsearch5.6.8
這個事項也非常重要,卻很容易忽略,導致整個流程不通。
(8).skywalking3.2.6重要缺陷
Huge memory is used when using skywalking-agent
https://github.com/apache/skywalking/issues/1666
上述這個問題發現的也非常偶然,獨立ECS各種壓測都沒有問題。但是因為我們同時還在做容器化,測試環境的k8s資源都非常小,給每個pod分配的資源幾乎都是剛剛夠運行,在這個前提下使用skywalking-agent後內存飆漲無法啟動,然後開始在github上找作者深究這個問題。大致原因skywalking3.2.6這個版本對bytecode使用存在效率問題,只有內存臨界點上才會發生我們遇到的問題。詳情可以看上述issue。
這也是我們最後否決skywalking3.2.6的原因,雖然後續版本解決了這個問題,但是全鏈路這個事情已經排除在重要事項之外了。在我們完成整個基礎架構重構之後,才在k8s裡的apollo服務上進行了運用(skywalking當時的最新版本),參見:
K8S&微服務&阿里雲生產實踐-7:容器化生產環境集成apollo配置中心與skywalking全鏈路追蹤
(9).其他注意事項
Skywalking-agent一定不要使用100%的採樣率,沒有意義且徒耗性能,而且也做不到100%,會根據內存損耗對trace進行丟棄。
我們主要是看的全局拓撲,以及全局滯點/阻塞點。