SkyWalking部署
作者 |
劉暢 |
時間 |
2021-07-12 |
環境: centos7.5
主機名 |
IP |
安裝軟件 |
es01 |
192.168.30.47 |
elasticsearch 7.8.1 |
es02 |
192.168.30.48 |
elasticsearch 7.8.1 |
es03 |
192.168.30.49 |
elasticsearch 7.8.1 |
skywalking |
192.168.30.51 |
skywalking 8.6.0,jdk1.8.0_291 |
目錄
3.2 將打包的skywalking agent部署到jar應用上
1 部署elasticsearch服務
在192.168.30.47-192.168.30.49節點上操作,並安裝elasticsearch-head,這里省略安裝步驟,詳細
安裝步驟可以參考: https://www.cnblogs.com/LiuChang-blog/p/14702941.html文檔。
elasticsearch集群名稱為: elk-cluster
# skywalking官網推薦將以下配置添加到elasticsearch.yml
thread_pool.write.queue_size: 1000
# Suitable for ElasticSearch 6 and 7
# 訪問elasticsearch集群
http://192.168.30.47:9100/
2 部署SkyWalking
在192.168.30.51節點上操作
官方文檔: https://skywalking.apache.org/docs/main/v8.6.0/readme/
2.1 部署jdk1.8
# tar -xzf jdk-8u291-linux-x64.tar.gz -C /home/
# cd /home/
# mv jdk-8u291-linux-x64/ jdk/
# vim /etc/profile
export JAVA_HOME=/home/jdk
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
2.2 下載SkyWaking
https://www.apache.org/dyn/closer.cgi/skywalking/8.6.0/apache-skywalking-apm-es7-8.6.0.tar.gz
# tar -xzf apache-skywalking-apm-es7-8.6.0.tar.gz -C /home/
# cd /home/
# mv apache-skywalking-apm-es7-8.6.0/ skywalking-es7/
# ls -l /home/skywalking-es7/
2.3 配置skywalking連接es7
# vim /home/skywalking-es7/config/application.yml
可選優化:
(1) 修改skywalking日志存儲個數
# vim /home/skywalking-es7/config/log4j2.xml
<DefaultRolloverStrategy max="30"/>
# 默認30個,單個日志大小102400KB
# 建議值5
(2) 關於存儲清理的配置
# vim /home/skywalking-es7/config/application.yml
core:
recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3}
# Unit is day
# 記錄: 影響記錄數據,包括跟蹤和報警。
# 建議3天
metricsDataTTL: ${SW_CORE_METRICS_DATA_TTL:7}
# Unit is day
# 指標: 影響所有指標,包括服務、實例、端點指標和拓撲圖指標。
# 建議3天
(3) 優化skywalking存儲elasticsearch配置
# vim /home/skywalking-es7/config/application.yml
elasticsearch7:
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
# Shard number of new indexes
# es存儲分片數,因為是3個es節點,這里設置為3
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1}
# Replicas number of new indexes
# es存儲分片副本數
# 建議1
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000}
# Execute the async bulk record data every ${SW_STORAGE_ES_BULK_ACTIONS} requests
# 批量提交的大小,通過增加該值,減少skwalking服務端和es之間交互,增加吞吐量
# 建議4000
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}
# flush the bulk every 10 seconds whatever the number of requests
# 每間隔多少秒提交請求,建議值30
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}
# the number of concurrent requests
# 增加現有請求數,建議值4
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
# 查詢最大數量,建議值8000
2.4 啟動skywalking
# /home/skywalking-es7/bin/startup.sh
# skywalking的日志文件在skywalking安裝目錄下的logs目錄下。
# netstat -tunlp | grep java
11800為gRPC 服務agent連接端口
12800為REST 服務agent連接端口
2.5 訪問skywalking UI
http://172.16.1.123:8080/
3 部署skywalking的agent追蹤java應用
3.1 修改agent配置文件並將agent目錄打包
# ls -l /home/skywalking-es7/agent/
# egrep -v "^$|^#" /home/skywalking-es7/agent/config/agent.config
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# agent注冊到skywalking的服務名,這里不配置,采用變量注入的方式進行覆蓋
agent.is_cache_enhanced_class = ${SW_AGENT_CACHE_CLASS:true}
agent.class_cache_mode = ${SW_AGENT_CLASS_CACHE_MODE:MEMORY}
# 上面兩行表示打開skywalking代理與其他Java代理字節碼進程的兼容性
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.30.51:11800}
# agent連接到skywalking的地址
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
# agent默認日志文件存放在agent目錄下的logs目錄下
logging.level=${SW_LOGGING_LEVEL:INFO}
logging.dir=${SW_LOGGING_DIR:/home/liuchan/log/agent}
# 自定義日志家目錄,默認為空字符串(" ")
logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES:5}
# agent歷史文件個數限制,默認為-1,表示不限制,為防止agent日志爆盤,這里修改為5
plugin.mount=${SW_MOUNT_FOLDERS:plugins,activations}
# agent插件掛載的目錄
# cd /home/skywalking-es7/
# tar -czf agent.tar.gz agent/
3.2 將打包的skywalking agent部署到jar應用上
1 部署agent
# tar -xzf agent.tar.gz -C /home/liuchan/
# mkdir -p /home/liuchan/log/agent/
2 修改docker-compose.yml文件[只修改以java進程啟動容器的部分]
# vim /home/liuchan/compose/docker-compose.yml
(1) 掛載agent卷到容器
volumes:
- /home/liuchan/agent:/home/liuchan/agent
(2) 修改java命令,在 -jar 之前加入如下參數
command:
-javaagent:/home/liuchan/agent/skywalking-agent.jar -Dskywalking.agent.service_name=<分組名稱>::<容器名稱> -Dskywalking.agent.instance_name=<容器名稱>-${HOSTIP} -Dskywalking.logging.file_name=<容器名稱>-${HOSTIP}.log
3 重啟docker-compose
# docker-compose down
# docker-compose up -d
4 訪問skywalking的UI
4.1 儀表板
http://192.168.30.51:8080/
儀表板提供服務、服務實例和端點的指標,我們需要了解一些指標術語。
吞吐量CPM # 每分鍾調用次數
Apdex # 應用程序性能指數,滿意”、“容忍”和“沮喪”分別對應1、0.5、0
響應時間百分比 # 包括p99、p95、p90、p75、p50
SLA # 代表成功率。對於HTTP,它表示200響應代碼的速率。
服務、實例和儀表板選擇器可以手動重新加載而不是重新加載整個頁面。
4.2 拓撲圖
http://192.168.30.51:8080/topology