ELK是Linux日志集中化的主流入门方案:Filebeat轻量采集,Logstash解析过滤,Elasticsearch存储检索,Kibana可视化;需分机部署、时区统一、索引按天管理并配置ILM与权限。

Linux日志集中化用ELK(Elasticsearch + Logstash + Kibana)是最主流的入门方案,核心思路是:各服务器用轻量采集器把日志发到Logstash做解析过滤,存入Elasticsearch,再由Kibana可视化查询。
一、ELK各组件角色与部署建议
Elasticsearch是分布式搜索引擎,负责存储和检索日志;Logstash是数据管道,做收集、转换、转发;Kibana是Web界面,用于搜索、图表和仪表盘。生产环境建议分机部署:Logstash可多实例横向扩展,Elasticsearch建议3节点起集群(避免单点故障),Kibana单节点即可,但需反向代理加认证。
二、日志采集端怎么轻量接入
不推荐直接在每台业务机跑Logstash(资源开销大)。更常用的是用Filebeat——它占用内存小、启动快、支持SSL加密传输。配置filebeat.yml指定日志路径(如/var/log/nginx/access.log)、输出目标(Logstash或直连ES)、字段添加(比如host.name、env: prod)。
- 用filebeat modules可一键启用Nginx、System、MySQL等常见服务日志解析模板
- 若需自定义字段提取,可在Logstash里用grok插件写匹配规则,例如%{COMBINEDAPACHELOG}
- 注意时区统一:Filebeat默认用系统本地时间,建议在output前加processor设为UTC,Elasticsearch也保持UTC索引
三、Logstash处理链关键配置点
一个典型pipeline.conf包含input(接收beats)、filter(解析+丰富+过滤)、output(写入ES)。重点不在“全都要”,而在“够用且稳定”:
- input中启用ssl_certificate和ssl_key保障传输安全
- filter里用date插件校准@timestamp,避免日志时间戳被误当系统时间
- 用if判断过滤掉debug日志或健康检查请求,减少ES写入压力
- output中开启pipeline => "logs"可对接ES ingest pipeline做二次处理(如IP地理信息补全)
四、Elasticsearch索引管理与Kibana落地
日志按天建索引(如nginx-access-2024.06.15)便于生命周期管理。用ILM(Index Lifecycle Management)策略自动滚动、删除旧索引。Kibana里先创建Index Pattern(如nginx-access-*),再进Discover查原始日志,用Visualize建响应时间趋势图,Dashboard整合多个视图。
- 首次使用前,在Stack Management > Index Patterns里确认时间字段选的是@timestamp而非message里的字符串时间
- 权限控制别忽略:用Elastic Stack内置security功能为不同团队分配read_only或kibana_admin角色
- 导出常用查询为Saved Search,方便复用和嵌入Dashboard
不复杂但容易忽略细节,比如时间对齐、证书信任、索引命名规范——搭通只是开始,稳定运行靠配置打磨。










