SkyWalking 介紹及部署

  • 1、SkyWalking簡介
  • 2、SkyWalking的搭建
    • 2.1 部署Elasticsearch
    • 2.2 部署SkyWalking-Server
    • 2.3 部署SkyWalking-UI
  • 3、應用接入
    • 3.1 jar包部署方式
    • 3.2 dockerfile方式
    • 3.3 DockerFile示例
  • 4、SkyWalking UI 界面說明
    • 4.1 儀表盤
      • 4.1.1 APM
        • (1)全局維度
        • (2)服務維度
        • (3)實例維度
        • (4)端點維度
      • 4.1.2 數據庫
      • 4.1.3 Istio、SelfObservability 、WebBrowser
    • 4.2 拓撲圖
    • 4.3 追蹤
    • 4.4 性能剖析
    • 4.5 日志
    • 4.6 告警
  • 5、其他相關的配置
    • 5.1 數據清理機制
    • 5.2 數據存儲和寫入優化(針對ES)
    • 5.3 鏈路過長問題
  • 6、參考文檔:

隨著微服務架構的流行,一些微服務架構下的問題也會越來越突出,比如一個請求會涉及多個服務,而服務本身可能也會依賴其他服務,整個請求路徑就構成了一個網狀的調用鏈,而在整個調用鏈中一旦某個節點發生異常,整個調用鏈的穩定性就會受到影響。

面對以上情況, 我們就需要一些可以幫助理解系統行為、用于分析性能問題的工具,以便發生故障的時候,能夠快速定位和解決問題,這時候?APM(Application Performance Management應用性能管理)工具就該閃亮登場了。

1、SkyWalking簡介

  • 官方網站
  • SkyWalking 文檔中文版(社區提供)
  • 官方demo網站 (賬號:skywalking 密碼:skywalking

SkyWalking 它是一款優秀的國產?APM?工具,包括了分布式追蹤、性能指標分析、應用和服務依賴分析等。

SkyWalking架構分為三部分:

? ?- skyWalking-collector:鏈路數據歸集器,相當于Skywalking的服務端

? ?- skyWalking-ui:SkyWalking的web可視化平臺

? ?- skyWalking-agent:探針,與應用容器綁定在一起,啟動時通過javaagent進行JVM級別的AOP,收集和發送數據到歸集器

SkyWalking?的核心是數據分析和度量結果的存儲平臺,通過?HTTP?或?gRPC?方式向?SkyWalking Collecter?提交分析和度量數據,SkyWalking Collecter?對數據進行分析和聚合,存儲到?Elasticsearch、H2、MySQL、TiDB?等。

說明:?SkyWalking?的核心是數據分析和度量結果的存儲平臺,通過?HTTP?或?gRPC?方式向?SkyWalking Collecter?提交分析和度量數據,SkyWalking Collecter?對數據進行分析和聚合,

存儲到?Elasticsearch、H2、MySQL、TiDB?等其一即可,最后我們可以通過?SkyWalking UI?的可視化界面對最終的結果進行查看。Skywalking?支持從多個來源和多種格式收集數據:多種語言的?Skywalking Agent?、Zipkin v1/v2?、Istio?勘測、Envoy?度量等數據格式。

整體架構看似模塊有點多,但在實際上還是比較清晰的,主要就是通過收集各種格式的數據進行存儲,然后展示。

所以搭建?Skywalking?服務我們需要關注的是?SkyWalking Collecter、SkyWalking UI?和 存儲設備,SkyWalking Collecter、SkyWalking UI?官方下載安裝包內已包含,最終我們只需考慮存儲設備即可。

2、SkyWalking的搭建

2.1 部署Elasticsearch

注意:版本與SkyWalking版本對應

?展開源碼

docker run --name elasticsearch -p 9200:9200? -p 9300:9300 \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \--restart always \-v /home/docker/elastic/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /home/docker/elastic/elasticsearch/data:/usr/share/elasticsearch/data \-v /home/docker/elastic/elasticsearch/plugins:/usr/share/elasticsearch/plugins \--net network_network \-d elasticsearch:7.17.0

2.2 部署SkyWalking-Server

apache-skywalking-apm-es7-8.3.0.tar.gz 下載地址

  • 拉取鏡像

?展開源碼

docker pull apache/skywalking-oap-server:8.3.0-es7

  • 運行 skywalking-oap-server 容器? ? ?SW_STORAGE:數據存儲配置,支持H2,MySQL、ES等,這里改為 elasticsearch7

? ? ? ? ? 配置文件路徑:apache-skywalking-apm-bin-es7/config/application.yml

SkyWalking 默認使用12800作為Rest API通信端口,11800為gRPC API端口

?展開源碼

docker run -d --name skywalking-oap \
-e TZ=Asia/Shanghai \
-p 12800:12800 -p 11800:11800 \
--link elasticsearch:elasticsearch \
--net network_network \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
apache/skywalking-oap-server:8.3.0-es7
 

2.3 部署SkyWalking-UI

配置文件路徑:apache-skywalking-apm-bin-es7/webapp/webapp.yml

  • 拉取鏡像

?展開源碼

docker pull apache/skywalking-ui:8.3.0
  • 運行 skywalking-ui 容器

?展開源碼

docker run -d --name skywalking-ui \
-e TZ=Asia/Shanghai \
-p 8088:8080 \
--link skywalking-oap:skywalking-oap \
--net network_network \
-e SW_OAP_ADDRESS=skywalking-oap:12800 \
apache/skywalking-ui:8.3.0

3、應用接入

注意:agent 中指定服務名(SW_AGENT_NAME),不同的服務用不同的服務名區分。如果服務名相同,相當于是多個實例。

3.1 jar包部署方式

  • 將skywalking安裝包下的agent整個目錄(apache-skywalking-apm-bin-es7/agent),拷貝到應用機器所在的目錄,如:/home/docker/

  • 在啟動的腳本上添加 skywalking-agent配置:

配置參數

描述

-javaagent

配置skywalking-agent.jar位置,確保這個參數在-jar參數之前

-DSW_AGENT_NAME

配置應用名稱,用于區分不用的服務

-DSW_AGENT_COLLECTOR_BACKEND_SERVICES

配置server的服務地址

?展開源碼

java -javaagent:/home/docker/agent/skywalking-agent.jar
-DSW_AGENT_NAME=gateway
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
-Dserver.port=9999 -Xmx128m -Xms128m -XX:MaxMetaspaceSize=128m
-jar gateway.jar 

3.2 dockerfile方式

  • 將skywalking安裝包下的agent整個目錄(apache-skywalking-apm-bin-es7/agent),拷貝到應用機器所在的目錄,如:/home/docker/

  • docker-compose.yml

docker-compose.yml?展開源碼

? # skywalking-aopskywalking-oap:image: apache/skywalking-oap-server:8.3.0-es7container_name: skywalking-oaplinks:- elasticsearch:elasticsearchrestart: alwaysports:- 11800:11800- 12800:12800environment:TZ: Asia/ShanghaiSW_STORAGE: elasticsearch7SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200JAVA_OPTS: "-Xms512m -Xmx512m"networks:- network# skywalking-uiskywalking-ui:image: apache/skywalking-ui:8.3.0container_name: skywalking-uilinks:- skywalking-oap:skywalking-oaprestart: alwaysports:- 8088:8080environment:TZ: Asia/ShanghaiSW_OAP_ADDRESS: skywalking-oap:12800networks:- network
 

4、SkyWalking UI 界面說明

4.1 儀表盤

4.1.1 APM

APM 應用性能管理,分為全局維度、服務維度、實例維度、端點維度

(1)全局維度
  • Service Load:服務每分鐘請求數
  • Slow Services:慢響應服務,服務耗時最長的一次耗時時間
  • Un-Health Services(Apdex):服務性能健康指數,0~1
  • Slow EndPoints:慢響應的端點
  • Global Response Latency:不同百分比的響應延時時間
  • Global Heatmap:熱力圖

(2)服務維度
  • Service Apdex:服務性能指數
  • Service Apdex(折線圖):
  • Service Avg Response Time:平均響應時間
  • Global Response Time Percentile:百分比的響應時間
  • Successful Rate:請求成功率
  • Successful Rate(折線圖):不同時間的請求的成功率
  • Service Load:每分鐘請求數
  • Service Load(折線圖):不同時間的每分鐘請求數
  • Service Instances Load:每個服務實例的每分鐘請求數
  • Slow Service Instances:服務實例的最大延時
  • Service Instances Successful Rate:服務實例的請求成功率

(3)實例維度
  • Service Instances Load:服務實例的每分鐘請求數
  • Service Instances Successful Rate:服務實例的請求成功率
  • Service Instances Latency:服務實例的響應延時
  • JVM CPU:占用CPU的百分比
  • JVM Memory:內存占用大小
  • JVM GC Time:垃圾回收時間,包括Young GC 和 Old GC
  • JVM GC Count:垃圾回收次數
  • JVM Thread Count:JVM 創建線程數量
  • CLR xxx:

(4)端點維度
  • EndPoint Load in Current Service:每個端點的每分鐘請求數
  • Slow Endpoints in Current Service:每個端點的最慢請求時間
  • Successful Rate in Current Service:每個端點的請求成功率
  • Endpoint Load:當前端點每個時間段的請求數據
  • Endpoint Avg Response Time:端點請求的平均響應時間
  • Endpoint Response Time Percentile:當前端點每個時間段的響應時間占比
  • Endpoint Successful Rate:當前端點每個時間段的請求成功率

4.1.2 數據庫

展示數據庫的響應時間、響應時間分布、吞吐量、SLA、慢SQL等詳細信息,便于直觀展示數據庫狀態

  • Database Avg Response Time:數據庫平均響應時間
  • Database Access Successful Rate:數據庫的訪問成功率
  • Database Traffic:數據庫每分鐘請求數
  • Database Access Latency Percentile:數據庫不同比例的響應時間
  • Slow Statements:前N個慢查詢
  • All Database Loads:所有數據庫中的每分鐘請求數排名
  • Un-Health Databas:所有數據庫的請求成功率排名

4.1.3 Istio、SelfObservability 、WebBrowser

這幾個比較次用,用得不多,不詳細介紹

  • Istio:結合Istio,適配容器、采集容器信息
  • SelfObservability:監控SkyWalking自身信息
  • WebBrowser:8.2.0 版本新增的瀏覽器,提供PV、UV等數據。需結合 Skywalking-Client-js 使用

SkyWalking自監控(SelfObservability)的配置:

修改配置文件apache-skywalking-apm-bin-es7/config/application.yml

修改內容:

Prometheus-fetcher 的selector修改為:default

telemetry的selector修改為:prometheus

SelfObservability:

4.2 拓撲圖

服務之間的調用關系。每條連線的顏色反應了服務之間的調用延遲情況,可以非常直觀的看到服務與服務之間的調用狀態,連線中間的點能點擊,可顯示兩個服務之間鏈路的平均響應時間、吞吐率以及SLA等信息

4.3 追蹤

顯示請求的代碼內部執行情況,一個完整的請求都經過了哪些服務、執行了哪些代碼方法、每個方法的執行時間、執行狀態等詳細信息,快速定位代碼問題

  • 左側:端點信息列表(API接口列表),紅色——異常請求;藍色——正常請求
  • 右側:請求追蹤列表,請求中連接各端點的先后順序和時間

4.4 性能剖析

  • 服務:需要分析的服務
  • 端點:鏈路監控中的端點名稱(可以在鏈路追蹤中查看端點信息)
  • 監控時間:采集數據的開始時間
  • 監控持續時間:采集數據的時間長度
  • 起始監控時間:多少毫秒后開始進行采集
  • 監控間隔:多少毫秒采集一次
  • 最大采樣數:最大采集多少樣本

4.5 日志

參考:微服務鏈路追蹤 Skywalking 生成 Trace ID 以及 logback 日志歸集-CSDN博客

在應用代碼中添加依賴

?展開源碼

<!--skywalking trace工具包-->
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>${skywalking.version}</version>
</dependency>

4.6 告警

參考:Skywalking-告警功能實踐_from(endpoint.*).filter(responsecode in [404,500,5-CSDN博客

5、其他相關的配置

5.1 數據清理機制

配置文件路徑:apache-skywalking-apm-bin-es7/config/application.yml

?展開源碼

core:selector: ${SW_CORE:default}default:# 數據清理機制的開關,默認開啟enableDataKeeperExecutor: ${SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true}# 數據清理定時器周期,默認5,單位分鐘dataKeeperExecutePeriod: ${SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5}# 明細記錄數據的有效期,默認3天recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3} # Unit is day# 指標數據的有效期,默認7天metricsDataTTL: ${SW_CORE_METRICS_DATA_TTL:7} # Unit is day

5.2 數據存儲和寫入優化(針對ES)

主要是進行bulk 批量寫入調整,buffer 優化等,具體參見《elasticsearch寫入速度優化》

5.3 鏈路過長問題

往往就是循環中調用其他服務 或 循環操作數據庫;或者 定時任務重跑批處理

方案:

1、不加入鏈路追蹤,直接ignore url 配置忽略

2、業務代碼處理,數據庫批量更新操作

6、參考文檔:

【1】Skywalking分布式追蹤與監控(Skywalking分布式追蹤與監控)

【2】破解 Java Agent 探針黑科技?(破解 Java Agent 探針黑科技)

【3】elasticsearch 寫入速度優化 (elasticsearch 寫入速度優化)

【4】SkyWalking 數據清理機制 (SkyWalking 數據清理機制)

【5】開啟Apache SkyWalking的自監控 (開啟Apache SkyWalking的自監控)

【6】Skywalking-告警功能實踐 (Skywalking-告警功能實踐

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13983.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UBUNTU22.04無法安裝nvidia-driver-550 依賴于 nvidia-dkms-550 (<= 550.54.15-1)

類似的報錯信息&#xff0c;就是卡在了nvidia-dkms-550無法安裝 Loading new nvidia-550.40.07 DKMS files… Building for 6.5.0-15-generic Building for architecture x86_64 Building initial module for 6.5.0-15-generic ERROR: Cannot create report: [Errno 17] File e…

前端canvas項目實戰——在線圖文編輯器(十):小地圖MiniMap(上)

目錄 前言一、 效果展示二、 實現步驟0. 行動前的思考1. 為小地圖更新「背景圖」2. 為小地圖更新「滑動窗口」2.1 獲取新的滑動窗口「寬高」2.2 獲取新的滑動窗口「位置」3. 為小地圖更新「遮罩」后記前言 上一篇博文中,我們引入了「邏輯畫布」的概念,讓整個工具的頁面看起來…

JPA 3萬字面試寶典

目錄 什么是JPA? JPA和Hibernate有什么區別? 什么是ORM(對象關系映射)? 什么是Entity?

【機器學習】在電子商務(淘*拼*京*—>抖)的應用分析

機器學習與大模型&#xff1a;電子商務的新引擎 一、電子商務的變革與挑戰二、機器學習與大模型的崛起三、機器學習與大模型在電子商務中的應用實踐個性化推薦精準營銷智能客服庫存管理與商品定價 四、總結與展望 隨著互聯網的飛速發展&#xff0c;電子商務已經成為我們生活中不…

NDIS小端口驅動(四)

NDIS中斷相關 1. 注冊和取消注冊中斷&#xff1a; 微型端口驅動程序調用 NdisMRegisterInterruptEx 來注冊中斷。 驅動程序分配并初始化 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 結構&#xff0c;以指定中斷特征和函數入口點&#xff0c;驅動程序將結構傳遞給 NdisMRegister…

【三劍客和正則表達式】

文章目錄 學習目標一、什么是三劍客1.三劍客grep2.三劍客sed3.三劍客awk4.正則過濾例子15.正則過濾例子2 總結 學習目標 1.學會使用 grep 2.學會使用 sed 3.學會使用 awk 4.學會使用正則表達式一、什么是三劍客 正則三劍客&#xff1a;grep sed awk 1.三劍客grep # 擅長過濾…

【MySQL精通之路】查詢優化器的使用(8)

MySQL通過影響查詢計劃評估方式的系統變量、可切換優化、優化器和索引提示以及優化器成本模型提供優化器控制。 服務器在column_statistics數據字典表中維護有關列值的直方圖統計信息&#xff08;請參閱第10.9.6節“Optimizer統計信息”&#xff09;。與其他數據字典表一樣&am…

#Ethereum 現貨ETF 問題匯總 轉

專題&#xff1a; #Ethereum 現貨ETF 問題匯總&#xff0c;包括了多數小伙伴們的疑問&#xff0c;有任何忽略請留言給我&#xff0c;我會補充。 1. #ETH 現貨ETF何時公布&#xff1f; 一般來說會在北京時間的5月24日凌晨2點至4點之間&#xff0c;不排除稍微延后到凌晨6點的可能…

基于大語言模型的應用

在AI領域&#xff0c;大語言模型已成為備受矚目的焦點&#xff0c;尤其在自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;其應用愈發廣泛。BLM作為一種多任務語言建模方法&#xff0c;旨在構建一個具備多功能的強大模型。在給定文本和查詢條件下&#xff0c;該模型能…

【深度學習】YOLOv8訓練,交通燈目標檢測

文章目錄 一、數據處理二、環境三、訓練 一、數據處理 import traceback import xml.etree.ElementTree as ET import os import shutil import random import cv2 import numpy as np from tqdm import tqdmdef convert_annotation_to_list(xml_filepath, size_width, size_he…

海山數據庫(He3DB)代理ProxySQL使用詳解:(二)功能實測

讀寫分離實測 ProxySQL官方demo演示了三種讀寫分離的方式&#xff1a;使用不同的端口進行讀寫分離、使用正則表達式進行通用的讀寫分離、使用正則和digest進行更智能的讀寫分離。最后一種是針對特定業務進行的優化調整&#xff0c;也可將其歸結為第二種方式&#xff0c;下邊分…

MySQL備份與日志練習

1、創建對mysql數據庫test1的定時備份任務&#xff0c;頻率是每周一的2點 create database test1;crond -e0 2 * * 1 mysqldump -u root -pAdmin123 --databases test1 > /opt/test1.sql2、test1中有t1、t2、t3三張表&#xff0c;要求只備份t2這張表 mysqldump -u root -pA…

Python 機器學習 基礎 之 數據表示與特征工程 【單變量非線性變換 / 自動化特征選擇/利用專家知識】的簡單說明

Python 機器學習 基礎 之 數據表示與特征工程 【單變量非線性變換 / 自動化特征選擇/利用專家知識】的簡單說明 目錄 Python 機器學習 基礎 之 數據表示與特征工程 【單變量非線性變換 / 自動化特征選擇/利用專家知識】的簡單說明 一、簡單介紹 二、單變量非線性變換 三、自…

知識圖譜數據預處理筆記

知識圖譜數據預處理筆記 0. 引言1. 筆記1-1. \的轉義1-2. 特殊符號的清理1-3. 檢查結尾是否正常1-4. 檢查<>是否存在1-5. 兩端空格的清理1-6. 檢查object內容長時是否以<開始 0. 引言 最近學習知識圖譜&#xff0c;發現數據有很多問題&#xff0c;這篇筆記記錄遇到的…

軟件設計師備考筆記(九):數據庫技術基礎

文章目錄 一、基本概念二、數據模型&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;E-R模型&#xff08;三&#xff09;數據模型 三、關系代數&#xff08;一&#xff09;關系數據庫的基本概念&#xff08;二&#xff09;五種基本的關系代數運算&#xff08;三&…

React hooks - forwardRef+useImperativeHandle

forwardRefuseImperativeHandle React.forwardRef用法useImperativeHandle用法第三個參數的用法 React.forwardRef與useImperativeHandle配合使用注意事項 React.forwardRef用法 1.創建一個 能夠接受到ref屬性的React 組件。 ref 用來獲取實例&#xff0c;但函數組件不存在實例…

bugku 網絡安全事件應急響應

開啟靶場&#xff1a; 開始實驗&#xff1a; 使用Xshell登錄服務器&#xff0c;賬號及密碼如上圖。 1、提交攻擊者的IP地址 WP: 找到服務器日志路徑&#xff0c;通常是在/var/log/&#xff0c;使用cd /var/log/&#xff0c;ls查看此路徑下的文件. 找到nginx文件夾。 進入ng…

hyperopt、optuna、gridsearch、randomsearch自動調參

開始使?hyperopt進??動調參 algo partial(tpe.suggest, n_startup_jobs1) best fmin(lightgbm_factory, space, algoalgo, max_evals20, pass_expr_memo_ctrlNone) RMSE lightgbm_factory(best) print(‘best :’, best) print(‘best param after transform :’) argsD…

【Jenkins】Centos7安裝Jenkins(環境:JDK11,tomcat9,maven3.8)

目錄 Jenkins部署環境Maven安裝1.上傳安裝包2.解壓3.配置Maven環境變量4.使配置文件立即生效5.校驗Maven安裝6.Maven配置阿里云倉庫7.Maven配置依賴下載位置 Git安裝安裝監測安裝 JDK17安裝1.查看舊版本JDK2.卸載舊版本JDK3.查看是否卸載干凈4.創建java目錄5.下載JDK11安裝包6.…

“開源與閉源大模型:數據隱私、商業應用與社區參與的多維比較“

開源大模型和閉源大模型各有其優勢和局限&#xff0c;它們在數據隱私、商業應用和社區參與方面的表現也各有不同。以下是對這三個方面進行的分析&#xff1a; 方向一&#xff1a;數據隱私 開源大模型&#xff1a; 優點&#xff1a;開源模型通常允許用戶和開發者查看和修改代…