一、明确Tomcat日志中的关键监控指标
catalina.out、localhost.<date>.log)中记录的错误数量与总请求数的比值,反映应用的稳定性,常见错误类型包括NullPointerException、数据库连接超时等。activeCount)、最大线程数(maxThreads)、繁忙线程数(busyCount),用于判断线程资源是否成为瓶颈(如活跃线程数接近最大线程数可能导致请求排队)。二、配置Tomcat日志以捕获关键指标
server.xml中配置AccessLogValve,记录请求的URL、响应时间、状态码等信息(默认路径为logs/access_log)。示例配置:<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %D" />
其中%D表示请求处理时间(毫秒),%s表示状态码,%r表示请求行。logging.properties中设置org.apache.catalina.level=FINE或SEVERE,捕获更详细的错误信息(如堆栈跟踪),便于定位问题。catalina.sh中添加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof参数,当发生内存溢出时自动生成堆转储文件;或通过jstack命令手动获取线程堆栈(如jstack -l <PID> > thread_dump.txt),分析线程阻塞或死锁问题。三、选择合适的监控工具
file输入插件收集Tomcat日志(如access_log、catalina.out),使用grok过滤器解析日志格式(如匹配%{COMBINEDAPACHELOG}提取请求时间、状态码等字段);search命令快速定位问题(如index=tomcat status=500查找500错误)。promtail采集Tomcat日志并存储;Grafana创建仪表盘展示关键指标(如线程池使用率、内存GC时间),支持与Prometheus集成实现告警。catalina.sh中添加-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false参数;四、建立监控流程
maxThreads、maxConnections参数),优化应用代码(如减少同步块、使用异步处理),提升系统整体性能。