最受歡迎的Java web應用伺服器之一——Tomcat監控選型及實踐
導語
基於京東雲豐富的實戰經驗,我們將陸續分享運維方面的乾貨,幫助小夥伴們進階為運維達人,歡迎持續關注。首先帶來的是“監控”專題系列。
本期作者:蒲公英
京東雲
應用研發部
Tomcat是一款開源的輕量級Web應用伺服器,廣泛應用於雲服務平臺及企業應用系統,是最受歡迎的Java web應用伺服器之一。因此,對於Tomcat的監控顯得尤為重要,能讓我們在不同場景下了解Tomcat的執行情況,進而能夠更好的進行調優。
enjoy:
監控選型
Tomcat Manager和Psi-probe是不錯的視覺化監控工具,能夠很好地檢視Tomcat狀態資訊(比如單位時間請求數,執行緒狀態等)。在生產環境中,隨著Tomcat例項的不斷增加,維護不同例項上的Manager控制檯會顯得有些繁瑣,同時,為了與企業監控系統、運維儀表盤等結合,有必要選擇相容性和適配性更好的監控工具。
如今,企業微服務的流行和CI/CD的強需求性,要求我們的服務在易於開發和維護的同時,具有伸縮性強、快速交付等特點。在此環境下,Tomcat+Prometheus+Grafana能夠很好的與企業已有架構適配,並能夠很好的與其他中介軟體服務監控整合到一起。Prometheus作為新一代的雲原生監控系統,鼓勵使用者監控服務的內部狀態,讓使用者可以獲取服務和應用內部真正的執行狀態。
容器環境下Tomcat+Prometheus+Grafana簡圖如下:
在實際部署中,可以簡單分為如下幾個步驟:
1、下載jmx_prometheus_javaagent (),若為容器環境,可將jmx_prometheus_javaagent與Tomcat一起打進執行映象。
2、Tomcat啟動時,JAVA_OPTS增加Javaagent和Tomcat config.yaml (/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 requestcount and errorcount | Tomcat例項總請求數和錯誤請求數 |
延遲 | Tomcat response time | Tomcat例項的Response time |
流量 | Tomcat bytessent and bytesreceived | Tomcat例項傳送和接受的流量 |
飽和度 | heap memory | 堆記憶體的使用情況 |
jvm gc | GC次數和耗時 | |
jvm_threads | 執行緒數 |
監控實踐
錯誤
錯誤監控關注的是當前應用或系統發生的錯誤請求。針對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執行緒相關的統計
寫在最後
透過對Tomcat重要監控指標的採集以及監控,幫助我們更方便地完成日常巡檢,提高先於故障發現問題的能力,提高故障發生時的定位效率,從而更好地提高穩定性。
附:
jmx_prometheus_javaagent:
Tomcat jmx_exporter:
/blob/master/example_configs/Tomcat.yml
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557889/viewspace-2374726/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2014年最受歡迎的Java應用伺服器Java伺服器
- 應用監控的選型思考
- eMarketer:微信是中國最受歡迎的移動應用
- 全球最受歡迎的8位Java大牛Java
- 8款最受歡迎的HTML5/CSS3應用及程式碼HTMLCSSS3
- 墨天輪最受DBA歡迎的資料庫技術文件-監控篇資料庫
- Zalo成為越南最受歡迎的訊息應用程式
- MRI:圖解25國最受歡迎的5款應用圖解
- Java監控神器之psi-probe監控Tomcat和應用JavaTomcat
- 2016年,誰是最受歡迎的 Java EE 伺服器?Java伺服器
- 今年二十歲的CS,仍是最受歡迎的電腦遊戲之一遊戲
- 蘋果:2014年App Store最受歡迎應用蘋果APP
- 最受歡迎的 NoSQL 和關係型資料庫SQL資料庫
- 從App Store排名看最受歡迎的APP型別APP型別
- 目前最受歡迎的12個Python web框架,你用過幾個?PythonWeb框架
- 理解Java機制最受歡迎的8幅圖Java
- Nginx成為Top1000網站最受歡迎的Web伺服器Nginx網站Web伺服器
- Steam:《我們之中》是目前最受歡迎的多人遊戲之一遊戲
- Strategy Analytics:遊戲和教育是最受歡迎的VR應用類別遊戲VR
- Cacti監控一臺Web伺服器上多個Tomcat埠的實現Web伺服器Tomcat
- beta版 tomcat 應用監控指標Tomcat指標
- 企鵝智酷:哪些型別優惠券紅包最受歡迎?型別
- 最受DevOps歡迎的五種工具dev
- Docker Hub 最受歡迎的10大映象Docker
- Nginx取代Apache成為世界前1萬家網站中最受歡迎的Web伺服器NginxApache網站Web伺服器
- 在中國,什麼樣的Java程式設計師最受歡迎Java程式設計師
- 2016年度最受歡迎的100個 Java 庫Java
- Java泛型及實踐Java泛型
- 容器雲環境,你們如何監控應用執行情況? ---JFrog 雲原生應用監控實踐
- 15 種最受歡迎的資料視覺化流程圖及模板視覺化流程圖
- Cacti監控Tomcat伺服器實現過程Tomcat伺服器
- 【轉】Docker部署Tomcat及Web應用DockerTomcatWeb
- 年度最受歡迎的開源CHROME外掛Chrome
- 最知名的遊戲公司就最受歡迎嗎?遊戲
- 2017年最受歡迎的UI框架UI框架
- 20個最受歡迎的Linux命令(轉)Linux
- 最受歡迎的5個Android ORM框架AndroidORM框架
- 最受歡迎的App開發工具推薦APP