日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

分布式/微服务必配APM系统,SkyWalking让你不迷路

發布時間:2023/12/4 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式/微服务必配APM系统,SkyWalking让你不迷路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

如今分布式、微服務盛行,面對拆分服務比較多的系統,如果線上出現異常,需要快速定位到異常服務節點,假如還用傳統的方式排查肯定效率是極低的,因為服務之間的各種通信會讓定位更加繁瑣;所以就急需一個分布式鏈路追蹤系統,方便快速定位異常節點,從而針對性的處理問題。比較主流的APM(Application Performance Management)系統有SkyWalking、Zipkin、PinPoint、Cat等,這里就先說說SkyWalking,其他的后續再補上。

APM系統當然不僅僅只是鏈路追蹤,還可以根據各種性能指標分析應用程序及其運行環境,以便在發生故障的時候能快速定位及解決問題。

正文

1. SkyWalking簡介

SkyWalking 是一個開源可觀察性平臺,用于收集、分析、聚合和可視化來自服務和云原生基礎設施(如數據庫)的數據,它還提供了優秀的可視化界面。SkyWalking 也是一種現代 APM,專為云原生、基于容器的分布式系統而設計。

1.1 常用術語

在SkyWalking中會經常提到服務、服務實例和端點,這里就先來了解一下:

  • 服務:通俗一點理解就是一個應用程序;比如訂單服務API。

  • 服務實例:服務組中每個單獨運行的節點稱為一個實例,一個服務可以對應多個服務實例(集群); 如:一個訂單服務可以集群部署好幾個節點,這些節點就稱為服務實例;

  • 端點:請求服務的路徑,如:Http Url地址或是gRPC請求地址(gRPC定義的服務類+方法名);

通俗理解,如下圖:

1.2 理解架構

SkyWalking 主要分為四個部分:探針、平臺后端、存儲和 UI,如下圖:

img
  • 探針:專門用于收集數據,并按照SkyWalking的要求格式化對應的數據。

  • 平臺后端:對收集來的數據進行聚合、分析及流處理

  • 存儲:就是數據庫,將收集的數據存儲起來,方便隨時查看和分析;主流的數據庫有 ElasticSearch、H2、MySQL、TiDB、InfluxDB等。一般我們會使用ElasticSearch,查詢速度杠杠滴。

  • UI:就是提供一個Web界面,可以很方便的查看和分析數據,各種圖表形式展示。

理論暫時了解這么多,實操一下更容易理解。

2. 安裝

這里就采用Docker的方式進行安裝,方便快捷,如果還有小伙伴對Docker不是很了解的,可以看看我整理的Docker系列分享

2.1 安裝ElasticSearch

這里用到的存儲是ElasticSearch,需要提前安裝,執行如下命令:

docker?run?-d?--name?elasticsearch?-p?9200:9200?-p?9300:9300?--restart?always?-e?"discovery.type=single-node"?-e?ES_JAVA_OPTS="-Xms64m?-Xmx521m"?elasticsearch:6.7.2

命令解析:

  • -p 9200:9200 -p 9300:9300 分別讓主機端口9200、9300和啟動容器的端口做映射;

  • -e "discovery.type=single-node" 單節點運行;

  • -e ES_JAVA_OPTS="-Xms64m -Xmx521m" 由于我云服務器的內存比較小,所以設置了一個環境變量ES_JAVA_OPTS來配置使用的內存:最小64m,最大521m,否則內存不夠用,啟動不起來。

2.2 安裝SkyWalking的后臺服務端(skywalking-oap),執行如下命令:
docker?run?--name?skywalking-oap?--restart?always?-p?1234:1234?-p?11800:11800?-p?12800:12800?-d?--link?elasticsearch:elasticsearch?-e?SW_STORAGE=elasticsearch?-e?SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200?apache/skywalking-oap-server:8.3.0-es6

命令解析:

  • -p 1234:1234 -p 11800:11800 -p 12800:12800 分別讓主機端口1234、11800、12800和啟動容器的端口做映射;11800是對接應用程序的;12800是用來對接SkyWalking的UI數據的。

  • --link elasticsearch:elasticsearch 代表和上一步啟動elasticsearch網絡鏈接起來,可以通過容器名訪問對應服務,注意容器名和上一步一致;

  • -e SW_STORAGE=elasticsearch 設置SkyWalking的存儲方式為elasticsearch;

  • -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 配置連接elasticsearch的地址;

2.3 安裝SkyWalking的UI界面(skywalking-ui),執行如下命令
docker?run?--name?skywalking-ui?--restart?always?-p?8080:8080?--link?skywalking-oap:skywalking-oap?-d?-e?SW_OAP_ADDRESS=skywalking-oap:12800?apache/skywalking-ui:6.6.0

命令解析:

  • -p 8080:8080 代表主機端口8080和容器端口8080做映射;

  • --link skywalking-oap:skywalking-oap 代表和上一步啟動skywalking-oap網絡鏈接起來,可以通過容器名訪問對應服務,注意容器名和上一步一致;

  • -e SW_OAP_ADDRESS=skywalking:12800 設置UI調用的API地址,就是上一步啟動動SkyWalking后端地址,端口為12800;

接下來如果能訪問暴露的端口就代表環境安裝好了,如下:

到這環境就搞好了,剩下就是項目集成了,以下還是搞兩個API來測試一把。

注:在搭建環境時要注意elasticsearch、skywalking-oap-server、skywalking-ui版本問題,否則很容易掉坑;就比如 skywalking-oap-server 設置環境變量SW_STORAGE=elasticsearch 時,只能連接elasticsearch6 等等這種細節。

3. 項目集成SkyWalking

3.1 先安裝一個SkyWalking命令行工具

這個命令行工具會快速生成配置文件,執行如下命令安裝:

#?全局安裝這個工具,后續直接用就行dotnet?tool?install?-g?SkyAPM.DotNet.CLI

安裝一次就行,如果已經安裝,就可以跳過此步驟。

3.2 創建項目,并引入SkyAPM.Agent.AspNetCore包

這個包是專門為.NetCore開發的探針。

3.3 注冊服務,配置環境變量
  • 在Startup文件中注冊服務

    image-20211017235044948
  • 配置環境變量

    這里方便測試,直接在項目中的launchSettings.json中配置就行,但如果是發布生產環境,一定要在對應環境配置環境變量。

    image-20211017234925741
3.4 執行SkyWalking命令生成配置文件

在項目根目錄下執行如下命令

dotnet?skyapm?config?MySkyWalkingDemoTest?192.168.xxx.xxx:11800
  • MySkyWalkingDemoTest 是服務名;

  • 192.168.xxx.xxx:11800 是SkyWalking后臺服務的地址,就是我們2.2步驟搭建的地址。根據真實需要配置IP就行。

命令執行完成后,會在項目根目錄下生成skyapm.json文件,可以適當根據需要更改配置內容;

默認情況下skyapm.json文件只要更新都會復制到打包目錄下,保險起見,可以右鍵->屬性,將這個文件設置其為始終復制或如果較新則復制。

3.5 啟動項目看效果

SkyWalking幾乎不嵌入任何代碼,直接運行代碼,現在就可以將API服務進行跟蹤和監控了。如下圖:

看看SkyWalking界面展示:

可以進入追蹤界面看具體請求信息:

注:條件時間注意時區,往前設置時間;其實這里可以在啟動搭建環境的時候設置時區。

點擊樹形的請求可以看詳情:

3.6 多加一個API服務,測測調用鏈

新建一個項目SkyWalkingDemoTest22222,端口以5100啟動,其他不變;這里沒有集成SkyWalking,如果需要往下監控,同以上步驟集成即可;

然后簡單修改一下SkyWalkingDemoTest項目的接口,如下:

先運行SkyWalkingDemoTest22222,再運行SkyWalkingDemoTest,執行完成之后,可以去SkyWalking界面中看看追蹤信息,如下:

也可以通過拓撲圖看到效果:

點擊對應的節點還能顯示對應的指標數據。

參考地址:

  • 官網:https://skywalking.apache.org/

  • 開源地址:https://github.com/apache/skywalking

  • .Net探針:https://github.com/SkyAPM/SkyAPM-dotnet

代碼案例地址:https://gitee.com/CodeZoe/microservies-demo/tree/main/SkyWalkingDemo

總結

關于SkyWalking的初體驗先說這么多,對于服務間通信復雜的系統,有了這個是不是就清晰多了,定位也就容易很多。下一篇再來看看數據庫的指標及如何配置告警,關注“Code綜藝圈”,和我一起學習吧;

總結

以上是生活随笔為你收集整理的分布式/微服务必配APM系统,SkyWalking让你不迷路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。