当前位置: 首页 > article >正文

全面解析EFK日志管理系统部署流程

EFK架构介绍

EFK三个开源软件组成,分别是Elasticsearch、FileBeat和Kibana。这三个软件各自在日志管理和数据分析领域发挥着重要作用,它们之间互相配合使用,完美衔接,高效地满足了多种场合的应用需求,是目前主流的一种日志分析系统解决方案。

  • Elasticsearch:负责日志的保存和搜索。它是一个分布式、高扩展、高实时的搜索与数据分析引擎,基于Lucene开发,通过RESTful web接口提供全文搜索和分析功能。Elasticsearch能够高效地存储和索引各种类型的数据,并支持快速搜索和实时分析。
  • FileBeat:负责日志的收集。它由Elastic公司开发,专为日志收集而设计,具有资源占用低、易于部署的特点。FileBeat直接从服务器上的日志文件读取数据,进行初步的归集和简单处理,然后将其转发到Elasticsearch或其他中间件。
  • Kibana:负责日志数据的界面展示。它是一个开源的数据分析和可视化平台,提供丰富的数据可视化选项,如柱状图、线图、饼图等,帮助用户以图形化的方式理解数据。此外,它还支持强大的数据探索功能,用户可以使用Elasticsearch的查询语言进行数据查询和筛选。

架构图

在这里插入图片描述

EFK与ELK的对比

  • 组件组成区别:EFK使用FileBeat作为日志收集工具,而ELK使用Logstash。FileBeat相对于Logstash来说,具有侵入低(无需修改Elasticsearch和Kibana的配置)和性能高(IO占用率比Logstash小)的优点。而Logstash则提供了更复杂的数据处理功能,适合复杂的数据清洗、转换和处理场景。
  • 资源消耗:由于Logstash提供了更复杂的数据处理功能,因此它通常比FileBeat在资源消耗上更高。这可能会增加应用服务器端的负载压力。而FileBeat则更加轻量级,资源占用更低。
  • 部署和扩展性:EFK和ELK都具有集群线性扩展的能力,可以通过增加节点来提高系统的处理能力和性能。然而,在部署和配置方面,两者可能有所不同,具体取决于所使用的软件和版本。
  • 适用场景:ELK适合需要复杂数据清洗、转换和处理的场景,特别是在数据预处理阶段需要较多自定义逻辑的场景。而EFK更适合轻量级的日志收集和分析场景,特别是在资源有限或需要快速部署的场景中。

基础环境准备

(1) 创建文件夹
mkdir /opt/es

(2)关闭防火墙
systemctl status firewalld
systemctl stop firewalld
setenforce 0

(3)修改主机名
hostnamectl set-hostname monitor_01
hostnamectl set-hostname monitor_02

(4)修改本地host文件(两台主机均添加)
vim /etc/hosts

echo "172.16.208.12 monitor-01" >> /etc/hosts
echo "172.16.208.13 monitor-02" >> /etc/hosts

(5)修改sshd服务优化
sed -ri 's/^#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
sed -ri '/^GSSAPIAuthentication yes$/s/yes/no/' /etc/ssh/sshd_config
grep ^UseDNS /etc/ssh/sshd_config
grep ^GSSAPIAuthentication /etc/ssh/sshd_config
(6)在monitor_01节点生成密钥对
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q

ll ~/.ssh/id_rsa
-rw-------. 1 root root 1675 Oct 16 15:37 /root/.ssh/id_rsa
ll ~/.ssh/
-rw-------. 1 root root 1675 Oct 16 15:37 id_rsa
-rw-r--r--. 1 root root  397 Oct 16 15:37 id_rsa.pub

(7)在monitor_01节点上配置所有集群节点免密登录(确认两次)
ssh-copy-id monitor-01
ssh-copy-id monitor-02

(8)连接测试
ssh 'monitor-01'
ssh 'monitor-02'

(9)时间同步
主节点:
yum install chrony

vim /etc/chrony.conf

server ntp.ntsc.ac.cn iburst
allow 172.16.208.13

systemctl restart chronyd
systemctl enable chronyd

从节点:
yum install chrony

vim /etc/chrony.conf
server 172.16.208.12  iburst

systemctl restart chronyd
systemctl enable chronyd

Elasticsearch

下载安装

获取rpm包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.20-x86_64.rpm

安装
yum -y localinstall elasticsearch-7.17.20-x86_64.rpm 

查看jdk版本 (内置了jdk,所以不用安装jdk运行环境)
/usr/share/elasticsearch/jdk/bin/java --version

启动服务 --要一会时间
systemctl start elasticsearch

查看端口
netstat -ntl
其中 9200是与集群外部进行通信,9300是集群中的节点相互通信

访问测试
curl 127.0.0.1:9200


配置文件修改

其中两个文件比较常用:/etc/elasticsearch/elasticsearch.yml和/etc/elasticsearch/jvm.options一个是配置文件,一个是调优文件注意: 在8.0之前的版本es的安全特性并没有开启,8.0版本以后的开启了安全特性。

配置文件介绍

/etc/elasticsearch/elasticsearch.yml

cluster.name: my-application 修改集群名称,默认就是elasticsearch

node.name: node-1 修改节点名称,默认是主机名

path.data: /var/lib/elasticsearch 默认的数据存放位置

path.logs: /var/log/elasticsearch 默认日志存放位置

network.host: 192.168.0.1 默认只能访问本机,设置为0.0.0.0,当前节点的所有地址都能访问

http.port: 9200 默认的发现端口

discovery.seed_hosts: ["host1", "host2"] 不设置的话默认为127.0.0.1只能发现自己,当然也可以使用主机名。设置[“172.16.208.12”]

重启生效

systemctl restart elasticsearch

启动日志查看

tail -40 /var/log/elasticsearch/Tgqs_elasticsearch.log

前面修改的networkhost配置,现在curl monitor-01:9200和curl 172.16.208.12:9200都可以访问

然后发现显示的节点名称和集群名称都改成了配置的数据

集群部署

针对monotor-02节点

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.20-x86_64.rpm

安装
yum -y localinstall elasticsearch-7.17.20-x86_64.rpm 

修改monitor-01的配置文件,添加208.13节点,如果集群还有别的节点同样添加 
vim /etc/elasticsearch/elasticsearch.yml

discovery.seed_hosts: ["172.16.208.12", "172.16.208.13"]

修改monitor-02配置文件,除了节点名称,别参数的都与主节点一致
cluster.name: Tgqs_elasticsearch
node.name: elk-02
network.host: 0.0.0.0
discovery.seed_hosts: ["172.16.208.12", "172.16.208.13"]

网页查询集群状态
http://172.16.208.12:9200/_cluster/health?pretty
status显示green表示正常

http://172.16.208.12:9200/_cat/nodes?V
其中带*表示master节点,其他的为工作节点

kibana

下载安装

注意版本与elasticsearch完全相同

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.20-x86_64.rpm

yum -y localinstall kibana-7.17.20-x86_64.rpm


配置文件 /etc/kibana/kibana.yml
#server.port: 5601  默认端口
#server.host: "localhost" 改为server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.16.208.12:9200","http://172.16.208.13:9200"] 添加集群
i18n.locale: "en" 默认语言为英语 修改为中文 i18n.locale: "zh-CN"

启动过程中查看kibana的配置
systemctl cat kibana

查看报错
journalctl -u kibana
tail -40 /var/log/kibana/kibana.log

web界面访问
http://172.16.208.12:5601/app/home#/

菜单-堆栈检测  可以看到一些监控数据
菜单-stack management 可以看到索引管理,其中.开头的一般都是隐藏索引,自己创建不以.开头


filebeat

下载安装

filebeat的部署应该在需要收集日志的节点的上,如MySQL服务,就部署在MySQL的节点上。


注意与前面的elastic和kibana版本相同
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.20-x86_64.rpm


安装
 yum -y localinstall filebeat-7.17.20-x86_64.rpm 
 
官方配置文档地址
https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html

配置文件位置(建议自己重新编辑)
/etc/filebeat/filebeat.yml

测试
filebeat -e -c /etc/filebeat/filebeat.yml

配置文件编写

主要关注input、output信息(这里只是参考,具体配置文件看测试文件)

filebeat.inputs:
- type: log 
  #默认是ture,设置为false是不启用改日志收集
  enbaled: false
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
  #给当前输入加上标签
  tags: ["json"] 
  #自定义字段,key-vaule
  fields:
    name: “撒旦”
    
- type: log 
  paths:
    - /var/log/test.log
  tags: ["test"] 
  fields:
    name: lisa
  #是否设置为顶级字段,默认不开启,开启后将直接显示字段值,不在将字段放在field字段中显示
  fields_under_root: true

output.elasticsearch:
  hosts: ["http://172.16.208.12:9200","http://172.16.208.13:9200"] 
  index: "Tgqs-elk-%{+yyyy.MM.dd}"
#禁用索引生命周期
setup.ilm.enabled: false
#设置索引模板的名称,设置索引模板的匹配模式
setup.template.enabled: false
setup.template.name: "Tgqs"
setup.template.pattern: "Tgqs-*"

注意事项

配置文件修改完成后在kibana索引模式中创建索引,然后在菜单栏-discover选项

  • .exclude_files是匹配的文件路径,如/home/davinciyxw/files/test.log,不能设置[‘^test’],而是设置[‘files/test’]来匹配

  • 默认不会重复收集日志,如果想重复收集之前的日志删除/var/lib/filebeat/下面的所有文件

  • 输出The default is "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}", for example, "filebeat-7.17.24-2024-10-14". If you change this setting,
    you also need to configure the setup.template.name and
    setup.template.pattern options

  • If index lifecycle management
    is enabled (which is typically the default), setup.template.name and
    setup.template.pattern are ignored.

测试实时数据展示

1.创建一个log测试文件
vim /var/log/test.log 

ddd
qqq

2.配置filebeat的配置文件
vim /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  paths:
    - /var/log/test.log
  tags: ["test"]
  fields:
    name: "lisa"
  fields_under_root: true

output.elasticsearch:
  hosts: ["http://172.16.208.12:9200","http://172.16.208.13:9200"]
  index: "Tgqs-elk-%{+yyyy.MM.dd}"

setup.template.enabled: false
setup.template.name: "Tgqs"
setup.template.pattern: "Tgqs-*"
setup.ilm.enabled: false

3.删除之前重复收集的日志,启动filebeat
rm -rf /var/lib/filebeat/*
filebeat -e -c /etc/filebeat/filebeat.yml

4.在kibana的web界面创建索引,查看log文件

5.添加信息到log测试文件中
echo TES >> /var/log/test.log

6.刷新web界面查看日志更新情况

http://www.kler.cn/news/359074.html

相关文章:

  • Could not load dynamic library “libcudart.so.11.0
  • 2024年10月第2个交易周收盘总结:怎样卖出!
  • ESD防静电闸机检测为汽车电子工厂车间保驾护航
  • 大模型学习笔记
  • sql实战解析-sum()over(partition by xx order by xx)
  • 【分布式微服务云原生】《微服务架构大揭秘:关键组件全览与实战指南》
  • .net framework 3.5sp1组件如何安装
  • Java设计模式六大原则
  • uniapp picker实现省市二级级联和省市区三级级联
  • QSpliter实例操作
  • 03 设计模式-创造型模式-单例模式
  • 一款实现PLC扩展CANFD的好工具 — PXB-6020D协议转换器
  • 导数的概念及在模型算法中的应用
  • 2-122 文章复现:基于matlab的多智能体系统一致性算法的电力系统分布式经济调度策略
  • 基于MATLAB边缘检测博文
  • 估值与周期风险评估(2024/09/29)
  • RabbitMQ系列学习笔记(五)--持久化机制
  • 四川方维嘉术科技有限公司简介
  • C#中判断的应用说明一(if语句)
  • 梦熊十三联测 D题 电报