天天看點

SkyWalking基本使用

SkyWalking

SkyWalking是一個開源的用于分析 采集 分析 聚合服務和雲原生平台的可視化監控平台. Skywalking提供了非常易用的方式來監控分布式系統.它是一個現代化的APM(Application Performance Monitoring)工具,專為雲原生和基于容器的分布式系統而設計.

Why SkyWalking?

SkyWalking提供了不同應用場景下的分布式系統下的監控解決方案.SkyWalking為不同的服務提供了自動采集agent代理,也提供了手動采集的SKD工具包(比如java C# Nodejs的支援). 現在雲原生元件的發展使得應用更加強大,但是系統更加的複雜.SkyWalking解決分布式系統下的鍊路追蹤監控的痛點 并且支援 service mesh K8S Istio 等技術

SkyWalking為 服務(Service) 執行個體(Instance) 端點(Endpoint) 提供了監控的能力

  • 服務 Service 表示對于請求擁有相同處理行為的一個集合. 在使用Auto agent 或者 手動 SK可以自定義Service name. 類似與微服務中的一個服務的概念
  • 執行個體 Service Instance: 在一個服務下的某一個單獨提供服務執行個體. 類似 K8s中的Pod,或者微服務下同一個服務下負載的不同的執行個體應用.是作業系統下一個真實的程序
  • 端點 Endpoint 特定接受服務的請求路徑 如HTTP 的URL 或者 gRPC服務的 服務名+方法簽名

類比現在的微服務的話,假如 一個注冊到nacos中的user服務,下面挂了2個執行個體,請求/getUserInfo接口

分别 user服務代表 服務 Service, 2個執行個體對應執行個體 Service Instance ,請求路徑/getUserInfo代表一個端點Endpoint

架構圖

SkyWalking基本使用
  • Probe 探針 Skywalking中用來采集和格式化資料的單元 不同的探針提供不同的采集方式
  • Platform backend 背景處理平台 SkyWalking中用于資料聚合 分析 流處理 度量和日志功能的子產品
  • Storage 持久化 SkyWalking中用于存儲資料的子產品 它是一個可選的插件式的子產品. 我們可以選擇ES H2 MySQL TiDB InfluxDB等存儲媒體來儲存我們的資料
  • UI SkyWalking中的可選子產品用于從Platform backed 擷取資料用于展示的子產品,可以自定義也可以使用提供的Rocketbot UI 來展示我們收集到的監控資料

Quick Start

安裝Skywalking

  1. 首先我們選擇ES 來作為SkyWalking的存儲媒體 為了友善采用了docker ES7的模式快速搭建一個ES服務
    docker pull elasticsearch:7.12.0
    docker network create es
    docker run -d --name es --net es -p9200:9200 -p9300:9300 -e -e "discovery.type=single-node" elasticsearch:7.12.0
               
  2. 檢視我們ES是否安裝成功
    SkyWalking基本使用
    SkyWalking基本使用
  3. 通過以上步驟我們已經安裝好了ES 下一步安裝Skywalking 從官網下載下傳最新的SkyWalking APM

    https://skywalking.apache.org/downloads/

  4. 下載下傳完成之後解壓
    SkyWalking基本使用
    • bin 是二進制腳本檔案 用于啟動SkyWalking
    • logs 日志目錄
    • webapp 是Skywalking 自動的UI界面
    • config 用于配置Skywalking的細節 主要需要修改持久化的方式
    • agent 探針工具用于監控采集服務的資料
  5. 首先我們需要修改config目錄下application.yml檔案配置檔案 修改持久化資料源選擇ES7
    SkyWalking基本使用
  6. 修改storage标簽下的selector 為elasticsearch7 如果ES中有多個叢集或者namespace 使用者密碼的需要修改elasticsearch7下的配置
  7. 修改UI 的配置檔案 webapp目錄下的 webapp.yml檔案 主要是修改一下port 避免端口沖突
    # Licensed to the Apache Software Foundation (ASF) under one
    # or more contributor license agreements.  See the NOTICE file
    # distributed with this work for additional information
    # regarding copyright ownership.  The ASF licenses this file
    # to you under the Apache License, Version 2.0 (the
    # "License"); you may not use this file except in compliance
    # with the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    server:
      port: 8090
    
    collector:
      path: /graphql
      ribbon:
        ReadTimeout: 10000
        # Point to all backend's restHost:restPort, split by ,
        listOfServers: 127.0.0.1:12800
    
               
  8. 進去bin目錄啟動Skywalking 如果是Windows使用startup.bat Linux使用startup.sh
    SkyWalking基本使用
    • oapServer.xx 用于啟動 采集平台
    • webappService.xxx 啟動UI界面
    • startup.xxx 同時啟動以上2個元件
  9. 通路localhost:8090檢視
    SkyWalking基本使用
  10. 此時SkyWalking的監控端已經啟動

啟動監控Spring Boot項目

  1. 在啟動Spring Boot的java -jar 指令中添加JVM參數 因為Skywalking使用了javaagent技術是以在啟動Spring Boot應用時添加 -javaagent:/path/to/SkyWalking/agent/skywalking-agent.jar 路徑需要傳入對應SkyWalking中agent目錄下的jar的路徑
  2. 為了區分項目需要在JVM啟動參數 添加額外的參數

    -Dskywalking.agent.service_name=skywalking_test

  3. 完整啟動指令
    java -jar --javaagent:/path/to/SkyWalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=YOU_APPLICATION_NAME xxxx.jar
               
  4. 此時通過http請求通路一個路徑 就會在SkyWalking中擷取到資料
    SkyWalking基本使用

繼續閱讀