ELK日志分析平台 1 (elasticsearch的安装与配置)

一、日志分析系统ELK实战

ELK是elasticsearch、logstash、kibana的组合简称。安装时,需要注意:三个软件的版本需要匹配。
其中elasticsearch主要用来存储检索数据和数据处理;logstash主要用来数据采集和过滤然后给es;kibana主要从es里面加载数据然后展示。

1. elasticsearch 简介

Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎,它具有如下特点:

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索;
  • 一个分布式实时分析搜索引擎;
  • 能胜任上百个服务节点的扩展,并支持 PB 级别(pb指petabyte,它是较高级的存储单位)的结构化或者非结构 化数据。

2. 基础模块

  • cluster:管理集群状态,维护集群层面的配置信息;
    alloction:封装了分片分配相关的功能和策略;
    discovery:发现集群中的节点,以及选举主节点
    gateway:对收到master广播下来的集群状态数据的持久化存储;
    indices:管理全局级的索引设置;
    http:允许通过JSON over HTTP的方式访问ES的API。
    transport:用于集群内节点之间的内部通信;
    engine:封装了对Lucene的操作及translog的调用。

3. elasticsearch应用场景

  • 信息检索、日志分析、业务数据分析、数据库加速、运维指标监控
    官网:点击网址

二、elasticsearch安装与配置

实验环境:
准备三台新的虚拟机server7(172.25.36.7)、server8(172.25.36.8)、server9(172.25.36.9),三个虚拟机分别分配2G内存,先建立单节点,后面创建集群。

准备elasticsearch的安装包,官网下载点击
我们已经在真机提前下载了软件,将安装包发送给server7
在这里插入图片描述
由于es里面(从7.6版本开始)就包含了jdk,因此无需再装jdk(把之前安装的jdk卸载),安装软件es
在这里插入图片描述
编辑主配置文件:/etc/elasticsearch/
在这里插入图片描述
设置集群名称为my-es,节点名称为server7(一台一台配置,主机名需要解析);
path.data: /var/lib/elasticsearch :数据目录;
path.logs: /var/log/elasticsearch :日志目录
在这里插入图片描述
设置监听本机所有接口,http服务端口为9200(监听端口)
在这里插入图片描述
设定集群中的主节点为:server7/8/9;
指定集群引导时的初始主节点为:server7
在这里插入图片描述
注意:由于修改了集群名字,现在查看日志用cat /var/log/elasticsearch/my-es.log;
jvm.option是一些程序里边的java的配置参数的一个集合,jvm.options文件里面设定了锁定内存为1G
在这里插入图片描述
注意:Xms设置不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件 系统缓存。但不要超过32G。
在这里插入图片描述
修改系统限制 vim /etc/security/limits.conf,设定最大打开文件数和进程数
在这里插入图片描述
max-file:表示系统级别的能够打开的文件句柄①的数量;

文件句柄:在 Linux 环境中,任何事物都是用文件来表示,设备是文件,目录是文件,socket 也是文件。用来表示所处理对象的接口和唯一接口就是文件。应用程序在读/写一个文件时,首先需要打开这个文件,打开的过程其实质就是在进程与文件之间建立起连接,句柄的作用就是唯一标识此连接。此后对文件的读/写时,目标文件就由这个句柄作为代表。最后关闭文件其实就是释放这个句柄的过程,使得进程与文件之间的连接断开。

在这里插入图片描述
修改systemd启动文件vim /usr/lib/systemd/system/elasticsearch.service;
在service语句块下添加 LimitMEMLOCK=infinity
在这里插入图片描述
刷新设置
在这里插入图片描述
关闭swap交换分区(内存小的,也可以不禁用);
swapoff -a:关闭配置文件“/etc/fstab”中所有的交换空间。
在这里插入图片描述
在这里插入图片描述
开启elasticsearch,并设置开机自启,查看开启了9200端口
在这里插入图片描述
真机网页访问http://172.25.36.7:9200,测试成功
在这里插入图片描述

三、搭建elasticsearch集群

接下来给配置server8/9,server7把rpm给server8/9发一份;
在这里插入图片描述
server8安装elasticsearch
在这里插入图片描述
由于主配置文件基本一致,所以可以将server7的elasticsearch.yml主配置文件给server8/9发一份,再进行修改;
server8进入/etc/elasticsearch/目录,编辑主配置文件elasticsearch.yml
在这里插入图片描述
将节点名称改为server8,其他都不变
在这里插入图片描述
类似的,server9进入/etc/elasticsearch/目录,编辑主配置文件elasticsearch.yml,把节点名称改为server9,其他都不变
在这里插入图片描述
同样的,server8/9修改系统限制 : /etc/security/limits.conf ;
修改systemd启动文件:/usr/lib/systemd/system/elasticsearch.service;
关闭swap交换分区;
刷新服务,开启es
在这里插入图片描述
在这里插入图片描述
测试,网页访问http://172.25.36.8:9200,测试成功
在这里插入图片描述
在这里插入图片描述
测试,网页访问http://172.25.36.9:9200,测试成功
在这里插入图片描述

四、elasticsearch可视化方法

1. cerebro插件

由于elasticsearch看着不直观,所以想要图形化的界面,引入了cerebro。cerebro是镜像,正好真机是8.2的红帽系统,自带podman,所以在真机导入镜像:podman run -d --name cerebro -p 9000:9000 lmenezes/cerebro(加-d有可能会出现问题)运行该镜像,默认开放9000端口。
在这里插入图片描述
网页访问http://172.25.36.250:9000,进入,需要输入监听的地址,http://172.25.36.7:9200
在这里插入图片描述
成功进入cerebro,点击nodes,可以看到集群中三个节点都在
在这里插入图片描述

2. elasticsearch-head插件

elasticsearch-head是elasticsearch自带插件。
下载elasticsearch-head插件,官网点击,head插件本质上是一个nodejs的工程,因此需要安装nodejs,点击
真机将提前下载好的安装包发送给server7
在这里插入图片描述
在这里插入图片描述
先安装nodejs
在这里插入图片描述
虚拟机需要联网
在这里插入图片描述
在这里插入图片描述
由于master.zip需要解压工具,所以安装unzip
在这里插入图片描述
解压缩
在这里插入图片描述
在这里插入图片描述
elasticsearch插件安装
更换npm源安装:进入解压目录elasticsearch-head-master,由于npm慢,所以更换为cnpm源。查看版本号
在这里插入图片描述
安装bzip2,(安装cnpm需要用到);
可以把nodejs项目所需要的依赖项都安装好
在这里插入图片描述
修改ES主机ip和端口:进入_site/子目录,查看app.js文件
在这里插入图片描述
可以看到监控的是9200端口
在这里插入图片描述
启动head插件:server7后台运行head插件,端口是9100
在这里插入图片描述
进入/etc/elasticsearch目录,修改主配置文件elasticsearch.yml;
在这里插入图片描述
修改ES跨域支持
: http.cors.enabled: true :是否支持跨域; http.cors.allow-origin: “*” :表示支持所有域名
在这里插入图片描述
重启ES服务
在这里插入图片描述
网页访问head插件服务http://172.25.36.7:9100,监控http://172.25.36.7:9200的elasticsearch,可以看到集群的三个节点。✳代表master节点(可以看到server7/8上面有分片)
在这里插入图片描述
创建索引,名为demo
在这里插入图片描述
索引信息
在这里插入图片描述

五、elasticsearch节点角色

节点角色功能
Master主要负责集群中索引的创建、删除以及数据的Rebalance等操作。Master不负责数据的索引和检索,所以负载较轻。当Master节点失联或者挂掉的时候,ES集群会自动从其他Master节点选举出一个Leader
Data Node主要负责集群中数据的索引和检索,一般压力比较大
Coordinating Node原来的Client node的,主要功能是来分发请求和合并结果的。所有节点默认就是Coordinating node,且不能关闭该属性
Ingest Node专门对索引的文档做预处理

在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题。默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。

  • 节点角色是由以下属性控制:
    1、node.master: 这个属性表示节点是否具有成为主节点的资格(注意:此属性的值为true,并不意味着这个节点就是主节点,只意味着有成为主节点的资格。因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的);
    2、node.data: 这个属性表示节点是否存储数据
    3、node.ingest: 是否对文档进行预处理;
    4、search.remote.connect: 是否禁用跨集群查询;
    默认情况下这些属性的值都是true。

生产集群中可以对这些节点的职责进行划分 :
• 建议集群中设置3台以上的节点作为master节点,这些节点只负责成为 主节点,维护整个集群的状态。
• 再根据数据量设置一批data节点,这些节点只负责存储数据,后期提供 建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点 的压力也会比较大。
• 所以在集群中建议再设置一批协调节点,这些节点只负责处理用户请求, 实现请求转发,负载均衡等功能。

server7编辑主编配置文件/etc/elasticsearch/elasticsearch.yml,添加node.data: false语句,表示该主机不存放数据
请添加图片描述
重启服务失败
请添加图片描述
查看日志,这是因为server7上本身有分片信息(副本),现在进行Data Node设置之前必须先进行清理
请添加图片描述
通过该命令查看Elasticsearch安装目录:rpm -ql elasticsearch
请添加图片描述
进入/usr/share/elasticsearch/bin目录
请添加图片描述
进行清理
请添加图片描述
重启elasticsearch服务成功
请添加图片描述
可以看到,原本server7上的副本自动被迁移到了server5上,此时server7现在没有data角色
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值