Tomcat
Tomcat 是由 Apache 软件基金会下属的 Jakarta 项目开发的一个 Servlet 容器,按照 Sun Microsystems 提供的技术规范,实现了对 Servlet 和 JavaServer Page(JSP)的支持,并提供了作为 Web 服务器的一些特有功能,如 Tomcat 管理和控制平台、安全域管理和 Tomcat 阀等。
Cloud Insight 通过 JMX 来收集 Tomcat 数据,可视化传输字节数, servlet 容器请求时间等数据。
性能指标
Cloud Insight 采集 Tomcat 以下性能指标:
指标 | 单位 | 具体含义 |
---|---|---|
tomcat.bytes_rcvd | bytes/second | 每秒接收的字节数 |
tomcat.bytes_sent | bytes/second | 每秒发送的字节数 |
tomcat.cache.access_count | gets/second | 每秒访问缓存的次数 |
tomcat.cache.hits_count | hits/second | 每秒缓冲命中的次数 |
tomcat.error_count | errors/second | 发生错误的请求数 |
tomcat.jsp.count | pages/second | web 模块中加载的JSP数量 |
tomcat.jsp.reload_count | pages/second | web 模块中重新加载的JSP数量 |
tomcat.max_time | milliseconds | 最长的请求处理时间 (milliseconds) |
tomcat.processing_time | 每秒所有请求的处理时间之和 | |
tomcat.request_count | requests/second | 每秒总请求数 |
tomcat.servlet.error_count | errors/second | servlet 接收的错误请求数 /s |
tomcat.servlet.processing_time | 每秒经过 servlet 的所有请求的处理时间之和 | |
tomcat.servlet.request_count | requests/second | 每秒经过 servlet 的总请求数 |
tomcat.threads.busy | threads | 正在使用的线程数 |
tomcat.threads.count | threads | 当前线程池的线程数 |
tomcat.threads.max | threads | 线程池最大可以产生的线程数 |
配置 Tomcat 监控
启动 JMX Remote
Cloud Insight Agent 通过 JMX 获取 Tomcat 中的性能指标,所以确保 JMX Remote 是 enabled
状态。
修改 bin/catalina.sh,在 Execute The Requested Command
下增加如下配置:
# ----- Execute The Requested Command -----------------------------------------
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7199
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
另外,如果 Tomcat 开启了线程池,则可以额外采集到 threads.exec_max、threads.exec_busy、threads.exec_minspare 等指标。Tomcat 开启线程池需要在 conf/server.xml 中增加 Executor 线程池配置,并且 Connector 要指定 Executor 。
由于每个实体最多可以监控 350 个性能指标,所以您需要按照下方的配置方法,修改配置文件来确定自己需要哪些指标。
有关 JMX 采集方法,请查阅 JMX 远程监控。
更多信息,请查阅 Apache Tomcat 官方手册。
编辑配置文件
编辑配置文件 conf.d/tomcat.yaml,使 Cloud Insight Agent 可以与 Tomcat 通信。
instances:
- host: localhost
port: 7199
user: username
password: password
name: tomcat_instance
# List of metrics to be collected by the integration
init_config:
conf:
- include:
type: ThreadPool
attribute:
maxThreads:
alias: tomcat.threads.max
metric_type: gauge
currentThreadCount:
alias: tomcat.threads.count
metric_type: gauge
currentThreadsBusy:
alias: tomcat.threads.busy
metric_type: gauge
- include:
type: GlobalRequestProcessor
attribute:
bytesSent:
alias: tomcat.bytes_sent
metric_type: counter
bytesReceived:
alias: tomcat.bytes_rcvd
metric_type: counter
errorCount:
alias: tomcat.error_count
metric_type: counter
requestCount:
alias: tomcat.request_count
metric_type: counter
maxTime:
alias: tomcat.max_time
metric_type: gauge
processingTime:
alias: tomcat.processing_time
metric_type: counter
- include:
j2eeType: Servlet
attribute:
processingTime:
alias: tomcat.servlet.processing_time
metric_type: counter
errorCount:
alias: tomcat.servlet.error_count
metric_type: counter
requestCount:
alias: tomcat.servlet.request_count
metric_type: counter
- include:
type: Cache
accessCount:
alias: tomcat.cache.access_count
metric_type: counter
hitsCounts:
alias: tomcat.cache.hits_count
metric_type: counter
- include:
type: JspMonitor
jspCount:
alias: tomcat.jsp.count
metric_type: counter
jspReloadCount:
alias: tomcat.jsp.reload_count
metric_type: counter
重启 Agent
重启 Cloud Insight Agent,使配置生效。
您也可以通过查看 Agent Info 信息,来验证配置是否成功。当出现以下信息,则代表安装成功。
Checks
======
[...]
tomcat
------
- instance #0 [OK]
- Collected 8 metrics & 0 events
有关 Agent Info 信息的查看,请访问帮助中心,查看 Cloud Insight Agent 常用操作。
默认标签
Cloud Insight 采集 Tomcat 以下默认主机标签:
标签种类 | 标签含义 |
---|---|
instance | 实例名称(例如 "tomcat_demo") |
jmx_domain | JMX域(例如 "Catalina") |
type | 指标类型(ThreadPool, GlobalRequestProcessor, Servlet, Cache, JspMonitor等) |
常见问题
- Tomcat: Cannot Connect to Instance Localhost: 7199
- Cloudn't launch JMXTerm. Is Java in your PATH ?
- 若要在同一个服务器上监控多个相同的平台服务,参考如何监控多个平台服务。
- 有任何关于产品的使用疑惑,参考常见问题。