ELK日志分析--ES(Elasticsearch)--(一)

news2024/12/25 13:08:51
  1. ES基本介绍

  2. 单机ES部署

  3. ES(Elasticsearch)集群部署

1.基本介绍

Elasticsearch:存储、搜索和分析

Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎。Logstash和Beats有助于收集,聚合和丰富你的数据并将其存储在Elasticsearch中。使用Kibana,你可以交互式地探索,可视化和共享对数据的见解,并管理和监视堆栈。Elasticsearch是发生索引,搜索和分析数据的地方。

Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。

        1.1  ES支持的数据类型

  • 结构化文本

  • 非结构化文本

  • 数字数据

  • 地理空间数据

        1.2  文档元数据

_all 字段在7.0版本中已被废除

_version 为了解决在大量并发写入时候文档冲突问题

_score 用于标识在一次查询结果中某条数据和希望查询到的目标的相似度  

        1.3  索引

        1.4  Type

在 7.0 之前,一个 Index 可以设置多个 Types 7.0 开始一个索引只能建立一个 Type: _doc

        1.5  Elasticsearch 和关系型数据库的比较

        1.6  增删改查(RD使用)

要增删改查 Elasticsearch 的中数据,需要使用 REST API

2.单机ES部署

        2.1  配置ESyum仓库

        (一)导入Elasticsearch GPG密钥

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

        (二)在/etc/yum.repos.d/下创建elasticsearch.repo文件写入

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

启用ES并安装下载:

# yum install --enablerepo=elasticsearch elasticsearch

        2.2  使用`systemd运行Elasticsearch(ES)

# systemctl daemon-reload
# systemctl enable elasticsearch.service

Elasticsearch可按以下方式启动和停止:

# systemctl start elasticsearch.service
# systemctl stop elasticsearch.service

3.ES(Elasticsearch)集群部署

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

        3.1  ES 集群基本概念

集群的特性:

Elasticsearch 集群是一个多节点组成的高可用可扩展的分布式系统

 集群中的节点角色

Master-eligible Node 和 Master Node

Date Node 和 Coordinating Node  

 

分片

主分片和副本

分片分布示例 : 

分片的设定

主分片是在一开始建立索引时候设置的,后期无法更改

生产中要做好数据容量规划。

  • 分片过少 后期如果数量量不断增多,也无法通过增加节点来实现水平扩展 也会导致单个分片存储数据量过多,在以后数据重新分配时耗时。

  • 分片过多 假如长期分片过多,会影响查询结果的相关性打分,从而影响查询结果的准确性 单节点上存放过多的分片会造成资源的浪费,也会影响性能

        3.2  ES集群部署

        部署的方式为二进制和rpm结合版本

        (一)集群环境

集群最少 3 个节点, 集群的每个节点都需要使用非 root 用户(二进制方式)启动。

1 在每个节点上修改安装主目录的属主和属组

 #二进制
 chown  -R ela.ela  /usr/local/elasticsearch-7.10.0

2 在每个节点上设置系统内核参数

设置内存映射

sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p

还需要设置关于这个进程可以打开的文件描述符数量

3 不同的版本依赖不同版本的 Java : 

        (二)二进制方式

官方链接:https://www.elastic.co/cn/support/matrix#matrix_jvm

1 下载二进制压缩包:

#二进制
 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz

程序的主目录会是: /usr/local/elasticsearch-7.10.0

这里假设变量 ES_HOME 的值是 /usr/local/elasticsearch-7.10.0, 此变量将会在下文以及以后的文章中使用。

2 目录结构介绍 :

 3 在每个节点创建用户 ela :

#二进制
useradd ela

4 在每个节点上对 ela 用户授权 :

#二进制
chown -R ela.ela /usr/local/elasticsearch-7.10.0

5 在每个节点设置如下集群参数 :

默认情况下 Elasticsearch 会使用: $ES_HOME/config/elasticsearch.yml 作为配置文件启动进程。

编译配置文件 /usr/local/elasticsearch-7.10.0/config/elasticsearch.yml 并添加如下内容:

ela1 节点 设置的内容如下:

cluster.name: elk
node.name: ela1    #s
node.data: true
network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts: #官方指定写法如下,3台机器一样
   - ela1  #节点1主机名称
   - 192.168.122.106:9300  #节点2的ip加端口
   - 192.168.122.218  #节点3的ip
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]

ela2 节点设置的内容如下:

cluster.name: elk
node.name: ela2
node.data: true
network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts:
   - ela1
   - 192.168.122.106:9300
   - 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]

ela3 节点设置的内容如下:

cluster.name: elk
node.name: ela3
node.data: true
network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts:
   - ela1
   - 192.168.122.106:9300
   - 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]

参数说明

  • cluster.name 集群名称,各节点配成相同的集群名称。

  • node.name 节点名称,各节点配置不同。

  • node.data 指示节点是否为数据节点。数据节点包含并管理索引的一部分。

  • network.host 绑定节点IP。

  • http.port 监听端口。

  • path.data 数据存储目录。

  • path.logs 日志存储目录。

  • discovery.seed_hosts 指定集群成员,用于主动发现他们,所有成员都要写进来,包括自己,每个节点中应该写一样的信息。

  • cluster.initial_master_nodes 指定有资格成为 master 的节点

  • http.cors.enabled 用于允许head插件访问ES。

  • http.cors.allow-origin 允许的源地址。

注意:
  • 当您为提供自定义设置时 network.host,Elasticsearch会假设您正在从开发模式过渡到生产模式,并将许多系统启动检查从警告升级到异常。

  • cluster.initial_master_nodes 中的节点名称需要和 node.name 的名称一致。

        (三)启动集群

在每个节点上启动 elasticsearch 进程

注意:yum方式直接启动服务即可,以下为二进制方式的启动

切换到普通用户 ela,yum安装的直接使用systemctl start elasticsearch启动。

# su - ela

执行如下命令:

# cd /usr/local/elasticsearch-7.10.0

# ./bin/elasticsearch -d -p /tmp/elasticsearch.pid

-d 后台运行 -p 指定一个文件,用于存放进程的 pid

默认端口号是 :

  • 9200 用于外部访问的监听端口,比如查看集群状态,向其传输数据,查询数据等

  • 9300 用户集群中节点之间的互相通信,比如主节点的选举,集群节点信息的通告等。

注意:如果集群配置错误,想重新初始化集群,只需要删除数据目录,重启服务即可

         (四)日志        

日志消息可以在 $ES_HOME/logs/ 目录中找到

YUM安装的日志:cat /var/log/elasticsearch/elasticsearch.log

假如启动失败,从这个日志中查询报错信息

        (五)查看集群健康状态

# curl -X GET "localhost:9200/_cat/health?v"

三种不同状态的含义

  • 黄色 如果您仅运行单个Elasticsearch实例,则集群状态将保持黄色。单 节点群集具有完整的功能,但是无法将数据复制到另一个节点以提供弹性。

  • 绿色 副本分片必须可用,群集状态为绿色。

  • 红色 如果群集状态为红色,则某些数据不可用。

        (六)查看集群节点信息

# curl -X GET "localhost:9200/_cat/nodes?v"

        3.3  关闭 Elasticsearch 进程

# 二进制方式
# pkill -F /tmp/elasticsearch.pid

        3.3   排错

一般报错,常出现之前使用 root 用户启动,之后又使用普通用户启动的情况。 还有集群节点的 IP 地址变化的情况。

# 找到进程
[ela@ela1 elasticsearch-7.10.0]$ jdk/bin/jps
8244 Jps
7526 Elasticsearch

# 杀死进程
[ela@ela1 elasticsearch-7.10.0]$ kill -9 7526

查看相关日志:

logs/elk.log

根据日志修改相关配置信息

解决完成后执行如下操作

# 删除数据目录中的所有文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf data/*

# 删除日志
[ela@ela1 elasticsearch-7.10.0]$ rm -rf logs/*


# 删除 keystore 文件
[ela@ela1 elasticsearch-7.10.0]$ rm -rf config/elasticsearch.keystore

# 重新启动进程
[ela@ela1 elasticsearch-7.10.0]$ bin/elasticsearch -d -p /tmp/elk.pid

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

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

相关文章

Revit教程:标注技巧,底部延伸距离“设置,实时轴号

一、Revit在三维视图中的高程点标注技巧 一般在平面图上高程点是水平放置的,但是在三维显示中,如何将高程点水平放置呢? 在三维视图中,有些时候根据项目要求,要在建筑上放置高程点,但是将视图旋转以后,高程…

【python】anaconda 管理 python 环境

anaconda 管理虚拟环境anaconda 简介python 虚拟环境的安装查看当前 anaconda中所有的虚拟环境创建新的虚拟环境激活所创建的虚拟环境删除指定的虚拟环境退出当前虚拟环境查看当前虚拟环境中所有安装的库安装常用包pycharmpycharm 下环境配置pycharm 使用anaconda 简介 anacon…

新能源车动力总成技术探讨:混动和纯电之争、电驱动未来发展趋势

随着我国节能与新能源汽车渗透率提升,对节能与新能源车各种技术路线特别是动力总成技术的探讨,也成为汽车产业各级企业人士讨论的热点。爱普搜汽车、精研院邀请了汽车行业众多整车厂、Tier 1/2企业、中汽协、汽车技术咨询公司的技术专家/高管&#xff0c…

数据结构与算法之最小爬楼梯费用动态规划

继续上一道题目,在上一道题目的基础之上,我们来解决这一道爬楼梯最小费用题。一.题目描述二.思路(动态规划五部曲)确定dp数组以及下标的含义使用动态规划,就要有一个数组来记录状态,本题只需要一个一维数组dp[i]就可以了。dp[i]的…

剑指 Offer 34. 二叉树中和为某一值的路径

摘要 剑指 Offer 34. 二叉树中和为某一值的路径 注意到本题的要求是,找到所有满足从根节点到某个叶子节点经过的路径上的节点之和等于目标和的路径。核心思想是对树进行一次遍历,在遍历时记录从根节点到当前节点的路径和,以防止重复计算。 …

如何写出一份优秀的简历和求职信?

写一份优秀的简历和求职信是成功求职的重要一步。 01、简历 突出重点信息:把最重要的信息放在简历的前面,例如您的工作经验和教育背景等。 使用简明扼要的语言:在简历中使用简短的句子和简明扼要的语言,让招聘者能够快速了解您的…

Java 诊断工具Arthas--优化速度+堆栈判断

文章目录前言使用总结前言 我们在日常开发中,当我们遇到大数据量处理的时候,总是苦恼有时候到底慢在哪? 在coding的时候就要注意以下几点: 循环内打印日志循环内查询sql循环内多次发送http请求查询的时候尽量指定查询字段&#…

Redis的过期策略

Redis 过期删除与内存淘汰 #Redis 使用的过期删除策略是什么? Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时,Red…

GEE学习笔记 五十四:QGIS展示3D的高程数据

QGIS作为一个开源的非常好用的本地GIS工具,这里不在赘述,这里说它的一个比较有意思的内容。通过DEM数据展示3D地形。 下载DEM(高程数据) 比如从官网下载,或者从别的地方获取,这里就不在赘述。我这里下载使…

BatchNorm与LayerNorm的比较

Batch Normalization存在的一些问题 (1)BN在mini-batch较小的情况下不太适用 BN是对整个mini-batch的样本统计均值和方差 当训练样本数很少时,样本的均值和方差不能反映全局的统计分布信息,从而导致效果下降 (2&am…

【ROS2开发】BOOST-C++实现topic通信

一、说明 不知是何原因,ROS2居然没有集成开发环境,因此工程管理、编译等是全手工活。本文将详细讲述工程构建、编译、topic节点具体内容。让初学者直接进入战场环境。结合图文,尽量看清开发过程。 二、目标实现 我们这里就是要手工构建一个Pu…

根据数据规模猜解法

文章目录0、结论1、题目1.1 题目描述1.2 思路分析1.2.1 暴力递归解法11.2.2 解法1修改成动态规划1.2.3 暴力递归解法21.2.4 解法2修改成动态规划1.2.5 对数器1.3 小结2、总结0、结论 1)C/C,1秒处理的指令条数为 10810^8108 2)Java等语言&am…

大数据核心技术是什么

大数据的核心层:数据采集层、数据存储与分析层、数据共享层、数据应用层,可能叫法有所不同本质上的角色都大同小异。 大数据的核心技术都包括什么? 1、数据采集 数据采集的任务就是把数据从各种数据源中采集和存储到数据存储上&#xff0c…

多种方法进行去基线处理

目录detrend函数去除基线多项式拟合原函数BEADS 基线处理小波算法经验模态分解(EMD)参考detrend函数去除基线 detrend函数只能用于去除线性趋势,对于非线性的无能为力。 函数表达式:y scipy.signal.detrend(x): 从信号中删除线…

3.【Linux】安装 elasticsearch-7.10.0 单机版

1.下载 版本 JDK 11ES elasticsearch-7.10.0 jdk安装 下载: wget https://download.java.net/openjdk/jdk11/ri/openjdk-1128_linux-x64_bin.tar.gz配置环境变量:# 编辑配置文件 vim /etc/profile# Java11环境变量配置 export JAVA_HOME/devtools/ja…

【编程语言】AWK 极简教程

1 概述 AWK 是一种解释执行的编程语言。它非常的强大,被设计用来专门处理文本数据。AWK 的名称是由它们设计者的名字缩写而来 —— Afred Aho, Peter Weinberger 与 Brian Kernighan。 由 GNU/Linux 发布的 AWK 版本通常被称之为 GNU AWK,由自由软件基金( Free Software Fou…

《爆肝整理》保姆级系列教程python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)

简介 大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好&am…

2023前端二面手写面试题总结

创建10个标签&#xff0c;点击的时候弹出来对应的序号 var a for(let i0;i<10;i){adocument.createElement(a)a.innerHTMLi<br>a.addEventListener(click,function(e){console.log(this) //this为当前点击的<a>e.preventDefault() //如果调用这个方法&#x…

Nordic nRF芯片FDS模块学习

FDS系统学习 文章目录FDS系统学习一、ROM&#xff0c;RAM&#xff0c;FLASH作用二、ROM,RAM和FLASH在单片中的运作原理三、Flash访问模块FDS用法1. FDS在sdk_config.h中的配置2. fds_register()注册3. fds_record_write()写记录4. fds_record_find()查找5. fds_record_open()读…

PWM实验

目录 一、pwm与RGB LCD 二、硬件原理 1、I.MX6U PWM 频率和占空比 2、原理图与数据手册 3、寄存器 PWM1_PWMCR PWM1_PWMIR​编辑 PWM1_PWMSR​编辑 PWM1_PWMPR​编辑 PWM1_PWMSAR​编辑 三、代码编写 1、编写bsp_backlight.h 2、编写bsp_backlight.c 一、pwm与RGB …