docker搭建elk+filebeat

1,428 阅读4分钟

介绍

所谓elk分别表示elasticsearch,logstash,kibana。

Elasticsearch:是一个分布式的开源搜索和分析引擎,适用所有类型的数据,包括文本,数字,结构化和非结构化的数据;一个近乎实时查询的全文搜索引擎,elasticsearch的设计目标就是要能够处理和搜索巨量的日志数据

Logstash:读取原始日志,并对其进行分析和过滤,然后将其转发给其他组件(比如Elasticsearch)进行索引或存储,logstash支持丰富的Input和output类型,能够处理各种应用的日志

Kibana: 一个基于 JavaScript 的 Web 图形界面程序,专门用于可视化 Elasticsearch 的数据。Kibana 能够查询 Elasticsearch 并通过丰富的图表展示结果。用户可以创建 Dashboard 来监控系统的日志

Filebeat:引入filebeat作为日志搜集器,主要是为了logstash开销大的问题,相比logstash,filebeat所占系统的cpu和内存几乎可以忽略不计

日志处理流程

Filebeat将日志发送给logstash进行分析和过滤,然后由logstash转发给elasticsearch,最后由kibana展示elasticsearch的数据

image.png

环境以及软件版本

  1. 系统:centos7.7

  2. 主机:192.168.0.192

  3. Filebeat: filebeat-6.2.4-x86_64.rpm

  4. Elk:sebp/elk: latest

docker安装配置

docker安装配置这里就不重复了,记得配置阿里云加速器就ok

elk安装与配置

设置内存大小

运行elk镜像需要vm.max_map_count至少262144内存

  • 编辑系统配置文件,添加以下内容

    vim /etc/sysctl.conf
    
    vm.max_map_count = 262144
    

    image.png

  • wq保存退出

  • 查看是否生效

    sysctl –p
    

    image.png

安装elk

这里使用docker-elk的集成版,就不一个个镜像下载了

  • 拉取镜像

    docker pull sebp/elk
    

    image.png

  • 查看镜像

    docker images
    

    image.png

  • 启动elk

    docker run -dit --name elk \
        -p 5601:5601 \
        -p 9200:9200 \
        -p 5044:5044 \
        -v /home/elk:/var/lib/elasticsearch \
        -v /etc/localtime:/etc/localtime \
    sebp/elk
    

    -p:三个端口分别对应Kibana,elasticsearch,logstash的端口

    -v:将容器目录和宿主机目录进行挂载,以便数据同步

    image.png

    image.png

访问

以上便是elk安装启动的过程,下面进行访问,测试安装是否成功

修改

出现上图表示安装启动成功,下面进行一些简单的修改,在演示和测试环境中,ssl是不必要的,可以去掉logstash的ssl

  • 进入elk容器编辑配置文件,删除ssl认证相关配置

    docker exec -it elk bash
    
    vim /etc/logstash/conf.d/02-beats-input.conf
    

    image.png

    将以下内容删除

    image.png

    网友的经验之谈,如下图所示

    image.png

  • 退出容器并重启

    docker restart elk(或者容器ID)
    

    image.png

filebeat安装和配置

这里安装filebeat有两种方式,一种直接在线安装,另一种就是使用docker镜像拉取进行配置,docker的好处就是可以与宿主机完全隔离,要删除的话直接删除镜像就完事了,这里我使用的是直接在线安装的方式

安装filebeat

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-x86_64.rpm

image.png

注意:以上方式亲测,奇慢无比,建议直接复制 artifacts.elastic.co/downloads/b… 链接到浏览器下 载到桌面,最后上传到服务器

image.png

上传之前将下载一半的filebeat删除并卸载

  • 查看安装的filebeat

    rpm -qa | grep filebeat
    

    image.png

  • 卸载filebeat

    yum –y remove filebeat-6.2.4-1.x86_64
    
  • 上传

    这里我上传到/root目录

    image.png

    image.png

  • 安装

    sudo rpm -vi filebeat-6.2.4-x86_64.rpm
    

    image.png

  • 配置

    安装完之后配置文件默认在下图所示目录

    vim /etc/filebeat/ filebeat.yml
    

    image.png

  • 修改

    enabled:fasle修改成true(filebeat 6.0后,enabled默认为关闭,必须要修改成true)

    paths:表示你想要抓取分析的日志所在路径,我这里就不改了,一般指向项目产生日志的所在目录

    image.png

    找到下图所示将elasticsearch注释,logstash放开并配置主机ip+端口

    image.png

    配置改为上图所示。注释掉Elasticsearch output,开启Logstash output。 如果直接将日志发送到Elasticsearc,请编辑此行:Elasticsearch output 如果直接将日志发送到Logstash,请编辑此行:Logstash output 只能使用一行输出,其它的注掉即可

    修改完成后保存退出

  • 重启filebeat

    /etc/init.d/filebeat restart
    

    image.png

访问kibana并创建默认索引

image.png

image.png

image.png

上面默认索引创建完成,这时候控制台就会显示/var/log/下所有日志文件的日志,这是我们在/etc/filebeat/filebeat.yml配置的

image.png

测试

现在我们手动写入一个日志文件到/etc/log/下,如下图所示

echo 'liucong 大傻子 ......' >> /var/log/info.log

image.png

再看控制台,点击刷新就出来了

image.png