一篇文章告诉你ELK Stack是什么

本文详细介绍了ELKStack(Elasticsearch、Logstash和Kibana)的组成、优点、核心概念以及各个组件的功能,涵盖了数据收集、处理、存储、搜索和可视化等方面,展示了如何构建理想的ElasticStack架构,包括消息队列的引入以提升扩展性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

ELK Stack简介

ELK Stack优点

ELK Stack组成

Elasticsearch

Elasticsearch简介

Elasticsearch主要特点

Elasticsearch核心概念

Elasticsearch的配置

Logstash

Logstash简介

Logstash过滤器之grok正则匹配

Logstash过滤器之mutate数据修改

Logstash过滤器之GeoIP地址查询

Logstash过滤器之useragent匹配归类

Logstash过滤器之split拆分事件

Kibana

Kibana简介

Kibana模块功能

•Visualize

visualize类型

•Dev Tools

•Monitoring

•Management

Beats​编辑

Elastic Stack的架构​编辑

理想的Elastic Stack架构​编辑

好了,今天的内容就到这里了,下期我们来实战ElasticK Stack的架构

ELK Stack简介

        ELK stack 是以Elasticsearch(收集)、Logstash(处理)、Kibana(展示)三个开源软件为主的数据处理工具链,在于实时数据检索和分析场合,三个通常是配合使用,而且又先后归于Elastic.co公司名下,故有此简称在5.0版本之后又加入Elastic公司的Beats工具,改名叫Elastic Stack。

ELK Stack优点

        处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;

        配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计; 检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应; 集群线性扩展。。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;

        前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。 而ELK Stack加入Beats中的filebeat之后更加优秀,filebeat是一个轻量级的日志收集处理工具Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

ELK Stack组成

        通常情况下的ELK是由Elasticsearch、Logstash和Kibana组成。 ELK之间的合作机制: L(logstash)作为作为信息收集者,主要是用来对日志的搜集、分析、过滤,支持大量的数据获取方式,一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 E(Elasticsearch)作为数据的保存者,保存来自L(Logstash)收集的系统日志数据,并建立索引,以及提供之后对数据的检索。 K(Kibana)作为展示者,主要是将ES上的数据通过页面可视化的形式展现出来。包括可以通过语句查询、安装插件对指标进行可视化等。

Elasticsearch

Elasticsearch简介

        Elasticsearch 来源于作者 Shay Banon 的第一个开源项目 Compass 库,而这个Java 库最初的目的只是为了给 Shay 当时正在学厨师的妻子做一个菜谱的搜索引擎2010 年,Elasticsearch 正式发布。至今已经成为 GitHub 上最流行的 Java 项目,不过 Shay 承诺给妻子的菜谱搜索依然没有面世.

        2015 年初,Elasticsearch 公司召开了第一次全球用户大会 Elastic{ON}15。诸多 IT巨头纷纷赞助,参会,演讲。会后,Elasticsearch 公司宣布改名 Elastic,公司官网也变成 Elasticsearch Platform — Find real-time answers at scale | Elastic。这意味着 Elasticsearch 的发展方向,不再限于搜索业务,也就是说,Elastic Stack 等机器数据和 IT 服务领域成为官方更加注意的方向。随后几个月,专注监控报警的 Watcher 发布 beta 版,社区有名的网络抓包工具Packetbeat、多年专注于基于机器学习的异常探测 Prelert 等 ITOA 周边产品纷纷被Elastic 公司收购。

        ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口

        Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

                1)2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。“GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码“

                2)维基百科:启动以elasticsearch为基础的核心搜索架构。“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”

                3)SoundCloud:百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标

                4)数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异关·目前覆盖百度内部20多个业务线(包括casio、云分析、文库、直达号、钱包、网盟、预测、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。

Elasticsearch主要特点

•实时分析

•分布式实时文档存储,并将每一个字段都编入索引

•文档导向,所有的对象全是文档

•高可用性,易扩展,支持集群(cluster)、分片和复制(Shards和Replicas)

•接口友好,支持JSON

Elasticsearch核心概念

cluster

        代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

node

        代表集群中的一个节点,节点也有一个名称(默认是随机分配的),默认节点会去加入一个名称为“elasticsearch的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearc

ELK stack(Elasticsearch,Logstash,Kibana)是一套流行的日志管理和分析解决方案。使用Docker Compose部署ELK非常方便,让我们来看看如何实现。 1. 安装Docker和Docker Compose 首先,你需要在你的机器上安装Docker和Docker Compose。如果你还没有安装,可以按照Docker官方文档进行安装:https://docs.docker.com/engine/installation/ 2. 创建docker-compose.yml文件 在你的项目目录中创建一个名为docker-compose.yml的文件,用于定义ELK stack服务的配置。 ``` version: '2' services: elasticsearch: image: elasticsearch:6.5.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 ports: - "9200:9200" volumes: - esdata:/usr/share/elasticsearch/data logstash: image: logstash:6.5.4 container_name: logstash volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch ports: - "5044:5044" kibana: image: kibana:6.5.4 container_name: kibana environment: - ELASTICSEARCH_URL=http://elasticsearch:9200 ports: - "5601:5601" depends_on: - elasticsearch volumes: esdata: driver: local ``` 在这个文件中,我们定义了三个服务:Elasticsearch,Logstash和Kibana。使用image关键字,我们指定了我们要使用的Docker映像。container_name关键字允许我们为容器指定一个名称,以便我们可以轻松地引用它们。对于Elasticsearch,我们还定义了环境变量和卷。 对于Logstash,我们挂载了一个名为logstash.conf的配置文件,以便我们可以定义Logstash如何处理日志数据。我们还定义了对Elasticsearch的依赖关系和一个端口映射。 对于Kibana,我们定义了一个环境变量,指定Kibana应该连接到哪个Elasticsearch实例,并定义了另一个端口映射。 最后,我们还定义了一个名为esdata的卷,用于持久化Elasticsearch数据。 3. 创建logstash.conf文件 在你的项目目录中创建一个名为logstash.conf的文件,并将以下内容复制到文件中。 ``` input { file { path => "/var/log/*.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } ``` 这个文件告诉Logstash如何处理日志数据。在这种情况下,我们从一个名为/var/log/*.log的文件中读取日志数据,并使用Grok模式匹配来解析它们。我们还使用date插件将时间戳解析为可搜索的格式。最后,我们将数据发送到Elasticsearch中。 4. 启动ELK stack 一旦你创建了docker-compose.yml和logstash.conf文件,就可以启动ELK stack了。在你的项目目录中运行以下命令: ``` docker-compose up ``` 这个命令将启动Elasticsearch,Logstash和Kibana服务,并将它们连接在一起。你可以使用以下命令在后台运行它们: ``` docker-compose up -d ``` 一旦启动,你可以通过访问http://localhost:5601来访问Kibana界面,从而查看和分析日志数据。 总结 Docker Compose是一种强大的工具,可帮助你轻松地部署和管理复杂的应用程序。使用它来部署ELK stack可以让你更轻松地管理和分析日志数据。希望这篇文章对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

藻头男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值