Apache监控需通过mod_status暴露状态页,再经apache_exporter转换为Prometheus指标;或嵌入客户端库、解析日志等四类方式实现标准化采集与可视化。

如果您正在为 Apache HTTP Server 部署可观测性能力,但缺乏标准化指标采集与可视化手段,则很可能是由于 Apache 未暴露 Prometheus 兼容的指标端点。以下是实现 Apache 监控的多种可行路径:
一、启用 Apache 内置状态模块并配置 mod_status
该方法利用 Apache 自带的 mod_status 模块生成基础运行状态页,再通过文本文件导出器(如 apache_exporter)将其转换为 Prometheus 可采集格式。它无需修改应用代码,适用于所有版本的 Apache 2.4+。
1、编辑 Apache 主配置文件(通常为 /etc/apache2/mods-enabled/status.conf 或 httpd.conf),确保包含以下内容:
2、取消注释或添加 LoadModule status_module modules/mod_status.so 行。
3、在
4、重启 Apache 服务:systemctl restart apache2 或 apachectl graceful。
5、验证状态页可访问:curl http://localhost/server-status?auto,应返回以 Key: Value 格式组织的指标文本。
二、部署 apache_exporter 作为指标桥接组件
apache_exporter 是专为 Apache 设计的第三方 Exporter,负责定期抓取 mod_status 输出并重写为标准 Prometheus metrics 格式。它独立于 Apache 进程运行,降低耦合风险且支持标签注入。
1、下载最新版 apache_exporter 二进制文件(如 v0.12.0-linux-amd64.tar.gz)并解压。
2、启动 exporter 并指定 Apache 状态页地址:./apache_exporter --scrape_uri=http://localhost/server-status?auto。
3、确认指标端点可用:curl http://localhost:9117/metrics,应看到形如 apache_up{instance="localhost"} 1 的指标行。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
4、将该地址加入 Prometheus 的 scrape_configs 中,job_name 设为 "apache"。
三、使用 Prometheus 客户端库嵌入式监控(适用于定制化 Apache 模块)
若 Apache 服务已集成自定义 C 或 Lua 模块,可通过嵌入 Prometheus 客户端库(如 prometheus-cpp 或 lua-prometheus)直接暴露业务级指标。该方式支持细粒度指标定义,例如虚拟主机请求数、SSL 握手失败率等。
1、在模块源码中引入对应客户端库头文件或依赖声明。
2、注册 Gauge 类型指标用于跟踪当前并发连接数:gauge = prometheus::BuildGauge().Name("apache_concurrent_connections").Help("Current number of concurrent connections").Register()。
3、在连接建立/关闭钩子函数中调用 gauge.Set() 更新数值。
4、暴露 /metrics HTTP 路由并绑定至 Apache 的 handler 链。
四、通过日志解析方式补充指标(适用于无法启用 mod_status 的受限环境)
当 Apache 运行于严格安全策略下、禁止启用任何动态模块时,可借助 filebeat + prometheus-log-exporter 将 access.log 和 error.log 解析为结构化指标。该路径不依赖 Apache 内部状态,但延迟略高且无法获取实时连接信息。
1、配置 Apache 日志格式为 JSON,例如 CustomLog "|/usr/bin/rotatelogs -l /var/log/apache2/access_%Y%m%d.log 86400" json。
2、部署 filebeat 并启用 json 解码插件,将日志字段映射为 Prometheus label(如 status_code、request_path)。
3、运行 prometheus-log-exporter,监听 filebeat 输出的 Kafka topic 或本地 socket 流,并按正则规则聚合计数器(如 http_requests_total{code="500"})。
4、将 log-exporter 的 /metrics 端点配置为 Prometheus 抓取目标。

















