SkyWalking是分布式的應用效能管理APM(Application Performance Monitoring)工具,也被稱為分布式追蹤系統。本文介紹使用Elasticsearch 7.4版本的執行個體與SkyWalking,實現對執行個體的全鏈路監控。
背景資訊
SkyWalking具有以下特性:
全自動探針監控,不需要修改應用程式代碼。
手動探針監控,提供了支援OpenTracing標準的SDK。覆蓋範圍擴大到OpenTracing-Java支援的組件。
說明OpenTracing支援的組件請參見OpenTracing Registry。
自動監控和手動監控可以同時使用,使用手動監控彌補自動監控不支援的組件,甚至私人化組件。
純Java後端剖析器,提供RESTful服務,可為其他語言探針提供分析能力。
高效能純流式分析。
SkyWalking的架構圖如下。
SkyWalking的核心在於資料分析和度量結果的儲存平台部分,通過HTTP或gRPC方式向SkyWalking Collector提交分析和度量資料。SkyWalking Collector對資料進行分析和彙總,儲存到Elasticsearch、H2、MySQL、TiDB等其一即可,最後通過SkyWalking UI的可視化介面查看分析結果。Skywalking支援從多個來源和多種格式收集資料,支援多種語言的Skywalking Agent 、Zipkin v1/v2 、Istio勘測、Envoy度量等資料格式。
本文介紹SkyWalking與Elasticsearch 7.4版本的整合配置,您也可以通過Skywalking用戶端上報Java應用資料,詳細資料,請參見通過SkyWalking上報Java應用資料。SkyWalking支援的中介軟體和組件,請參見SkyWalking官方文檔。
前提條件
您已完成以下操作:
建立Elasticsearch執行個體,本文使用7.4.0版本。
具體操作步驟,請參見建立Elasticsearch執行個體。
準備一台Linux伺服器,並在伺服器中安裝JDK,要求JDK版本為1.8.0及以上版本。
建議您使用阿里雲ECS伺服器。購買ECS伺服器的方法,請參見步驟一:建立ECS執行個體。
說明安裝JDK的方式,請參見步驟三:安裝JDK。如果未正確安裝JDK,啟動SkyWalking後查看日誌,可能會顯示Java not found或者java-xxx: No such file or directory報錯。
確保Linux伺服器的8080、10800、11800、12800連接埠不被佔用。
關閉Linux伺服器的防火牆及SELinux。
操作流程
步驟一:下載並安裝SkyWalking
在Linux伺服器中,下載SkyWalking。
本文使用的是Elasticsearch 7.4.0版本,選擇Binary Distribution for Elasticsearch 7二進位包。下載命令如下。
wget https://archive.apache.org/dist/skywalking/7.0.0/apache-skywalking-apm-es7-7.0.0.tar.gz
解壓。
tar -zxvf apache-skywalking-apm-es7-7.0.0.tar.gz
查看解壓後的檔案。
ls apache-skywalking-apm-bin-es7/
返回結果如下。
total 92 agent bin config LICENSE licenses NOTICE oap-libs README.txt tools webapp
步驟二:配置SkyWalking與Elasticsearch連通
在config目錄下,開啟application.yml檔案。
cd apache-skywalking-apm-bin-es7/config/ vi application.yml
定位到
storage
部分,將預設的H2存放庫改為elasticsearch7,並按照以下說明配置。storage: selector: ${SW_STORAGE:elasticsearch7} elasticsearch7: nameSpace: ${SW_NAMESPACE:"skywalking-index"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es-cn-4591kzdzk000i****.public.elasticsearch.aliyuncs.com:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"} # trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""} enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Hour and Day metrics will be merged into minute index. dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index. user: ${SW_ES_USER:"elastic"} password: ${SW_ES_PASSWORD:"es_password"}
說明SkyWalking服務預設使用H2儲存,不具有持久儲存的特性,所以需要將儲存群組件修改為elasticsearch。
參數
說明
selector
儲存選取器。本文設定為elasticsearch7。
nameSpace
命名空間。Elasticsearch執行個體中,所有索引的命名會使用此參數值作為首碼。
clusterNodes
指定Elasticsearch執行個體的訪問地址。由於執行個體與SkyWalking不在同一Virtual Private Cloud(Virtual Private Cloud)下,因此要使用公網訪問地址,擷取方式請參見查看執行個體的基本資料。
user
Elasticsearch執行個體的訪問使用者名稱,預設為elastic。
password
對應使用者的密碼。elastic使用者的密碼在建立執行個體時指定,如果忘記可重設。重設密碼的注意事項和操作步驟,請參見重設執行個體訪問密碼。
重要配置中僅指定使用者名稱和密碼即可,請注釋trustStorePath和trustStorePass,否則會報錯NoSuchFileException:../es_keystore.jks。
可選:修改監聽的IP地址或連接埠號碼。
SkyWalking預設使用12800作為Rest API通訊連接埠,11800為gRPC API連接埠,可在application.yml檔案的core中修改,本文使用預設配置。
core: selector: ${SW_CORE:default} default: # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate # Receiver: Receive agent data, Level 1 aggregate # Aggregator: Level 2 aggregate role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator restHost: ${SW_CORE_REST_HOST:0.0.0.0} restPort: ${SW_CORE_REST_PORT:12800} restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} gRPCPort: ${SW_CORE_GRPC_PORT:11800}
可選:在webapp目錄下,修改webapp.yml配置。
本文使用預設配置,您也可以根據具體需求修改。
server: port: 8080 collector: path: /graphql ribbon: ReadTimeout: 10000 # Point to all backend's restHost:restPort, split by , listOfServers: 127.0.0.1:12800
步驟三:驗證結果
在Linux伺服器中,啟動SkyWalking。
cd ../bin ./startup.sh
重要在啟動SkyWalking前,請確保Elasticsearch執行個體為正常狀態。
執行
./startup.sh
命令,會同時啟動Collector和UI。
啟動成功後,返回如下結果。
SkyWalking OAP started successfully! SkyWalking Web Application started successfully!
在瀏覽器中,訪問http://<Linux伺服器的IP地址>:8080/。
說明初次使用SkyWalking串連Elasticsearch服務,啟動會比較慢。因為SkyWalking需要向Elasticsearch服務建立大量的index,所以在未建立完成之前,訪問這個頁面會顯示空白。此時您可以通過查看日誌來判斷啟動是否完成,日誌路徑為
<SkyWalking的安裝路徑>logs/skywalking-oap-server.log
。參見登入Kibana控制台,登入對應Elasticsearch執行個體的Kibana控制台,執行
GET _cat/indices?v
命令查看索引資料。根據返回結果,可以看到Elasticsearch執行個體中包含了大量以
skywalking-index
開頭的索引。