ELK日志分析平台(一)—elasticsearch的安装和配置

一、ELK简介

        ELK是elasticsearch、logstash、kibana的组合简称。其中elasticsearch主要用来存储检索数据和数据处理;logstash主要用来数据采集和过滤然后给es;kibana主要从es里面加载数据然后展示。

        Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎,它具有一般用于:信息检索、日志分析、业务数据分析、数据库加速、运维指标监控。具有如下特点:

    一个分布式的实时文档存储,每个字段可以被索引与搜索;

    一个分布式实时分析搜索引擎;

    能胜任上百个服务节点的扩展,并支持 PB 级别(pb指petabyte,它是较高级的存储单位)的结构化或者非结构 化数据。

Elasticsearch的基础模块包括:

        cluster: 管理集群状态,维护集群层面的配置信息;

        alloction: 封装了分片分配相关的功能和策略;

        discovery: 发现集群中的节点,以及选举主节点;

        gateway: 对收到master广播下来的集群状态数据的持久化存储;

        indices: 管理全局级的索引设置;

        http: 允许通过JSON over HTTP的方式访问ES的API;

        transport: 用于集群内节点之间的内部通信;

        engine: 封装了对Lucene的操作及translog的调用。

二、安装elasticsearch

官网:免费且开放的搜索:Elasticsearch、ELK 和 Kibana 的开发者 | Elastic

环境说明:使用三台机器做集群架构,每台2G内存(有锁定内存)

安装:Installing Elasticsearch | Elasticsearch Guide [8.4] | Elastic

软件包下载:下载中心 - Elastic 中文社区

##可以选择直接下载安装,也可以选择下载好安装包后安装---->我们选后者
##安装7.6版本-->该版本中含有jdk的软件包,不需要再次安装
rpm -ivh elasticsearch-7.6.1-x86.rmp

##配置主配置文件:vim /etc/elasticsearch/elasticsearch.yml
----------------------------------------------------------
cluster.name:myes                     --集群名字
node.name: server1                    --节点名字
path.data: /var/lib/elasticsearch     --数据目录;
path.logs: /var/log/elasticsearch     --日志目录
network.host: 0.0.0.0.0               --监听本机所有接口
http.port: 9200                       --http的服务端口:9200
discover.seed_hosts:["server1","server2","server3"]  --设定集群中的主节点
cluster.initial_master_nodes: ["server1"]            --集群引导时的初始节点
----------------------------------------------------------

##vm.option是一些程序里边的java的配置参数的一个集合,jvm.options文件里面设定了锁定内存为1G
-----------------------------------------------------------------
-Xms1g
-Xmx1g
-----------------------------------------------------------------

##修改系统限制 vim /etc/security/limits.conf,设定最大打开文件数和进程数
-----------------------------------------------------------------
elasticsearch    soft memlock unlimited
elasticsearch    hard memlock unlimited
elasticsearch - nofile 65536
elasticsearch - nproc 4096
-----------------------------------------------------------------

[注]:max-file:表示系统级别的能够打开的文件句柄①的数量

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

##查看系统本身的信息
sysctl -a | grep file

##修改systemd启动文件vim /usr/lib/systemd/system/elasticsearch.service
--------------------------------------------
[service]
 LimitMEMLOCK=infinity
--------------------------------------------

##刷新设置
systemctl daemon-reload

##关闭交换分区:关闭所有配置文件的交换空间
swapoff -a 

##设置elasticsearch开机自己,
systemctl enable --now elasticsearch.service

##网页访问:http://192.168.19.71:9200

 三、搭建elasticsearch集群

在server2\3上分别操作

##安装软件包
rpm -ivh elasticsearch-7.6.1-x86.rmp

##主配置文件修改
scp /etc/elasticsearch/elasticsearch.yml server2:/etc/elasticsearch/elasticsearch.yml
-------------------------------------------
node.name: server2   --其他均不变
-------------------------------------------

##修改server2、server3的系统安全限制 :/etc/security/limits.conf 
-----------------------------------------------------------------
elasticsearch    soft memlock unlimited
elasticsearch    hard memlock unlimited
elasticsearch - nofile 65536
elasticsearch - nproc 4096
-----------------------------------------------------------------
##修改systemd启动文件vim /usr/lib/systemd/system/elasticsearch.service
--------------------------------------------
[service]
 LimitMEMLOCK=infinity
--------------------------------------------

##刷新设置
systemctl daemon-reload

##关闭交换分区:关闭所有配置文件的交换空间
swapoff -a 

##重启服务
systemctl enable --now elasticsearch

##访问测试页:http://192.168.19.71:9200

 四、elasticsearch的图形化界面

4.1 cerebro

        cerebro是镜像,需要docker的引擎。但是红帽8自带podman,所以在真机导入镜像:podman run -d --name cerebro -p 9000:9000 lmenezes/cerebro(加-d有可能会出现问题)运行该镜像,默认开放9000端口。然后访问网页即可:http://192.168.19.71:9200

##通过压缩包进行配置
wget https://github.com/lmenezes/cerebro/releases/download/v0.8.1/cerebro-0.8.1.tgz
tar xzf cerebro-0.8.1.tgz

##启动
cerebro-0.8.1/bin/cerebro
[info] play.api.Play - Application started (Prod)
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

##指定端口
bin/cerebro -Dhttp.port=8080

##配置服务器--非必须:如果经常使用的话,可以先在conf/application.conf中配置好ElasticSearch服务器地址
--------------------------------------------
hosts = [
  {
    host = "http://192.168.19.71:9200"
    name = "Some Cluster"
  },
  # Example of host with authentication
  #{
  #  host = "http://some-authenticated-host:9200"
  #  name = "Secured Cluster"
  #  auth = {
  #    username = "username"
  #    password = "secret-password"
  #  }
  #}
]
--------------------------------------------

##使用:浏览器打开连接http://192.168.58.101:9000

4.2 header

        下载elasticsearch-head插件,官网点击,head插件本质上是一个nodejs的工程,因此需要安装nodejs,点击

##获取安装包,并安装
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v9.11.2/node-v9.11.2-linux-x64.tar.gz

yum install -y unzip   --解压master.zip
unzip master.zip
tar zxf node-v9.11.2-linux-x64.tar.gz

##安装elasticsearch的插件
##更换npm源安装--进入解压目录elasticsearch-head-master,由于npm慢,所以更换为cnpm源。查看版本号
cd elasticsearch-head-master/
npm install -g cnpm --registry=https://registry.nmp.taobao.org
cnmp -v 

##安装bzip2 -->cnmp的依赖
yum  install bzip2
##修改配置
##修改ES主机ip和端口: vim _site/app.js
------------------------------------------------------
修改主机的IP和端口:
192.168.19.71:9200
------------------------------------------------------

##启动head
cnmp run start &

##通过网页可以访问:http://192.168.19.71:9100

##vim /etc/elasticsearch/elasticsearch.yml
-------------------------------------------
##修改为跨域支持
http.cors.enabled: true         ----是否支持跨域
http.cors.allow-origin: “*”     ----表示支持所有域名
-------------------------------------------

##重启服务
systemctl restart elasticsearch.service

##网页再次访问:192.168.19.71:9100
##网页监控:192.168.19.71:9200

五、elasticsearch的节点角色

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

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

   角色属性的控制:--默认情况下这些属性的值都是true

    node.master:这个属性表示节点是否具有成为主节点的资格(注意:此属性的值为true,并不意味着这个节点就是主节点,只意味着有成为主节点的资格。因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的);

   node.data:这个属性表示节点是否存储数据;

   node.ingest: 是否对文档进行预处理;

   search.remote.connect: 是否禁用跨集群查询;

##配置server1只做master节点
##vim /etc/elasticsearch/elasticsearch.yml
------------------------------------------------
noda.data: false
------------------------------------------------

##因为之前启动过,所以节点上有数据,此时还需要清理数据:cat /var/log/elasticsearch/my.es.log
##查看Elasticsearch安装目录
rpm -ql elasticsearch        

##清理    ---之前的数据会同步到其他节点
cd /usr/share/elasticsearch/bin
./elasticsearch-node repurpose

##启动elasticsearch服务
systemctl restart elasticsearch.service

参考文章:https://www.jianshu.com/p/433d821f9667

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值