通過(guò)prometheus監(jiān)控Tomcat運(yùn)行狀態(tài)的操作流程
Tomcat安裝配置以及prometheus監(jiān)控Tomcat
Tomcat本身無(wú)法對(duì)外提供Prometheus所兼容的Metrics,因此需要借助第三方exporter來(lái)提供:tomcat-exporter
https://github.com/nlighten/tomcat_exporter

一. 安裝并配置tomcat
1、安裝tomcat
yum install tomcat tomcat-webapps -y

2、然后下載依賴(lài)包
我們可以看到官方介紹,需要很多依賴(lài)包

wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient/0.12.0/simpleclient-0.12.0.jar wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_common/0.12.0/simpleclient_common-0.12.0.jar wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_hotspot/0.12.0/simpleclient_hotspot-0.12.0.jar wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_servlet/0.12.0/simpleclient_servlet-0.12.0.jar wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_servlet_common/0.12.0/simpleclient_servlet_common-0.12.0.jar wget https://search.maven.org/remotecontent?filepath=nl/nlighten/tomcat_exporter_client/0.0.15/tomcat_exporter_client-0.0.15.jar wget https://search.maven.org/remotecontent?filepath=nl/nlighten/tomcat_exporter_servlet/0.0.15/tomcat_exporter_servlet-0.0.15.war
當(dāng)然也可以一次性全部下載
git clone https://github.com/littlefun91/tomcat-exporter.git


3、將jar包和war包分別拷貝至對(duì)應(yīng)的目錄下
[root@jingtian03 tomcat_exporter ]#cp *.jar /usr/share/tomcat/lib/ [root@jingtian03 tomcat_exporter ]#cp *.war /usr/share/tomcat/webapps/
啟動(dòng)后,metrics.war自動(dòng)解壓

4、啟動(dòng)Tomcat
systemctl start tomcat.service
查看運(yùn)行狀態(tài)

5、訪(fǎng)問(wèn)tomcat的metrics
http://10.10.0.32:8080/metrics/

6、配置prometheus
編輯prometheus配置文件,將Tomcat納入監(jiān)控
- job_name: "tomcat"
static_configs:
- targets: ["jingtian03:8080"]
重新加載prometheus配置文件
curl -X POST http://localhost:9090/-/reload
檢查Prometheus的Status->Targets頁(yè)面,驗(yàn)證Tomcat是否已經(jīng)成功納入監(jiān)控中

可以看到Tomcat相關(guān)指標(biāo)

二. Tomcat常用指標(biāo)與示例
對(duì)于 Tomcat,我們通常會(huì)使用RED 方法,監(jiān)控請(qǐng)求速率(Rate)、請(qǐng)求失敗數(shù)(Errors)、請(qǐng)求延遲(Duration)來(lái)評(píng)估當(dāng)前服務(wù)的質(zhì)量。
1.Tomcat連接相關(guān)指標(biāo)

最大連接數(shù)可以修改

在/usr/share/tomcat/conf/server.xml中修改


重啟tomcat,再看下

案例:計(jì)算Tomcat的最大活動(dòng)連接數(shù)的飽和度,計(jì)算公式:當(dāng)前活躍連接數(shù)/ 最大活躍連接數(shù) * 100
tomcat_connections_active_total / tomcat_connections_active_max * 100

2. Tomcat請(qǐng)求相關(guān)指標(biāo)


tomcat_requestprocessor_time_seconds Tomcat服務(wù)器處理請(qǐng)求所花費(fèi)的總時(shí)間(單位是秒)雖然顯示是gauge類(lèi)型指標(biāo),但它的值卻是不斷累加的

案例1:計(jì)算Tomcat最近5分鐘,Http請(qǐng)求的錯(cuò)誤率占比Http請(qǐng)求總數(shù)的比率。計(jì)算公式: 每5分鐘的錯(cuò)誤請(qǐng)求數(shù) / 每5分鐘的總請(qǐng)求數(shù) * 100
rate(tomcat_requestprocessor_error_count_total[5m]) / rate(tomcat_requestprocessor_request_count_total[5m]) * 100
案例2:計(jì)算Tomcat最近5分鐘,處理每個(gè)請(qǐng)求所需要花費(fèi)的時(shí)間。
這個(gè)本來(lái)標(biāo)注的是gauge類(lèi)型的數(shù)據(jù),但是其值是一直在增大的,因此可以使用irate()來(lái)求最近5分鐘內(nèi),每個(gè)請(qǐng)求所花費(fèi)的時(shí)間
irate(tomcat_requestprocessor_time_seconds[5m])

3.Tomcat會(huì)話(huà)相關(guān)指標(biāo)


案例1:計(jì)算Tomcat創(chuàng)建會(huì)話(huà)的速率。
sum (rate(tomcat_session_created_total[5m])) by (instance,job,host)
案例2:計(jì)算被拒絕創(chuàng)建的會(huì)話(huà)占總創(chuàng)建會(huì)話(huà)的比率。計(jì)算公式:( 拒絕的會(huì)話(huà)數(shù) / (創(chuàng)建的會(huì)話(huà)數(shù) + 拒絕會(huì)話(huà)數(shù)) * 100 )
(tomcat_session_rejected_total / ( tomcat_session_created_total + tomcat_session_rejected_total )) * 100
4.Tomcat線(xiàn)程相關(guān)指標(biāo)

允許的最大線(xiàn)程數(shù),也是可以配置的

默認(rèn)是200

案例1:計(jì)算Tomcat活躍的請(qǐng)求線(xiàn)程數(shù)占總請(qǐng)求的線(xiàn)程數(shù)比率。計(jì)算公式:當(dāng)前活躍線(xiàn)程數(shù) / 最大的線(xiàn)程數(shù) * 100
(tomcat_threads_active_total / tomcat_threads_max) * 100
三. Tomcat告警規(guī)則文件
1、具體告警規(guī)則示例文件(可以根據(jù)公司實(shí)際情況進(jìn)行調(diào)整)
cat /etc/prometheus/rules/tomcat_rules.yml
groups:
- name: tomcat告警規(guī)則
rules:
- alert: Tomcat活躍連接數(shù)過(guò)高
expr: tomcat_connections_active_total / tomcat_connections_active_max* 100 >=80
for: 1m
labels:
severity: warning
annotations:
summary: "Tomcat服務(wù)器活躍連接數(shù)過(guò)高, 實(shí)例:{{ $labels.instance }}"
description:
Tomcat最大連接數(shù)是 {{ printf `tomcat_connections_active_max{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first | value }} Tomcat目前連接數(shù)是 {{ printf `tomcat_connections_active_total{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first | value }} Tomcat活躍連接數(shù)已超過(guò)最大活躍連接數(shù)的80%, 當(dāng)前值為 {{ $value }}%
- alert: Tomcat處理請(qǐng)求超過(guò)5秒
expr: rate(tomcat_requestprocessor_time_seconds[5m]) > 5
for: 5m
labels:
severity: warning
annotations:
summary: "Tomcat處理請(qǐng)求時(shí)間過(guò)長(zhǎng), 實(shí)例:{{ $labels.instance }}"
description: "Tomcat在過(guò)去5分鐘的平均處理請(qǐng)求時(shí)間超過(guò)5秒,當(dāng)前值 {{ $value}}。"
- alert: "Tomcat會(huì)話(huà)拒絕率超過(guò)20%"
expr: (tomcat_session_rejected_total / (tomcat_session_created_total +tomcat_session_rejected_total)) * 100 > 20
for: 5m
labels:
severity: critical
annotations:
summary: "Tomcat會(huì)話(huà)拒絕率過(guò)高, 實(shí)例:{{ $labels.instance }}"
description: "Tomcat在Host:{{ $labels.host }} 的 {{ $labels.context}} 的上下文中的會(huì)話(huà)拒絕率超過(guò)20%,當(dāng)前值 {{ $value }}。"
- alert: "Tomcat線(xiàn)程使用率過(guò)高"
expr: (tomcat_threads_active_total / tomcat_threads_max) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "Tomcat線(xiàn)程使?率過(guò)?, 實(shí)例:{{ $labels.instance }}"
description: Tmcat最大線(xiàn)程數(shù)是 {{ printf `tomcat_threads_max{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first| value }} Tomcat目前線(xiàn)程數(shù)是 {{ printf `tomcat_threads_active_total{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first | value }} Tomcat線(xiàn)程數(shù)已超過(guò)最大活躍連接數(shù)的80%, 當(dāng)前值為 {{ $value }}%
2、驗(yàn)證告警規(guī)則

3、導(dǎo)入Tomcat圖形
1、下載對(duì)應(yīng)的dashboard
https://github.com/nlighten/tomcat_exporter/blob/master/dashboard/example.json
下載下來(lái)導(dǎo)入



以上就是通過(guò)prometheus監(jiān)控Tomcat運(yùn)行狀態(tài)的操作流程的詳細(xì)內(nèi)容,更多關(guān)于prometheus監(jiān)控Tomcat運(yùn)行狀態(tài)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Tomcat部署SpringBoot項(xiàng)目的war包的方法及詳細(xì)步驟
這篇文章主要介紹了Tomcat部署SpringBoot項(xiàng)目的war包的方法,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
liunx下centos7中tomcat報(bào)錯(cuò)訪(fǎng)問(wèn)域名超時(shí)的問(wèn)題解決
本文主要介紹了liunx下centos7中tomcat報(bào)錯(cuò)訪(fǎng)問(wèn)域名超時(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
解決Tomcat啟動(dòng)報(bào)錯(cuò):嚴(yán)重:Unable?to?process?Jar?entry?[META-INF/v
這篇文章主要介紹了解決Tomcat啟動(dòng)報(bào)錯(cuò):嚴(yán)重:Unable?to?process?Jar?entry?[META-INF/versions/9/module-info.class]問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Tomca啟動(dòng)閃退問(wèn)題解決(八大類(lèi))
本文主要介紹了Tomca啟動(dòng)閃退問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Tomcat啟動(dòng)springboot項(xiàng)目war包報(bào)錯(cuò):?jiǎn)?dòng)子級(jí)時(shí)出錯(cuò)的問(wèn)題
這篇文章主要介紹了Tomcat啟動(dòng)springboot項(xiàng)目war包報(bào)錯(cuò):?jiǎn)?dòng)子級(jí)時(shí)出錯(cuò)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
簡(jiǎn)單記錄Cent OS服務(wù)器配置JDK+Tomcat+MySQL
這篇文章主要介紹了簡(jiǎn)單記錄Cent OS服務(wù)器配置JDK+Tomcat+MySQL,需要的朋友可以參考下2014-12-12
Linux部署Tomcat發(fā)布項(xiàng)目過(guò)程中各種問(wèn)題及解決方法
這篇文章主要介紹了解決Linux部署Tomcat發(fā)布項(xiàng)目過(guò)程中各種問(wèn)題,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Tomcat實(shí)現(xiàn)多域名訪(fǎng)問(wèn)詳解
這篇文章主要介紹了Tomcat多域名訪(fǎng)問(wèn)詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

