
Nightingale 集成 Tomcat 监控采集manager 接口鉴权配置与 Categraf 采集器全指南【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingaleTomcat 是 Java Web 应用最常用的 Servlet 容器对其连接器Connector流量、线程池、JVM 堆内存进行实时监控是保障业务稳定性的基础。本文以 Nightingale 仓库中 integrations/Tomcat/markdown/README.md 为骨架完整讲解 Tomcat 采集器categraf 的 input.tomcat 插件如何通过/manager/status/all管理接口采集指标、如何解决 403 鉴权问题并结合仓库内的配置文件、告警规则与监控大盘给出从部署、配置到告警的一站式实战方案。读完本文你将能独立完成 Tomcat 节点的采集接入、连接器与 JVM 指标的可视化以及基于 PromQL 的关键告警配置。采集原理为什么 Tomcat 采集需要先配置 manager 接口Tomcat 采集器本质是一个 HTTP 采集插件它定期请求 Tomcat 的管理侧接口/manager/status/all解析返回的状态数据再以 Prometheus 指标形式上报。因此采集能否成功完全取决于这个管理接口是否可访问、是否通过鉴权、是否允许采集端 IP 接入。在 Tomcat 中manager 应用默认只允许本机浏览器访问且需要独立的用户与角色授权。仓库内 Tomcat 采集器模板 integrations/Tomcat/collect/tomcat/tomcat.toml 顶部注释对此的定位是 Gather metrics from the Tomcat server status page即从服务器状态页抓取指标这也印证了其数据来源。第一步在 tomcat-users.xml 中配置管理账号编辑 Tomcat 的conf/tomcat-users.xml增加以下内容创建一个具有 manager-gui 角色的用户role rolenameadmin-gui / user usernametomcat passwords3cret rolesmanager-gui /这里username与password是采集器做 HTTP Basic Auth 时使用的凭据必须与下文采集器配置中的username/password保持一致。rolesmanager-gui赋予了访问 Manager Web 界面与状态页的权限admin-gui角色则用于管理类操作仓库文档中一并列出可按需保留。第二步放开 manager 应用的 IP 访问限制默认情况下Tomcat 的 manager 应用在webapps/manager/META-INF/context.xml中通过RemoteAddrValve限制了来源 IP只允许本机回环地址访问。采集器如果运行在其他主机上如独立的监控机必须注释掉以下内容Valve classNameorg.apache.catalina.valves.RemoteAddrValve allow127\.\d\.\d\.\d|::1|0:0:0:0:0:0:0:1 /如果不做这一步Tomcat 会直接拒绝访问返回如下错误导致采集器拿不到任何数据403 Access Denied You are not authorized to view this page. By default the Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, youll need to edit the Managers context.xml file.安全提示放开RemoteAddrValve会扩大管理接口的暴露面。生产环境建议在防火墙/安全组层面仅放行监控采集服务器的 IP并尽量使用高强度密码避免 manager 接口被外部探测。仓库自带告警规则 integrations/Tomcat/alerts/tomcat_by_categraf.json 的排障指引中也明确提到返回 401/403 时需要检查 manager 账号或RemoteAddrValve是否限制了采集端 IP可以作为日常排障的对照依据。采集器配置详解conf/input.tomcat/tomcat.toml完成 Tomcat 侧的两步准备后需要配置 categraf 的 Tomcat 采集器。文档说明配置文件位于conf/input.tomcat/tomcat.toml即 categraf 安装目录下的运行时配置在 Nightingale 仓库中该配置的模板位于 integrations/Tomcat/collect/tomcat/tomcat.toml部署时按仓库集成目录结构分发到 categraf 的conf/input.tomcat/下即可。文档给出的完整配置如下[[instances]] ## URL of the Tomcat server status url http://127.0.0.1:8080/manager/status/all?XMLtrue ## HTTP Basic Auth Credentials username tomcat password s3cret ## Request timeout # timeout 5s # # interval global.interval * interval_times # interval_times 1 # important! use global unique string to specify instance # labels { instance192.168.1.2:8080, url- } ## Optional TLS Config # use_tls false # tls_min_version 1.2 # tls_ca /etc/categraf/ca.pem # tls_cert /etc/categraf/cert.pem # tls_key /etc/categraf/key.pem ## Use TLS but skip chain host verification # insecure_skip_verify true对照仓库模板 integrations/Tomcat/collect/tomcat/tomcat.toml各参数含义与取值要点如下参数含义说明与建议值urlTomcat 状态接口地址必须带?XMLtrueTomcat 才会以 XML 格式输出状态采集器才能解析默认示例为http://127.0.0.1:8080/manager/status/all?XMLtrue如为 HTTPS 则改为https://并配合下方 TLS 参数username/passwordHTTP Basic Auth 凭据对应tomcat-users.xml中配置的用户名与密码二者必须一致timeout请求超时时间默认注释为5s可按网络状况调整超时过短在高峰时段可能误报采集失败interval_times采集间隔倍数实际采集周期 全局interval×interval_times仓库模板顶部另有独立的interval 15秒可单独覆盖该 instance 的采集频率labels实例标识官方注释强调 use global unique string to specify instance例如labels { instance192.168.1.2:8080, url- }用于在多实例场景下区分不同 Tomcat 节点监控大盘的instance下拉框即基于该标签生成use_tls是否启用 TLS访问 HTTPS 状态的 Tomcat 时置为truetls_min_versionTLS 最低版本默认1.2tls_ca/tls_cert/tls_key客户端证书与 CA用于双向 TLS 或自签证书场景示例路径为/etc/categraf/下的 pem/key 文件insecure_skip_verify跳过证书链与主机名校验仅建议在测试环境使用生产应配置受信任的 CA指标与可视化连接器、JVM 堆与内存池Tomcat 采集器上报的指标可直接用于 Nightingale 的仪表盘。仓库提供了开箱即用的监控大盘 integrations/Tomcat/dashboards/tomcat_by_categraf.json导入后即可看到三大类面板连接器connector维度流量rate(tomcat_connector_bytes_sent{...}[1m])与rate(tomcat_connector_bytes_received{...}[1m])对应 Traffic Bytes / Second 面板请求量与错误量rate(tomcat_connector_request_count{...}[1m])与rate(tomcat_connector_error_count{...}[1m])线程池tomcat_connector_max_threads允许的最大工作线程数、tomcat_connector_current_thread_count线程池管理的线程数、tomcat_connector_current_threads_busy正在使用的线程数三者叠加在 Tread 面板中直观反映线程池饱和度处理耗时rate(tomcat_connector_processing_time{...}[1m])即每秒累计处理时间用于衡量平均请求耗时趋势。JVM 堆内存维度Mem Used 面板同时绘制tomcat_jvm_memory_max、tomcat_jvm_memory_total已用、tomcat_jvm_memory_free剩余可观察堆内存的整体水位。内存池memorypool维度按name标签区分各内存池分别绘制tomcat_jvm_memorypool_used、tomcat_jvm_memorypool_max、tomcat_jvm_memorypool_committed、tomcat_jvm_memorypool_init四个面板可细分观察 Eden、Survivor、Old Gen / Tenured Gen 等区域。大盘的变量定义也值得借鉴prom为 Prometheus 数据源变量instance通过label_values(tomcat_up, instance)自动从指标中拉取所有已采集的 Tomcat 实例切换下拉框即可在多节点间快速过滤。tomcat_up这类探活指标由采集器在抓取成功/失败时设置是判断实例可达性的基础信号。开箱告警6 条 PromQL 规则与排障动作仓库在 integrations/Tomcat/alerts/tomcat_by_categraf.json 中预置了 6 条告警规则默认disabled: 1即停用状态导入后按需启用覆盖了 Tomcat 运维最核心的故障场景告警名称PromQL触发条件持续时长Tomcat 实例不可达tomcat_up 0采集器连续抓取失败60sTomcat 线程池接近打满tomcat_connector_current_threads_busy / (tomcat_connector_max_threads 0) * 100 85忙线程占比超 85%180sTomcat 请求错误率过高rate(tomcat_connector_error_count[5m]) / (rate(tomcat_connector_request_count[5m]) 0) * 100 55 分钟错误率超 5%300sTomcat 平均请求处理耗时过长rate(tomcat_connector_processing_time[5m]) / (rate(tomcat_connector_request_count[5m]) 0) 1000平均处理耗时超 1000ms300sTomcat JVM 堆内存使用率过高(tomcat_jvm_memory_total - tomcat_jvm_memory_free) / (tomcat_jvm_memory_max 0) * 100 85堆使用率超 85%300sTomcat 老年代内存使用率过高tomcat_jvm_memorypool_used{name~.*Old Gen\|Tenured Gen} / (tomcat_jvm_memorypool_max{name~.*Old Gen\|Tenured Gen} 0) * 100 90老年代使用率超 90%300s这些规则通过append_tags附加了alertnameTomcatDown、TomcatThreadPoolSaturation、TomcatHighErrorRate、TomcatSlowRequest、TomcatHeapHigh、TomcatOldGenHigh等标识便于在 Nightingale 中按规则聚合与路由。每条规则还内置了annotations.action排障手册可直接作为故障应急脚本例如实例不可达ps -ef | grep catalina与ss -lntp | grep 8080确认进程与端口进程存活则用curl -u user:pass http://127.0.0.1:8080/manager/status?XMLtrue验证401/403 说明 manager 账号或RemoteAddrValve限制了采集端 IP进程不在则查看logs/catalina.out尾部定位退出原因端口占用、内存不足、应用启动异常线程池接近打满用jstack pid抓线程栈统计http-nio-*线程卡点应急可调大server.xml中该 Connector 的maxThreads长期建议为外部依赖加熔断如 Resilience4j堆内存过高jstat -gcutil pid 1s 10观察 Full GC 频率jmap -histo:live pid | head -30定位异常增长类必要时jmap -dump:live,formatb,file/tmp/heap.hprof pid导出堆并用 MAT 分析引用链。仓库同时提供了英文版告警文案与规则名称的国际化文件 integrations/Tomcat/i18n/en_US.json在多语言告警通知场景下可直接复用。验证与排障从 403 到数据上屏按以下顺序完成接入与验证验证 manager 接口修改tomcat-users.xml与context.xml后重启 Tomcat在采集机上执行curl -u tomcat:s3cret http://tomcat_ip:8080/manager/status/all?XMLtrue能返回 XML 即表示鉴权与 IP 限制均已放行配置采集器将url指向真实地址填入与tomcat-users.xml一致的账号密码按需调整timeout、labels与 TLS 参数重启 categraf确认指标入库在 Nightingale 中查询tomcat_up、tomcat_connector_request_count等指标确认有数据且tomcat_up为 1导入大盘与告警导入 integrations/Tomcat/dashboards/tomcat_by_categraf.json 查看可视化按需启用 integrations/Tomcat/alerts/tomcat_by_categraf.json 中的告警规则。常见故障集中在两类一是 403 拒绝几乎都源于RemoteAddrValve未注释或账号角色缺失返回的错误信息中会明确提示 the Manager is only accessible from a browser running on the same machine as Tomcat按本文第二步处理即可二是接口可访问但采集器报超时或解析失败优先检查timeout是否过短、url是否遗漏?XMLtrue以及 Tomcat 版本对状态接口输出格式的差异。英文版说明可参考仓库中的 integrations/Tomcat/markdown/README.en_US.md。小结Tomcat 监控接入的要点可以浓缩为三步在tomcat-users.xml中配置 manager 角色账号、注释webapps/manager/META-INF/context.xml中的RemoteAddrValve以放开 IP 限制、在 categraf 的input.tomcat/tomcat.toml中正确填写接口地址与 Basic Auth 凭据。完成这三步后连接器流量、线程池、JVM 堆与内存池指标便会持续上报配合仓库提供的监控大盘与 6 条预置告警规则即可实现对 Tomcat 实例从进程存活到线程池饱和度再到JVM 内存健康的全方位监控与自动化告警。【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考