mod_proxy_hcheck健康检查日志需通过ErrorLog输出,设ErrorLogLevel info可记录探活细节,日志含proxy_hcheck标签、时间戳及原因,建议单独配置ErrorLog路径并用logrotate管理。
apache 的 mod_proxy_hcheck 本身不提供独立的健康检查日志文件,它依赖于 apache 主错误日志(errorlog)记录关键事件,如节点上线、下线、探活失败等。要获得可读、可追踪、可分析的健康检查日志,需结合模块行为、日志级别控制与自定义格式化手段。
启用并调整错误日志级别
mod_proxy_hcheck 的健康状态变更(如 Member 10.0.1.10:8080 goes DOWN 或 ... goes UP)默认只在 error 级别及以上输出。若想看到更细粒度的探活过程(例如每次请求返回码、耗时),需将日志级别设为 info 或 debug:
- 在主配置或虚拟主机中设置:ErrorLogLevel info(Apache 2.4.49+ 支持 per-vhost 级别;旧版本需全局设置
LogLevel info) - 注意:设为
debug会产生大量日志,仅用于排障,生产环境推荐info - 确保
ErrorLog指向可写路径,例如:ErrorLog "/var/log/httpd/hcheck-error.log"(建议单独分离,避免污染主错误日志)
识别健康检查日志的关键特征
健康检查相关日志条目固定带有 proxy_hcheck 标签,便于过滤和归集:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 典型成功上线日志:[proxy_hcheck:info] [pid 12345] Member http://10.0.1.10:8080 goes UP
- 典型失败下线日志:[proxy_hcheck:error] [pid 12345] Member http://10.0.1.10:8080 goes DOWN (reason: status=503)
- 探活超时或连接失败会显示
reason=timeout或reason=connect - 所有日志均含时间戳、进程 ID 和具体原因,无需额外字段即可定位问题节点与时间点
用 logrotate 和 grep 实现轻量审计
不依赖第三方工具,也能高效管理健康检查日志:
- 配置
logrotate对hcheck-error.log按日轮转、保留 7 天,防止磁盘占满 - 日常巡检可用:grep proxy_hcheck /var/log/httpd/hcheck-error.log | tail -50 快速查看最近探活动态
- 统计故障频次:grep "goes DOWN" /var/log/httpd/hcheck-error.log | wc -l
- 配合
awk '{print $1,$2,$NF}'提取时间、状态和原因,生成简易报表
补充说明:不推荐开启 hcheck debug 日志到 access log
有人尝试用 CustomLog 记录健康检查请求,但这是无效做法:
-
mod_proxy_hcheck发起的是内部探活请求,不经过常规请求处理链,不会触发CustomLog或LogFormat - 强行拦截或重写会导致性能下降,且无法保证日志完整性
- 真正需要的是状态变更结果,而非原始 HTTP 请求细节——这些信息已在
proxy_hcheck错误日志中结构化呈现

















