欢迎光临
我们一直在努力

ELK企业级日志分析平台3——ES数据备份 & 集群监控 & ELFK+Kafka 架构部署

1 ES数据备份与恢复

1.1 配置快照仓库(nfs)

nfs 服务端配置

[root@server4 ~]# yum install -y nfs-utils
[root@server4 ~]# mkdir -p /data/es-backup
# 创建ES快照专用存储目录
[root@server4 ~]# chmod 777 /data/es-backup/
# 给目录最高读写权限,避免ES权限不足无法写入快照
[root@server4 ~]# vim /etc/exports
# 共享目录允许所有客户端访问
[root@server4 ~]# exportfs -rv
# 设置NFS开机自启,并立即启动NFS服务
[root@server4 ~]# systemctl enable –now nfs

在这里插入图片描述

ES节点配置

[root@server1 ~]# yum install -y nfs-utils
[root@server1 ~]# mkdir -p /data/es-backup
# 创建本地挂载目录,和NFS服务端共享目录同名,统一快照存储路径
[root@server1 ~]# mount 192.168.40.144:/data/es-backup /data/es-backup
# 挂载NFS服务端共享目录
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
# 声明ES允许创建快照仓库的本地目录
[root@server1 ~]# systemctl restart elasticsearch

在这里插入图片描述
server2和server3同上
滚动重启
在这里插入图片描述
ES集群重启之后恢复默认值
在这里插入图片描述

1.2 通过 API 创建仓库

在这里插入图片描述
验证仓库是否创建成功
在这里插入图片描述
在 cerebro 页面也可查看到
在这里插入图片描述

1.3 快照管理

创建快照
在这里插入图片描述
在这里插入图片描述
备份所有索引
在这里插入图片描述
备份指定索引
在这里插入图片描述
列出仓库中所有快照
在这里插入图片描述
在这里插入图片描述查看单个快照详情
在这里插入图片描述
监控快照进度

在这里插入图片描述
恢复快照
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除快照
在这里插入图片描述
只剩 syslog 的快照
在这里插入图片描述

2 ES集群监控

2.1 启用xpack认证

X-Pack 是 Elastic 官方为 Elastic Stack(包括 Elasticsearch、Kibana 等)打造的一个扩展组件包,为原本开源的 Elasticsearch 补充了大量企业级和运维管理所需的高级特性。

核心功能

  • 安全 (Security):提供用户身份验证、基于角色的访问控制(RBAC)、节点间加密通信以及审计日志等。它能有效防止未授权访问和数据泄露。

  • 监控 (Monitoring):提供集群、节点、索引等维度的实时性能监控和可视化。这就是你之前看到的 Kibana 监控页面的数据来源。

  • 告警 (Alerting / Watcher):允许你基于数据或集群状态的变化设置条件,触发邮件、Webhook等多种方式的告警通知。

  • 机器学习 (Machine Learning):提供自动异常检测和预测能力,无需复杂算法就能发现数据中的规律和异常。

  • SQL:允许你使用标准的 SQL 语句来查询 Elasticsearch 中的数据,降低了使用门槛。

  • 图表分析 (Graph):用于探索数据实体间的关联关系,适合知识图谱等场景。

  • 报告 (Reporting):可以将 Kibana 的可视化图表生成 PDF 等格式的报告。

  • 在server1上生成证书

    [root@server1 ~]# cd /usr/share/elasticsearch/
    [root@server1 elasticsearch]# bin/elasticsearch-certutil ca
    #设置密码为空
    [root@server1 elasticsearch]# bin/elasticsearch-certutil cert –ca elastic-stack-ca.p12
    [root@server1 elasticsearch]# cp elastic-certificates.p12 /etc/elasticsearch
    [root@server1 elasticsearch]# cd /etc/elasticsearch/
    [root@server1 elasticsearch]# chown elasticsearch elastic-certificates.p12
    [root@server1 elasticsearch]# vim elasticsearch.yml

    在这里插入图片描述
    在这里插入图片描述

    [root@server1 elasticsearch]# systemctl restart elasticsearch.service

    拷贝证书到其它集群节点

    [root@server1 elasticsearch]# scp elastic-certificates.p12 server2:/etc/elasticsearch/
    [root@server1 elasticsearch]# scp elastic-certificates.p12 server3:/etc/elasticsearch/

    server2配置

    [root@server2 ~]# chown elasticsearch /etc/elasticsearch/elastic-certificates.p12
    [root@server2 ~]# vim /etc/elasticsearch/elasticsearch.yml
    [root@server2 ~]# systemctl restart elasticsearch.service

    在这里插入图片描述

    1. `xpack.security.enabled: true`
    开启 Xpack 安全认证,开启后访问 ES 必须账号密码
    2. `xpack.security.transport.ssl.enabled: true`
    开启集群内部通信 SSL 加密,节点之间数据传输加密,防止抓包窃取分片数据
    3. `xpack.security.transport.ssl.verification_mode: certificate`
    证书校验模式:校验对方节点证书合法性,拒绝无证书 / 非法证书节点加入集群
    4. `xpack.security.transport.ssl.keystore.path`
    密钥库路径:存放当前节点私钥 + 证书,用于对外通信加密
    5. `xpack.security.transport.ssl.truststore.path`
    信任库路径:存放集群所有节点的公钥证书,用来验证其他节点身份

    server3同server2

    等待所有集群节点重启成功后,设置认证账户密码

    [root@server1 elasticsearch]# cd /usr/share/elasticsearch/
    [root@server1 elasticsearch]# bin/elasticsearch-setup-passwords interactive
    #为了方便这里我的密码全部设置的一样的

    在这里插入图片描述
    ES启用xpack之后,其它服务都需要配置认证
    用户名 elastic ,密码为自行设置的密码
    在这里插入图片描述

    head插件在访问时,需要在url中输入用户和密码

    [root@server4 ~]# cd elasticsearch-head-master/
    [root@server4 elasticsearch-head-master]# npm run start &

    访问http://192.168.40.144:9100/?auth_user=elastic&auth_password=westos
    在这里插入图片描述
    配置 logstash 访问,将账户和密码写进配置文件

    [root@server5 ~]# cd /etc/logstash/conf.d/
    [root@server5 conf.d]# vim beats.conf

    在这里插入图片描述
    启动程序

    [root@server5 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/beats.conf

    在这里插入图片描述
    配置 kibana 访问

    [root@server4 elasticsearch-head-master]# cd /etc/kibana/
    [root@server4 kibana]# vim kibana.yml

    在这里插入图片描述

    [root@server4 kibana]# systemctl restart kibana.service

    区分两个账户和密码

  • kibana.yml 里的 kibana 账号(后台服务账号)
  • yamlelasticsearch.username: "kibana"
    elasticsearch.password: "westos"

    作用:Kibana 程序自己后台连接 ES 用
    Kibana 启动时,自动用这个账号去 ES 创建 / 维护.kibana索引、保存仪表盘、搜索记录、空间配置;权限很低,只允许操作 Kibana 专属索引,不能用来网页登录;全程后台自动执行,浏览器看不到这个账号。

  • 网页登录的 elastic 账号(超级管理员账号)作用:人手动登录页面、操作业务数据
    内置最高权限超级账号,能查所有索引、创建用户、修改权限、集群配置;打开192.168.40.144:5601弹出的登录框,需要输入用户名 elastic;这个账号不会写到 kibana.yml 配置里。
  • 在这里插入图片描述
    测试

    [root@server1 elasticsearch]# ab -c1 -n 100 http://192.168.40.144/index.html
    [root@server2 ~]# ab -c1 -n 200 http://192.168.40.144/index.html

    在这里插入图片描述
    server5终端有日志打印输出
    在这里插入图片描述

    2.2 metricbeat 监控

    Metricbeat 是 Elastic Stack 中的轻量指标采集器,属于 Beats 家族,专门采集服务器、中间件、数据库性能监控指标,不采集日志。

    核心作用

  • 采集系统指标:CPU、内存、磁盘、网络、负载
  • 组件监控:ES、Logstash、MySQL、Nginx、Redis 运行状态
  • 输出到 Elasticsearch,搭配 Cerebro/Kibana 做监控面板
  • 在这里插入图片描述
    已经检测到 Elasticsearch 节点
    在这里插入图片描述
    选择启动metricbeat的节点,然后根据提示步骤操作
    在这里插入图片描述
    在这里插入图片描述
    将metricbeat-7.6.1-x86_64.rpm 上传到server1的/root

    [root@server1 ~]# scp metricbeat-7.6.1-x86_64.rpm server2:
    [root@server1 ~]# scp metricbeat-7.6.1-x86_64.rpm server3:
    [root@server1 ~]# rpm -ivh metricbeat-7.6.1-x86_64.rpm
    [root@server1 ~]# cd /etc/metricbeat/modules.d/
    [root@server1 modules.d]# metricbeat modules enable elasticsearch-xpack
    # 开启 elasticsearch-xpack 监控模块,采集 ES 性能数据
    [root@server1 modules.d]# vim elasticsearch-xpack.yml
    # ES 开启了 xpack 安全认证,Metricbeat 访问 ES 接口必须携带管理员账号密码,否则采集指标会报错

    在这里插入图片描述

    [root@server1 modules.d]# cd ..
    [root@server1 metricbeat]# vim metricbeat.yml
    # 指定采集到的监控指标最终写入的 ES 服务地址,所有监控数据统一存入该 ES 集群,同样,Metricbeat 写入数据必须携带管理员账号密码
    [root@server1 metricbeat]# systemctl enable –now metricbeat.service

    在这里插入图片描述
    等待 kibana 页面响应,出现如下界面即为成功
    在这里插入图片描述
    server2配置

    [root@server2 ~]# rpm -ivh metricbeat-7.6.1-x86_64.rpm
    [root@server2 ~]# cd /etc/metricbeat/modules.d
    [root@server2 modules.d]# metricbeat modules enable elasticsearch-xpack
    [root@server2 modules.d]# vim elasticsearch-xpack.yml

    在这里插入图片描述

    [root@server2 modules.d]# cd ..
    [root@server2 metricbeat]# vim metricbeat.yml
    [root@server2 metricbeat]# systemctl enable –now metricbeat.service

    在这里插入图片描述
    server3同server2
    三个节点都设置好后,退出设置模式
    在这里插入图片描述
    已经可以监测到数据

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    2.3 ES 日志采集

    安装 filebeat 并修改配置文件

    [root@server1 ~]# rpm -ivh filebeat-7.6.1-x86_64.rpm
    [root@server1 ~]# cd /etc/filebeat/modules.d
    [root@server1 modules.d]# filebeat modules enable elasticsearch
    [root@server1 modules.d]# vim elasticsearch.yml

    在文件顶端的网址可以获取要配置的内容
    在这里插入图片描述
    配置 filebeat 输出到 ES

    [root@server1 modules.d]# cd ..
    [root@server1 filebeat]# vim filebeat.yml

    在这里插入图片描述

    [root@server1 filebeat]# systemctl enable –now filebeat.service

    已经可以看到server1的日志
    在这里插入图片描述
    server2和server3以此类推,即可看到三个节点的日志
    在这里插入图片描述

    3 ELFK + Kafka 架构部署

    ELFK = Elasticsearch + Logstash + Filebeat + Kibana
    中间引入 Kafka 消息队列,形成 Filebeat → Kafka → Logstash → Elasticsearch ← Kibana 高可用日志架构。

    Kafka :日志缓冲中间件

    核心作用
    (1)削峰填谷,保护后端服务

    业务高峰期(如秒杀、接口大量报错)会瞬间产生海量日志。

    • 无 Kafka:日志全部直打 Logstash,瞬间流量过载会导致 Logstash 阻塞、宕机,日志丢失;
    • 有 Kafka:突发日志先存入 Kafka 队列缓存,Logstash 按自身性能匀速消费,不会被峰值流量打垮。

    (2)生产消费解耦,两端互不依赖

    • Filebeat(生产者)只负责把日志丢进 Kafka,不用关心 Logstash 是否在线、是否故障;
    • Logstash(消费者)可以随意启停、扩容、更新配置,期间日志全部存在 Kafka,不会丢失;
    • 两者独立运行,任意一端维护不影响另一端工作。

    (3)日志持久化兜底,防止数据丢失

    Kafka 会把日志磁盘持久化 + 多副本存储,可自定义保存时长(7 天 / 30 天)。
    如果 Logstash、ES 集群故障停机,日志会完整保存在 Kafka,服务恢复后 Logstash 能接着断点消费,不会丢日志。

    (4)多消费复用一套日志

    同一个 Kafka 日志主题(topic),可以搭建多组消费端:

  • 一组 Logstash 清洗日志存入 ES,用于运维查询;
  • 另一套程序读取日志做安全审计、大数据统计;
    不用让 Filebeat 重复推送多份日志,节省服务器带宽与资源。
  • 新开server6、server7、server8,在各台机器上的/etc/hosts中加入解析

    server6配置

    [root@server6 ~]# rpm -ivh jdk-17.0.17_linux-x64_bin.rpm
    [root@server6 ~]# tar zxf kafka_2.12-3.9.1.tgz -C /opt
    [root@server6 ~]# mv /opt/kafka_2.12-3.9.1 /opt/kafka
    [root@server6 ~]# cd /opt/kafka/config/kraft
    [root@server6 kraft]# cp server.properties{,.bak}
    # 备份配置文件
    [root@server6 kraft]# mkdir /opt/kafka/logs
    [root@server6 kraft]# vim server.properties

    在这里插入图片描述
    在这里插入图片描述
    将修改好的配置文件传给server7、server8

    [root@server6 kraft]# scp server.properties server7:/opt/kafka/config/kraft/server.properties
    [root@server6 kraft]# scp server.properties server8:/opt/kafka/config/kraft/server.properties

    server7和server8配置与server6相同,分别把配置文件中除30行以外的146改成147和148

    server6节点生成存储目录唯一的 UUID,集群所有节点必须共用同一个 Cluster ID,标识这是同一套 Kafka 集群

    [root@server6 kraft]# KAFKA_CLUSTER_ID="$(/opt/kafka/bin/kafka-storage.sh random-uuid)"
    [root@server6 kraft]# echo ${KAFKA_CLUSTER_ID}
    I3bAtanwTmqvTKLDiP7suA

    在这里插入图片描述

    三台主机用该 uuid 格式化 kafka 存储目录

    /opt/kafka/bin/kafka-storage.sh format -t I3bAtanwTmqvTKLDiP7suA -c /opt/kafka/config/kraft/server.properties

    三台主机启动 Kafka

    /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
    jps

    在这里插入图片描述

    Kafka 集群任意节点创建 Topic

    [root@server6 kraft]# /opt/kafka/bin/kafka-topics.sh –create –topic testtopics –bootstrap-server localhost:9092 –replication-factor 3 –partitions 3

    在这里插入图片描述

    Kafka 集群任意节点查看 Topic

    [root@server7 kraft]# /opt/kafka/bin/kafka-topics.sh –list –bootstrap-server localhost:9092
    testtopics

    在这里插入图片描述

    Kafka 集群任意节点生产者测试

    [root@server6 kraft]# /opt/kafka/bin/kafka-console-producer.sh –broker-list localhost:9092 –topic testtopics
    >111
    >222
    >333
    >444
    >555
    >

    在这里插入图片描述

    Kafka 集群任意节点查看主题

    [root@server7 kraft]# /opt/kafka/bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic testtopics –from-beginning

    在这里插入图片描述

    Kafka 集群任意节点查看 topic 详细信息

    [root@server7 kraft]# /opt/kafka/bin/kafka-topics.sh –bootstrap-server server6:9092,server7:9092,server8:9092 –topic testtopics –describe

    在这里插入图片描述

    FIlebeat 配置文件修改

    [root@server4 ~]# cd /etc/filebeat/
    [root@server4 filebeat]# vim filebeat.yml

    在这里插入图片描述

    [root@server4 filebeat]# systemctl restart filebeat.service
    [root@server4 filebeat]# filebeat test config -c /etc/filebeat/filebeat.yml
    [root@server4 filebeat]# filebeat test output -c /etc/filebeat/filebeat.yml

    在这里插入图片描述

    Kafka 集群任意节点消费者测试

    [root@server8 kraft]# /opt/kafka/bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic apache-logs –from-beginning

    在这里插入图片描述

    Logstash 消费 Topic 消息

    [root@server5 ~]# cd /etc/logstash/conf.d/
    [root@server5 conf.d]# vim kafka.conf

    在这里插入图片描述

    [root@server5 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/kafka.conf

    前台打印大量日志
    在这里插入图片描述
    测试

    ab -c1 -n 300 http://192.168.40.144/index.html

    监控可看到访问情况
    在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » ELK企业级日志分析平台3——ES数据备份 & 集群监控 & ELFK+Kafka 架构部署
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址