全部產品
Search
文件中心

Elasticsearch:使用SkyWalking和Elasticsearch實現全鏈路監控

更新時間:Jun 30, 2024

SkyWalking是分布式的應用效能管理APM(Application Performance Monitoring)工具,也被稱為分布式追蹤系統。本文介紹使用Elasticsearch 7.4版本的執行個體與SkyWalking,實現對執行個體的全鏈路監控。

背景資訊

SkyWalking具有以下特性:

  • 全自動探針監控,不需要修改應用程式代碼。

  • 手動探針監控,提供了支援OpenTracing標準的SDK。覆蓋範圍擴大到OpenTracing-Java支援的組件。

    說明

    OpenTracing支援的組件請參見OpenTracing Registry

  • 自動監控和手動監控可以同時使用,使用手動監控彌補自動監控不支援的組件,甚至私人化組件。

  • 純Java後端剖析器,提供RESTful服務,可為其他語言探針提供分析能力。

  • 高效能純流式分析。

SkyWalking的架構圖如下。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。

操作流程

  1. 步驟一:下載並安裝SkyWalking

  2. 步驟二:配置SkyWalking與Elasticsearch連通

  3. 步驟三:驗證結果

步驟一:下載並安裝SkyWalking

  1. 在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
  2. 解壓。

    tar -zxvf apache-skywalking-apm-es7-7.0.0.tar.gz
  3. 查看解壓後的檔案。

    ls apache-skywalking-apm-bin-es7/

    返回結果如下。

    total 92
    agent
    bin
    config
    LICENSE
    licenses
    NOTICE
    oap-libs
    README.txt
    tools
    webapp

步驟二:配置SkyWalking與Elasticsearch連通

  1. 在config目錄下,開啟application.yml檔案。

    cd apache-skywalking-apm-bin-es7/config/
    vi application.yml
  2. 定位到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使用者的密碼在建立執行個體時指定,如果忘記可重設。重設密碼的注意事項和操作步驟,請參見重設執行個體訪問密碼

    重要

    配置中僅指定使用者名稱和密碼即可,請注釋trustStorePathtrustStorePass,否則會報錯NoSuchFileException:../es_keystore.jks

  3. 可選:修改監聽的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}
  4. 可選:在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

步驟三:驗證結果

  1. 在Linux伺服器中,啟動SkyWalking。

    cd ../bin
    ./startup.sh
    重要
    • 在啟動SkyWalking前,請確保Elasticsearch執行個體為正常狀態。

    • 執行./startup.sh命令,會同時啟動Collector和UI。

    啟動成功後,返回如下結果。

    SkyWalking OAP started successfully!
    SkyWalking Web Application started successfully!
  2. 在瀏覽器中,訪問http://<Linux伺服器的IP地址>:8080/

    訪問skywalking

    說明

    初次使用SkyWalking串連Elasticsearch服務,啟動會比較慢。因為SkyWalking需要向Elasticsearch服務建立大量的index,所以在未建立完成之前,訪問這個頁面會顯示空白。此時您可以通過查看日誌來判斷啟動是否完成,日誌路徑為<SkyWalking的安裝路徑>logs/skywalking-oap-server.log

  3. 參見登入Kibana控制台,登入對應Elasticsearch執行個體的Kibana控制台,執行GET _cat/indices?v 命令查看索引資料。

    根據返回結果,可以看到Elasticsearch執行個體中包含了大量以skywalking-index開頭的索引。skywalking-index開頭的索引