您好,登錄后才能下訂單哦!
本篇內容介紹了“Java Web的Tomcat監控選型舉例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
監控選型
Tomcat Manager和Psi-probe是不錯的可視化監控工具,能夠很好地查看Tomcat狀態信息(比如單位時間請求數,線程狀態等)。在生產環境中,隨著Tomcat實例的不斷增加,維護不同實例上的Manager控制臺會顯得有些繁瑣,同時,為了與企業監控系統、運維儀表盤等結合,有必要選擇兼容性和適配性更好的監控工具。
如今,企業微服務的流行和CI/CD的強需求性,要求我們的服務在易于開發和維護的同時,具有伸縮性強、快速交付等特點。在此環境下,Tomcat+Prometheus+Grafana能夠很好的與企業已有架構適配,并能夠很好的與其他中間件服務監控整合到一起。Prometheus作為新一代的云原生監控系統,鼓勵用戶監控服務的內部狀態,讓用戶可以獲取服務和應用內部真正的運行狀態。
容器環境下Tomcat+Prometheus+Grafana簡圖如下:
在實際部署中,可以簡單分為如下幾個步驟:
1、下載jmx_prometheus_javaagent (https://github.com/prometheus/jmx_exporter),若為容器環境,可將jmx_prometheus_javaagent與Tomcat一起打進運行鏡像。
2、Tomcat啟動時,JAVA_OPTS增加Javaagent和Tomcat config.yaml (https://github.com/prometheus/jmx_exporter/blob/master/example_configs/Tomcat.yml )配置,例如:JAVA_OPTS=”-javaagent:/var/tomcat/jmx_prometheus_javaagent-0.3.1.jar=port:/vat/tomcat/conf/config.xml”(port為實際端口)。
3、Prometheus添加Tomcat的job_name。
監控指標梳理
在《SRE: Google運維解密》一書中指出,監控系統需要能夠有效的支持白盒監控和黑盒監控。通過白盒監控能夠了解其內部的實際運行狀態,通過對監控指標的觀察能夠預判可能出現的問題,從而對潛在的不確定因素進行優化。而黑盒監控,常見的如HTTP探針,TCP探針等,可以在系統或者服務在發生故障時能夠快速通知相關的人員進行處理。
監控的四個黃金指標可以在服務級別幫助我們更好地衡量終端用戶體驗、服務中斷、業務影響等層面的問題。主要關注以下四種類型的指標:錯誤,延遲,流量以及飽和度。
通過對黑盒、白盒監控的理解,結合監控的四個黃金指標,針對Tomcat的重要監控指標,可以從以下幾個方面進行考慮:
監控實踐
錯誤
錯誤監控關注的是當前應用或系統發生的錯誤請求。針對Tomcat錯誤監控,主要監控指標為Tomcat錯誤請求數及與請求總數之間的比例,這些多為顯式的錯誤。關于隱式的錯誤(比如狀態碼響應200,實際業務流程卻是失敗的),通常需要根據業務場景的不同,在服務中添加鉤子及業務邏輯監控來實現。
圖1:某Tomcat實例在1000+qps下請求數和錯誤數的比例
當然,我們也可以借助ELK等工具,對Tomcat上游代理或LB進行整體的錯誤狀態碼統計,方便我們更好的定位錯誤,以及在發生5xx錯誤時考慮如何“快速失敗”,來減少錯誤對系統性能帶來的影響。
圖2:通過Tomcat上游代理采集的狀態碼統計
延遲
延遲監控關注的是服務請求所需時間。針對Tomcat延遲監控,主要監控指標為Tomcat實例的Response time。同時,我們也可以采用黑盒監控中的HTTP語義探測來采集Tomcat對應域名的全鏈路延遲,發送指定GET、POST、HEAD等請求,來匹配狀態碼及服務器的返回內容。
圖3:某產品線下多個Tomcat實例整體的response time匯總
圖4:通過Tomcat上游代理采集的平均請求時間和Tomcat平均響應時間
流量
流量監控關注的是當前系統或應用的流量,以便更好地衡量服務的承載能力。針對Tomcat流量監控,我們需要關注Tomcat實例發送和接收的流量。
圖5:某Tomcat實例發送和接收的流量
飽和度
飽和度監控關注的是系統或應用對資源的利用率,強調最能影響服務狀態的受限制的資源。
不同的系統或應用對飽和度監控的需求各不相同,但共性是在服務性能明顯下降時,起決定性的狀態指標。針對Tomcat飽和度監控,可以從堆內存、線程數、GC次數及耗時等方面出發,在告警發生前后,通過查看各個指標的變化曲線,快速定位問題原因。
Tomcat線程池
對于Tomcat線程池初始配置的采集,可以根據不同業務場景,不同實例的壓力,來進行調整,比如maxThreads、acceptCount等。
圖6:某Tomcat實例線程池相關的默認配置
JVM監控
對于Tomcat JVM的監控,通常我們需要關注堆內存的使用情況、GC的次數和耗時、以及對JVM線程數的監控。
JVM堆內存監控
Java Heap是JVM所管理的內存中***的一塊,被所有線程所共享,用來存放對象實例。因此,堆內存的使用情況至關重要。
圖7:某Tomcat實例堆內存的使用情況
GC次數和耗時
通過查看單位時間內GC次數和耗時,能夠讓我們針對不同的業務場景,選擇不同的垃圾回收器,從而進一步提高性能。
圖8:某Tomcat實例默認垃圾回收器總GC次數曲線
圖9:某Tomcat實例默認垃圾回收器總GC時間曲線
JVM線程數監控
JVM線程數的曲線統計,能夠讓我們更直觀的看到JVM線程當前的運行情況。
圖10:某Tomcat實例JVM線程相關的統計
“Java Web的Tomcat監控選型舉例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。