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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

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

前言

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

APM系統(tǒng)當(dāng)然不僅僅只是鏈路追蹤,還可以根據(jù)各種性能指標(biāo)分析應(yīng)用程序及其運行環(huán)境,以便在發(fā)生故障的時候能快速定位及解決問題。

正文

1. SkyWalking簡介

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

1.1 常用術(shù)語

在SkyWalking中會經(jīng)常提到服務(wù)、服務(wù)實例和端點,這里就先來了解一下:

  • 服務(wù):通俗一點理解就是一個應(yīng)用程序;比如訂單服務(wù)API。

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

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

通俗理解,如下圖:

1.2 理解架構(gòu)

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

img
  • 探針:專門用于收集數(shù)據(jù),并按照SkyWalking的要求格式化對應(yīng)的數(shù)據(jù)。

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

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

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

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

2. 安裝

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

2.1 安裝ElasticSearch

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

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" 單節(jié)點運行;

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

2.2 安裝SkyWalking的后臺服務(wù)端(skywalking-oap),執(zhí)行如下命令:
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是對接應(yīng)用程序的;12800是用來對接SkyWalking的UI數(shù)據(jù)的。

  • --link elasticsearch:elasticsearch 代表和上一步啟動elasticsearch網(wǎng)絡(luò)鏈接起來,可以通過容器名訪問對應(yīng)服務(wù),注意容器名和上一步一致;

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

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

2.3 安裝SkyWalking的UI界面(skywalking-ui),執(zhí)行如下命令
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網(wǎng)絡(luò)鏈接起來,可以通過容器名訪問對應(yīng)服務(wù),注意容器名和上一步一致;

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

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

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

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

3. 項目集成SkyWalking

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

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

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

安裝一次就行,如果已經(jīng)安裝,就可以跳過此步驟。

3.2 創(chuàng)建項目,并引入SkyAPM.Agent.AspNetCore包

這個包是專門為.NetCore開發(fā)的探針。

3.3 注冊服務(wù),配置環(huán)境變量
  • 在Startup文件中注冊服務(wù)

    image-20211017235044948
  • 配置環(huán)境變量

    這里方便測試,直接在項目中的launchSettings.json中配置就行,但如果是發(fā)布生產(chǎn)環(huán)境,一定要在對應(yīng)環(huán)境配置環(huán)境變量。

    image-20211017234925741
3.4 執(zhí)行SkyWalking命令生成配置文件

在項目根目錄下執(zhí)行如下命令

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

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

命令執(zhí)行完成后,會在項目根目錄下生成skyapm.json文件,可以適當(dāng)根據(jù)需要更改配置內(nèi)容;

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

3.5 啟動項目看效果

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

看看SkyWalking界面展示:

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

注:條件時間注意時區(qū),往前設(shè)置時間;其實這里可以在啟動搭建環(huán)境的時候設(shè)置時區(qū)。

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

3.6 多加一個API服務(wù),測測調(diào)用鏈

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

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

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

也可以通過拓?fù)鋱D看到效果:

點擊對應(yīng)的節(jié)點還能顯示對應(yīng)的指標(biāo)數(shù)據(jù)。

參考地址:

  • 官網(wǎng):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

總結(jié)

關(guān)于SkyWalking的初體驗先說這么多,對于服務(wù)間通信復(fù)雜的系統(tǒng),有了這個是不是就清晰多了,定位也就容易很多。下一篇再來看看數(shù)據(jù)庫的指標(biāo)及如何配置告警,關(guān)注“Code綜藝圈”,和我一起學(xué)習(xí)吧;

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。