企業應用觀測中樞建設

本文來自騰訊藍鯨智云社區用戶: CanWay

運維挑戰加劇

新時代技術背景下,運維面臨的挑戰加劇:

1、業務數量日益增加、業務規模日益龐大

隨著科技發展進步、民眾生活富足,線下業務線上化、線上業務復雜化趨勢愈演愈烈,各行各業投入巨大人力物力財力進行企業IT建設。隨之而來的是線上業務數量的爆炸式增加與業務規模的劇烈擴張,這對企業IT運維人員提出了全局把控能力的重大挑戰。

2、云原生、微服務技術應用

伴隨著業務增長,IT架構領域提出了云原生、微服務的構建理念,將傳統的大體量、高耦合應用系統拆分為微型化、可拆卸的分布式模塊。這種高可用性、高靈活度的部署架構使得運維人員更難了解系統全貌,在日常監控和故障現場還原時難度極大。

3、容器技術的大規模實踐落地

與此同時,在資源調度層面,為應對上述現狀帶來的業務快速迭代、運行保障維穩需求,容器技術在各企業內部快速落地推廣。容器對基礎資源的弱依賴、Pod/Container頻繁起滅的特性都給運維工作帶來了難以估量的復雜度提升,人力沒有算力快的“弱勢”日益凸顯。
在這里插入圖片描述

復雜業務邏輯帶來的交錯系統關系

綜上所述,在當今企業內部,運維工作越來越需要工具的協助,傳統人工式的運維方案,已無法應對科技發展帶來的挑戰要求。

企業應用觀測建設路徑

面對上述挑戰,企業常常會踏上構建可觀測性工具體系的征途,而在融合ITIM基礎監控之后,針對應用的可觀測能力補充往往在中間階段進行建設落地。
在這里插入圖片描述

針對應用的可觀測體系,首先需要建設狹義上的應用監控工具(APM),通過請求跟蹤(Trace)標記,實現應用架構可視化、應用流量指標化、請求記錄數據化;
在觀測數據補足后,應用觀測進入下一階段建設目標——數據聯動,將應用觀測數據(Trace)和指標(metric)、日志(log)關聯起來;通過多維度視角監控業務系統運行狀況,為告警產生后的故障定位提供可追溯的現場記錄。

在這里插入圖片描述
完整可觀測體系的結構與應用可觀測的占位

企業應用觀測建設思路

總體定位

鏈路追蹤的工具,即前面提到的APM,因為其自動化生成了一系列數據之間的關聯關系,在整個可觀測體系中是一個類似中樞的存在。
在這里插入圖片描述
鏈路追蹤工具在可觀測體系中的作用

這張圖概括了鏈路追蹤在整個可觀測體系建設中的定位以及與其他工具的關聯關系:

  • 向前可關聯到用戶操作,鏈路追蹤可以將用戶在終端上的發起的請求和后端鏈路聯系起來,實現前端到后端完整的時間線和因果關系呈現;

  • 向后則可串聯到具體日志,鏈路追蹤可以定位到具體某個服務的某次或某一批請求,從而精確匹配到相關日志來解析問題所在;

  • 向下則可以在鎖定某個服務節點問題后,通過資源標簽定位到具體承載這個服務節點的進程級監控和主機操作系統層級的監控,或是容器平臺的監控。

另外鏈路追蹤本身也是可以進行一些指標提取的,經典指標例如請求量、請求成功率、各種分位的時延,這些指標在配置了一定的告警規則后,也都可以直接作為告警來源。產生異常后主動觸達運維人員。

由此可見,在構建全面的可觀測性體系時,孤立地看待與應用性能管理(APM)工具的建設是一種偏頗的思路。不少企業曾嘗試獨立為APM工具設立項目并推進實施,然而最終這些工具并未能實現廣泛的采納與應用,項目所帶來的實際效益遠低于初始預期。究其根本,是因為單一的APM工具所能覆蓋的問題場景極為有限。我們應當將APM盡可能和各類其他觀測工具做串聯打通,通過APM建立起基于業務實際請求流量的“橋梁”,有目標性地拉通各個觀測工具和不同類型的觀測數據,實現完整有效的觀測效果。

接下來我們就具體的串聯打通場景提出一些具體實踐供各位讀者參考。

前端到后端串聯排障

當具備對用戶終端數據進行采集的能力,那就可以結合這種前端監控工具(RUM)和鏈路追蹤工具(APM)通過一些機制來實現前端到后端的串聯排障。
在這里插入圖片描述
前端串聯后端調用鏈排障示意圖

圖中可以解釋這一過程的原理,用戶在移動應用或者Web瀏覽器網頁上訪問時,會生成一個Session被記錄,一個Session中記錄了一個用戶的完整操作流程,包括他依次打開了哪些頁面,在每個頁面上進行了怎樣的操作,觸發了哪些后臺請求。當產生了一個具體的后臺請求后,RUM工具可以按照APM工具定義的Trace標識規則(TraceID的生成規則),來對這個請求進行標記,這樣在后端也可以完整跟蹤到這個請求在后端系統具體經過了哪些服務,在哪個服務上處理消耗的時間過長或者出現了報錯。

鏈路跟蹤與日志關聯

對于開發人員來說,直接將問題定位到代碼級別是最高效的。但告警信息的有限以及指標類數據的高度抽象,使得運維人員在很多時候其實無法給出這么詳細的信息,無法有效輔助開發人員進行問題定位和解決。這時,鏈路追蹤和日志關聯的方式就給出了一種有效的解決手段。

具體的實現方式如下圖所示:
在這里插入圖片描述
調用鏈串聯日志方法

可能會有工程師擔心這種方式對代碼侵入性很大,很難實踐,但其實不然,業界有非常多好用的日志框架來幫你解決這個問題,我們只需要額外生成一份日志輸出的配置文件做批量下發即可。

以下就用Logback日志框架配合Skywalking探針(一種業界流行的開源APM探針)來做個例子,其中關鍵的修改點在于:

1、引用skywalking官方提供的工具類
在這里插入圖片描述
2、在Logger配置中引用這個Appender
在這里插入圖片描述
在這個過程中,業務并不會有很大感知,只是會發現他們輸出的日志中增加了Skywalking注入的TraceID等信息。接下來我們在日志解析過程中就可以提取這些Trace信息,便于后續直接根據這些Trace信息進行關聯檢索和分析。

鏈路追蹤下鉆到資源層監控

這里會進一步分為三種不同類型的場景:

1、下鉆到組件或數據庫排查問題

APM所捕獲到的調用數據中,有一部分是對組件或數據庫的調用。這種調用可以將系統所用到的組件和數據庫直觀地呈現在拓撲圖和某一條具體的調用鏈中,如果相關的組件或數據庫出現了問題,大概率會在這種可視化的形式中有所體現,例如拓撲圖上的狀態呈現以及調用鏈瀑布圖中的長條。當然,這里只是解決了發現的問題,我們只能在APM中判斷這些組件或者數據庫的故障對上游調用者產生了影響,但至于為何產生以及這些組件及數據庫的真實運行狀態,我們仍然需要借助其他監控工具來呈現和分析。

此時APM可以在調用信息中提取出對應組件或數據庫的資源標識,這可能是IP地址,或是域名鏈接,再通過這些標識信息去對應的組件監控或數據庫監控中獲取到這些資源的核心監控指標信息及相關日志,通過同一個平臺的頁面跳轉或者嵌入來實現一套連貫的排障流程,提升此類場景的排障效率。

2、下鉆到進程所在的主機/容器集群排查問題

當我們在系統中通過APM探針或者SDK按照規范要求上報了Trace信息,一般都會攜帶對應服務所在的主機或者容器集群信息,最常見的就是主機的IP地址以及容器的ContainerID,這兩種信息會作為我們去尋求其他監控工具時對主機和容器監控的索引,從而能夠在識別到某個服務節點故障后,對其所在的主機或者容器進行下鉆,查看到主機和容器層級上更加精確的指標數據或者容器數據。

3、下鉆到網絡行為分析網絡問題

我們知道,計算機網絡其實底層有七層協議,而我們平時大多數情況會將這七層協議轉化抽象成單次請求。但不排除,有時我們的故障發生在比較深的網絡層面,在APM調用鏈中只能得知某一段span的耗時增加、返回碼錯誤或者無響應斷鏈,無法進一步排查深層次的網絡問題。這時就可以通過這一進程將請求的span獲取到內核態的 sys span ,再從sys span映射到網絡監控中的具體net span,然后就可以從專業的網絡監控中獲取到這次網絡請求在各個環節的詳細信息。
在這里插入圖片描述
一次請求調用實際的網絡過程

通常某次請求出現網絡問題的概率還是比較小的,往往是短時間大面積出現網絡問題,這個時候我們也可以從APM的某些樣本請求中獲取一個大致的范圍,接下來按一定條件跳轉到專業的網絡監控,查看相應的指標趨勢(例如丟包數量、丟包率、CRC校驗通過率等)。

結語

以上,我們介紹了比較成熟理想的企業應用觀測中樞建設方案。總的來說,應用觀測領域目前尚處于快速發展、落地探索階段,各企業在建設應用觀測中樞的過程中不應操之過急。企業內部從一個試點出發,以點帶面,逐漸推廣是比較理想且穩妥的建設節奏。其最終實現的觀測能力也將會對企業內部的系統維穩及代碼調優起到極大的助力作用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910318.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910318.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910318.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python實例題:基于邊緣計算的智能物聯網系統

目錄 Python實例題 題目 問題描述 解題思路 關鍵代碼框架 難點分析 擴展方向 Python實例題 題目 基于邊緣計算的智能物聯網系統 問題描述 開發一個基于邊緣計算的智能物聯網系統,包含以下功能: 邊緣設備管理:連接和管理大量物聯網…

一,python語法教程.內置API

一,字符串相關API string.strip([chars])方法:移除字符串開頭和結尾的空白字符(如空格、制表符、換行符等),它不會修改原始字符串,而是返回一個新的處理后的字符串 chars(可選)&…

私有 Word 文件預覽轉 PDF 實現方案

私有 Word 文件在線預覽方案(.doc/.docx 轉 PDF) 前言 由于 .doc 和 .docx Word 文件 無法在瀏覽器中直接預覽(尤其在私有 API 場景下),常見的 Content-Disposition: inline 并不能生效。因此,本方案通過…

Alpine Docker 容器中安裝包緩存與 C/C++ 運行問題

在使用 Docker 容器部署應用時,基于 Alpine 鏡像能帶來輕量化的優勢,但過程中也會遇到不少問題。今天就來分享下我在 Alpine 容器中解決安裝包緩存與 C/C 程序運行問題的經驗。 一、Alpine 安裝包緩存到本地目錄 Alpine Linux 默認使用apk作為包管理工…

[2-02-02].第59節:功能函數 - 函數基礎

服務器端操作學習大綱 一、函數基礎 需求場景 在shell腳本的編寫過程中,我們經常會遇到一些功能代碼場景:多條命令組合在一起,實現一個特定的功能場景邏輯、一些命令在腳本內部的多個位置頻繁出現。在這些場景的代碼量往往不多,…

RA4M2開發涂鴉模塊CBU(6)----RA4M2驅動涂鴉CBU模組

RA4M2開發涂鴉模塊CBU.6--RA4M2驅動涂鴉CBU模組 概述視頻教學樣品申請參考程序硬件準備接口生成UARTUART屬性配置R_SCI_UART_Open()函數原型回調函數user_uart_callback0 ()變量定義按鍵回調更新按鍵狀態DP-LED 同步長按進入配網涂鴉協議解析主循環任務調度 概述 本方案基于瑞…

MiniMax-M1: Scaling Test-TimeCompute Efficiently with I Lightning Attention

我們推出了MiniMax-M1,這是全球首個開源權重、大規模混合注意力推理模型。MiniMax-M1采用了混合專家系統(Mixture-of-Experts,簡稱MoE)架構,并結合了閃電注意力機制。該模型是在我們之前的MiniMax-Text-01模型&#xf…

Appium+python自動化(二十六) -Toast提示

在日常使用App過程中,經常會看到App界面有一些彈窗提示(如下圖所示)這些提示元素出現后等待3秒左右就會自動消失,那么我們該如何獲取這些元素文字內容呢? Toast簡介 Android中的Toast是一種簡易的消息提示框。 當視圖…

【信號與系統三】離散時間傅里葉變換

上一講我們講述了連續時間傅里葉變換,這一講同理來個離散時間傅里葉變換。 和上講模塊類似 5.1離散時間傅里葉變換 這一式子就是離散時間傅里葉變換對 5.2周期信號的傅里葉變換 同理,由于之前第一講講到: 可以推出: 舉個例子&am…

Python應用石頭剪刀布練習初解

大家好!作為 Python 初學者,尋找一個既簡單又有趣的項目來練習編程技能是至關重要的。今天,我將向大家介紹一個經典的編程練習——石頭剪刀布游戲,它可以幫助你掌握 Python 的基本概念,如條件語句、隨機數生成和用戶輸入處理等。 …

私有規則庫:企業合規與安全的終極防線

2.1 為什么企業需要私有規則庫?——合規與安全的最后防線 真實案例:2023年某跨境電商因員工泄露內部檢測規則,導致黑產繞過風控系統,損失1200萬+ 企業規則庫的三大剛需: 行業合規: 金融行業需符合《個人金融信息保護技術規范》 醫療行業需滿足HIPAA患者數據脫敏要求 業…

長尾關鍵詞優化SEO核心策略

內容概要 本文旨在系統解析長尾關鍵詞在搜索引擎優化中的核心地位,為讀者提供從理論到實踐的全面指南。文章首先探討長尾關鍵詞的基礎作用,幫助理解其在提升網站流量質量中的價值。接著,深入介紹精準定位低搜索量、高轉化率關鍵詞的策略&…

騰訊云事件總線:構建毫秒級響應的下一代事件驅動架構

摘要 事件總線(EventBridge)作為云原生架構的核心樞紐,其性能與可靠性直接影響企業系統彈性。騰訊云事件總線基于TGW云網關底層能力重構,實現單節點吞吐量提升125%、故障恢復時間降至4秒級(行業平均>30秒&#xff0…

PyTorch 中mm和bmm函數的使用詳解

torch.mm 是 PyTorch 中用于 二維矩陣乘法(matrix-matrix multiplication) 的函數,等價于數學中的 A B 矩陣乘積。 一、函數定義 torch.mm(input, mat2) → Tensor執行的是兩個 2D Tensor(矩陣)的標準矩陣乘法。 in…

Qt 解析復雜對象構成

Qt 解析復雜對象構成 dumpStructure 如 QComboBox / QCalendarWidget / QSpinBox … void Widget::Widget(QWidget* parent){auto c new QCalendarWidget(this);dumpStructure(c,4); }void Widget::dumpStructure(const QObject *obj, int spaces) {qDebug() << QString…

山姆·奧特曼:從YC到OpenAI,硅谷創新之星的崛起

名人說&#xff1a;路漫漫其修遠兮&#xff0c;吾將上下而求索。—— 屈原《離騷》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 山姆奧特曼&#xff1a;從YC到OpenAI&#xff0c;硅谷創新之星的崛起 在人工智能革命…

PHP語法基礎篇(五):流程控制

任何 PHP 腳本都是由一系列語句構成的。一條語句可以是一個賦值語句&#xff0c;一個函數調用&#xff0c;一個循環&#xff0c;一個條件語句或者甚至是一個什么也不做的語句&#xff08;空語句&#xff09;。語句通常以分號結束。此外&#xff0c;還可以用花括號將一組語句封裝…

怎么隱藏關閉或恢復顯示輸入法的懸浮窗

以搜狗輸入法為例&#xff0c;隱藏輸入法懸浮窗 懸浮窗在輸入法里的官方叫法為【狀態欄】。 假設目前大家的輸入法相關顯示呈現如下狀態&#xff1a; 那我們只需在輸入法懸浮窗&#xff08;狀態欄&#xff09;的任意位置鼠標右鍵單擊&#xff0c;調出輸入法菜單&#xff0c;就…

Electron (02)集成 SpringBoot:服務與桌面程序協同啟動方案

本篇是關于把springboot生成的jar打到electron里&#xff0c;在生成的桌面程序啟動時springboot服務就會自動啟動。 雖然之后并不需要這種方案&#xff0c;更好的是部署[一套服務端&#xff0c;多個客戶端]...但是既然搭建成功了&#xff0c;也記錄一下。 前端文件 1、main.js…

2025年計算機應用與神經網絡國際會議(CANN 2025)

2025 International Conference on Computer Applications and Neural Networks &#xff08;一&#xff09;會議信息 會議簡稱&#xff1a;CANN 2025 大會地點&#xff1a;中國重慶 收錄檢索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 &#xff08;二&#x…