7.2 监控与日志管理


文档摘要

7.2 监控与日志管理 本节摘要:观测是调优与排障的前提。本节给出四类核心指标的看板与告警阈值、JMX 远程监控的开通配置、六类日志的分工地图与访问日志的格式设计,最后是日志治理三板斧(轮转、留存、脱敏)。学完你的服务从"黑盒"变成"仪表盘",7.3 与 7.4 的排障动作全部依赖本节建的观测面。 7.1 的每个"观测"动作都需要基础设施支撑:指标从哪来、日志去哪看。本节把这些基建配齐——先指标后日志,先看懂再告警。 四类指标:看什么、 Threshold 设多少 图 7-2:核心指标看板四象限 图 7-2:核心指标看板四象限 四象限的指标全部可以从 Tomcat 自带的 JMX 暴露里取到。开通远程 JMX 是第一步。

7.2 监控与日志管理

本节摘要:观测是调优与排障的前提。本节给出四类核心指标的看板与告警阈值、JMX 远程监控的开通配置、六类日志的分工地图与访问日志的格式设计,最后是日志治理三板斧(轮转、留存、脱敏)。学完你的服务从"黑盒"变成"仪表盘",7.3 与 7.4 的排障动作全部依赖本节建的观测面。

7.1 的每个"观测"动作都需要基础设施支撑:指标从哪来、日志去哪看。本节把这些基建配齐——先指标后日志,先看懂再告警。

四类指标:看什么、 Threshold 设多少

图 7-2:核心指标看板四象限

图 7-2:核心指标看板四象限

四象限的指标全部可以从 Tomcat 自带的 JMX 暴露里取到。开通远程 JMX 是第一步。

# bin 目录 setenv.sh:开通 JMX 远程 强口令与内网限制必配 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true \ -Dcom.sun.management.jmxremote.port=9010 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=true"

接上可视化工具后能看到一串名称规范的托管对象,常用的几组记下来:连接器一组的请求计数与线程池、应用一组的状态与会话数、数据源一组的活跃与等待。监控平台接 JMX 或直接用其导出器,四象限的仪表盘就齐了。

六类日志:各答一个问题

日志 回答的问题 排障时先看它当
catalina 与 stdout 容器启动与全局异常 起不来
localhost 部署与应用初始化细节 部署失败
manager 管理端操作记录 发布事故
access 访问日志 每个请求的来龙去脉 慢与错
gc 垃圾回收日志 内存与停顿节奏 怀疑泄漏
localhost 对应的堆栈 应用异常完整栈 定位代码

访问日志的格式值得专门设计——默认格式没有耗时字段,压测与排障都吃亏。改造 pattern 加两个占位符:处理耗时与收到响应的字节数。

<!-- AccessLogValve 增加耗时与字段的格式 --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="access" suffix=".log" pattern="%h %t &quot;%r&quot; %s %b %D %{X-Forwarded-For}i" rotatable="true" maxDays="30"/>
10.8.1.23 [21/Aug/2026:15:22:01] "GET /order/list HTTP/1.1" 200 15230 45 118.92.10.7

一行末尾三个值:状态 200、响应 15K、耗时 45 毫秒,最后是前置代理传来的真实 IP(呼应 1.2 的地址还原)。有耗时列之后,慢请求的筛选一条命令搞定——这是 7.4 性能排查的地基。

日志治理三板斧收尾。轮转:容器日志走 logging.properties 的天数与大小配置,访问日志用 Valve 的 rotatable 与 maxDays;留存:合规要多久留多久,磁盘预算按峰值流量乘天数估;脱敏:访问日志别记录查询串里的手机号令牌,pattern 里少放敏感头,安全与合规一票否决。磁盘被日志写满导致服务假死是经典事故,三板斧缺一不可。

⚠️ 常见坑:日志时间与服务器时间差八小时——JVM 时区参数没配。setenv 里加一条时区设定,与业务库时区保持一致,否则跨系统比对日志时间会是灾难性的折磨。全部日志基建配好后,下一章进入实战排障。

命令行快速体检

监控平台之外,运维常需要一条命令立刻判断状态。三条命令覆盖三个象限的快速体检。

# 一看线程:忙线程比例 exec 线程总数 jstack $(ps -ef | grep catalina | grep -v grep | awk '{print $2}') \ | grep -c 'catalina-exec'
# 二看内存:当前堆与垃圾回收概况 每秒输出一次共五次 jstat -gcutil $(ps -ef | grep catalina | grep -v grep | awk '{print $2}') 1000 5
S0 S1 E O M YGC YGCT FGC FGCT 0.00 98.44 61.20 35.02 95.10 412 3.880 2 0.310 0.00 98.44 73.85 35.02 95.10 413 3.889 2 0.310
# 三看日志水位:容器日志的轮转策略在 logging.properties 收口 1catalina.org.apache.juli.AsyncFileHandler.maxDays = 30 1catalina.org.apache.juli.AsyncFileHandler.rotatable = true

读数的门道:年轻代使用率(E 列)来回跳动是健康节律,老年代(O 列)缓慢抬升后回落说明回收正常,只升不降连续观察数小时就要怀疑泄漏;两列计数(年轻代回收次数与整堆回收次数)的增长速率突然变化,通常对应流量或代码的变更,配合发布时间线可以定位到版本。这三条命令贴在值守手册首页,紧急时刻不用翻平台。

本节要点回顾

  • 四象限看板:流量、连接、资源、应用,每组指标有明确来源与告警参考线。
  • JMX 远程三配置:端口、认证、内网限制,一个不能少。
  • 六类日志六问:起不来、部署败、发布事、慢与错、疑泄漏、定位码,各看一份。
  • 访问日志加耗时列:格式里两个占位符,慢请求筛选从此一条命令。
  • 治理三板斧:轮转防膨胀、留存按合规、脱敏保安全。

观测面建好了,下一节实战第一场:服务起不来、应用部署失败,两条决策树走到底。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U