ELK是主流开源日志方案,Logstash集中解析(推荐Filebeat采集)、Elasticsearch按天索引+ILM管理、Kibana用Space隔离权限并配置告警,全链路需TLS加密、压测调优与分片均衡。

ELK(Elasticsearch + Logstash + Kibana)是目前最主流的开源日志集中收集与分析方案,适用于Linux服务器集群环境下的日志统一管理。它能解决分散日志难检索、故障定位慢、缺乏可视化等问题,关键在于合理部署各组件角色、规范日志输入格式,并做好性能与安全控制。
Logstash:日志采集与预处理的核心管道
Logstash负责从各类Linux主机(如Nginx、Syslog、Java应用等)实时采集日志,支持多种输入插件(file、syslog、beats)、丰富的过滤器(grok、date、mutate)和输出插件(Elasticsearch为主)。生产中建议:
- 避免在每台业务机上都部署Logstash——资源开销大;推荐用轻量级Filebeat作为日志转发端,Logstash集中部署在专用节点做解析
- 使用grok过滤器标准化日志字段,例如将Nginx access日志解析为client_ip、status、response_time等结构化字段,便于后续聚合查询
- 通过if [type] == "nginx"等条件判断实现多源日志分流处理,降低单个配置复杂度
Elasticsearch:高效存储与全文检索的底座
Elasticsearch承担日志的索引存储与快速检索任务。针对日志场景需特别注意:
- 按天或按周创建索引(如nginx-access-2024.06.15),配合ILM(Index Lifecycle Management)自动滚动、删除过期索引,防止磁盘爆满
- 关闭不必要字段的"index": false或设为"keyword"类型,减少内存与倒排索引开销
- 集群至少3个主节点(或启用node.roles: [master, data]混合部署),禁用单节点发现模式(discovery.type: single-node仅限测试)
Kibana:面向运维与开发的日志可视化门户
Kibana提供仪表盘、Discover、Lens等能力,让日志“看得见、查得快、判得准”:
- 为不同团队建立独立Space(如“运维空间”、“应用空间”),配合RBAC权限控制,隔离敏感日志访问
- 用Saved Objects导出/导入Dashboard模板,实现告警看板(如错误率突增、5xx响应TOP10)跨环境复用
- 结合Alerting功能配置基于ES查询的阈值告警(如status: "500" | count() > 100 in last 5m),推送至企业微信或邮件
安全与稳定性增强要点
ELK上线后不能只关注功能,还需加固基础:
- 所有HTTP通信启用TLS(Logstash→ES、Kibana→ES、浏览器→Kibana),证书由内网CA签发或使用Elastic Stack内置PKI工具生成
- 限制Logstash对ES的写入并发(pipeline.workers与pipeline.batch.size需压测调优),避免bulk拒绝异常
- 定期用_cat/allocation?v检查分片分布均衡性,对hot-warm架构中的warm节点关闭replica分片以节省资源










