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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于网络抓包实现kubernetes中微服务的应用级监控

發布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于网络抓包实现kubernetes中微服务的应用级监控 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微服務是什么?

此話題不是本文重點,如你還不知道。請谷歌一波,會有遍地的解釋。引用下圖說明下微服務可能呈現的形態:

微服務監控的挑戰

監控的目的是為了讓集群中所有的服務組件,不管是HTTP服務,數據庫服務,還是中間件服務。都能夠健康穩定得運行,能發現問題,遇到問題能找到原因。
在過去,監控工具側重于基礎設施或單一軟件組件以及衡量運營健康。這些工具在實現這一目標方面只取得了一定的成功,但是對于單一的,傳統的應用程序和基礎設施來說效果不錯。微服務的出現暴露了工具中的弱點。
現在,組件托管在位于私有云,公共云或兩者的混合體之間的虛擬化機器或容器內。獲悉我并不需要關心服務cpu用了多少,內存用了多少?確保這些服務相互通信以提供所需的結果需要從監控的角度重要看幾件事情:

  • 微服務集群中是否所有的服務的吞吐率,響應時間都正常?

  • 服務調用線中哪些線負載過大,哪些線負載過小?

  • 服務的錯誤率,例如HTTP 500錯誤。

  • 我們想要監控分析應用,從它的服務狀態出發是否更直接呢?

    已有監控方案

    目前有些廠商提出了微服務的監控解決方案。

    • 從APM角度監控服務端到端狀態。

    • 為每種類型服務開發agent收集應用狀態信息。

      • 通過產生統一的應用日志分析監控方案

      • 其他方案

    每一種商業或開源方案都有它的優勢所在。可以根據你的需求來進行選擇。例如你的所有服務都是自己研發,日志標準一致or能夠統一處理。所有訪問信息都能打出日志,那么我認為日志分析可能是你最適合的方案。但是對于公有云平臺,那就不同了。

    好雨云幫采用的方案

    好雨云幫提供了公有云和私有化的部署方式,平臺內部署的服務各式各樣。各種通信協議,各種日志標準。我們怎么實現對所有服務的應用狀態監控?好雨云幫完善的租戶網絡,環境隔離,因此我們提供用戶在自己環境下安裝自己的監控組件,我們的基礎數據收集是通過網絡分析。下文詳細講解:

    kubernetes POD共享機制

    kubernetes中pod內容器共享網絡空間,掛在卷等為我們監控pod內主服務容器提供方便。其實按照官方對pod的定義的使用面來說:

    * content management systems, file and data loaders, local cache managers, etc. * log and checkpoint backup, compression, rotation, snapshotting, etc. * data change watchers, log tailers, logging and monitoring adapters, event publishers, etc. * proxies, bridges, and adapters * controllers, managers, configurators, and updaters

    pod內除了主服務外我們可以部署一些附屬服務。之前的文章我談過使用pod的插件服務收集處理日志。今天我再談使用pod的網絡便利監控主服務應用級指標。

    通過共享的網卡抓包分析網絡流量反應應用狀況

    我們拿一個http服務為例,我們監控網絡流量能拿到幾乎所有訪問和服務返回信息。例如1分鐘內多少request,分別請求哪些path,多長時間服務返回了。返回狀態碼等等信息。
    要獲得以上的數據,我們需要獲取到網絡包,解碼網絡包然后獲得http協議數據。
    我們WatchData服務容器與應用容器在同pod中,經過應用容器eth0網卡的流量我們再WatchData容器中eth0網卡獲取。通過解碼網絡包獲取http報文頭關鍵信息,每一個Response形成一個消息發送到server端完成分析,存儲然后形成連續的實時的監控數據。下圖展現個簡要的整體架構圖:

    當然,上文已經說了,我們采取此方案主要就是為了能夠監控各種應用,只是http怎么行。不通的通信應用使用不同的通信協議,比如mysql的協議,mongodb的協議。TCP/IP網絡協議棧分為應用層(Application)、傳輸層(Transport)、網絡層(Network)和鏈路層(Link)四層。。我們抓取到的網絡包信息也是四層模型。

    網絡抓包Golang實現

    使用golang實現網絡抓包非常容易。得益于谷歌的包:

    github.com/google/gopacket github.com/google/gopacket/layers github.com/google/gopacket/pcap

    這里我舉一個監聽網卡的Demo主要代碼

    //device 網卡名 if handle, err := pcap.OpenLive(device, int32(n.Option.Snaplen), true, n.Option.TimeOut); err != nil {log.With("error", err.Error()).Errorln("PCAP OpenLive Error.")return 1} else if err := handle.SetBPFFilter(n.Option.Expr); err != nil { // optionallog.With("error", err.Error()).Errorln("PCAP SetBPFFilter Error.", n.Option.Expr)return 1} else {log.Infoln("Start listen the device ", device)packetSource := gopacket.NewPacketSource(handle, handle.LinkType())go func(close chan struct{}, h *pcap.Handle) {for {select {case packet := <-packetSource.Packets():n.handlePacket(packet) // Do something with a packet here.case <-close:log.Infoln("stop listen the device.")h.Close()return}}}(n.Option.Close, handle)}

    這段代碼就是監聽某個網卡,通過n.Option.Expr規則過濾點無用網絡包,規則語法與linux tcpdump一樣。參考:PCAP-FILTER
    接收到網絡包一般有多種類型:2層模型的包,和4層模型的包。如果你不關注tcp握手這種類型的包你只需要關注具有四層模型的網絡包。
    n.handlePacket(packet)處理網絡包。

    app := packet.ApplicationLayer()if app != nil {//log.With("type", app.LayerType().String()).Infoln("Receive a application layer packet")//log.Infoln(packet.String())go func() {sd := &SourceData{Source: app.Payload(),ReceiveDate: packet.Metadata().Timestamp,}tran := packet.TransportLayer()if tran != nil {src, dst := tran.TransportFlow().Endpoints()sd.SourcePoint = &srcsd.TargetPoint = &dstif tran.LayerType().Contains(layers.LayerTypeTCP) {tcp := &layers.TCP{}err := tcp.DecodeFromBytes(tran.LayerContents(), gopacket.NilDecodeFeedback)if err != nil {log.With("error", err.Error()).Errorln("Decode bytes to TCP error")} else {sd.TCP = tcp}}}netL := packet.NetworkLayer()if netL != nil {src, dst := packet.NetworkLayer().NetworkFlow().Endpoints()sd.SourceHost = &srcsd.TargetHost = &dst}decode := FindDecode(n.Option.Protocol)if decode != nil {decode.Decode(sd)} else {log.Debugf("%s protol can not be supported \n", n.Option.Protocol)}

    如上代碼簡單處理四層模型網絡包。一般你可以從網絡層獲取雙方ip地址,從傳輸層獲取雙方端口以及tcp包的相關信息。從應用層獲取應用數據。
    具體的怎么優化和實踐就留給大家自己嘗試吧。

    網絡抓包監控的優缺點

    優點:

  • 應用無關性,監控工具通用性強。

  • 數據全面性,你可以獲取很多直接和間接反應應用狀態的數據。

  • 不侵入代碼,一般不影響網絡。

  • 高并發下不影響應用。

  • 缺點:

  • 資源消耗,抓包分析包是一個物理資源消耗的過程。

  • 需要自己開發。

  • 總之,就像上文說得一樣。如果你的需求只是想監控一個應用。你就別考慮這個方案了。如果你想監控集群中所有應用,你可以嘗試。

    云盟認證成員:barnett

    總結

    以上是生活随笔為你收集整理的基于网络抓包实现kubernetes中微服务的应用级监控的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 亚洲欧洲成人在线 | 伊人色在线 | 日穴视频 | 日韩视频一区二区在线观看 | 国产日产亚洲系列最新 | 免费黄片毛片 | 成人免费毛片日本片视频 | 日韩久久视频 | 日本午夜影院 | aaaaa级片| 天堂网在线资源 | 朝桐光av一区二区三区 | 在线观看av网 | 波多野结衣潜藏淫欲 | 国产第6页| 精品久久香蕉国产线看观看亚洲 | 亚洲天天综合 | av成人 | 欧美另类在线观看 | 日日操夜夜骑 | 欧美色综合色 | 日日拍拍 | 日本不卡一区二区 | 奇米影视四色在线 | 久久伊人超碰 | 天天爽天天爱 | 综合狠狠开心 | 精品国产99久久久久久宅男i | 久久大伊人 | 伊人成人在线 | 欧美综合亚洲 | 国产精品国产三级国产普通话对白 | 一区二区美女视频 | 久久性感视频 | 欧美男优 | 黄色在线视频观看 | 一级黄色伦理片 | 国产欧美精品一区二区三区 | 光棍影院手机版在线观看免费 | 成年人免费在线观看网站 | 国产免费av片在线 | 3d动漫精品啪啪一区二区三区免费 | 欧美日韩国产成人 | 99久久综合国产精品二区 | 精品产国自在拍 | 色无极亚洲影院 | 成人黄色短视频在线观看 | 欧美日韩黑人 | 人妻一区二区三区 | 欧美裸体xxxx极品少妇 | 伊人在线视频 | 日韩成人免费 | 综合视频 | 日韩精品一区二区三 | 久久不卡av | 一区二区乱子伦在线播放 | 国产午夜麻豆影院在线观看 | 三级特黄| 欧美一级免费在线观看 | 男插女视频网站 | 狠狠五月婷婷 | 午夜青青草 | 精品人妻一区二区三区浪潮在线 | 性高潮久久久久久久 | 亚洲看 | 国产午夜视频 | 欧美日韩另类在线 | 天天爽天天色 | 中文字幕专区 | 国产精选一区 | 日韩精品一区在线 | 91色爱| 亚洲天堂手机在线观看 | 日本色呦呦 | 99久久婷婷国产综合精品草原 | 日人视频| 欧美久久网 | 国产成人短视频在线观看 | 国产一区二区视频在线观看 | 国产日韩一区二区三区在线观看 | 香蕉视频影院 | 成人免费片 | 国产又粗又硬又黄的视频 | 青青草国产成人av片免费 | 泷泽萝拉在线播放 | 国产18p | 亚洲男人天堂网 | 靠逼视频免费网站 | 97精品人妻麻豆一区二区 | 日韩日日日 | 四虎亚洲精品 | 中文久久字幕 | 天天干天天操天天爽 | 福利视频第一页 | 欧美性受xxxx黑人猛交88 | 一区二区三区小说 | 污污免费视频 | 亚洲咪咪 | 国产爱搞 |