运维学习————运维日志分析系统es——Elasticsearch

news2024/12/27 11:49:58

目录

一、简介

1、全文检索

1、数据分类

2、非结构化数据搜索方法 

2、什么是 Elasticsearch 

3、用途

4、基本概念 

二、下载配置,搭建集群 

集群规划

解压

配置环境变量

es配置

由于es启动不能直接使用root用户

启动

三、常用集群命令 


一、简介

1、全文检索

1、数据分类

我们生活中的数据总体分为三种:结构化数据,非结构化数据,半结构化数据

结构化数据:指具有固定格式或有限长度的数据,如数据库(mysql oracle ...),元数据等。

非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等

半结构化数据,如XML,HTML等

非结构化数据又一种叫法叫全文数据。

对结构化数据的搜索:如对数据库的搜索,用SQL语句。

对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。

对非结构化数据的搜索:如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。

2、非结构化数据搜索方法 

顺序扫描:

比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。

如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一个500G硬盘,如果想在上面找到一个内容包含某字符串的文件,不花他几个小时,怕是做不到。Linux下的grep命令也是这一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方法还是最直接,最方便的。但是对于大量的文件,这种方法就很慢了。

全文检索(倒排索引es的核心:将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。

这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。(实际参考es中文档)

2、什么是 Elasticsearch 

官网

Elastic — The Search AI Company | Elastic

Elasticsearch:官方分布式搜索和分析引擎 | Elastic

Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。

3、用途

Elasticsearch 在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:

  • 应用程序搜索
  • 网站搜索
  • 企业搜索
  • 日志处理和分析
  • 基础设施指标和容器监测
  • 应用程序性能监测
  • 地理空间数据分析和可视化
  • 安全分析
  • 业务分析

4、基本概念 

Basic Concepts | Elasticsearch Reference [6.0] | Elastic

近实时 near realtime(nrt)

Elasticsearch是一个几乎实时的搜索平台。意思是,从索引一个文档到这个文档可被搜索只需要一点点的延迟,这个时间一般为毫秒级。

cluster 集群

群集是一个或多个节点(服务器)的集合, 这些节点共同保存整个数据,并在所有节点上提供联合索引和搜索功能。一个集群由一个唯一集群ID确定,并指定一个集群名(默认为“elasticsearch”)。该集群名非常重要,因为节点可以通过这个集群名加入群集,一个节点只能是群集的一部分。

node 节点

节点是单个服务器实例,它是集群的一部分,可以存储数据,并参与群集的索引和搜索功能。就像一个集群,节点的名称默认为一个随机的通用唯一标识符(UUID),确定在启动时分配给该节点。如果不希望默认,可以定义任何节点名。

index 索引

索引是具有相似特性的文档集合。例如,可以为客户数据提供索引,为产品目录建立另一个索引,以及为订单数据建立另一个索引。索引由名称(必须全部为小写)标识,该名称用于在对其中的文档执行索引、搜索、更新和删除操作时引用索引。就像关系数据库中的“数据库”。它有一个定义多种类型的映射。索引是逻辑名称空间,映射到一个或多个主分片,并且可以有零个或多个副本分片。

document 文档

文档是可以被索引的信息的基本单位。也是全文搜索中被搜索的对象,可以对应一个网页,一篇txt文档或者一个商品。 相当于关系型数据库中的表中的一行记录例如,您可以为单个客户提供一个文档,单个产品提供另一个文档,以及单个订单提供另一个文档。es本文件的表示形式为JSON(JavaScript Object Notation)格式,这是一种非常普遍的互联网数据交换格式。似于关系数据库中的一行。

文档和索引的关系原理讲解:

文档(txt,doc,docx....):

1, 人生永远不可能复制,要珍惜每一份缘分 ..... 一共100000字 a.txt

2, 珍惜人生的每次相遇,就是缘分..... 一共10000字 b.txt

3, 生命中存在很多相遇和离别,都是缘分中的注定..... 人生 一共1000000字 c.txt

提取关键字(https://www.elastic.co/guide/cn/elasticsearch/guide/current/stopwords.html使用中文分词技术 排除停用词https://wenku.baidu.com/view/8927eede80eb6294dd886c46.html)

1, 人生 永远 复制 珍惜 缘分

2, 珍惜 人生 相遇 缘分

3, 人生 存在 相遇 离别 缘分 注定

创建索引

人生 -> 1,2,3

永远 -> 1

复制-> 1

珍惜 ->1,2

缘分 ->1,2,3

。。。。

倒排索引又叫反向索引,以字或词为文档中出现的位置情况。

shards replicas 碎片和副本

shards:分片数,一个索引分几个片存储,多个分片可以提升读写速度。索引可以存储大量的数据,这些数据可能(分片解决)超过单个节点的硬件限制。例如,十亿个文件占用磁盘空间1TB的单指标可能不适合对单个节点的磁盘或可能太慢服务仅从单个节点的搜索请求。

replicas:

副本数量,分多个副本存储索引,好处是防止一个节点挂掉,数据丢失(防止单点故障)。

它在碎片/节点出现故障时提供高可用性(提高可用性)。

它允许您扩展搜索量/吞吐量,因为可以在所有副本上并行执行搜索(提高搜索速度)。

二、下载配置,搭建集群 

集群规划

192.168.37.195

192.168.37.196

192.168.37.197

解压

elasticsearch-6.4.0.tar:elasticsearch-6.4.0.tar资源-CSDN文库

#上传文件到vm中,解压
tar -xzvf  /software/elasticsearch-6.4.0.tar.gz  -C /usr/
#修改名称
mv /usr/elasticsearch-6.4.0/ /usr/elasticsearch/

配置环境变量

#编辑文件
vim  /etc/profile

#添加配置  
export ES_HOME=/usr/elasticsearch
#修改配置:
PATH=$PATH:$ES_HOME/bin


#让配置生效
source /etc/profile
#测试
echo $ES_HOME

es配置

1,在/usr/elasticsearch创建数据data,后面配置用到:

mkdir /usr/elasticsearch/data

2,在/etc/sysctl.conf最后添加(解决:max virtual memory areas vm.max_map_count [65530] is too low错误,vm.max_map_count单个JVM能开启的最大线程数)

sysctl.conf 文件是用于在系统启动时设置内核参数(也称为系统调用)的配置文件。这些参数控制了系统的各种行为,比如网络、内存管理、文件系统等

vim /etc/sysctl.conf

vm.max_map_count=655360

让文件生效:

sysctl -p

3,在/etc/security/limits.conf最后添加:(不配置缺省值:1024,解除 Linux 系统的最大进程数和最大文件打开数限制:* 代表针对所有用户 ues表示启动用户名称,与下面创建用户一致 noproc 是代表最大进程数 nofile 是代表最大文件打开数 )

limits.conf 限制登录用户的资源分配,比如最大打开文件数(文件描述符数量)、最大进程数等
vim /etc/security/limits.conf

ues soft nofile 65536
ues hard nofile 131072
ues soft nproc 4096
ues hard nproc 4096

4,修改节点的配置文件jvm.options

vim /usr/elasticsearch/config/jvm.options (22行)

-Xms512m

-Xmx512m

原则:

最小堆的大小和最大堆的大小应该相等。

Elasticsearch可获得越多的堆,并且内存也可以使用更多的缓存。但是需要注意,分配了太多的堆给你的项目,将会导致有长时间的垃圾搜集停留。

设置最大堆的值不能超过你物理内存的50%,要确保有足够多的物理内存来保证内核文件缓存。

5,修改配置文件 ElasticSearch.yml

vim /usr/elasticsearch/config/elasticsearch.yml

# ======================== Elasticsearch Configuration =========================

#

# NOTE: Elasticsearch comes with reasonable defaults for most settings.

# Before you set out to tweak and tune the configuration, make sure you

# understand what are you trying to accomplish and the consequences.

#

# The primary way of configuring a node is via this file. This template lists

# the most important settings you may want to configure for a production cluster.

#

# Please consult the documentation for further information on configuration options:

# Elasticsearch Guide | Elastic

#

# ---------------------------------- Cluster -----------------------------------

#

# Use a descriptive name for your cluster:

# 17行

cluster.name: my-app

#

# ------------------------------------ Node ------------------------------------

#

# Use a descriptive name for the node:

#23行

node.name: node-1

#

# Add custom attributes to the node:

#

#node.attr.rack: r1

#

# ----------------------------------- Paths ------------------------------------

#

# Path to directory where to store the data (separate multiple locations by comma):

# 33

path.data: /usr/elasticsearch/data

#

# Path to log files:

# 37

path.logs: /usr/elasticsearch/logs

#

# ----------------------------------- Memory -----------------------------------

#

# Lock the memory on startup:

#锁定物理内存地址,防止elasticsearch内存被交换出去,也就是避免es使用swap交换分区

# 43 44

bootstrap.memory_lock: false

#是否支持过滤掉系统调用,Elasticsearch安装各种各样的系统调用过滤依赖于操作系统(如:Linux上的seccomp)。如果成功安装与启用了系统调用过滤,将能够防御一些对Elasticsearch调用的攻击行为。要想通过此检查,你必须根据日志来修复任何阻止系统调用过滤的系统错误,或者通过配置bootstrap.system_call_filter为false来禁用系统调用过滤然后你自己做风控。

bootstrap.system_call_filter: false

#

# Make sure that the heap size is set to about half the memory available

# on the system and that the owner of the process is allowed to use this

# limit.

#

# Elasticsearch performs poorly when the system is swapping the memory.

#

# ---------------------------------- Network -----------------------------------

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#56

network.host: 192.168.23.30

#

# Set a custom port for HTTP:

#60

http.port: 9200

#

# For more information, consult the network module documentation.

#

# --------------------------------- Discovery ----------------------------------

#

# Pass an initial list of hosts to perform discovery when new node is started:

# The default list of hosts is ["127.0.0.1", "[::1]"]

#当启动新节点时,通过这个ip列表进行节点发现,组建集群 69

discovery.zen.ping.unicast.hosts: ["cr1", "cr2","cr3"]

#

# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):

#通过配置这个参数来防止集群脑裂现象 (集群总节点数量/2)+1 73

discovery.zen.minimum_master_nodes: 2

#

# For more information, consult the zen discovery module documentation.

#

# ---------------------------------- Gateway -----------------------------------

#

# Block initial recovery after a full cluster restart until N nodes are started:

#

#gateway.recover_after_nodes: 3

#

# For more information, consult the gateway module documentation.

#

# ---------------------------------- Various -----------------------------------

#

# Require explicit names when deleting indices:

#

#action.destructive_requires_name: true

因为配置文件中配置了集群节点的主机名称,所以在/etc/hosts添加下面配置:

vim /etc/hosts

192.168.170.131 es1

192.168.170.131 es2

192.168.170.131 es3

由于es启动不能直接使用root用户

#创建用户
useradd ues
tail -1  /etc/passwd
ls /home/
#赋权
tail -1 /etc/group  #查看组  发现有ues组
chown -R ues:ues  /usr/elasticsearch
查看:
ll  /usr/ |grep  elasticsearch
ll /usr
ll /usr/elasticsearch 
#复习免密
ssh-keygen -t rsa 三次回车
ssh-copy-id es2 yes #输入密码:123456
ssh-copy-id es3 yes #输入密码:123456

启动

#在to All  Sessions中切换到ues用户
su -l ues
#在to All  Sessions中启动
elasticsearch  -d;
#查看日志使用
cat /usr/elasticsearch/logs/my-app.log

三、常用集群命令 

查看集群支持命令:

curl 192.168.23.30:9200/_cat

查看集群是否健康

curl 192.168.23.30:9200/_cat/health

curl 192.168.23.30:9200/_cat/health?v

绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示不可用

curl 192.168.23.30:9200/_cat/health?help

查看master:

curl 192.168.23.30:9200/_cat/master?v

命令支持help:

curl 192.168.23.30:9200/_cat/master?help

查看所有索引:

curl 192.168.23.30:9200/_cat/indices

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可提示 3D 分割研究里程碑!SAM2Point:SAM2加持泛化任意3D场景、任意提示!

郑重声明:本解读已获得论文作者的原创解读授权 文章链接:https://arxiv.org/pdf/2408.16768 在线demo: https://huggingface.co/spaces/ZiyuG/SAM2Point code链接:https://github.com/ZiyuGuo99/SAM2Point 亮点直击 无投影 3D 分割&#xff1…

DAY14信息打点-JS 架构框架识别泄漏提取API 接口枚举FUZZ 爬虫插件项目

本课意义: 1.如何从表现中的JS提取价值信息 2.如何从地址中FUZZ提取未知的JS文件 3.如何从JS开放框架WebPack进行测试 一、JS 前端架构-识别&分析 在JS中寻找更多的URL地址,在JS代码逻辑(加密算法、APIKey配置、验证逻辑)中进…

C语言——静态链表和动态链表

一、静态链表 创建链表中的一个节点,用struct来创建,其中包含两个部分:数据域和指针域。 创建三个结点,node1、node2、node3,分别赋值,初始化为NULL。接着就是将这些节点进行连接,组成链表。连…

干货分享|分享一款完全免费的PDF工具箱 PDF24

PDF 24介绍: PDF 24是一个全面的PDF工具包,旨在简化和优化PDF文件的处理和管理。它提供了广泛的功能和工具,包括创建、编辑、转换、合并、拆分、加密、解密、压缩、优化、签名、水印等。 主要特点:完全免费,轻量便捷,…

现货黄金避险属性是怎么来的?

众所周知,黄金是一种可以规避风险的品种,当地缘局势冲突、经济下行,甚至是出现军事摩擦等等情况,黄金都会受到避险情绪支撑而上涨。典型的例子,我们可以看俄乌冲突,还有中东的地缘局势等,这些事…

TS 常用类型

我们经常说TypeScript是JavaScript的一个超级 TypeScript 常用类型 TypeScript 是 JS 的超集,TS 提供了 JS 的所有功能,并且额外的增加了:类型系统 所有的 JS 代码都是 TS 代码 JS 有类型(比如,number/string 等&…

OPENAIGC开发者大赛企业组AI黑马奖 | 包你面-AI面试助手

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…

Linux基础知识之用户和组

Linux基础知识之用户和组 01 1.什么是用户 用户账户为不同人员和运行的程序之间提供安全边界 用户使用 username 进行标识,操作系统为其分配唯一标识号(UID),用户可能含有密码 系统中的每个程序都以一个特定用户运行&#xff…

上/下三角矩阵的压缩存储

1.给自己出题:自己动手创造,画一个5行5列的下三角矩阵 2.画图:按“行优先”压缩存储上述矩阵,画出一维数组的样子 3.简答:写出元素 i,j 与 数组下标之间的对应关系 4.画图:按“列优先”压缩存储上述矩阵…

【卷起来】VUE3.0教程-06-组件详解

各位看官,点波关注和赞吧 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构: 这和我们嵌套 HTML 元素的方式类似,Vue 实现了自己的…

ssrf漏洞利用+CTF实例

引发ssrf漏洞的几个函数 file_get_contents() 把整个文件读入一个字符串中,获取本地或者远程文件内容fsockopen() 获得套接字信息curl_exec() 执行一个curl会话,由curl_init()初始化一个新的会话,返回一个curl句柄fopen() 打开文件或者URLre…

【数据结构与算法 | 灵神题单 | 插入链表篇】力扣2807, LCR 029, 147

1. 力扣2807:在链表中插入最大公约数 1.1 题目: 你一个链表的头 head ,每个结点包含一个整数值。 在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。 请你返回插入之后的链表。 两个…

前端开发macbook——NVM环境配置以及git配置流程

本文主要针对前端使用mac电脑时需要安装nvm对应环境,一文解决环境安装问题 主要步骤如下: 安装homebrew 安装nvm 安装git 第一步:安装homebrew /bin/bash -c "$(curl -fsSL https:/raw.githubusercontent.com/Homebrew/install/HE…

C++基础(七):类和对象之深浅拷贝问题(中-3)

在C编程中,拷贝构造函数是对象复制的核心机制,尤其是在处理对象间的值传递时。当一个对象通过拷贝另一个对象来初始化时,浅拷贝只是简单地复制对象的成员变量的值。如果对象包含指针成员,浅拷贝只复制指针地址,这可能会…

基于matlab交通标志识别系统用的APP designer设计的gui界面 交互原理:bp神经网络-训练好图像处理有灰度化-二值化-颜色区域定位识别

基于MATLAB的交通标志识别系统是一个实用的工具,用于识别道路交通标志。该系统结合了图像处理技术和BP神经网络模型,可以在给定的图像中定位并识别交通标志。通过使用MATLAB的App Designer工具,系统还提供了一个交互式的图形用户界面&#xf…

【idea-安装】

JetBrains官⽹ : https://www.jetbrains.com/ 1.下载idea安装包,下载旧一些的版本,避免新版本的不稳定。 下载下来的安装包是exe格式的,直接点击运行。 点击Next 2.选择要下载的位置,点击下一步。 3.选择⽣成快捷⽅式和建⽴⽂件…

从头开始学MyBatis—01搭建基础框架

首先对mybatis进行一个简单的介绍,然后从最基础的准备工作开始搭建一个mybatis的开发 环境,最后通过简单的增删改查来熟悉配置文件和映射文件的编写。 目录 1.Mybaits简介 2.开发环境和准备工作 2.1开发环境 2.2pom文件 2.3数据库和表 2.4对应实体…

探索Python世界的隐藏宝石:Pika库的神秘力量

文章目录 探索Python世界的隐藏宝石:Pika库的神秘力量背景:为何选择Pika?Pik库简介如何安装Pika?简单库函数使用方法场景应用常见Bug及解决方案总结 探索Python世界的隐藏宝石:Pika库的神秘力量 背景:为何…

【机器学习】8 ——朴素贝叶斯

机器学习 8 ——朴素贝叶斯 特征条件独立假设 朴素是指每个特征独立地影响结果,整个假设在实际应用中不成立,主要是思想 输入输出的来拟合概率分布,贝叶斯定理,后验概率最大 文章目录 机器学习 8 ——朴素贝叶斯前言贝叶斯定理先…

vue2使用ag-grid表格

ag-grid官网:Vue Grid: Custom Components | AG Grid 根据官方文档说的AG Grid no longer supports Vue 2. The last version to support Vue 2 is AG Grid v31.3.,目前只有v31.3.版本支持vue2。 以下是官方给的demo Vue Grid: Get Started with AG G…