ELK搭建 – Docker篇

ELK搭建 – Docker篇ELK 分布式日志搜集分析系统 ELK 分布式日志收集系统介绍那么 ELK 到底是什么呢 ELK 是三个开源项目的首字母缩写 这三个项目分别是 Elasticsearc Logstash 和 Kibana Elasticsearc 是一个搜索和分析引擎 Logstash 是服务器端数据处理管道 能够同时从多个来源采集数据 转换数据 然后将数据发送到诸如 Elasticsearc 等 存储库 中 Kibana 则可以让用户在 Elasticsearc 中使用图形和图表对数据进行可视化 引用官网

ELK分布式日志搜集分析系统

ELK分布式日志收集系统介绍

那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。(引用官网ELK Stack:Elasticsearch、Logstash 和 Kibana | Elastic)

ElasticSearch 是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

Filebeat 是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到ElasticSearch或Logstash进行索引。

Filebeat与Logstash优劣势:      

优势

Logstash 主要的有点就是它的灵活性,主要因为它有很多插件,详细的文档以及直白的配置格式让它可以在多种场景下应用。我们基本上可以在网上找到很多资源,几乎可以处理任何问题。

Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

劣势

Logstash 致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。这里有Logstash 与 filebeat 的性能对比。它在大数据量的情况下会是个问题。另一个问题是它目前不支持缓存,目前的典型替代方案是将 Redis 或 Kafka 作为中心缓冲池。

Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。

ELK分布式日志收集原理

1、服务器集群节点安装Logstash日志收集系统插件

2、每台服务器节点将日志输入到Logstash中

3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中

4、浏览器使用Kibana查询详细的日志信息

一个完整的集中式日志系统,是离不开以下几个主要特点的。

  • 收集-能够采集多种来源的日志数据
  • 传输-能够稳定的把日志数据传输到中央系统
  • 存储-如何存储日志数据
  • 分析-可以支持 UI 分析
  • 警告-能够提供错误报告,监控机制

基础日志流动过程

日志数据直接处理:

Filebeat -> Elasticsearch

索引之前过滤拆分字段,通过Logstash中转:

Filebeat  -> Logstash ->  Elasticsearch

如果日志数据量过大,建议中间再加一个消息队列

Filebeat -> Kafka / Redis -> Logstash -> Elasticsearch

Docker介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Dokcer的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Dokcer基础命令

// 查看运行中的容器 $ docker ps // 查看所有容器 $ docker ps -a // 启动一个已停止的容器 $ docker start 
  <容器 id="">
    // 启动一个已启动的容器 $ docker stop 
   <容器 id="">
     // 重启容器 $ docker restart 
    <容器 id="">
      // 查看容器的配置和状态信息 $ docker inspect 
     <容器 id="">
       // 删除容器 $ docker rm -f 
      <容器 id="">
        // 进入容器 $ docker exec -it 
       <容器 id="">
         /bin/bash // 查看镜像 $ docker images // 查找镜像 $ docker search 
        <镜像名>
          // 拉取远程镜像 $ docker pull 
         <镜像名>
           // 删除镜像 $ docker rmi 
          <镜像名> 
          
         
        
       
      
     
    
  

安装elasticsearch:

docker run -d --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ docker.elastic.co/elasticsearch/elasticsearch:6.2.4 访问地址: http://localhost:9200

安装kibana:

启动命令 docker run -d -u 0 --name kibana \ -p 5601:5601\ docker.elastic.co/kibana/kibana:6.2.4 修改配置文件 1、docker exec -it kibana /bin/bash (进入容器) 2、/usr/share/kibana/config/kibana.yml (文件位置) 3、elasticsearch.url: http://localhost:9200 xpack.monitoring.ui.container.elasticsearch.enabled: false (实际部署不要用127.0.0.1,要用虚拟机或服务器IP) 修改完配置文件后退出 exit 重启容器 docker restart kibana

安装logstash:

命令 docker run -d -u 0 --name logstash \ -p 5044:5044\ docker.elastic.co/logstash/logstash:6.2.4 进入容器 docker exec -it logstash /bin/bash 修改配置文件 (/usr/share/logstash/pipeline) logstash.conf input { tcp { port => 5044 codec => json_lines } } output{ elasticsearch { hosts => ["localhost:9200"] action => "index" index => "%{[appname]}" } stdout { codec => rubydebug } } 退出容器 exit 重启容器 doccker restart logstash 

Logstash的文件配置详解篇:

https://blog.csdn.net/_14985851/article/details/122696002ELK搭建 - Docker篇https://blog.csdn.net/_14985851/article/details/122696002

完毕!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177465.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:27
下一篇 2026年3月26日 下午7:27


相关推荐

  • docker配置修改阿里云镜像仓库

    docker配置修改阿里云镜像仓库docker 配置修改阿里云镜像仓库 docker 本身的仓库非常慢 但是国内有阿里云的镜像仓库非常快 当然也可以用其他地方的镜像仓库 有很多的 配置阿里云的方式如下 配置步骤 1 申请阿里云账号 首先百度搜索阿里云 进入官网 注册阿里云账号 可以用淘宝账号登录 2 找到阿里云加速器地址 注册之后 登录 先点击控制台 如下图 然后按照下图操作 找到加速器 但是首次点击

    2026年3月19日
    1
  • docker端口映射失效解决方法[通俗易懂]

    docker端口映射失效解决方法[通俗易懂]docker端口映射失效解决方法

    2022年10月17日
    5
  • docker安装redis并以配置文件方式启动

    1.获取redis镜像dockerpullredis指定版本号:dockerpullredis:4.0.9不加版本号默认获取最新版本,也可以使用dockersearchredis查看镜像来源2.查看本地镜像dockerimages3.然后启动容器,做映射①创建配置文件目录存放redis.conf…

    2022年4月8日
    127
  • 乌班图docker版本18.04升级到19.03[通俗易懂]

    乌班图docker版本18.04升级到19.03[通俗易懂]#关闭dockersudosystemctlstopdocker#卸载旧版本:sudoapt-getpurgedocker-ce#安装新版本sudoaptupdatesudoapt-get-yinstallapt-transport-httpsca-certificatescurlsoftware-properties-co…

    2022年7月12日
    28
  • docker部署Kafka_kafka容器部署

    docker部署Kafka_kafka容器部署1.拉取镜像dockerpullwurstmeister/zookeeperdockerpullwurstmeister/kafka2.启动,先启动zookeeperdockerrun-d–namezookeeper-p2181:2181-twurstmeister/zookeeper再启动kafka,中间两个参数的172.17.137.55改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。使用docker命令可快速在同一台机器搭

    2022年10月18日
    4
  • centos7.4安装docker_pythondocker

    centos7.4安装docker_pythondocker前言当我们在一台电脑上搭建了python3.6的环境,下次换台电脑,又得重新搭建一次,设置环境变量等操作。好不容易安装好,一会提示pip不是内部或外部命令,一会又提示pip:commandno

    2022年7月29日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号