国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用它!分布式系統(tǒng)APM工具的優(yōu)雅之選“SkyWalking”

IT那活兒 / 3334人閱讀
用它!分布式系統(tǒng)APM工具的優(yōu)雅之選“SkyWalking”

點擊上方“IT那活兒”公眾號,關注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!


小時候我們都盼望著能夠快點長大,長大后,那段懵懵懂懂、無憂無慮的歲月時時讓我們懷念。而現(xiàn)在努力奮斗的我們正在讓孩子的生活,更加精彩!


6.1兒童節(jié)

祝我們的大朋友們

永葆童心,友愛友趣!




開頭篇


 

想必從事運維的都聽說過微服務架構
微服務架構是個好架構,它把整體的業(yè)務拆分成了若干個功能明確、目的統(tǒng)一的小服務,通過很多分散的小服務去整合排列,最終解決更大、更加復雜的業(yè)務場景。同時,架構中對拆分后的小服務進行分類和管理,彼此之間使用統(tǒng)一的協(xié)議來進行交互。
這個設計從開發(fā)的角度,看上去很簡明美好。但我們做運維的,看到這樣的設計,不免心里要犯怵:
這種微服務架構的特點,決定了它的部署往往是分布式的。在傳統(tǒng)環(huán)境下,所有業(yè)務都在一個服務器上來回折騰,出了問題,只要從一個點看過去,就能夠快速定位問題。可微服務架構可不遵循這套邏輯。通過總線交互的,可都是無狀態(tài)的服務。當前臺的業(yè)務流會經(jīng)過很多個微服務的處理和傳遞時...
分散在各個服務器上的日志怎么處理?
業(yè)務掛了,怎么定位問題?
怎么跟蹤業(yè)務流的處理結果?
不用擔心!因為,發(fā)現(xiàn)這個麻煩的不只你一個人。
早在2015年,就有一個名叫吳晟的開發(fā)者開源了一個名為Skywalking的分布式系統(tǒng)的應用程序性能監(jiān)控工具,專為微服務云原生基于容器的 (Kubernetes) 架構而設計。而隨著這幾年的發(fā)展,這個工具已經(jīng)在功能、性能、界面效果上實現(xiàn)了突飛猛進的發(fā)展。
抓重點,開源、專為微服務架構設計,功能性能兩開花。這不就是微服務架構維護人員夢寐以求的APM神器嘛?!不說了,用它
在接下來的內(nèi)容中,將手把手的帶你完成基于Nacos的Skywalking集群搭建Skywalking工作原理簡要解讀

 



Nacos集群搭建


 

為什么要先介紹Nacos?
這是因為Skywalking OAP(Observation Application Platform)之間本身不能搭建集群,需要一個集群管理器來組建集群,目前Skywalking 支持Nacos、zookeeper、Kubernetes、Consul、Etcd 等多種集群管理器。
又因為Nacos 擅長于發(fā)現(xiàn)、配置和管理微服務,又提供了一組簡單易用的特性集,幫助用戶快速實現(xiàn)動態(tài)服務發(fā)現(xiàn)、服務配置、服務元數(shù)據(jù)及流量管理。所以,自然成為了搭建Skywalking集群的一個很棒的選擇[3](當然,如果你是忠實的zookeeper或者Kubernetes用戶,那么繼續(xù)使用它們也完全不影響感受Skywalking帶來的優(yōu)雅體驗)
???????????????????????????????首先,帶來我們的架構圖設計,這里采用了搭建生產(chǎn)環(huán)境的最低配置。
圖一 生產(chǎn)可用Nacos集群部署架構圖
可以看到,該部署架構圖有如下特征:
  • 使用三個節(jié)點來構建Nacos集群。(官方[1]要求使用三個及以上Nacos節(jié)點才能建立集群);

  • 使用主從Mysql作為后端存儲;

  • 額外依賴為JDK和Nginx,但只需要在Leader節(jié)點上配置JDK和Nginx即可。(Nacos軟件需要在三個節(jié)點均配置

既是針對小白的教程,那么每一步的構建部署都不會隨意跳過。保證所有軟件及依賴安裝,從零開始不跳步驟一步一截圖
1. 從官網(wǎng)下載Nacos安裝包
在本實驗案例中,安裝包下載后,上傳至ftp后,在對應主機通過ftp下載。
圖二 在對應主機通過ftp下載安裝包
2. 解壓安裝包
使用unzip命令解壓安裝包。
圖三 使用unzip命令解壓安裝包
3. 編輯Nacos集群配置文件
編輯Nacos集群配置文件(Nacos的配置文件都在<安裝目錄>/Nacos/conf目錄下),指定三個節(jié)點的IP和端口。
圖四 編輯Nacos集群配置文件
4. 創(chuàng)建數(shù)據(jù)庫
使用<安裝目錄>/Nacos/conf目錄下的Nacos-mysql.sql創(chuàng)建數(shù)據(jù)表。(需要提前手動創(chuàng)建數(shù)據(jù)庫)
圖五 創(chuàng)建完成的數(shù)據(jù)庫
5. 修改Nacos Server配置文件
修改Nacos Server配置文件,主要修改的內(nèi)容是連接數(shù)據(jù)庫的部分。這里使用的Mysql數(shù)據(jù)庫用戶名為root,密碼為123456
圖六 修改Nacos Server配置文件
6. 嘗試啟動Nacos Server
使用<安裝目錄>/Nacos/bin目錄下的startup.sh來啟動Nacos Server。啟動后根據(jù)提示查看錯誤日志,發(fā)現(xiàn)報錯為找不到JDK。
圖七 啟動Nacos Server
7. 安裝JDK
這里安裝JDK,使用的是存放在FTP服務器上的安裝包,版本為jdk1.8。
圖八 下載jdk安裝包
8. 配置JDK環(huán)境變量
根據(jù)之前啟動Nacos Server的報錯配置JDK環(huán)境變量JAVA_HOME。
圖九 配置JDK環(huán)境變量并source生效
9. 嘗試啟動Nacos Server
繼續(xù)啟動Nacos Server,發(fā)現(xiàn)報錯為Nacos無法連接數(shù)據(jù)庫。
圖十 報錯為Nacos無法連接數(shù)據(jù)庫
10. 修改Mysql用戶登陸設置
查看數(shù)據(jù)庫用戶登錄設置后發(fā)現(xiàn),配置的root用戶默認只能從localhost登錄,因此使用如下語句來修改用戶登陸設置為可以從任何IP登錄。
use mysql;
update user set host = %  where user =root;
flush privileges;

quit
圖十一 修改數(shù)據(jù)庫登錄用戶設置
11. 嘗試啟動Nacos Server
再次嘗試啟動Nacos Server,啟動成功。
圖十二 啟動Nacos Server成功
12. 修改Nginx配置文件
為了能夠使用Nacos的圖形化Web管理界面,這里需要在Leader節(jié)點上配置Nginx。如果使用的是CentOS操作系統(tǒng),可以參考[2]中的Nginx部署配置過程。
圖十三 配置Nginx步驟截圖
13. 進入Web圖形界面
之前創(chuàng)建的數(shù)據(jù)庫里,默認創(chuàng)建了一個名為nacos的用戶,密碼為加密的nacos。使用該用戶名和密碼,可以登錄Nacos的Web圖形管理界面。IP為/Nacos。
圖十四 登錄圖形化Nacos的Web管理界面
14. 在其他節(jié)點上進行同樣的操作
可以從圖形界面的「集群管理」->「節(jié)點列表」里發(fā)現(xiàn),當前只啟動了一個節(jié)點的Nacos Server。我們模仿之前的步驟,依次啟動其他節(jié)點的Nacos Server。
圖十五 啟動其他節(jié)點的Nacos Server之后,在Web界面中可以看到節(jié)點從「Down」狀態(tài)轉為「Up」狀態(tài)
15. 關閉Nacos Server
如果需要關閉Nacos Server,只需要運行<安裝目錄>/Nacos/bin下面的shutdown.sh即可。
圖十六 運行shutdown腳本之后,在Web界面中可以看到節(jié)點從「Up」狀態(tài)轉為「Down」狀態(tài)

 



基于Nacos的Skywalking集群搭建


 

短短的十幾步,就已經(jīng)完成了JDKNginxMysql主從Nacos這一大堆環(huán)境的搭建,搞出了一個最基礎的生產(chǎn)可用Nacos集群
那么,讓我們來繼續(xù)完成這最后的步驟吧。
首先,先看看加入了Skywalking之后,架構圖發(fā)生什么樣的變化。
圖十七 基于Nacos的Skywalking集群部署架構圖
可以看到,對比之前的Nacos集群搭建,這里相當于在Leader節(jié)點上額外配置一個ES,并且在集群的每個節(jié)點上配置一份Skywalking。
因此,很顯然可以得出這一部分的部署思路:在之前Nacos集群部署的基礎上,額外配置ES7和Skywalking即可參考[4]
1. 從官網(wǎng)下載ES7和Skywalking安裝包
在本實驗案例中,安裝包下載后,上傳至ftp后,在對應主機通過ftp下載。
圖十八 在對應主機通過ftp下載安裝包
2. 修改ES配置文件
解壓安裝包之后,進入到ES安裝目錄,修改ES的配置文件(配置文件目錄為/config/elasticsearch.yml)。
在本實驗案例中,將ES集群的名稱命名為test(該命名需要與后續(xù)的Skywalking配置中的配置項內(nèi)容相同)。同時,該配置文件中的data和logs目錄如果不存在,需要手動創(chuàng)建。
圖十九 修改ES配置文件
3. 創(chuàng)建es用戶并修改目錄權限
由于ES限制使用root用戶啟動,因此需要多帶帶創(chuàng)建es用戶,并修改ES目錄屬組。
useradd es
chown es:es
圖二十 修改ES安裝目錄屬組為es:es
4. 啟動ES
啟動ES在/bin下運行sh startup.sh -d即可。啟動成功后,ES默認使用9200端口,在瀏覽器打開對應ip:port,可以看到安裝情況。如果看到下圖的內(nèi)容,則表示安裝成功。
圖二十一 ES安裝成功瀏覽器顯示結果
5. 修改Skywalking配置文件
解壓安裝包之后,進入到Skywalking安裝目錄,修改ES的配置文件(配置文件目錄為/config/application.yml)。
涉及到的配置項如下:
1)配置集群為nacos
在本實驗案例中,將nacos集群的使用的命名空間為默認的public,nacos用戶名和密碼使用默認的nacos/nacos,服務名為SkyWalking_OAP_Cluster
圖二十二 配置集群
2)配置數(shù)據(jù)庫為ES
在本實驗案例中,根據(jù)上面步驟的記錄,將ES的集群名設置為test
圖二十三 配置數(shù)據(jù)庫
3)設置集群配置為nacos
在本實驗案例中,將nacos集群的使用的命名空間為默認的public,nacos用戶名和密碼使用默認的nacos/nacos
圖二十四 集群配置
6. 啟動Skywalking
啟動Skywalking在/bin下運行sh startup.sh即可。啟動成功后,Skywalking默認使用8080端口,在瀏覽器打開對應ip:port,可以看到圖形化界面。(因為目前還沒有任何數(shù)據(jù),因此圖形化界面里是空的)
圖二十五 Skywalking啟動成功反饋以及web圖形化界面
7. Nacos圖形界面查看服務
完成Skywalking啟動后,可以在Nacos圖形界面查看服務。
圖二十六 在Nacos圖形界面查看服務
8. 在其他節(jié)點上進行同樣的操作
在其他節(jié)點上進行同樣的操作,只修改服務名為SkyWalking_OAP_Cluster_2和服務名為SkyWalking_OAP_Cluster_3。在Nacos圖形界面可以看到三個節(jié)點的服務[5]
圖二十七 在Nacos圖形界面可以看到三個節(jié)點的服務
至此我們已經(jīng)成功完成了部署。
那么,讓我們順便來看一眼Skywalking的工作原理吧。了解它能幫助你更好的理解它的功能和效果。

 



Skywalking工作原理簡要解讀


 

Skywalking的源碼量并不小,但理解它的核心在于明白它對應用監(jiān)控的邏輯。在Skywalking中,這個功能通過探針實現(xiàn)。該功能是 Java 虛擬機提供的一整套后門。通過這套后門可以對虛擬機方方面面進行監(jiān)控與分析。
我們可以從此切入,通過這樣的思路[6]來了解Skywalking的工作原理。
1. 啟動方式
通常Agent分為靜態(tài)啟動動態(tài)啟動
1)靜態(tài)啟動:使用 -javaagent 參數(shù),在類加載時對目標類的字節(jié)碼可以進行任意修改,只要最后的結果符合字節(jié)碼規(guī)范,SkyWalking 只支持這種方式啟動 Agent。
2)動態(tài)附加:使用 Attach API,類已經(jīng)加載完成并被使用,這時候只能對目標類的字節(jié)碼進行有限的修改,典型的應用:系統(tǒng)診斷(阿里 Arthas、笨馬 XPocket)。
2. 啟動流程
在源碼的agents部分中,可以看到它的啟動流程如下:
1)初始化配置。(加載配置信息、將配置信息映射到 Config 類、根據(jù)配置信息重新指定日志解析器、檢查 Agent 名稱和后端地址是否配置、標記配置加載完成)
2)加載插件。(并行類加載器)
3)定制化Agent。(創(chuàng)建 ByteBuddy 實例、指定 ByteBuddy 要忽略的類、將必要的類注入到 BootstrapClassLoader 中、解決 JDK 模塊系統(tǒng)的跨模塊類訪問、根據(jù)配置決定是否將修改后的字節(jié)碼保存到磁盤/內(nèi)存上)
4)啟動服務。
5)注冊關閉鉤子。
3. 服務 BootService
Skywalking中主要的服務有如下幾個:
1)GRPCChannelManager(Agent到OAP的網(wǎng)絡連接、定時重連、通知監(jiān)聽器網(wǎng)絡連接狀態(tài)的變化);
2)ServiceManagementClient(向OAP匯報自身的信息、保持心跳);
3)CommandService(調(diào)度 OAP 下發(fā)的命令、CommandExecutorService);
4)SamplingService(控制鏈路是否被上報到 OAP);
5)JVMService(收集 JVM 的相關指標);
6)KafkaXxxService(由 Agent 直連 OAP 改為通過 Kafka 交互、大部分的采集的數(shù)據(jù)都改為走 Kafka);
7)StatusCheckService(用來判斷哪些異常不算異常)。
4. 鏈路追蹤
鏈路追蹤是Skywalking實現(xiàn)的最基本功能,理解它需要首先知道這幾個概念。
1)Trace:表示一整條鏈路(跨線程、跨進程的所有 Segment 的集合)
2)Segment:表示一個 JVM 進程內(nèi)的一個線程中的所有操作的集合
3)Span:表示具體的某一個操作
TraceSegment(組成 Trace 的基本單元、TraceSegmentRef 用于引用 Parent Segment、所有的 Span 維護在一個 LinkedList 中;
relatedGlobalTraceId 表示當前 Segment 所在的 Trace、isSizeLimited 如果為 true 表示當前這條線程內(nèi)發(fā)生的操作次數(shù)超過了配置值,Segment 丟棄了一部分操作);
Span(AsyncSpan - Span 的骨架、AbstractTracingSpan - 用于鏈路追蹤的 Span 模型)。
大家看到這里,是不是對Skywalking的工作原理有了初步的印象,不再覺得這是一個完全吃不透的黑盒子了?

 



總結篇


 

雖然Skywalking這個開源項目在經(jīng)歷了多年的commit之后,已經(jīng)變得相當龐大,但其基本工作原理和流程仍舊精煉優(yōu)雅
本文初步探索了生產(chǎn)可用的Skywalking集群搭建,并且簡要的介紹Skywalking的工作原理,闡釋了其運轉流程。希望能夠幫助小白上手,或者給予老手些微的啟發(fā)。

參考資料:

[1] https://Nacos.io/zh-cn/index.html(Nacos官網(wǎng))

[2] https://blog.csdn.net/qq_37345604/article/details/90034424(安裝nginx)

[3] https://www.imooc.com/article/288153/(搭建生產(chǎn)可用Nacos集群)

[4] https://www.cnblogs.com/fuhai0815/p/13344150.html(Centos7 Nacos + Elasticsearch + SkyWalking)

[5] https://www.bilibili.com/read/cv6621424/(基于Nacos的Skywalking集群配置)

[6] https://www.processon.com/view/link/611fc4c85653bb6788db4039#map(Skywalking源碼思維導圖)



END



本文作者:戴 波

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129479.html

相關文章

  • 手把手教你搭APMSkywalking搭建指南(支持Java/C#/Node.js)

    摘要:通過跟蹤請求的處理過程,來對應用系統(tǒng)在前后端處理服務端調(diào)用的性能消耗進行跟蹤,關于的介紹可以看這個鏈接,大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)作者刀把五鏈接來源知乎著作權歸作者所有。 手把手教你搭APM之Skywalking 前言 什么是APM?全稱:Application Performance Management 可以參考這里: 現(xiàn)代APM體系,基本都是參考Google的Dapper(大規(guī)模...

    ingood 評論0 收藏0
  • Mac下使用Docker快速搭建pinpont追蹤系統(tǒng)APM

    摘要:下使用搭建分布式追蹤系統(tǒng)簡介是一個用編寫大規(guī)模分布式系統(tǒng)性能管理工具,等相關工具的作用就是追蹤每個請求的完整調(diào)用鏈路,收集調(diào)用鏈路上每個服務的性能數(shù)據(jù),方便工程師能夠快速定位問題。 Mac下使用Docker搭建pinpont分布式追蹤系統(tǒng)APM 簡介 Pinpoint 是一個用Java 編寫大規(guī)模分布式系統(tǒng)性能管理 APM (Application Performance Manage...

    verano 評論0 收藏0
  • windows系統(tǒng)skywalking安裝和配置

    摘要:安裝可以去下載最新版本的壓縮包,然后解壓。然后進入目錄下,直接雙擊即可運行然后訪問即可看到的登錄頁面初始賬號和密碼均為登錄進去即可看到下圖因為還沒有配置登錄進來之后是沒有數(shù)據(jù)的。 skywalking安裝 可以去http://skywalking.apache.org/downloads/下載最新版本的skywalking壓縮包,然后解壓。 然后進入/apache-skywalking...

    AaronYuan 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<