搭建ELK日志系统的一次记录

背景

应用集群部署,应用日志散落在各台机子上,查看日志不太方便。

  1. 查询步骤复杂,需登录服务器查看日志,且不确定日志具体落在哪台机器,需来回切换
  2. 查询语法单一,grep查询

为了解决这些问题,决定搭建一个日志系统,可以采集各个服务器上的日志存储,提供搜索功能。

Elastic stack 可以帮助我们解决这些问题。

Elastic stack

Elastic stack的核心产品包括 Elasticsearch、Kibana、Beats和Logstash等等。
能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。
使用Elastic stack的优势有:

  1. 同一查询的入口
  2. 丰富的查询方式
  3. 同一的数据index管理

我们的ELK日志系统主要用到了里面的采集和存储和搜索功能。

安装

为了安装方便,使用了docker进行的安装。
服务器环境 CentOS Linux release 7.9.2009 (Core)

安装docker

一键安装命令

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

执行成功后,可通过 docker -v 查看是否安装成功
image-20230309144920565


安装镜像

image-20230309144920565

我版本选择的7.12.1。版本大家可以自行选择。

docker pull sebp/elk:7.12.1

镜像拉取完成后可以通过命令查看

docker images

image

启动容器

参考文档
前提

  1. docker
  2. docker最小内存要求4GB RAM
  3. mmap数量限制大于等于262,144
    在linux平台,我们可以通过sysctl vm.max_map_count查看当前值。注意命令必须在docker宿主机执行。
    执行下面命令可以修改,但重启后会失效
sysctl -w vm.max_map_count=262144

如果要永久修改该数值,可以修改/etc/sysctl.conf文件。
image-20230309144920565

通过镜像启动容器

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控制台。
posted @   风吹云散  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示