apache日志分析推荐五种elk整合方案:一、filebeat+logstash结构化处理;二、apisix直连es;三、mod_log_json直输json;四、logstash写入doris做olap分析;五、airflow任务日志与apache日志联动分析。

如果您正在为Apache服务器寻找高效、可扩展的日志分析工具,并希望将其与ELK Stack深度整合,需兼顾实时性、结构化解析能力与运维可控性。以下是多种成熟可用的集成路径与配套工具推荐:
一、Filebeat + Logstash + ELK 全链路结构化方案
该方案采用轻量采集与集中解析分离架构,避免在Apache节点部署重量级组件,保障Web服务稳定性。Filebeat负责低开销日志读取与TLS加密传输,Logstash执行字段提取、GeoIP增强及异常标记,最终写入Elasticsearch供Kibana消费。
1、在所有Apache节点安装Filebeat,配置其监控/var/log/httpd/access_log和/var/log/httpd/error_log两个路径。
2、启用Filebeat的processors模块,添加drop_event.when.regexp条件过滤调试日志行,减少无效数据流入。
3、配置output指向Logstash监听地址(如localhost:5044),禁用直接输出至Elasticsearch以保留结构化处理能力。
4、在Logstash中定义grok filter,匹配combined_with_realip格式日志,映射%{NUMBER:response_time_ms:int}为整型字段便于聚合分析。
5、加载geoip和useragent插件,在filter块中对clientip和User-Agent字段分别执行地理信息与设备类型解析。
6、对HTTP状态码≥400的事件自动添加error标签,用于后续Kibana告警规则触发。
二、APISIX elasticsearch-logger 插件直连方案
适用于已部署APISIX作为Apache前置反向代理的场景,利用其原生插件绕过中间采集层,实现日志零延迟写入Elasticsearch。该方式降低架构复杂度,但要求APISIX版本≥3.0且具备独立ES访问权限。
1、在APISIX控制台或config.yaml中启用elasticsearch-logger插件。
2、设置endpoint_addrs为高可用ES集群地址列表,例如["http://es-data-01:9200", "http://es-data-02:9200"]。
3、指定field.index为"apache-access-%{+YYYY.MM.dd}",启用基于日期的索引滚动策略。
4、配置auth块填入ES内置用户elastic的凭证,确保Basic Auth认证通过。
5、在log_format中显式声明$request_time、$upstream_response_time、$remote_addr等关键变量,确保响应时间与真实IP字段不丢失。
6、将batch_max_size设为500,inactive_timeout设为10秒,平衡吞吐与延迟。
三、mod_log_json + Filebeat 直输JSON方案
该方案在Apache端即完成日志结构化,消除Logstash grok解析开销,提升整体吞吐上限。需启用Apache模块mod_log_json,使每条日志以标准JSON格式落盘,Filebeat可直接解析为Elasticsearch文档。
1、编译或启用Apache的mod_log_json模块:a2enmod log_json(Debian系)或LoadModule log_json_module modules/mod_log_json.so(RHEL系)。
2、在httpd.conf中定义JSON格式日志:LogFormat "{\"@timestamp\":\"%t\", \"clientip\":\"%a\", \"method\":\"%m\", \"url\":\"%U\", \"status\":%>s, \"bytes\":%B, \"response_time_ms\":%D, \"user_agent\":\"%{User-Agent}i\"}" json_access
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
3、应用CustomLog指令:CustomLog "/var/log/httpd/access_json.log" json_access
4、配置Filebeat输入类型为json,设置json.keys_under_root: true,并启用json.overwrite_keys: true。
5、在Filebeat output中启用elasticsearch.bulk_max_size: 200,避免单次请求过大导致ES拒绝。
6、验证日志文档中@timestamp字段是否被正确识别为date类型,而非text,确保Kibana时间筛选器生效。
四、Apache Doris + Logstash 批处理分析方案
当Apache日志规模达TB级/天且侧重OLAP式交互查询(如多维下钻、分钟级响应时间分布统计),可将Logstash输出目标由Elasticsearch切换为Apache Doris。Doris提供MPP并行计算能力与亚秒级聚合响应,弥补ES在复杂SQL分析上的性能短板。
1、在Doris中创建宽表app_apache_log,主键为(log_time, clientip),ENGINE=OLAP,启用ROLLUP预聚合。
2、安装logstash-output-doris插件:logstash-plugin install logstash-output-doris-1.0.0.gem。
3、在Logstash pipeline中配置output块,指定doris的fe_host、fe_http_port、username、password及database.table_name。
4、使用filter中的mutate.convert将response_time_ms转换为integer类型,确保Doris列类型匹配。
5、启用Logstash的pipeline.workers参数为CPU核心数,配合doris.batch_size设为10000提升写入吞吐。
6、在Kibana中通过Elasticsearch连接Doris的JDBC桥接器(需额外部署),或直接使用Doris自带的Web UI进行可视化建模。
五、Airflow ElasticsearchTaskHandler 实时任务日志联动方案
针对Apache Airflow调度Apache Web服务健康检查任务的场景,可启用Airflow内置的ElasticsearchTaskHandler,将DAG任务执行日志与Apache访问日志在ES中统一索引,实现“监控指标—调用链—原始请求”三级关联分析。
1、修改airflow.cfg,设置remote_logging = True,remote_base_log_folder = elasticsearch://,并指定HOST为ES集群地址。
2、在[elasticsearch]段落中配置END_OF_LOG_MARK = end_of_log,确保日志截断标识清晰。
3、启用JSON_FORMAT = True,使每条任务日志以JSON结构写入ES,字段包含task_id、dag_id、execution_date及stdout内容。
4、在Logstash中配置elasticsearch input插件,从Airflow日志索引(如airflow-task-logs-*)拉取数据,与Apache access日志通过request_id字段做join关联。
5、在Kibana中创建Lens可视化图表,横轴为execution_date,纵轴为count(),筛选条件限定status: "failed" AND message: "timeout"。
6、将该图表嵌入Dashboard,并添加Alerting规则:当过去5分钟内失败任务数超过3次时,触发邮件通知。










