更新時間:2021-10-29 10:40:28 來源:動力節(jié)點 瀏覽2214次
微服務(wù)是可自主部署的、以業(yè)務(wù)為中心的單元。并非所有部署工件都是單獨的服務(wù)。例如,可能有一個具有運(yùn)行時組件和 ETL 組件的微服務(wù)。想將它們部署在一起,因為它們是緊密耦合的。在大多數(shù)情況下,還想將這些作為一項服務(wù)進(jìn)行監(jiān)控。對于微服務(wù),希望將它們視為獨立的服務(wù),但也希望評估它們之間的相關(guān)性。

現(xiàn)在,讓我們看看監(jiān)控微服務(wù)時需要的五個步驟。
在實施或?qū)W習(xí)新事物時,嘗試一次性啟動并運(yùn)行所有精彩功能可能很誘人。在Java軟件開發(fā)工具中,我們稱之為閃亮工具綜合癥。我們?nèi)绱顺撩杂谝粋€充滿可能性的領(lǐng)域,以至于我們可能會迷失在設(shè)置事物的復(fù)雜性中。
為避免這種情況,請限制您為監(jiān)控微服務(wù)而設(shè)置的內(nèi)容。選擇兩個或三個服務(wù)來連接到您的新監(jiān)控工具。然后對每一個重復(fù)步驟 2 到 5(見下文)。
您應(yīng)該選擇哪些服務(wù)?
要從本文開頭繼續(xù)比較,請選擇您的交響樂中最響亮的樂器。哪些服務(wù)對您的業(yè)務(wù)最具戰(zhàn)略意義?選擇最具戰(zhàn)略意義的服務(wù)將為您的努力帶來最高價值。
您在選擇最具戰(zhàn)略意義的服務(wù)時可能會受到限制。也許其中一些是遺留應(yīng)用程序,它們可能無法與較新的工具很好地配合使用,或者沒有可以讓您輕松重新配置它們的測試。在這種情況下,請選擇您認(rèn)為最安全且可以在本地運(yùn)行的幾項服務(wù),以確保正確連接。
總體目標(biāo)是將您的注意力限制在幾個服務(wù)上——無論您如何選擇。
與限制注意力的想法一致,您需要專注于要衡量的前一到三個最重要的指標(biāo)。一些工具有很多功能。例如,Retrace 可以執(zhí)行性能指標(biāo)、警報、集中日志記錄和錯誤跟蹤。如果您還沒有選擇監(jiān)控微服務(wù)的工具,查看所有功能可能會令人生畏。
相比之下,僅查看一到三個最重要的指標(biāo)將使您能夠避免這種分析癱瘓。這樣你就可以更快地在第 3 步中滾動,而不是試圖一下子理解所有內(nèi)容。
您應(yīng)該關(guān)注哪些指標(biāo)?
要確定在監(jiān)控微服務(wù)時要關(guān)注哪些指標(biāo),了解您的業(yè)務(wù)需求很重要。大多數(shù)客戶或運(yùn)營投訴來自哪里?是因為服務(wù)關(guān)閉太多還是請求太慢?也許是因為在高負(fù)載期間出現(xiàn)了太多數(shù)據(jù)庫錯誤。
您對您的業(yè)務(wù)了解得越深入,您就越容易選擇要選擇工具的指標(biāo)。此外,您可以更輕松地為您的老板花費(fèi)您所需的預(yù)算,以便您購買工具。
如果您發(fā)現(xiàn)自己孤立無援(與其他團(tuán)隊或部門分離)或不知所措,不知道什么對您的業(yè)務(wù)最重要,該怎么辦?從四個黃金信號開始。這些信號是一種久經(jīng)考驗的方法,可以從監(jiān)控服務(wù)中獲得即時價值。它們幾乎對任何企業(yè)都有用。Retrace支持這些開箱即用的功能,并具有智能默認(rèn)值,具體取決于您正在監(jiān)控的服務(wù)類型。
現(xiàn)在你已經(jīng)完成了你的功課,你可以選擇一個監(jiān)控工具。使用您的一到三個重要指標(biāo)來指導(dǎo)您如何看待一個指標(biāo)。如果他們有演示實例,您可以盡情玩樂以了解它的實際工作原理。這是理想的體驗,因為屏幕截圖只能帶您到此為止。
無論指標(biāo)如何,您都希望在監(jiān)控工具中看到一些內(nèi)容。首先,您需要輕松概覽整個系統(tǒng)。這不僅包括您的運(yùn)行時服務(wù),還包括您的數(shù)據(jù)庫和其他后端組件。這樣做可以讓您輕松感受整個系統(tǒng)的節(jié)奏,就像聽一首所有樂器協(xié)同工作的歌曲一樣。
您還需要儀表板,讓您可以跨服務(wù)關(guān)聯(lián)。這些可能會揭示在您的代碼中不容易看到的關(guān)系。(如果您按照下面列出的第 5 步操作,您可以快速從這些跳轉(zhuǎn)到集中式日志記錄,以查看到底發(fā)生了什么。)
工具應(yīng)該做什么
最后,該工具應(yīng)該可以讓您輕松地將概覽分解為系統(tǒng)的特定服務(wù)和部分。您應(yīng)該能夠按幾個不同的維度進(jìn)行切片。該工具應(yīng)該完成查明潛在問題的大部分艱苦工作。具有智能默認(rèn)值的工具將使這變得容易,因為它將以多種粒度設(shè)置您需要的監(jiān)視器組合。
您不僅應(yīng)該查看用于監(jiān)控的工具,還應(yīng)該查看用于集中日志記錄的工具。我提出集中日志記錄也是因為監(jiān)視器總是以某種方式聚合。他們非常擅長展示趨勢和整體健康狀況。但在某些時候,您需要深入了解到底發(fā)生了什么。您不應(yīng)該需要訪問多個日志字段來查看跨多個微服務(wù)的請求的故事。相反,您應(yīng)該能夠在一處查看來自多個服務(wù)的日志。
Retrace 具有監(jiān)控和集中日志記錄功能,但這不是必需的。只要您有辦法將您的日志與您在監(jiān)視器中看到的內(nèi)容(例如,應(yīng)用程序 ID和時間戳)相關(guān)聯(lián),您的監(jiān)控工具就可以與您的日志記錄工具分開。(在第 5 步中,我們將討論如何制作強(qiáng)關(guān)聯(lián) ID。)
一個好的工具將有一些方法可以自動檢測您的服務(wù)。通常,這意味著您必須添加一個庫并配置一些屬性以連接到正確的服務(wù)器。確保該工具支持您選擇的語言和框架的檢測。否則,您將不得不在框架的請求生命周期中尋找接縫來檢測自己。一些框架,例如Spring Boot,帶有內(nèi)置的監(jiān)控擴(kuò)展。
即使使用自動檢測,大多數(shù)工具也應(yīng)該讓您自定義。這讓您可以到達(dá)應(yīng)用程序中那些從不太理想的環(huán)境演變而來的奇怪地方。
檢測和配置完成后,在本地運(yùn)行您的服務(wù),指向您的監(jiān)控服務(wù)器。確保數(shù)據(jù)實際上是從服務(wù)進(jìn)入您的工具。如果您正在使用 Retrace,這里有一篇很棒的文章,描述了如何驗證您的應(yīng)用程序正在運(yùn)行。
即使在您連接并運(yùn)行所有內(nèi)容之后,仍然建議您做一件事。使用微服務(wù),很難通過系統(tǒng)跟蹤事件的蹤跡。這使得跨服務(wù)錯誤幾乎不可能被發(fā)現(xiàn)。
建議在您的每個服務(wù)中實施跟蹤 ID。您需要以標(biāo)準(zhǔn)方式跨服務(wù)執(zhí)行此操作,以便一個跟蹤 ID 可以在整個系統(tǒng)中流動。OpenTracing 標(biāo)準(zhǔn)是實現(xiàn)這一目標(biāo)的好方法,許多框架都有檢測庫來支持它。有了這個,您將能夠輕松地跨多個服務(wù)查詢?nèi)罩?,并探索問題如何影響您的軟件。

初級 202925

初級 203221

初級 202629

初級 203743