ELK是一个用于日志管理和分析的开源解决方案,它由Elasticsearch、Logstash和Kibana三个核心组件组成。这个组合可以帮助你采集、存储、搜索、分析和可视化大量的日志数据。
Elasticsearch是一个开源的分布式搜索和分析引擎,它构建在Apache Lucene搜索引擎之上。设计初衷是提供一个强大、实时的全文搜索和分析引擎,适用于大规模数据。
Elasticsearch是一个分布式系统,它能够水平扩展以处理大量数据和查询请求。
数据被分散存储在多个节点上,每个节点负责一部分数据和搜索请求的处理。
Elasticsearch支持全文搜索,这意味着它不仅可以匹配整个字段的值,还能够搜索文本中的关键词。
支持模糊搜索、前缀搜索、通配符搜索等灵活的搜索方式。
Elasticsearch提供了非常快速的实时搜索能力,适用于需要立即反馈查询结果的应用场景。
数据的添加、更新和删除操作都能够在索引中实时反映出来。
Elasticsearch使用JSON格式来存储文档,每个文档是一个包含字段和对应值的JSON对象。
文档被存储在索引中,索引类似于数据库中的表。
Elasticsearch使用倒排索引来加速搜索操作。
倒排索引是一种将文档中的词汇映射到文档的位置的数据结构,使得搜索操作更加高效。
Elasticsearch提供了RESTful API,使得与其交互变得简单。
通过HTTP协议,可以使用各种编程语言和工具与Elasticsearch进行通信。
Elasticsearch支持复杂的查询语言,包括布尔查询、范围查询、模糊查询等。
查询可以通过组合不同的条件来精确地定位所需的数据。
Elasticsearch支持聚合操作,允许用户对数据执行统计、分组、过滤等操作。
这使得在大规模数据上进行复杂的分析变得可行。
Elasticsearch有一个丰富的插件生态系统,允许用户根据需要扩展其功能。
这些插件可以用于添加新的数据源、实现定制的分析和可视化等。
总的来说,Elasticsearch在搜索和分析领域具有强大的功能,被广泛用于构建各种应用,包括日志分析、全文搜索、实时仪表板和监控系统等。
Logstash是一个用于数据收集、转换和发送的开源服务器端流水线工具。主要负责数据的收集和预处理。
Logstash能够从多种来源收集数据,包括日志文件、消息队列、数据库、网络流量等。
提供了丰富的输入插件,使得用户能够轻松配置Logstash来接收各种数据源的信息。
一旦数据被收集,Logstash可以对数据进行过滤和转换,以适应特定的需求。
过滤器插件允许用户定义各种规则和条件,对数据进行处理,比如解析结构化日志、删除不需要的字段、添加新的字段等。
Logstash的功能可以通过插件进行扩展,使其具备更多的输入、过滤和输出功能。
输入插件用于接收数据,过滤器插件用于处理数据,输出插件用于将数据发送到目标存储或索引。
Logstash支持将处理过的数据发送到多种目标,其中最常见的是将数据发送到Elasticsearch,以便进行存储和后续的检索与分析。
除了Elasticsearch,Logstash还支持输出到其他存储系统,如文件、消息队列、关系型数据库等。
Logstash被设计为可扩展的系统,可以根据需要部署多个Logstash节点,形成一个Logstash流水线。
这种分布式架构有助于处理大量的数据和提高系统的可用性。
Logstash的配置是通过一个简单的文本文件进行的,该文件定义了输入、过滤器和输出的配置。
配置文件使用类似于Ruby的DSL(Domain Specific Language)语法,使得用户能够灵活地配置Logstash的行为。
Logstash提供了一个Web界面,可以用于监控Logstash的运行状态、查看事件处理的统计信息等。
用户可以通过这个界面实时监控Logstash的性能,并在需要时进行调整和优化。
总的来说,Logstash在ELK堆栈中扮演着数据收集和预处理的关键角色,使得将各种数据源的信息整合到Elasticsearch中变得更加容易。它的灵活性和可扩展性使其成为处理大规模日志和事件数据的强大工具。
Kibana是一个用于数据可视化和分析的开源工具。
Kibana提供了一个直观、交互式的用户界面,使用户能够通过图表、图形和表格等形式直观地展现数据。
用户可以根据需要创建各种类型的可视化,包括柱状图、折线图、饼图、地图等,以便更好地理解和分析数据。
通过Kibana,用户可以创建仪表板来组织和展示多个可视化组件。
仪表板可以根据用户的需求自定义,将多个图表和数据展示在一个界面上,帮助用户全面了解数据的情况。
Kibana与Elasticsearch深度集成,允许用户直接从Elasticsearch索引中检索数据。
用户可以使用Kibana提供的查询构建器来执行各种类型的搜索操作,从全文搜索到复杂的过滤和聚合。
Kibana支持实时数据分析,用户可以实时监控数据并追踪变化。
实时更新的图表和可视化使得用户能够即时了解数据的变化和趋势。
Kibana提供了用户管理和权限控制功能,可以限制用户对不同数据和功能的访问权限。
这种权限控制能够确保数据的安全性和合规性,只有授权的用户才能访问特定的信息和功能。
Kibana支持与其他工具和系统的集成,使得用户可以将Kibana集成到其现有的工作流程中。
通过API和插件系统,可以扩展Kibana的功能,满足更广泛的需求。
Kibana允许用户设置实时监控和警报,当特定条件满足时,可以触发通知或动作。
这有助于用户及时发现和应对系统中的异常情况或关键事件。
总的来说,Kibana提供了强大的数据可视化和分析功能,使用户能够通过直观的界面对数据进行探索、分析和监控。它与Elasticsearch的深度集成使得在大规模数据集上进行复杂查询和可视化变得更加便捷和灵活。
拉取镜像
docker pull elasticsearch:7.17.7
docker run -itd \
--name es \
--privileged \
--network wn_docker_net \
--ip 172.18.12.70 \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g" \
-v /usr/local/softwares/elk/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/softwares/elk/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/softwares/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.17.7
拉取镜像
docker pull logstash:7.17.7
docker run -it \
--name logstash \
--privileged \
-p 5044:5044 \
-p 9600:9600 \
--network wn_docker_net \
--ip 172.18.12.72 \
-v /etc/localtime:/etc/localtime \
-d logstash:7.17.7