天天看點

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

随着微服務架構的流行,服務按照不同的次元進行拆分,一次請求往往需要涉及到多個服務。這些服務可能不同程式設計語言開發,不同團隊開發,可能部署很多副本。是以,就需要一些可以幫助了解系統行為、用于分析性能問題的工具,以便發生故障的時候,能夠快速定位和解決問題。全鍊路監控元件就在這樣的問題背景下産生了。

全鍊路性能監控 從整體次元到局部次元展示各項名額,将跨應用的所有調用鍊性能資訊集中展現,可友善度量整體和局部性能,并且友善找到故障産生的源頭,生産上可極大縮短故障排除時間。

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

請求鍊路追蹤:通過分析服務調用關系,繪制運作時拓撲資訊,可視化展示

調用情況衡量:各個調用環節的性能分析,例如吞吐量、響應時間、錯誤次數

容器規劃參考:擴容/縮容、服務降級、流量控制

運作情況回報:告警,通過調用鍊結合業務日志快速定位錯誤資訊

全鍊路監控系統有很多,應從這幾方面選擇:

探針的性能消耗

APM元件服務的影響應該做到足夠小,資料分析要快,性能占用小。

代碼的侵入性

即也作為業務元件,應當盡可能少或者無其他業務系統,對于使用方透明,減少開發人員的負擔。

監控次元

分析的次元盡可能多。

可擴充性

一個優秀的調用跟蹤系統必須支援分布式部署,具備良好的可擴充

性。能夠支援的元件越多當然越好。

主流系統:zipkin、skywalking、pinpoint

Pinpoint是一個APM(應用程式性能管理)工具,适用于用Java/PHP編寫的大型分布式系統。

特性:

伺服器地圖(ServerMap)通過可視化分布式系統的子產品和他們之間的互相聯系來了解系統拓撲。點選某個節點會展示這個子產品的詳情,比如它目前的狀态和請求數量。

實時活動線程圖 (Realtime Active Thread Chart) :實時監控應用内部的活動線程。

請求/響應分布圖( Request/Response Scatter Chart ) :長期可視化請求數量和應答模式來定位潛在問題。通過在圖表上拉拽可以選擇請求檢視 更多的詳細資訊。

調用棧( CallStack ):在分布式環境中為每個調用生成代碼級别的可視圖,在單個視圖中定位瓶頸和失敗點。

檢查器( Inspector ) :檢視應用上的其他詳細資訊,比如CPU使用率,記憶體/垃圾回收,TPS,和JVM參數。

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

Docker部署:

首先要下載下傳好pinpoint 鏡像,然後docker load 導入

連結: https://pan.baidu.com/s/1-h8g7dxB9v6YiXMYVNv36Q 密碼: u6qb

github下載下傳慢的話可以直接将開源代碼克隆到自己的gitee,然後下載下傳,這樣比較快

等待大概10min左右就能通路

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

傳回代碼目錄(simple-microservice-dev4)

新增pingpoint agent,并修改配置檔案(pinpoint 引入)

項目dockerfile修改

項目資料庫修改

腳本化建構釋出

浏覽器檢視狀态

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

資源消耗比較大,是以隻展示這些

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

請求數/調用次數

堆記憶體(JVM資訊)

調用資訊(堆棧跟蹤)

響應時間

錯誤率

微服務調用鍊路拓撲

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

詳情參考:

1、安裝push插件

https://github.com/chartmuseum/helm-push

如果網絡下載下傳不了,也可以直接解壓課件裡包:

2、 在Jenkins主機配置Docker可信任,如果是HTTPS需要拷貝證書

k8s叢集所有節點都需要配置

3、添加repo

4、推送與安裝Chart(例子)

192.168.56.17此節點部署,前提是安裝好docker

通路位址:http://IP:9999

初次會先設定管理者密碼 ,然後登陸,預設管理者使用者名root,密碼就是剛設定的。

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

使用上一節課的dev3分支的代碼(已經改好了的)

建議關閉https功能,否則自簽證書會影響helm 拉取的問題

建立方式如下,還需要導入對應的資料庫

參考:https://github.com/jenkinsci/kubernetes-plugin/tree/fc40c869edfd9e3904a9a56b0f80c5a25e988fa1/src/main/kubernetes

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

通路http://192.168.56.11:30006/ 即可進行配置

密碼以及插件位址更新(很重要)

找到配置pv自動供給的NFS伺服器(192.168.56.13),進入共享目錄

不選擇插件

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

配置新的賬号

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

修改插件源

重建pod

插件安裝

管理Jenkins->系統配置-->管理插件-->分别搜尋Git Parameter/Git/Pipeline/kubernetes/Config File Provider,選中點選安裝。 Git Parameter:Git參數化建構 Extended Choice Parameter: 參數化建構多選框 Git:拉取代碼 Pipeline:流水線 kubernetes:連接配接Kubernetes動态建立Slave代理 Config File Provider:存儲kubectl用于連接配接k8s叢集的kubeconfig配置檔案

Jenkins Pipeline是一套插件,支援在Jenkins中實作內建和持續傳遞管道;

pipeline通過特定文法對簡單到複雜的傳輸管道進行模組化;

聲明式:遵循與Groovy相同文法。pipeline { }

腳本式:支援Groovy大部分功能,也是非常表達和靈活的工具。node { }

Jenkins Pipeline的定義被寫入一個文本檔案,稱為Jenkinsfile。

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

在實際環境中, 往往有很多項目,特别是微服務架構,如果每個服務都建立一個item,勢必給運維工作量增加很大,是以可以通過Jenkins的參數化建構, 人工互動确認釋出的環境配置、預期狀态等。

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

Kubernetes插件:Jenkins在Kubernetes叢集中運作動态代理

插件介紹:https://github.com/jenkinsci/kubernetes-plugin

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

雲配置

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

資料詳見jenkins.zip

配置pipeline-demo: 涉及三個選擇參數: NS(名稱空間),SVC(釋出的微服務名稱),RS(釋出的副本數)

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

配置pipeline

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

運作測試

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

](https://s4.51cto.com/images/blog/202009/20/9461e1f123f2f3418a245a35392dc6ac.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

根據所選的内容自動生成grovy文法

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

gitlab認證

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

harbor認證

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

kubernetes kubeconfig 認證

建立自定義配置

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

将k8s的config配置拷入配置内容

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

pipeline如下:

釋出如下

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

校驗如下(k8s叢集檢視):

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出

原理: 通過jenkins讀取gitlab中的pipeline檔案,進而實作版本控制來做到自動化

kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出
kubernetes(二十一) 微服務鍊路監控& 自動釋出微服務鍊路監控& 自動釋出