内容提要
最近参与了搭建ELK项目,ELK指的是elastic search、logstash和kibana。使用docker compose启动ELK框架,配置文件需要设置logstash.conf、logstash.yml、elasticsearch.yml和kibana.yml。使用filebeat监听日志文件,并在kibana页面配置相关信息。附录中介绍了如何减少对远程服务器的侵入,可以使用sshfs挂载远程文件到本地目录。
延伸解读
技术选型:为何选择 ELK
文章指出选择 ELK 主要基于两点:项目成员已有使用经验,能降低上手成本;ELK 是成熟框架,搭建过程有助于理解各组件交互。这反映出在缺乏基础设施时,团队倾向于选择熟悉且生态完善的开源方案,以快速实现日志收集与查询。
单节点部署的配置要点
使用 Docker Compose 启动 ELK 时,需挂载并配置 logstash.conf、logstash.yml、elasticsearch.yml 和 kibana.yml。其中 elasticsearch 通过 environment 设置 discovery.type=single-node 并关闭安全与监控,logstash 根据 tags 将不同应用日志写入独立索引,kibana 则连接 elasticsearch 进行展示。
日志收集与多行处理
Filebeat 负责监听日志文件并发送至 Logstash。配置中通过 paths 指定日志路径,并利用 tags 区分不同应用。针对多行日志(如堆栈跟踪),使用 multiline 配置以时间戳模式匹配,将非起始行合并到上一条日志,确保日志事件的完整性。
减少侵入与本地调试
为减少对远程服务器的侵入,可采用 sshfs 将远程日志目录挂载到本地,再让 Filebeat 监听本地挂载点。在 macOS 上可通过 brew 安装 fuse 和 sshfs,但可能存在兼容性问题,建议从官网下载。这为本地开发环境提供了灵活的日志收集方式。
Q&A
ELK的组成部分是什么?
ELK由Elastic Search(数据存储)、Logstash(数据过滤)和Kibana(数据展示)三部分组成。
为什么选择ELK作为日志管理工具?
选择ELK的原因是项目成员有使用经验,且ELK是一个成熟的框架,能够减少上手成本。
如何使用Docker Compose启动ELK框架?
使用命令'docker-compose up -d'启动ELK框架,可能需要增加Docker内存。
Filebeat的主要功能是什么?
Filebeat用于收集日志,基本流程包括监听文件、发送、过滤转换数据、保存数据、查询和展示。
如何在Kibana中解决单节点警告问题?
在Kibana中,进入索引管理,将所有索引的配置调整为0,以表明是单节点。
如何减少对远程服务器的侵入?
可以使用sshfs将远程文件挂载到本地目录,从而减少对远程服务器的侵入。