一、簡介
SkyWalking是一款用于分布式系統跟蹤和性能監控的開源工具。它可以幫助開發人員了解分布式系統中不同組件之間的調用關系和性能指標,從而進行故障排查和性能優化。
它支持多種語言和框架,包括Java、.NET、Node.js等。它通過在應用程序中插入代理或使用特定的SDK來收集跟蹤數據,并將這些數據發送到SkyWalking服務器進行分析和展示。
分布式跟蹤:SkyWalking可以追蹤分布式系統中各個組件之間的調用鏈路,可以查看請求的流程和耗時情況,從而更好地定位問題。 性能監控:SkyWalking可以監控應用程序的性能指標,如請求延遲、吞吐量、錯誤率等,用來評估系統的健康狀況,并及時發現潛在的性能問題。 圖表分析:SkyWalking提供了豐富的圖表分析功能,如拓撲圖展示、調用鏈路分析、性能趨勢等,便于查看系統的運行情況和瓶頸所在。 告警和報警:SkyWalking可以設置告警規則,當系統出現異常或性能指標超過預設閾值時,及時通知相關人員,以便快速響應和處理。
二、安裝elasticsearch
1.安裝
rpm -ivh elastic-agent-8.13.2-x86_64.rpm
2.修改配置
vim /etc/elasticsearch/elasticsearch.yml
修改如下:
去掉cluster.name注釋,起個名字
cluster.name: my-es去掉node.name注釋,起個名字
#node.name: es01看情況是否需要修改日志目錄和數據庫目錄
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch去掉network.host注釋,主機ip改成自己的
network.host: 192.168.63.230去掉http.port注釋
http.port: 9200去掉discovery.seed_hosts注釋,es本身是個集群環境,如果只有一臺,那就只把自己的ip填進去
discovery.seed_hosts: ["192.168.63.230"]下面兩行認證,es8以后默認是開啟的,我們給關閉,改成false
xpack.security.enabled: false
xpack.security.enrollment.enabled: false修改集群選舉的管理節點主機列表,只有一臺,就當做管理節點
cluster.initial_master_nodes: ["192.168.63.230"]
3.啟動并設置開機自啟
systemctl enable elasticsearch --now
三、安裝skywalking
skywalking官網:Downloads | Apache SkyWalking
安裝包下載地址:Apache Archive Distribution Directory
3.1手動下載后上傳至服務器,或直接執行命令下載
cd /usr/local
wget https://www.apache.org/dyn/closer.cgi/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz
注:oapService為Skywalking的核心后端服務,用來接收各個服務的監控數據并解析處理存儲到數據庫中,webappService為Web項目,用來展示Skywalking的監控數據,圖表分析等
3.2避免端口沖突,更換 SkyWalking UI界面默認8080端口
vim webapp/application.ymlserverPort: ${SW_SERVER_PORT:-8100}
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}
zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://localhost:9412}
3.3獲取elasticsearch的ssl證書
在修改application.yml配置之前,我們需要獲取到elasticsearch的ssl證書,進入elasticsearch的安裝目錄,可通過以下命令獲取es的http.p12證書的密碼
cd /usr/share/elasticsearch/bin
./elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password打印輸入如下:
[root@lamp bin]# ./elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
warning: ignoring JAVA_HOME=/usr/local/java/jdk-17.0.1; using bundled JDK
z8dOSZfjRgGOzRhThMRTLQ
3.4修改Skywalking存儲
vim config/application.ymlstorage:selector: ${SW_STORAGE:elasticsearch}elasticsearch:namespace: ${SW_NAMESPACE:"skywalking-index"}clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}user: ${SW_ES_USER:"elastic"}password: ${SW_ES_PASSWORD:"elastic"}trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:"/etc/elasticsearch/certs/http.jks"}trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:"z8dOSZfjRgGOzRhThMRTLQ"}
注:
clusterNodes:elasticsearch地址
protocol:選http,如果是https需要給elasticsearch安裝證書
user:elasticsearch賬號,默認elastic
password:elasticsearch密碼,默認elastic
trustStorePath:elasticsearch的http.jks所在地址
trustStorePass:上一步將http.p12證書轉為http.jks格式證書獲取的密碼
3.5啟動 SkyWalking OAP 服務
sh bin/oapService.sh
查看日志:
tail -200f logs/skywalking-oap-server.log
skywalking-oap-server服務啟動后會暴露11800 和 12800 兩個端口
3.6啟動 SkyWalking UI 服務
sh bin/webappService.sh
查看日志:
tail -200f logs/skywalking-webapp.log
默認是8080端口,上面更換成8100
瀏覽器訪問:http://192.168.20.130:8100
四、使用Skywalking-agent代理java服務
1. 準備一個springboot項目的jar包
2. 下載Skywalking-agent
3.解壓
tar -zxvf apache-skywalking-java-agent-9.1.0.tgz
4.修改以下agent.config配置
vim config/agent.config# 服務名稱
agent.service_name=127.0.0.1::${SW_SERVICE_NAME}
# 修改為skywalking部署的地址,11800是skywalking的oap服務的端口
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
5.啟動springboot的jar包
啟動命令中指定-javaagent到skywalking-agent的目錄
nohup java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -DSW_SERVICE_NAME=ski -jar ski-springboot.jar >log.out 2>&1 &
日志中可以看到加載skywalking
查看控制面板