ELK的ElasticStack概念

目录

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架

Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

ELK设置后抓日志非常好用,当然也不只是用于抓日志。功能强大,全文检索等等。

以下文章不定时更新。

ELK的ElasticStack概念

ELK的ElasticStack语法

ELK的ElasticStack安装

ELK的Logstash

ELK的Kibana

ELK的Filebeat

一、ElasticStack是什么

es是一个开源的高扩展的分布式全文搜索引擎;数据存储;旧叫法为ELK(es+logstash+kibana),由于logstash是收集+转化数据两个功能太重了 ,所以在新叫法elastic stack中,出现了beats,收集数据变为beats了,比如filebeat等,很多个beat。logstash就更偏向于转化和处理收集了。

Elastic Stack(也称为ELK Stack)是一个开源的数据分析和可视化平台,主要用于搜索、分析和可视化各种数据。它通常由以下四个核心组件组成:

Elasticsearch:一个分布式的搜索和分析引擎,能够处理大量的结构化和非结构化数据。它提供了强大的搜索功能,支持实时数据查询和分析。

Logstash:一个服务器端数据处理管道,能够接收、处理和转发数据。Logstash支持多种输入源和输出目标,可以对数据进行过滤和转换,以便更好地适应后续的分析。

Kibana:一个可视化界面工具,用于数据的可视化和仪表板创建。用户可以通过Kibana创建各种图表、图形和仪表板,以便直观地展示分析结果。

Beats:一组轻量级的数据发送器,能够从各种数据源收集数据并将其发送到Elasticsearch或Logstash。Beats可以收集系统和服务的日志、性能指标等信息。

主要用途

日志管理:Elastic Stack常用于集中化日志管理,帮助用户收集和分析来自不同系统和应用程序的日志数据。

监控:可以实时监控应用程序和基础设施的性能,及时发现并解决问题。

安全分析:用于安全事件的监测和响应,通过分析日志数据检测潜在的安全威胁。

业务分析:帮助企业分析用户行为、市场趋势等,以支持业务决策。

总结

Elastic Stack提供了强大的搜索和分析能力,结合实时数据处理和可视化,使得用户能够更高效地管理和利用数据

二、ElasticStack数据格式

1、Elasticsearch的概述

提供了一个分布式多用户能力的全文搜索引擎

2、Elasticsearch核心概念

(1)接近实时(NRT)

elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)

(2)集群(cluster)

一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。

一个集群可以只有一个节点。强烈建议在配置elasticsearch时,配置成集群模式。

(3)节点(node)

节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。

节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。

(4)索引(type)

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

3、类型相对于关系型数据库的表

索引(库)--》类型(表)--》文档(记录)

三、Elasticsearch分片和副本

分片和副本(shards & replicas)

在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上,或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。

每个索引可以被分成多个分片。一个索引也可以被复制0次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和副本的数量可以在索引创建的时候指定。

在索引创建之后,你可以在任何时候动态地改变副本的数量,但是你事后不能改变分片的数量。默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个副本,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个副本分片(1个完全拷贝),这样的话每个索引总共就有10个分片。

核心对比(分片类比分表)(副本就是分片的备份)(创建时默认的5分片1副本,分片不能修改,副本数量可以修改,就是5分片和5个副本,一共10个。不能修改分片是因为hash计算公式,改了分片会导致计算后读取不到任何分片的情况。副本数量要小于集群数量,等于都不行? 1台的时候1个副本,副本是没有工作起来的,所以es是黄色,主分片和自己的副本是不能在一台的。多台的时候同理)(分片就是主分片,可以读写,副本不能写只能读)(副本是可以不要的,比如5分片0副本是可以的)

分片和副本的概念理解:

分片类似MySQL中的分表,不同分片在不同的机器上可以分布式协同工作,比如 用户,男的在分片1,女的在分片2,放到两台机器上就比原先男女都在一个分片一台机器上性能好太多了。两个机器扩展了硬件容量,分片1和分片2的不同访问提升了分布式的并发性能和负载均衡。

副本都是分片的备份,当分片挂了,副本就能工作,是故障转移机制。一个分片可以有一个副本或者多个副本。

映射:就像MySQL中的字段是varchar、int等字段类型,es中存的也有这种类型判断,可以主动设置,也可以由es自己识别,比如存了一个数据是123,那么es自己会识别成int。因为es是java开发的,所以识别出来的字段类型大部分和java的字段类型一样。

倒排索引:

第12行开始,是es的逻辑。keyword为关键字,es搜索比如name=zhang的,就会找到对应的id(普通数据库表里面content含zhang的id都会找出来,es的基本功能就是按这种逻辑存这些,然后通过倒排索引这种逆向逻辑来查询),然后通过所有符合的id就能拿出整个列表信息。

分片副本概念。最上面绿色表示健康。黄色表示副本没有工作。单节点一般都是黄色。红色表示有问题,es可能都没弄好。

分片和副本都不会在一台机器上,最大的保证故障机制转移。主分片数量创建以后不能修改,但是副本数量可以修改。

路由计算:

这种节点集群,存的时候有路由计算,计算到存到那个分片了。

分片控制:

存的时候有路由计算,取的时候要用到分片控制,基本策略是轮询,比如到轮询访问到R2的时候,R2要看情况,有数据的时候但是自己很忙,就转给P2,然后P2处理后给你返回了。R2没数据的时候个,更得转给其他副本或者分片来给你返回,这种就是分片控制。这个轮询的节点也叫做协调节点,基本上每个集群中的主机都可以当协调节点。集群的成员就是节点。

相关推荐
冰帝海岸4 分钟前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象30 分钟前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了1 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
----云烟----1 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024061 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
小二·1 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic1 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it2 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
懒洋洋大魔王2 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
i道i2 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql