搭建ELK日志系统的一次记录
背景
应用集群部署,应用日志散落在各台机子上,查看日志不太方便。
- 查询步骤复杂,需登录服务器查看日志,且不确定日志具体落在哪台机器,需来回切换
- 查询语法单一,grep查询
为了解决这些问题,决定搭建一个日志系统,可以采集各个服务器上的日志存储,提供搜索功能。
Elastic stack 可以帮助我们解决这些问题。
Elastic stack
Elastic stack的核心产品包括 Elasticsearch、Kibana、Beats和Logstash等等。
能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。
使用Elastic stack的优势有:
- 同一查询的入口
- 丰富的查询方式
- 同一的数据index管理
我们的ELK日志系统主要用到了里面的采集和存储和搜索功能。
安装
为了安装方便,使用了docker进行的安装。
服务器环境 CentOS Linux release 7.9.2009 (Core)
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
执行成功后,可通过 docker -v 查看是否安装成功
安装镜像

我版本选择的7.12.1。版本大家可以自行选择。
docker pull sebp/elk:7.12.1
镜像拉取完成后可以通过命令查看
docker images
启动容器
参考文档
前提:
- docker
- docker最小内存要求4GB RAM
- mmap数量限制大于等于262,144
在linux平台,我们可以通过sysctl vm.max_map_count
查看当前值。注意命令必须在docker宿主机执行。
执行下面命令可以修改,但重启后会失效
sysctl -w vm.max_map_count=262144
如果要永久修改该数值,可以修改/etc/sysctl.conf
文件。
通过镜像启动容器
sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk
这个命令暴露了以下端口:
- 5601(Kibana web interface).
- 9200 (Elasticsearch JSON interface).
- 5044 (Logstash Beats interface, receives logs from Beats such as Filebeat)
如果想执行ES在集群环境下,需要暴露接口9300。可添加参数-p 9300:9300
现在我们已经启动了Elastic search、Logstash、Kibana组件。 我们可以通过 http://you-host:5601 访问Kibana控制台。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY