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


    一、ELK简介

            ELK是elasticsearchlogstash、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 中文社区

    1. ##可以选择直接下载安装,也可以选择下载好安装包后安装---->我们选后者
    2. ##安装7.6版本-->该版本中含有jdk的软件包,不需要再次安装
    3. rpm -ivh elasticsearch-7.6.1-x86.rmp
    4. ##配置主配置文件:vim /etc/elasticsearch/elasticsearch.yml
    5. ----------------------------------------------------------
    6. cluster.name:myes --集群名字
    7. node.name: server1 --节点名字
    8. path.data: /var/lib/elasticsearch --数据目录;
    9. path.logs: /var/log/elasticsearch --日志目录
    10. network.host: 0.0.0.0.0 --监听本机所有接口
    11. http.port: 9200 --http的服务端口:9200
    12. discover.seed_hosts:["server1","server2","server3"] --设定集群中的主节点
    13. cluster.initial_master_nodes: ["server1"] --集群引导时的初始节点
    14. ----------------------------------------------------------
    15. ##vm.option是一些程序里边的java的配置参数的一个集合,jvm.options文件里面设定了锁定内存为1G
    16. -----------------------------------------------------------------
    17. -Xms1g
    18. -Xmx1g
    19. -----------------------------------------------------------------
    20. ##修改系统限制 vim /etc/security/limits.conf,设定最大打开文件数和进程数
    21. -----------------------------------------------------------------
    22. elasticsearch soft memlock unlimited
    23. elasticsearch hard memlock unlimited
    24. elasticsearch - nofile 65536
    25. elasticsearch - nproc 4096
    26. -----------------------------------------------------------------

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

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

    1. ##查看系统本身的信息
    2. sysctl -a | grep file
    3. ##修改systemd启动文件vim /usr/lib/systemd/system/elasticsearch.service
    4. --------------------------------------------
    5. [service]
    6. LimitMEMLOCK=infinity
    7. --------------------------------------------
    8. ##刷新设置
    9. systemctl daemon-reload
    10. ##关闭交换分区:关闭所有配置文件的交换空间
    11. swapoff -a
    12. ##设置elasticsearch开机自己,
    13. systemctl enable --now elasticsearch.service
    14. ##网页访问:http://192.168.19.71:9200

     三、搭建elasticsearch集群

    在server2\3上分别操作

    1. ##安装软件包
    2. rpm -ivh elasticsearch-7.6.1-x86.rmp
    3. ##主配置文件修改
    4. scp /etc/elasticsearch/elasticsearch.yml server2:/etc/elasticsearch/elasticsearch.yml
    5. -------------------------------------------
    6. node.name: server2 --其他均不变
    7. -------------------------------------------
    8. ##修改server2、server3的系统安全限制 :/etc/security/limits.conf
    9. -----------------------------------------------------------------
    10. elasticsearch soft memlock unlimited
    11. elasticsearch hard memlock unlimited
    12. elasticsearch - nofile 65536
    13. elasticsearch - nproc 4096
    14. -----------------------------------------------------------------
    15. ##修改systemd启动文件vim /usr/lib/systemd/system/elasticsearch.service
    16. --------------------------------------------
    17. [service]
    18. LimitMEMLOCK=infinity
    19. --------------------------------------------
    20. ##刷新设置
    21. systemctl daemon-reload
    22. ##关闭交换分区:关闭所有配置文件的交换空间
    23. swapoff -a
    24. ##重启服务
    25. systemctl enable --now elasticsearch
    26. ##访问测试页: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

    1. ##通过压缩包进行配置
    2. wget https://github.com/lmenezes/cerebro/releases/download/v0.8.1/cerebro-0.8.1.tgz
    3. tar xzf cerebro-0.8.1.tgz
    4. ##启动
    5. cerebro-0.8.1/bin/cerebro
    6. [info] play.api.Play - Application started (Prod)
    7. [info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
    8. ##指定端口
    9. bin/cerebro -Dhttp.port=8080
    10. ##配置服务器--非必须:如果经常使用的话,可以先在conf/application.conf中配置好ElasticSearch服务器地址
    11. --------------------------------------------
    12. hosts = [
    13. {
    14. host = "http://192.168.19.71:9200"
    15. name = "Some Cluster"
    16. },
    17. # Example of host with authentication
    18. #{
    19. # host = "http://some-authenticated-host:9200"
    20. # name = "Secured Cluster"
    21. # auth = {
    22. # username = "username"
    23. # password = "secret-password"
    24. # }
    25. #}
    26. ]
    27. --------------------------------------------
    28. ##使用:浏览器打开连接http://192.168.58.101:9000

    4.2 header

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

    1. ##获取安装包,并安装
    2. wget https://github.com/mobz/elasticsearch-head/archive/master.zip
    3. wget https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v9.11.2/node-v9.11.2-linux-x64.tar.gz
    4. yum install -y unzip --解压master.zip
    5. unzip master.zip
    6. tar zxf node-v9.11.2-linux-x64.tar.gz
    7. ##安装elasticsearch的插件
    8. ##更换npm源安装--进入解压目录elasticsearch-head-master,由于npm慢,所以更换为cnpm源。查看版本号
    9. cd elasticsearch-head-master/
    10. npm install -g cnpm --registry=https://registry.nmp.taobao.org
    11. cnmp -v
    12. ##安装bzip2 -->cnmp的依赖
    13. yum install bzip2
    1. ##修改配置
    2. ##修改ES主机ip和端口: vim _site/app.js
    3. ------------------------------------------------------
    4. 修改主机的IP和端口:
    5. 192.168.19.719200
    6. ------------------------------------------------------
    7. ##启动head
    8. cnmp run start &
    9. ##通过网页可以访问:http://192.168.19.71:9100
    10. ##vim /etc/elasticsearch/elasticsearch.yml
    11. -------------------------------------------
    12. ##修改为跨域支持
    13. http.cors.enabled: true ----是否支持跨域
    14. http.cors.allow-origin: “*” ----表示支持所有域名
    15. -------------------------------------------
    16. ##重启服务
    17. systemctl restart elasticsearch.service
    18. ##网页再次访问:192.168.19.719100
    19. ##网页监控:192.168.19.719200

    五、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: 是否禁用跨集群查询;

    1. ##配置server1只做master节点
    2. ##vim /etc/elasticsearch/elasticsearch.yml
    3. ------------------------------------------------
    4. noda.data: false
    5. ------------------------------------------------
    6. ##因为之前启动过,所以节点上有数据,此时还需要清理数据:cat /var/log/elasticsearch/my.es.log
    7. ##查看Elasticsearch安装目录
    8. rpm -ql elasticsearch
    9. ##清理 ---之前的数据会同步到其他节点
    10. cd /usr/share/elasticsearch/bin
    11. ./elasticsearch-node repurpose
    12. ##启动elasticsearch服务
    13. systemctl restart elasticsearch.service

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

  • 相关阅读:
    《全职猎人》
    docker部署zabbix 6.0高可用集群实验
    2022杭电多校第一场
    西门子低代码 9.14版本: 满足不同需求
    Elasticsearch学习
    经济下行基建托底,偶数湖仓一体打造坚实新基建数字底座
    JPA在事务结束时自动更新查询数据
    MySQL【第一章】——入门级
    js设计模式:享元模式
    单例模式、工厂模式 c++关键字 static
  • 原文地址:https://blog.csdn.net/qq_41056224/article/details/126747214